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_INFO instead 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.

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.

Built With

Share this project:

Updates

Submission history