Build Story · Internal tool · Accounting archive · BG
Fin Vault: every accounting paper in one place
A private archive for a company's accounting paperwork. It shows what the accountant still owes and builds audit packs on demand.

In one look
The problem
A small company's accounting paperwork ends up spread across mailboxes, desktop folders and the accountant's emails. Nobody can see at a glance which monthly filings are missing, and answering a tax inspection means digging through all of it.
What we built
One private archive in Bulgarian. Upload a scan or PDF and AI reads the number, date, counterparty, amounts, VAT and currency. A month-by-month grid shows which filings from the accountant are in, overdue or not yet due, and one button builds a ZIP for the accountant or a tax audit, with a checksum for every file.
Where it is now
Live as an internal tool for the founder's own companies. It is invite-only, and the public address shows only a sign-in page. The archive, accountant grid, audit packs and tax calendar work. Accountant logins are built but not yet in use, bank data covers only part of the history, and matching payments to invoices isn't built. It isn't offered to other companies.
What this would have cost in 2024
About $20k and 2–3 months
2024 team: 3 people: full-stack web developer, backend and data engineer, part-time QA. Built here by one founder working with AI in 9 months, in three short bursts.
| Piece | 2024 hours |
|---|---|
| Sign-in, roles, user admin, idle sign-out, change log | ~41 |
| Upload, duplicate detection, AI document reading and renaming | ~83 |
| Archive screens: server paging, search, filters, editor, bulk actions, phone layout | ~103 |
| Accountant grid, accountant ZIP, tax calendar and generator | ~63 |
| Audit pack: wizard, ZIP with checksum manifest, missing list, auto-split | ~52 |
| Bank import, transactions, reports, dashboard, AI chat, subscriptions | ~88 |
| Server bulk import, euro handling, archive clean-up | ~53 |
| Gap audit, QA, security pass, naming and share card | ~38 |
| Total (PERT) | ~522 |
Method: PERT (O+4M+P)/6 per piece; low = O × $25, likely = PERT × $37.5, high = P × $50 (Accelerance 2024 Eastern-Europe band). These are estimates of what a team would have needed in 2024, not invoices.
How it was built
From first commit to current build in 9 months, in three short bursts
- First prompt
Started on the founder's own company paperwork: upload invoices and bank statements, then flag duplicates. Look-alike file names turned out to be different documents, so suspected pairs are shown side by side.
- Totals that didn't add up
Income and expense totals on screen didn't match the bank spreadsheet. The database returned only the first 1,000 rows, so every total came up short. Five files had the same limit, and a helper now pages through every row. The same day, documents learned to carry leva or euro, since Bulgaria joined the euro on 1 January.
- One name: Fin Vault
Two Bulgarian working names became one, with a folder-and-keyhole mark and real page titles.
- Built around the accountant
A new accountant page: per firm and month, VAT returns, ledgers, payroll and social-security filings show green when in, red when overdue and grey when not yet due. Eleven new document types, and a server import that skips any file already stored, by its fingerprint. The founder's full archive went in the same day.
- An audit, then two fix builds
A code-and-data audit found 21 gaps: three pages hid most of the archive behind the old 1,000-row limit, and the audit pack was still a mock. The same day brought server-side paging with exact counts, a full manual editor, quick filters for unsent, duplicate and to-review documents, bulk actions, user management and invite-only sign-in. AI reading then filled in the money fields across the archive.
21 gaps found - A real audit pack
Pick a firm, a month range and document types, preview, and download a ZIP sorted by month and type, with a checksum for every file and a list of what's missing. Big selections split into parts by themselves. Also shipped: a generator for recurring Bulgarian tax deadlines, full-text search over the AI-read text, and phone layouts.
test pack: files, manifest and database matched one for one, 0 missing · 16 of 21 gaps closed - First bank feed
The bank statements existed only as PDFs, which the in-app importer doesn't take (it reads CSV and Excel). Claude Code parsed them outside the app and loaded them.
totals match the source PDFs
Who did what
The founder decided
- Invite-only: no public sign-up, and a sign-out after 30 minutes idle.
- AI reading never overwrites a value a person typed.
- Totals are shown per currency and never mixed; documents from 2026 default to euro.
- Building an audit pack never changes a document.
- Duplicates are flagged with a reason and left out of totals.
AI built and checked
- The web app, built in Lovable from 160 of the founder's prompts between January and September.
- Claude Code: the October audit, the build briefs for the accountant page, audit pack and paging fixes, the archive import, and live checks of the results.
- AI document reading and a chat over bank transactions, both on Google Gemini.
Stack
Want something like this for your team?
From one call to something live. The same method is in the Claude Operator Pack.
From the founder
You might also like

Shares React · TypeScript

Shares React · Edge functions

Shares React · TypeScript