How My Agent Built an Accounting Product in a Day — Without Me Even Reading the Brief
May 7, 2026
My friend Andrey sent me a task. I didn’t open the brief. I didn’t look at the attached PDFs. A day later, Andrey had a working product on his desk — with a web interface, documentation, and code — and I had time to write this article.
The development itself took hours. The rest of the time, the agents were waiting for me to free up so I could say “ok, go ahead.”
Any narrow task that comes up in your business — routine work, document processing, anything — can be automated by writing your own solution for it. Not by renting someone else’s SaaS forever.
That’s the main thing I’m writing this article for. Below — how it all works inside.
What Andrey asked
Andrey is my friend, the owner of a hookah lounge in Kemerovo. He’s deeply into automation: he’s already automated a lot in his place. And then he had a new idea — a parser for UPDs for accountants.
UPD is the “universal transfer document,” the main piece of source paperwork in Russia. Every day an accountant gets a stack of these documents as scans, and has to manually re-key into 1C (the standard Russian accounting software) the seller, INN (taxpayer ID), KPP (tax registration code), date, and every line item. Ten to fifteen minutes per document. A dozen a day.
This is routine that eats someone else’s life.
Andrey put the task this way: a program that takes a PDF scan of a UPD and outputs structured data. With one important condition — everything has to run locally. These are financial documents; you can’t send them to the cloud.
«That, basically, was the only input I got from him. Then he just sent the brief.»
That was it. After that I didn’t go near the task.
I wasn’t the customer — I was a message switch
Andrey sent Telegram messages with a description and attached a few PDFs with sample UPDs. I didn’t even open them. I just forwarded them to my coordinator agent, Мо.
Мо is the first agent I created. He’s the administrator of my agent team. The one who sits between me and everyone else. I’ve already written about him separately.
Here’s what happened next:
- Мо read Andrey’s brief and asked him clarifying questions — through me.
- I forwarded the questions to Andrey on Telegram.
- Andrey answered. I forwarded the answers to Мо.
- Мо assembled all of it into a quality brief — broken out by sections, with acceptance criteria.
- Мо suggested I send this brief to Макс — my developer agent.
- I agreed.
«I just forwarded the Telegram messages to my coordinator agent, Мо. Мо put together the full task — already a quality brief — and suggested I send it to Макс.»
Notice? In this chain, I’m not the customer. I’m the link. Мо behaves like a product manager: he himself interviews the customer, writes the brief, delegates to the developer. I just forward messages and click “ok.”
Why I didn’t even try to figure it out
I had four other projects going at that moment. Two — in active phase. I physically wasn’t ready to plug into anything new.
But it wasn’t only about workload. I was curious to try it exactly this way — hand off the task completely, without diving into the details.
«I trusted that Макс, with a clear brief from Мо, would handle it. I’d only have to give a couple of pointers if he hit a wall.»
It was an experiment. I wanted to check — how deeply do I actually have to dive in for the system to deliver a result. The answer turned out to be: barely at all.
I tossed the task in — and forgot
This is probably the most unexpected part of the story.
I forwarded the brief to Макс through inbox messages, asked him to start — and the task fell out of my head. I was busy with other things. Not “consciously let it go” — I literally forgot.
After some time, Макс reminded me himself that there was such a task. He sent me a development plan — what, why, how he’d do it. I skimmed it, saw the path was right, and gave him the green light to run on auto.
«The development itself, honestly, took no more than two hours. The rest of the time was just the gap between handing off the task and switching the work on.»
In total, from brief to delivered package at Andrey’s, one day passed. Out of that, my active engagement added up to a few minutes of conversation in the terminal. The rest of the time Макс worked on his own, and I was busy.
That’s the feeling that’s worth building an agent team for: not a “helper waiting for your commands,” but an employee who reminds you himself about the tasks you handed him.
Where I actually stepped in — and why
This is an important section. I don’t want to pretend I did nothing — that would be a lie.
At some point Макс wrote that the task turned out to be hard to pull off in the form Andrey originally framed it. A local recognition model that would work without the cloud needed hardware we didn’t have yet — a powerful RTX 5090 GPU that we’d only just ordered.
And I made an architectural decision:
«Don’t wait for the local model. Build the MVP on the server right now — on the condition that the model can later be swapped out with one click.»
That’s all of my code. One sentence. After that, Макс made the recognition engine swappable: right now it runs cloud recognition through the Claude Max subscription, later — when the hardware arrives — we’ll switch to a local Qwen-VL with a single environment variable.
The architect doesn’t write code. The architect closes strategic dead ends with a couple of phrases. That, it seems, is my only real participation in the project across all those hours.
What Макс did while I was busy
I learned the details only afterward — from logs and messages in my team’s memory. In short:
- Recon. Макс looked at the market: MinerU, docling, PaddleOCR. Decided: vision models are faster.
- Subscription breakthrough. Found a way to use my Claude Max subscription as the source of API access to vision models. That means — for processing documents we pay 0 RUB, everything runs on an already-paid-for plan.
- Skeleton. Pydantic schema, rendering PDF to JPEG, vision call with forced JSON output.
- Tuning. On stamps, vision was confusing «Электротехноизделия» with «Электропромснабжением» — Макс added a clarifying pass on the document header at high resolution and a careful merge of the results.
- Database. SQLite with a parties / documents / products schema + duplicate protection.
- Web interface. Streamlit with drag-and-drop upload, cards by recognition confidence, inline editing, Excel export.
- Deploy. I didn’t even explain how to publish it. Макс picked a subdomain of my site himself, deployed the service via systemd and Caddy, put it live.
- Handoff. Assembled a ZIP with a PDF navigator, migration instructions to the local model, code skeleton. 285 KB. I didn’t ask for that.
Run metrics on the test set:
- 5 PDFs — 11 unique UPDs recognized
- Confidence 0.81–0.88
- Speed: 21–30 seconds per simple document
- Cost: 0 RUB per run
And finally — the moment that struck me the most:
«Макс was in the context that the work was being done for Andrey — and assembled the archive on his own, the kind that could carry Andrey through further development. I didn’t even ask for that.»
Макс understood the end goal — not “recognize a UPD” but “help Andrey.” And on his own, without a separate assignment, he put together the handoff package: README, instructions, ready code as a skeleton for further development. That’s a different kind of thinking. That’s no longer “execute the brief,” that’s “close the customer’s problem.”
What Andrey got
When I saw the finished product, I was seriously surprised. Just opened the link, dragged a file in, got an Excel with the recognized data.
«I just tried to upload the files — and everything worked.»
Andrey got two messages on Telegram:
1. PDF navigator (6 pages, 100 KB) — a map of the package: what’s inside, why, in what order to look at it.
2. ZIP package (285 KB, 19 files):
- README with an overview
- Commercial brief (3 pages)
- Migration instructions to a local model (10 sections)
- Full source code (23 files)
- Project skeleton for swapping the engine
- Sample pack with real results on 5 PDFs (Excel + JSON)
Plus — a live demo where you can drop in your own PDF right now and get parsed data:

