Overview
Kompleto automates the monthly chase that bookkeepers do by hand. Every month they ask each client for receipts, bank statements and BIR Form 2307s, usually in Viber threads and spreadsheets. Kompleto does the chasing: a BIR deadline calendar per client, a checklist of the documents each client still owes, and reminder emails in Taglish or English that go out only after the bookkeeper approves them. Clients upload files through a private link on their phone, with no app or login, and every file is scanned for viruses. Reminders stop once the client uploads everything or replies. Kompleto never keeps books, computes tax or files returns.
It runs on Nudgewright, a reusable Rust engine I built for human-approved reminder loops. It approves the exact content a person saw, sends each message once even after a crash, and keeps every customer’s data separate. Reminders are worded by Claude, but a person approves every message. The screenshots show a made-up demo firm.
The backend is Rust with axum and PostgreSQL. The bookkeeper’s pages are a React and TypeScript app with Tailwind CSS and shadcn/ui. The client upload page is plain server-rendered HTML, built to load fast on cheap phones.
What I built
- A BIR deadline calendar for each client.
- A checklist of the documents each client still owes.
- Reminder emails in Taglish or English, sent only after the bookkeeper approves them.
- A private upload page that opens on a phone, with every file scanned for viruses.
- A 2307 tracker and payroll chasing, built on my own Rust reminder engine.