Ruslan Akhmetvaleev · Da Nang, Vietnam · remote

I test payment systems for a living. I build apps for businesses on the side.

QA automation engineer (SDET) at CMA Small Systems, working on instant payments and SWIFT / ISO 20022 messaging. In my own time I build products like Rahat Go, an ordering app and CRM that runs a bakery inside Telegram.

ruslan.feature
  1. Feature: Hire Ruslan
  2. Scenario: A fintech team needs reliable releases
  3. Given payments flow through SWIFT MT and ISO 20022
  4. When Ruslan automates the regression suite in Kotlin + Cucumber
  5. Then smoke and E2E testing go from days to hours
  6. Scenario: A small business needs its own app
  7. Given a bakery takes orders through chats and paper
  8. When Ruslan builds it a Telegram Mini App
  9. Then staff run orders, stock and profit analytics in one place
PASSED2 scenarios · 6 steps passed

01 Product · 2026

Rahat Go: a bakery that runs inside Telegram

My friend owns a bakery in Da Nang. Orders came in through chats, stock lived on paper, and nobody knew which dishes actually made money. I built him one app that does all of it, inside Telegram, where his customers already are.

Customers browse the menu, order for pickup or delivery and pay by QR. Staff run the order pipeline, a POS, dine-in tables and daily stock. The owner sees revenue, best sellers and the real cost and margin of every dish.

One Go binary serves the bot, the REST API and the Mini App. I designed it and built it with Claude Code sub-agents, reviewing every pull request.

Try it: add something to the cart, then switch to Staff and Owner.

3+ months
used daily by the bakery's staff
56 dishes
real menu, 3 languages
27 PRs
160 commits, built solo
  • Go
  • PostgreSQL
  • JavaScript
  • Telegram Mini Apps
  • OSRM
  • Railway
  • Claude Code
Rahat Bakerymini app
Rahat BakeryMini App
Today 00:00 – 23:59

Rahat Go · the real app, recorded

02 Day job · 2023 — now

Test automation for instant payments

At CMA Small Systems I build backend test frameworks for payment systems: instant payments, SWIFT MT and ISO 20022 MX messages, and the conversion between them.

The trick that paid off most was writing the steps in business language. Our manual testers could read them, then write new scenarios themselves. I onboarded six of them, and testing that used to take days across several projects now takes hours.

Try it: run the scenario, or break the payment and watch the test catch it.

4–6×
faster smoke and E2E testing
6 testers
onboarded to writing automated scenarios
  • Kotlin
  • Cucumber / Gherkin
  • Python
  • pytest
  • WireMock
  • Jenkins
  • Allure
  • ISO 20022
  • SWIFT MT

The scenario in the demo is illustrative and uses public ISO 20022 message types. Client systems and data are under NDA.

@instant @pacs008
Feature: Instant credit transfer
Scenario: Customer sends an instant payment
Given the debtor account "DE89 3704 0044 0532 0130 00" has 500.00 EUR
When the bank sends a pacs.008 credit transfer of 120.00 EUR to "FR14 2004 1010 0505 0001 3M02 606"
Then the message is valid against the pacs.008 schema
And the clearing system replies with pacs.002 status "ACCP"
And the debtor account has 380.00 EUR
Message
Runidle
$ ./gradlew cucumber -Dtags=@instant
Ready. Press Run scenario.

03 ML + automation · 2023

I automated my own data-labeling job

In 2023 I had a part-time job labeling buyer–seller chats: did they agree on a deal? Yes, no, or not enough information. After a few thousand of them, I noticed I was the training data.

A Tampermonkey script saved every answer I gave. I fine-tuned a small Russian BERT on those answers, and a Selenium bot used the model to read each chat and click the answer.

5,808
chats I labeled by hand, used as training data
77%
accuracy on 379 hand-checked chats
  • Python
  • PyTorch
  • RuBERT-tiny
  • Hugging Face
  • Selenium
  • Tampermonkey

Chats in the demo are made up; the numbers are from the project's saved results.