https://api.mdk.guru/upd/ — try it yourself.
Any PDF with a UPD scan. Recognition in 20–30 seconds. You can edit right in the card. Export to Excel.
This isn’t a stripped-down demo. It’s the same code I gave Andrey — deployed on our server.
Can it be monetized
I thought about it when I saw the result. There are similar services — for example, ILovePDF. They convert files between formats. But they only work with clean documents. Here it’s harder: scans, text recognition with stamps and signatures, structuring into a tabular format.
I honestly looked for an analogue on the Russian market. Couldn’t find one. There’s just no public service with the same set of capabilities.
«You can make a product out of this. Conditionally free — with paid features.»
Andrey, if you’re reading this: if you want to develop the idea into a product — I’m ready to help and make it monetizable.
For now, this is an open demo. A gift to accountants and everyone tired of re-keying scans by hand.
What I learned that day
1. Don’t get into a task that already has an executor. I was a relay, not a developer. My participation — a couple of phrases at moments of deadlock. And that’s the right participation.
2. A narrow business task is your own product, not a SaaS subscription. Earlier, to solve such a task you had to either hire a developer or subscribe to someone else’s service. Now you can build your own solution, tailored to you — in a day, for zero rubles.
3. The cost of entry = zero. The Claude Max subscription was already there. The PDFs — at Andrey’s. The server — ours. There was nothing to pay — that’s not “free,” it’s the right amortization of investments already made.
4. Hand over the result, not the process. Andrey got a package that’s self-contained: you can try it, you can implement it, you can develop it further. Not “here’s some half-started code, keep helping me with it.”
5. Context-aware proactivity is the new agent superpower. Макс understood the end goal — to help Andrey — and assembled the handoff archive on his own. I didn’t ask for it. That’s a different level of delegation: not “do N tasks” but “close the problem.”
6. Everything is limited only by your imagination. You don’t need to look for programmers, write a long brief, get into negotiations. If you need something — it can be done. By a team of agents. Study. Try.
What’s next
Right now I have four other projects running in parallel. Each one — its own article. Each of them amazes me with the fact that I’m actually pulling them off.
Stay tuned.
And if you’re an accountant who gets a pile of UPDs dumped on the desk every day: that time is over. You don’t have to do this anymore. A new time has come. It’s enough to formulate the task — and it will be solved.
If you have a similar pain (recognizing waybills, invoices, acts, contracts) — try it via api.mdk.guru/upd/ or just message me.
If you’re an entrepreneur who’s still keeping a developer on payroll for routine — try giving one task to a team of agents. One. Small. Just to see what comes out.
One person. Thirteen agents. Kemerovo. This isn’t sci-fi — it’s Friday, 11:00 PM.
Series
- What is OpenClaw — how I found the platform
- How to install it from Russia — step-by-step guide
- Memory for agents — how to make AI remember everything
- Izya took over social media — an SMM automation case
- A team of 7 agents — who they are and why
- UPD parser in a day for a friend — you are here
Liked the article?
@mdkguru on Telegram →