QA Crowdtester (freelance)
- Exploratory and functional testing of web and mobile apps for real clients
- Reproducible bug reports with clear steps and expected results
- Logs and HTTP traffic analysed in Fiddler and Charles Proxy
Junior AI Engineer
I build software with AI agents and make sure it works. Most recently I co-built Personal Exchange Bot, a Telegram service that helps Russians living abroad exchange rubles for local currency, person to person. It has been in production since October.
Rubles for local currency, person to person. A safer alternative to exchange chats, with a rate you can check.
Since the 2022 sanctions, most banks and exchange offices in Europe no longer exchange rubles. Yet many Russians live abroad and need local money, like Czech koruna.
So people swap in Telegram chats, typing “I’ll swap this much for that much” by hand, with scammers among them.
Money changers in those chats inflate the rate and set the trend for everyone else.
The bot turns this into a clear process: structured offers, rates to compare, checked accounts and ratings.
A simplified walkthrough: create an offer, get responses, agree on a place, exchange and rate. The bot never holds money.
4,808
automated tests, run on every pull request
173
screens in the bot
327
pull requests merged, each through CI and review
2
days from the spec to a working first version
The idea and the original spec came from my teammate. I turned the spec into a working product in two days, then kept building.
On 30 September and 1 October I built the first working version end to end: database, offer feed, responses, deals and ratings, notifications, moderation, a web admin with two-factor login, Docker and tests.
Bot flows and the admin panel: the redesign, the mobile version, the System and Stats sections, ban management, and an Android admin app in Kotlin with Jetpack Compose.
An encrypted log of every deal chat, phone and Telegram account checks against the CAS and LOLS spam databases, weighted reputation, a risk score that alerts moderators, and deal complaints.
Market rates from ExchangeRate-API, exchanger rates from BestChange, Revolut and Wise for comparison. The bot reads amounts written as text, like “1000 euro” or “€1000”. I also added Ukrainian and the language packs.
I laid the groundwork for testing: database fixtures, a test bench for the bot, and end-to-end tests that run the bot, the worker and the admin together.
Environment checks, a map of every screen, and automatic handoff between agent sessions, so each new session picks up exactly where the last one stopped.
153 of the 365 commits and 103 of the 327 merged pull requests are mine.
On Personal Exchange Bot every change runs through the same loop: one GitHub issue, one coding agent, one fresh session. People stay in the loop through the issue thread.
Every task starts as a GitHub issue. Its labels set the model and the effort, using Claude Code’s own values.
A session manager runs the issue watcher and starts one headless Claude Code agent per issue, each in its own git worktree.
Before any code, the agent posts how it understood the issue, with sample screens where relevant.
The agent writes the code and the tests on its own branch and opens a pull request through the existing workflow.
CI runs ruff, mypy, the full pytest suite and a secret scan. Then a person reviews the result.
The agent leaves a handoff for the next session. Agents talk through issue comments, in plain language anyone can read.
A simplified example of one issue going through the loop.
1 : 1
One issue, one agent. Each works in its own git worktree, on its own branch, from a fresh session.
2
agents at a time. Other issues wait in a queue, and no issue ever gets two agents.
Opus, xhigh
the default model and effort when an issue has no labels.
Labels set the power
model:haikumodel:sonnetmodel:opus
effort:loweffort:mediumeffort:higheffort:xhigheffort:max
0
shared secrets. One setup script, and everyone signs in with their own GitHub and Claude accounts.
I live in Nitra, Slovakia, and study English at Constantine the Philosopher University. I came into tech through testing: I’m an ISTQB-certified tester and test web and mobile apps for real clients on uTest.
Now I’m focused on AI engineering: building real products with AI agents, and making sure what they ship actually works.
I’m looking for a junior role in AI engineering, in Bratislava or remote. The bot’s code is private, so I’m happy to walk you through it on a call.