Inspiration

Every company pays bills, and every bill can lose money in three ways. Honest mistakes: the median company sends out about 1.5% of everything it pays as duplicate or wrong payments (APQC via Corpay). Scams: 74% of US organizations were hit by business email compromise in 2025, usually a fake "vendor" asking to change bank details (AFP 2026). Inside fraud: organizations lose about 5% of revenue to employee fraud, with a $120,000 median loss in construction (ACFE 2026). And in most companies, the only defense is a busy person checking each bill by eye. We wanted to build the finance teammate we'd actually hire: one where nothing moves without proof.

What it does

Bursar is an autonomous finance team for Keystone Bay Builders, a construction contractor with 9 job sites and 160 vendors. It covers the vendor's whole journey: choosing the right vendor, then checking and paying every bill they send. Every decision-making agent runs on Creao.

Seats we fill: vendor-selection buyer, AP intake clerk, vendor-records analyst, AP matching clerk and payments analyst. Each seat is one agent with its own limited permissions, answering to a human controller.

Choosing the right vendor. Before any money is owed, Bursar runs a bidding round. Two vendors bid for a $120,000 job, and each one's Creao agent pitches with documents (W-9, license, references). Our Creao buyer agent doesn't take their word for it: every claim is cross-examined live against CRS (identity verification, Fraud Finder, phone ownership, liens and judgments, business records) and stamped verified, contradicted, or unverified, with red threads linking each lie to the CRS fact that disproves it. Judges can tamper with a W-9 mid-demo and watch CRS catch it. Vendors compete on terms but only ever see each other's offers, never their data, and a Rulebook enforced in code sets hard limits no agent can talk past.

Checking and paying every bill (accounts payable, stages 1 and 2):

  • Check and book. Every incoming bill gets a proof record with 8 stamps: right sender, real vendor, not already paid, matches the purchase order, actually delivered, correct terms, bank account really the vendor's, and no insider link. The Intake, Vendor-Records and Matching agents each sign only their own stamps. A gateway written in plain code refuses to book any bill missing a stamp.
  • Catch what humans miss. Fuzzy duplicates (INV-1043 paid again as "1043-A") are caught against Nessie payment history. A bank-detail change triggers a 3-step CRS chain: Fraud Finder (risk score, email age, VoIP phone), identity verification (reason codes like SSN/name mismatch), and reverse phone lookup, so we never call a scammer's "confirm" number. In our demo, a $48,000 bank-change scam is stopped, while the real vendor's identical request passes.
  • Pay safely. Booked bills are scheduled by contract terms (e.g. net 30 from delivery), early-payment discounts are flagged, and a human controller approves. The approver can never be the requester. Bank details are re-checked right before payment, money moves through Nessie, and the bank record is matched back to the bill.
  • Explain everything. Every decision has an audit trail back to the data, the rule, and the agent behind it. What's new: most AP tools automate the easy part, reading invoices. Bursar automates the judgment: deciding which vendor, which bill and which bank account deserves trust, and proving why.

Why Creao is the engine

Bursar's agents don't just use Creao. They are Creao agents.

  • Every live decision runs on Creao. Reading documents, judging evidence, assessing risk, negotiating terms and writing the controller's approval memo are all Creao agent runs, triggered from our backend through Creao's API. Turn Creao off, and Bursar stops thinking.
  • One seat, one agent. Each finance seat is its own Creao agent with its own skill file, structured inputs and strict JSON contract, which made "limited access per seat" natural to build.
  • Built at hackathon speed. We described each role in plain English, and Creao turned it into a working, callable agent in minutes. We designed, tested and refined our agents in a single evening, then iterated on their skills as our tests found problems.
  • Agents think, code enforces. Creao agents do the reasoning; our gateway checks every output against real CRS data and the Rulebook before anything is booked or paid.

Why CRS is the heart of it

Without CRS, Bursar can't tell a real vendor from a fake one. CRS data is the evidence behind every important decision:

  • Identity verification decides whether the person changing bank details, or pitching for a contract, is who they claim to be. Reason codes like SSN/name mismatch or "deceased" end the conversation.
  • Fraud Finder scores every new email and phone (email age, VoIP, owner match), and that score sets risk tiers and hard stops.
  • Reverse phone lookup proves a callback number belongs to the real vendor before we dial it.
  • Liens, judgments and business records decide how much trust, credit and upfront money a vendor earns.
  • In the bidding round, every offer must cite a CRS fact, and code rejects any claim CRS didn't return.

