Inspiration
My boyfriend is an accountant, and over dinner I kept hearing how stressful the month-end close is. So I built JarvisERP, an AI Staff Accountant that does the close and leaves the approvals to a human.
What it does
JarvisERP runs the month-end close for Afterglow Labs, an AV touring studio, for September 2026, across Chase, PayPal, Ramp and a QBO-style general ledger. Afterglow Labs is a synthetic company, but its data closely models real books: a QBO-style chart of accounts, real bank descriptors like PAYPAL *INST XFER, FX to the cent, a $500 materiality threshold and a written personal-purchase policy (P-0317).
The key moment is one unclear bank line, PAYPAL *INST XFER −$3,912.44. Jarvis matches it across the feeds and splits it four ways:
- $3,451.50 to 1310 Prepaid Tour Costs
- $147.50 to 6810 Bank & FX Fees
- $200.00 to 6410 Software (Claude)
- $113.44 to 1250 Employee Receivable (a personal Steam purchase, under policy P-0317)
The controls are built into the code, not the prompt:
- One write gateway with a role check on every write.
- No self-approval. If the AI tries to approve its own work, it gets a 403 and the attempt is logged.
- Asks when unsure. It marks an item
NEEDS_INFOinstead of guessing. - Hash-chained audit log. Every step leaves a tamper-evident record you can trace and verify at
/api/verify. - Scenario injector. Judges can throw new problems at it live, like duplicate bills, a vendor changing its bank details, or personal spend on a company card.
How we built it
I built it solo with Cursor and Grok Bot, running several Cursor cloud agents in parallel on the backend, the scenario injector and the showcase site. I checked each agent's work myself before merging anything.
The backend is Python, FastAPI and SQLite, with Claude (claude-sonnet-4-5 and claude-haiku-4-5) doing the reasoning and a deterministic fallback for when the model can't be reached. All 66 tests pass.
- Repo: github.com/GeneticAlgorithms/hyphenate-JarvisERP-calhacks
- Site: geneticalgorithms.github.io/hyphenate-JarvisERP-calhacks
Challenges we ran into
- Making synthetic data messy enough to feel like real books.
- Keeping the AI in its lane: blocking self-approval had to be a hard rule in the gateway, not a line in the prompt.
- Teaching Jarvis to stop and ask instead of guessing with confidence.
- Managing parallel agents that sometimes claimed things worked when they didn't, so I verified every claim before merging.
Accomplishments that we're proud of
On the Workbench's built-in answer key, Jarvis passed 34 of 34 checks, against 8 of 34 for a rule-based baseline:
| Tab | Jarvis | Baseline |
|---|---|---|
| Timing & Accruals | 6/6 | 1/6 |
| Package Roll-forward | 5/5 | 0/5 |
| Bank | 9/9 | 3/9 |
| Evidence | 6/6 | 0/6 |
| Vendors | 8/8 | 4/8 |
- The PayPal split turns one unclear line into four correct entries.
- The controls hold, and the audit chain verifies end to end.
- I built and shipped it solo.
What we learned
In finance, trust comes from controls you can check, not from how smart the model is. "I'm not sure, please confirm" is a feature. AI agents' output deserves the same review as a junior's work: run it and verify it before merging.
What's next for JarvisERP
- Real bank feeds through Plaid.
- Connectors for real accounting systems.
- A pilot on public City of Denton P-card data, to test Jarvis on real transactions.


Log in or sign up for Devpost to join the conversation.