labeling tool / deal or not?
  1. Tampermonkeysaved my answers
  2. JSONquestion_*.json
  3. train.csv5,808 chats
  4. RuBERT-tiny2fine-tuned
  5. Seleniumreads & clicks
Task #0412ready
…

Покупатель и продавец договорились о сделке?Did the buyer and seller agree on a deal?

Tap an answer to guess before the bot does.

rubert-tiny2 · CPU · max 512 tokens
waiting for a chat…
text → model input
tokens0 / 512
softmax output
Да0.00
Нет0.00
Неинформ.0.00
model skipped
human-like wait: 15 s × length factor + jitter
run logtask · bot · p · vs my label
    0
    labeled by the bot
    –
    agree with my own label

    demo sample · synthetic chats

    04 Bachelor's thesis · 2022

    Making small images sharp again with GANs

    Classical upscaling can only blend the pixels it already has, so a 4× enlargement comes out blurry. A GAN learns what real detail looks like and draws it back in.

    I implemented and trained SRGAN and ESRGAN in PyTorch and compared them with bicubic interpolation. Drag the slider: left is bicubic, right is my ESRGAN, from the same small input.

    4×
    upscaling, 252 px → 1008 px
    2 GANs
    SRGAN and ESRGAN, trained on CelebA
    • PyTorch
    • GANs
    • VGG19 perceptual loss
    • Computer vision
    Baby: 4× bicubic upscaleBaby: 4× ESRGAN upscale
    Same 252×252 input. Left: bicubic interpolation. Right: my ESRGAN.Drag to compare · hover to magnify

    Set5 benchmark images; the models were trained on CelebA faces.

    05 Mobile game · 2020 — 2021

    Swiper: my first released game

    Asteroids fall on your city; swipe to cut them down. Chain three or more in one swipe for a combo. I made it in Unity with C#: waves, 12 power-ups, dark and light themes, English and Russian, and AdMob ads.

    Play a round. Desktop: drag with the mouse. Phone: swipe.

    • Unity
    • C#
    • Google AdMob
    • Photoshop

    This is a small browser remake of the core loop. The original Android game was on Google Play until the developer account went inactive.

    Browser remake · 2021 Android game

    Swiper

    Swipe through falling asteroids before they reach the city. Hit three or more in one swipe for a streak.

    Drag or swipe to cutP pauseScoring and bonuses follow the original C#

    Experience

    Where I've worked

    1. 2023 — now

      QA Automation Engineer · CMA Small Systems AB

      • Backend test automation for instant payments and SWIFT MT / ISO 20022 MX messaging, including MX↔MT conversion.
      • Kotlin + Cucumber (BDD) and Python frameworks, run in Jenkins with Allure reports and WireMock stubs.
      • Wrote the steps in business language and onboarded 6 manual testers to write automated scenarios themselves. Smoke and E2E testing across several projects went from days to hours (about 4–6× faster).
    2. 2023

      Test Automation Engineer (Intern) · a1qa

      • Full-stack test automation in JavaScript with Mocha: UI and API tests against real websites such as Steam.
      • Test design and test case writing, with professional English training.
    3. 2022

      Computer Vision Engineer (Intern) · Revizor Vision

      • Collected and processed real-time video from cameras, and trained and deployed models that detect people to measure visitor flow in cafés and attractions.
    4. 2018 — 2022

      Bachelor's, Applied Mathematics · Kazan State Power Engineering University

      • Thesis: image super-resolution with GANs (see above).

    Freelance

    What I can build for you

    Ordering app for your café or shop

    A Telegram Mini App where customers browse your menu, order and pay, with a staff panel for orders, stock and profit per product. Like Rahat Go, set up for your business.

    Test automation for your product

    API and UI test suites with CI and readable reports. BDD steps in plain language, so your team can write new tests without me.

    Telegram bots and internal tools

    Automate the repetitive part of your work: notifications, order intake, reports, admin panels, integrations with the services you already use.

    Tell me about your projectahmetvaleevr@gmail.com