We use CRS responsibly: only sandbox test personas, consent before any credit data, no criminal or eviction records, masked identifiers, and a live log showing every CRS call and why it was made.

Built for how finance teams actually work

  • Sources that disagree. The invoice, purchase order, receiving log, bank and CRS often tell different stories. Fixed trust rules decide and say why: the bank beats the ledger, the purchase order beats the invoice, the receiving log beats the invoice, and the last verified bank details beat the current ones.
  • Time. Every event is stored in an append-only log, so any decision can be replayed "as of" its date. Vendor details carry a last-verified date, so an unverified edit made in March can't redirect a payment in June. Bills are scheduled by their contract terms over weeks, not minutes.
  • Working with others. The system asks the right person: the project manager for a missing delivery, the vendor for a price mismatch, the controller for anything large or risky. It handles "no" and records why.
  • Limits. No agent can do another's job. Whoever requests a payment can't approve it, and the gateway enforces this in code, not in a prompt.
  • Explainable and accountable. Every stamp, verdict and payment links to its data, its rule, and the agent that signed it.

How it learns and improves

  • Learns from the controller. When the controller overrides a decision, the reason is saved and becomes a rule the agents follow next time.
  • Vendor trust builds over time. A vendor with months of clean, verified bills earns looser checks; a vendor whose contact details or bank changed recently gets stricter ones.
  • Improves against its own answer key. Every run is scored against planted problems; each miss or false alarm became a fix to an agent's skill or a rule, which is how we went from failing outputs to catching 38 of 40.
  • Remembers what happened. Every decision is in the event log, so a vendor's history in March shapes how its bills are treated in June.

How we built it

  • Agents: Creao agents for every seat, called from our backend through Creao's API trigger, with strict JSON contracts validated on every run.
  • Frontend: React + TypeScript, Tailwind and Framer Motion for the AP dashboard (Inbox → Check → Verify → Approve & Pay → Proof), and React Three Fiber for the 3D bidding room.
  • Backend: TypeScript services with a double-entry ledger, an append-only event log, signed stamps per agent, and a gateway enforcing permissions and segregation of duties.
  • Data: CRS sandbox test personas (live), business records simulated in CRS's exact response format, and Capital One Nessie for accounts, payment history and payments.

Proof it works

  • What's real: live CRS sandbox calls for every person; real Nessie accounts, payments and history; real Creao agent runs behind every decision.
  • What's simulated: the company (Keystone Bay Builders), its vendors' business records (in CRS format), purchase orders, delivery logs and invoices.
  • How we know: a generator builds a messy week of bills (typos, renamed vendors, duplicates, price creep, scams) with 40 planted problems and a hidden answer key. A scoring service reports what was caught, missed and falsely flagged. Result: 38 of 40 caught. Judges can also try their own scenario live, from a tampered W-9 to a fake bank change.

Challenges we ran into

  • Making agents trustworthy with money. We landed on "the AI proposes, the code decides": Creao agents read messy documents and argue, but every booking and payment passes hard rules they can't change.
  • Strict outputs. Our first agent versions reasoned well but often wrapped answers in prose. We tightened every skill file, pinned units (whole dollars) and validated every output.
  • Sandbox limits. CRS's sandbox only covers people, so we mapped vendors to real test personas and simulated business records in CRS format, sending only exact test-persona requests.
  • Latency. A deal involves many agent runs, so we parallelized independent agents, cached built-in documents, and recorded real runs for replay.

Accomplishments that we're proud of

  • 38 of 40 planted problems caught, every decision traceable.
  • A live $48,000 bank-change scam stopped by three chained CRS checks.
  • A judge can tamper with a document mid-demo and watch CRS catch it in real time.
  • A complete multi-agent finance team running on Creao, built in one hackathon.

What we learned

Autonomy in finance isn't about letting AI do anything. It's about giving each agent one seat, limited access and a clean record, and knowing exactly when to ask a human. Sources disagree constantly, and the hard part is deciding which to trust and saying why.

What's next

  • Enable CRS business credit, OFAC and UCC filings for full vendor verification.
  • Stream Creao agent runs live into the bidding room.
  • Add stage 3 (disputes and recovery).
  • Connect to real ERPs and banks, and pilot with a mid-size contractor.

ROI figures in our pitch are estimates based on public benchmarks.

Built With

Share this project:

Updates

Submission history