CS Ventures
Remit · The Receivables Agent
Monitoring agent · Accounts receivable & invoicing

One agent, two databases, and a loop that collects cash faster every week.

Remit wakes up every weekday morning, reads the aging report, and decides what every past-due invoice needs: a reminder, an escalation, a dispute flag, or deliberate silence. Every decision is recorded for audit before anyone sees it. Every analyst review becomes a lesson. A weekly refinement pass turns those lessons into better judgment, with no retraining project.

Runs itself · weekdays, 6:00 AM, no prompt Drafts, never sends · a human approves every action Append-only audit trail of every call Learns weekly · rules are data, not weights
Working mock · simulated ledger, no real customer data
Inside the system

Every box is a real component. Click any one to see what it does.

Data flows in from the ledger, decisions flow out to the AR team, and lessons flow back into memory, so tomorrow's run starts smarter than today's.

Component

The whole system at a glance

Blue lines carry data in, orange lines carry decisions out, and green lines carry learning. The dashed loop is the point: what the memory table holds today shapes what the context loader assembles tomorrow. Click any box for the detail.

A day in the life

One morning, five moments

This is everything the agent does, shown as a story. It plays on its own. Use the controls to pause, change speed, or jump to any step.

6:00 AM · no one pressed start

The agent wakes itself and gathers the morning

6:00AMweekday · run #142
The invoice ledger42 open · $213,900 outstanding
Overnight payments3 arrived · $22,150 applied
Everything it has learned14 collection rules · memory v7
Working memoryRebuilt fresh every morning, and nothing stale carries over

Why it matters: no analyst has to remember to run anything. The agent starts with today's numbers and every lesson it has ever earned.

6:01 AM · the judgment call

It reads every past-due invoice and decides what each one needs

Beacon HealthINV-2093$31,90041 days lateEscalate
Northwind RetailINV-2107$6,25012 days lateRemind
Juniper & CoINV-2088$12,75022 days lateWait
Ravenna FoodsINV-2120$4,98015 days lateAsk a human
What the agent is thinking · in plain language

"Beacon promised to pay last week and nothing arrived. They have paid late on 4 of their last 6 invoices. This is past reminders."

Checked payment historyChecked the promise log
→ Escalate to the AR manager, call script draftedconfidence 0.88

"Northwind is only 12 days out and has always paid after one friendly nudge. Keep it warm."

Drafted a 92-word reminder
→ Send reminder with the statement attachedconfidence 0.84

"Juniper always pays by day 30, so a reminder now would only annoy a good customer. Rule #12 says leave them alone."

Used learned rule #12
→ Wait, on purpose. Check again at day 30confidence 0.90

"Ravenna is brand new, with too little history to judge them. I am not confident enough to act."

Guardrail: below the 0.70 bar
→ Hand this one to a personconfidence 0.58

Why it matters: the right move is not always to send another email. Escalate, remind, deliberately wait, or admit uncertainty, and every call comes with its reasoning written out.

6:02 AM · before anyone sees a thing

Every decision is written down first

The decision recordAppend-only · audit trail
Beacon HealthEscalate0.88Broken promise + late on 4 of 6
Northwind RetailRemind0.84One nudge has always worked
Juniper & CoWait0.90Rule #12: pays by day 30
Ravenna FoodsAsk a human0.58Too new to judge

Why it matters: the call, the confidence, and the written reasoning land in a database that can never be edited, so any decision can be audited months later, including the rejected ones.

8:00 AM · the human gate

An analyst reviews the queue in minutes, and nothing sends itself

Beacon Health · escalation + call script$31,900 · highest dollar risk, ranked first✓ Approved
Northwind Retail · friendly reminder$6,250 · statement attached✎ Approved, softened
Juniper & Co · wait until day 30$12,750 · per learned rule #12✓ Approved
Ravenna Foods · flagged for judgment$4,980 · the agent asked for help✗ Hold a week
0

Emails sent by the agent itself. It drafts, ranks, and explains. A person approves every send, and every edit becomes feedback.

Why it matters: the agent does the reading, checking, and drafting; the human keeps the judgment and the send button.

Friday 5:00 PM · the loop closes

It compares its calls to what actually happened, and gets smarter

What this week showed

  • Analysts rejected early outreach to new customers 3 times: the agent was too eager.
  • Every "wait" on Juniper resolved by day 30: rule #12 keeps being right.
  • Beacon paid 2 days after the manager's call: the escalation was the right read.
Refinement pass
The memory tablev7 → v8
#12 · kept · "Juniper & Co reliably pays by day 30; do not remind before then."
#15 · new"Customers with fewer than 3 invoices of history: hold outreach until day 21."

Why it matters: the lessons are written as plain-language rules a human can read, veto, or roll back, and Monday's run starts one rule smarter. No retraining, ever.

Under the hood

The architecture: a harness, three memories, and an ops loop

Everything inside a single run is ephemeral: the context is rebuilt fresh every morning. What persists lives in databases, and what improves the agent ships like software.

The harness · one run
Deterministic

Working memory

Assembled fresh each run: the system prompt, today's ledger snapshot, overnight payments, and the learned rules pulled from memory. Nothing stale accumulates between runs.

LLM · loop

Reason + tools

Claude judges each invoice, calling tools mid-thought like get_payment_history, read_email_thread, and draft_reminder, folding results back into its reasoning.

Guardrails

End-of-loop checks

Confidence below 0.70 routes to a human-judgment queue instead of a drafted action. And the hard rule: the agent drafts, it never sends.

Databases

Record + deliver

Every decision is appended to the audit record before the digest is assembled. The digest is the only surface a human ever needs to touch.

Three kinds of memory
Episodic · SQL

What happened

Every dated invoice event: reminders sent, promises made, payments received, disputes raised. The raw material the weekly refinement pass replays.

Semantic · distilled facts

What is durably true

Customer payment behavior, distilled: "Beacon Health pays late 4 of 6 invoices." Retrieved by relevance when an invoice for that customer comes up.

Procedural · files

How to act

The dunning playbooks: how to write a first reminder vs. a final notice, when a call beats an email, what tone fits a 30-year account vs. a new one.

Consolidation runs on a cheaper model. After enough new episodes accumulate, a summarizer agent distills episodic history into semantic facts, so the expensive reasoning model reads three crisp sentences about a customer instead of ninety raw ledger events.

LLM Ops · how the agent itself improves
Traceone trace per run Eval + Observejudge scores tone & accuracy; track tokens, latency, errors Diagnosewhere and why it broke Gateeval must pass Releasenew prompt version, config, or tool change

Two loops improve two different things. The weekly refinement pass improves the agent's judgment by writing better rules to memory. The ops loop improves the agent's machinery (prompts, tools, retrieval settings), and every change ships behind an eval gate, the same way software ships behind tests.

The pattern is bigger than receivables.

Schedule → gather → reason → record → deliver → learn is a template for any recurring back-office judgment task. Invoicing is just the demo.

Back to the portfolio