I work on programmatic advertising by day and ship my own Android apps by night. In both, my job is the same: decide what gets built and what "done" means. I write the specs, the review gates, and the decision records; AI coding agents write the implementation; I own the release.
shipping-with-agents — the working agreement I ended up with after two shipped apps. Prompts as the unit of work, acceptance written by the reviewer rather than the executor, handover docs that survive context loss, and a review rubric where every rule maps to a defect that actually reached production.
Design session picks the approach and writes the prompt → executor session writes code and tests and stops → design session reviews and accepts. Separating who proposes from who accepts is most of the value.
- Catudoku: Cat Sudoku Puzzle — cozy cat-themed Sudoku. Flutter. Live on Google Play, grown through ASO, monetized through ad mediation. Case study — including the month the eCPM "broke" and why fixing it would have been a mistake.
- SnipShot — area and scrolling screenshots for Android. Native Kotlin, capture via AccessibilityService instead of MediaProjection so there's no consent dialog on every shot. Case study · the capture mechanism is open source: android-scroll-capture.
- sms-to-telegram — forwards incoming SMS to a Telegram chat, for when the SIM with your bank codes lives in another country. Kotlin, BroadcastReceiver plus a WorkManager catch-up pass. Distributed as an APK rather than on Play, and the README says why.
- android-scroll-capture — how to do area and scrolling screenshots on Android without MediaProjection, extracted from SnipShot. Documents the two things the API docs don't: the two-stroke gesture that stops lists from flinging, and frame matching that doesn't trust the scroll distance.
- shipping-with-agents — the process above, written down.
Projects run on Flutter and native Kotlin, with a Python/Postgres backend.
| AdTech — day job | OpenRTB 2.6 · programmatic/RTB targeting · supply and demand side mechanics |
| AdTech — my apps | ad mediation & eCPM diagnostics · app-ads.txt · ASO · product analytics |
| Working with agents | Claude Code · MCP · spec-driven development · decision records · agent workflow & review design |
Agents are fast and confident, so the expensive failure isn't bad code — it's plausible code nobody checked against what it was supposed to do. Most of my process is turning "someone should check that" into a step that can't be skipped.


