Recoup: what the human did, what the AI does, and what actually happened

The product

A freelance designer is owed $4,800, eighty-seven days past due. At midnight she rereads her fourth "just checking in" draft, afraid the fifth email costs her both the client and the money. Late payment is the quiet tax on every one-person business, and the only tools on offer are a collection agency that takes 25–50% and torches the relationship, or writing the email yourself.

Recoup is an AI accounts-receivable clerk that works overdue invoices from the freelancer's own mailbox, in her name, on her commercial invoices — first-party, not a third-party collector. She sets a settlement mandate: accept 60% or better, up to three installments, no legal language. The clerk builds a dossier before first contact, picks tone and timing, classifies replies, computes the expected value of a plan against statutory late interest from versioned state rulepacks, issues a payment link, and charges 10% only when money actually lands.

What the AI does, and what it is forbidden to do

The design decision that matters is that the mandate is not a prompt instruction. It is a validation layer the model cannot talk its way past. The negotiating agent's propose_plan and accept_plan calls are checked against the freelancer's policy before anything sends, in code, on the tool call. No authorisation token is issued for a plan below the floor, so no actuator can transmit it.

The demonstration case is the refusal, not the recovery. A debtor counters at 40% on a $4,800 invoice against a 60% floor; the gate denies it under invariant I-1, and the agent counters at exactly $2,880, not a cent under. That refusal is not a one-off: a twelve-persona adversarial simulator — hostile, bankrupt, ghosting, haggler and eight more — runs end to end with 55.1% blended recovery and policy violations of zero, proven rather than asserted.

A second-model compliance critic on a separate system contract gates every outbound for tone, quiet hours and cadence caps. Every customer-visible action is a signed, hash-chained ledger row, and invariant I-5 enforces that every success fee traces causally back to a real payment event — a fee that does not trace fails verification.

Human work versus AI work

I am one person and wrote very little of this code by hand. The implementation, tests and tooling were produced by Claude in a coding harness under my direction. That is the point of the category, so I will not dress it up as pair programming.

What was human: deciding that money authority must be bounded in code rather than in a prompt, which is the constraint everything else follows from. Deciding the regulatory posture — first-party AR on commercial debts sits outside FDCPA's third-party consumer scope, and every constraint that follows is enforced and tested rather than promised in a policy document. Writing the invariants. Choosing to make the violation counter a headline number, because a zero there is falsifiable and a recovery percentage is not.

What was AI: essentially all of the code, the 203 tests across ten files, the simulator, the ledger tooling and the documentation. npm run ci runs the typecheck, the tests, the seed check, the self-test and the ledger verifier.

Jobs and economic opportunity

Actual: none. No jobs created, no team beyond me, no contractor, no payroll, no customer.

Potential, as a claim rather than a result: the people this serves are one-person businesses whose working capital is trapped in invoices they are afraid to chase. If it works, the opportunity is measured in dollars recovered by sole traders who would otherwise have written them off, not in headcount here. Today that number is zero.

Category impact — Small Business Services

The category asks what a very small business can afford to outsource. Accounts receivable is the clearest example of a function that scales badly downward: a collection agency's economics require taking a quarter to a half of the debt, which makes it irrational for a $4,800 invoice and relationship-destroying for a client the freelancer wants to keep working with.

The redefinition attempted here is narrower and more testable than "AI for collections": an agent with real money authority whose policy violations are provably zero, chasing from the creditor's own mailbox rather than a third party's, charging only on success. The bounded-authority proof is the product. A negotiator that will not breach the floor even when a debtor pushes is a stronger claim than any recovery percentage.

Where this actually stands

Revenue: $0.00 — May, June, July and August 2026 each $0. Arms-length customers: zero. Related-party revenue: zero. Marketing and customer acquisition spend: $0.00, disclosed as required even though nil. Live Gemini calls in a deployed application: zero — the only model call site is not reached on the default path, and the heuristic classifier answers instead. Nothing is deployed as a product: the live URL at recoup.edycu.dev is a static evidence dashboard, there is no live mailbox, no real dollars moved, and all debtors are simulated. Stripe is a stand-in.

The core is built and verified. The business is not. I would rather submit that sentence than a number I cannot produce a receipt for.

Built With

  • bigquery
  • cloud-kms
  • cloud-scheduler
  • codeql
  • ed25519
  • firestore
  • github-actions
  • gmail-api
  • google-cloud-run
  • google-gemini
  • merkle-tree
  • node.js
  • oauth2
  • stripe
  • tsx
  • typescript
  • vitest
Share this project:

Updates