Every finance team is being asked how they're using AI. Plenty of experiments and impressive analysis. No finished work.
JE 2043 - Drafted by AI
write off Cobalt Logistics disputes
AI can already draft the forecast, the reconciliation, or a journal entry.
What it can't do out of the box is work:
It's not a model problem.It's a harness problem.
We help finance and accounting teams at startups and public companies get more out of their AI tools. We've helped teams go from using AI as junior analysts to deploying live agents across FP&A, invoice to cash, and accounting.
JE 2043 - Drafted by AI
write off Cobalt Logistics disputes
The dividing line is ownership. Owning the code, IP, and data behind your finance AI agents is what lets your value creation compound.
When you rent your AI capabilities, they grow at the vendor's speed and at your cost. Own the agents: own the value creation.
Data you trust.
Accurate, reproducible data out of every system: one queryable layer, with the SQL and source data attached to every output.
Your AI
Defined. Balances tie to the GL, account names fuzzy-matched across NetSuite, Salesforce, and Gmail, with AP contact and the AE's latest note on each customer. The SQL and source rows travel with it.
Allow Claude to save aged_ar_by_customer as a governed table?
Codex wants to save aged_ar_by_customer as a governed table
refreshed weekly SQL and source rows attached
Not nowFive emails drafted, one per AP contact, each with their open balance and touch history, plus the Sheet for the channel. Outreach runs under your auto-approve policy; every send is logged to the run record.
Allow Claude to share to #collections and send 5 emails via Gmail?
Codex wants to share to #collections and send 5 emails via Gmail
Sheet link posted to the channel emails from your AR inbox auto-approve policy, logged
Not nowShared to #collections. 5 emails sent and logged.
Dough Data Layer
Aged AR, by customer, tied out
| Customer | Balance | Days overdue | AP contact | Last touch |
|---|---|---|---|---|
| Meridian Manufacturing | $42,318.00 | 212 | R. Calloway | Promise to pay, Jun 12 |
| Cobalt Logistics | $18,940.50 | 195 | M. Ibarra | Dispute closed, May 28 |
| Harbor and Vine LLC | $612.75 | 241 | J. Whitfield | No response, 3 reminders |
| Pacific Crest Retail | $96,205.10 | 61 | S. Adeyemi | AE note: budget freeze lifts Q4 |
| Bluebird Media | $7,430.00 | 34 | T. Nguyen | Paid via Stripe, partial |
On your infra or ours, work with AI to define the table, get trusted numbers the same way every month.
Controls you sign off on.
Your auditor hates CSV journal uploads. The old way is point-and-click entries or a CSV into the ERP. With Dough, AI-drafted actions land in an approval queue for humans.
Your AI
4 files attached: payroll_register_jul.csv, gl_extract_jul.csv, benefits_invoice_0725.pdf, bank_stmt_jul.pdf
The register and the clearing account differ by $41,624.47. Two causes: the employer tax true-up from the off-cycle run never accrued, and the benefits invoice includes August's prepaid portion. Three balanced entries reconcile it.
| Payroll register, gross + employer costs | $472,544.02 |
| GL payroll clearing, July postings | $430,919.55 |
| Benefits payable, net of August prepaid | $28,114.09 |
| Employer tax true-up, off-cycle run | $13,510.38 |
Allow Claude to propose 3 journal entries to the Gateway?
Codex wants to run dough propose --entries 3
via dough evidence: payload, 4 source files, session transcript
Not nowDough Approval Gateway
Approval queue, drafted by ar-collections v4. Agents have no approve control: it does not exist for them.
JE 2044: July payroll reconciliation, 3 entries
PostedProposed just now from your session. Evidence attached: payload, 4 source files, session transcript
| Account | Debit | Credit |
|---|---|---|
| 6220 Employer payroll taxes | $13,510.38 | |
| 2140 Payroll taxes payable | $13,510.38 | |
| 6230 Benefits expense | $28,114.09 | |
| 2130 Benefits payable | $28,114.09 | |
| 1450 Prepaid benefits, August | $9,371.36 | |
| 2130 Benefits payable | $9,371.36 |
JE 2041: write off Riverbend Supply, $388.20
Gate rejectedBounced to the agent: credit account 1200 missing subsidiary. Attempt logged as evidence of the control operating.
JE 2043: write off Cobalt Logistics disputes, $214.09
Awaiting approvalEvidence attached: payload, aging support, session transcript
Agents can propose, never approve, never execute. Approvals trigger API calls deterministically. Dough handles API limits, timeouts, payload validity and state management.
Running the same way each month.
The experiment becomes the process: your proven workflow, promoted to an agent, versioned, scheduled, evidenced on every run. It runs in the cloud, not on someone's laptop.
Your AI
Ready to promote. ar-collections v1: first Monday of the month, 07:00, in your cloud workspace. Each run drafts reminders from aged_ar_by_customer and routes the batch to the Gateway. Nothing sends until an approver signs off.
Allow Claude to publish ar-collections v1 to the cloud?
Codex wants to publish ar-collections v1 to the cloud
monthly schedule email batches require one approver versioned, evidenced every run
Not nowDough Hosted Agents
Email batch: 4 AR reminders
ApprovedEvidence attached: drafts, aging support, run transcript
The experiment evolves into a process with controls.
The data layer reads them. The gateway writes back to them. Agents run across all of them.
See how Dough delivers governance automatically for an agent reviewing purchase orders, in a platform built for public-company control environments.
What each layer delivers
Each PO the agent reviews lands in a full session log, and runs can be used for evals automatically. The back and forth between your team and the agent is logged. The approvals are logged. Your audit trail writes itself.
RBAC scopes agents to operate on behalf of users in platforms like Slack and only disclose data that users are allowed to access. API keys are stored in encrypted vaults, not users' laptops. Controls are enforced by the platform, not left to the agent.
The run pulls the current Procurement Agent from the shared repo, not a stale copy on someone's laptop. Agents have skill versions pinned to them and they are only updated when the team approves.
Agents are given the best path to access the data they need. In this case, the agent uses API keys to query outstanding POs (Coupa), data lake snapshot tables to query the latest budget (Anaplan) and a file system to access any ad-hoc changes. No inefficient MCPs exploding the context window.
A $1B+ public company runs agents across FP&A, procurement, and accounting, with agent-driven write-backs to the GL inside their control matrix.
A $100M+ revenue CPG company runs agents across FP&A, inventory management, and accounting, with agent-driven write-backs to the GL inside their control matrix.
Built by founders who have lived both sides: a 3x finance leader who raised $250M and took companies from Series A to Series C onward, and the engineer behind Uber's $1.2B incentive platform and its finance data infrastructure.
Own the full stack. Full data sovereignty, and inference that runs on your tokens.