Own your finance AI. Don't rent it.

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

Draft
6120Bad debt expense$214.09
1200Accounts receivable$214.09

AI can already draft the forecast, the reconciliation, or a journal entry.

What it can't do out of the box is work:

Source dataUntraceable
with data you trust,
Approved byNo approver
through controls you'd sign off on,
Next runBy hand
in a way that runs the same every month.

It's not a model problem.It's a harness problem.

Dough is the AI harness for finance and accounting.

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

Posted
Source dataSourced and reproducible
Approved bySeparate reviewer and approver
Next run1st of the month

Own the agents, own the ROI.

The dividing line is ownership. Owning the code, IP, and data behind your finance AI agents is what lets your value creation compound.

AI capabilities / value creation New countryNew pricing modelAcquisition year 1year 3 Update fee Update fee Update fee value creation gap value capture gap owned:compounding rented: waitingand fees

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.

Every answer shows its work.

Accurate, reproducible data out of every system: one queryable layer, with the SQL and source data attached to every output.

Your AI

Aged AR by customer  dough-close
Define an aged AR table by customer, tied out across our systems. Include who to chase and what the AE knows.

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 now
Share it in #collections as a Google Sheet and email each AR contact.

Five 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 now

Shared to #collections. 5 emails sent and logged.

Dough Data Layer

NetSuiteopen invoices, GL
Stripepayments, disputes
Salesforceaccounts, renewals
One queryable layer

Aged AR, by customer, tied out

aged_ar_by_customer   refreshed weekly

CustomerBalanceDays overdueAP contactLast touch
Meridian Manufacturing$42,318.00212R. CallowayPromise to pay, Jun 12
Cobalt Logistics$18,940.50195M. IbarraDispute closed, May 28
Harbor and Vine LLC$612.75241J. WhitfieldNo response, 3 reminders
Pacific Crest Retail$96,205.1061S. AdeyemiAE note: budget freeze lifts Q4
Bluebird Media$7,430.0034T. NguyenPaid via Stripe, partial
Google Sheetslive in your workbook
Gmail5 emails to AR contacts
Slackposted to #collections

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.

Agents draft. Your team approves.

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

July payroll reconciliation  dough-close
Reconcile July payroll across these four files and draft the entries. Register and GL don't tie.

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 now

Dough 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

Posted

Proposed just now from your session. Evidence attached: payload, 4 source files, session transcript

AccountDebitCredit
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
Posted

Policy: one approver, proposer and approver must differ.

Receipt: NetSuite JE 2044 created. Back-link written to the target record.

JE 2041: write off Riverbend Supply, $388.20

Gate rejected

Bounced 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 approval

Evidence attached: payload, aging support, session transcript

AccountDebitCredit
6120 Bad debt expense$214.09
1200 Accounts receivable$214.09

Disputed balance written down after two closed disputes. The gate echoes back what it received before anything is confirmed.

Policy: independent reviewer and approver. Two people, and they must differ.

Reviewed

Review logged. The entry now waits for its approver.

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.

From doing the work to directing the work.

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

Promote AR emails  dough-close
Run my AR email process as an agent every month. Route the emails through the approval gateway before anything sends.

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 now

Dough Hosted Agents

ar-collections v1 Scheduled: first Mondays, 07:00 Live
Mon Jun 14 sent, approved
Mon Jul 65 sent, approved
Mon Aug 3sent, approved
Mon Sep 7scheduled
Mon Oct 5scheduled
  1. Pulled aged_ar_by_customer, refreshed weekly Done
  2. Drafted 4 reminder emails, one per overdue account Done
  3. Routed the batch to the Gateway Done

Email batch: 4 AR reminders

Approved

Evidence attached: drafts, aging support, run transcript

4 emails sent via Gmail and logged to the run record. Next run: Mon Sep 7.

The experiment evolves into a process with controls.

Keep your current tools. Dough integrates with it all.

The data layer reads them. The gateway writes back to them. Agents run across all of them.

Governance delivered by Dough.

See how Dough delivers governance automatically for an agent reviewing purchase orders, in a platform built for public-company control environments.

Run via Claude Cowork Procurement Agent Review every open PO daily
DOUGH MANAGED LAYER
Auditability Layersession logs, token spend, evals
Compliance Layerapi keys, data access, SOX controls
Agent Layeragent and skill repo, hosted agents
Context Layerapis, data lake, file systems
Outcome All outstanding POs reviewed. Exceptions flagged, the rest matched and closed, with the full trail attached.

What each layer delivers

Auditability Layer

Every step is on the record.

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.

→ audit-ready by default
Compliance Layer

Access and credentials stay inside the lines.

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.

→ SOX scopes enforced
Agent Layer

Always the latest, reviewed 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.

→ zero version drift
Context Layer

Agents retrieve data for optimal performance.

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.

→ the golden path for data

Live today

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.

The future of finance is building.

Go AI Native