Compound Labs
Get the newsletter
THE STANDUPAnthropic fixes Claude 5.1 error spikesERROR SPIKES, FIX DEPLOYEDCOMPOUND MASTODONSkillWorks records inactive files beside their roster status22 INACTIVE FILES STILL LOADCTXWINDOWContext Window tracks AI lab changes and filters their evidenceFILTERS KEEP EVIDENCE TOGETHERAGENTWIREmicrosoft/agent-governance-toolkit - AI Agent Governance ToolkitPOLICY ENFORCEMENT FOR AI AGENTSCOMPOUND FACEBOOKCompound Portfolio restores its sweep after a missing module stops desk dataSWEEP RESTORED, DESK DATA WRITTENBLOCKDEXBlockDex shows no destination for captured rows with rejected slash names31 ROWS, NO DESTINATIONCONTEXT WINDOWOpenAI adds 1024p image pricing: $0.50 and $0.251024P IMAGE, $0.50 AND $0.25COMPOUND BLUESKYCompound Labs renamed job labels so job-run finds breaker stateBREAKER STATE, NOW FINDABLECTXWINDOWContext Window tracks document changes but failed mobileMOBILE WORKFLOW, ONE COLUMNAGENTWIREMineDojo Voyager: Open-Ended Embodied AgentOPEN-ENDED EMBODIED AGENTFOUNDER BLUESKYdeploy.sh now fails false Vercel production landingsFALSE LANDINGS NOW FAILCOMPOUNDlast known fixes redirect tracking after migrationSTUDIO SOURCES NOW SAY COMPOUNDCONTEXT WINDOWOpenAI adds sora-2-pro pricing720P VIDEO, $0.15, $0.30FOUNDER LINKEDINdeploy.sh now stops failed promotes from marking production landedFAILED PROMOTES NO LONGER LANDUSINGITUPUsing It Up records a receipt fixing a wobbling wooden tableONE RECEIPT, TABLE STAYED LEVELCOMPOUNDpnpm v12.4.2POSIX BIN SHIMS REPLACEDFOUNDER PEERLISTCompound Labs' deploy runner rejects failed promotesFAILED PROMOTES NO LONGER LANDTRUSTDESKTrustDesk fixes host migration redirects while keeping /api/ outOLD HOST, 308; API STAYS LIVE
Independent product R&D labFounded and run by Isaiah Kim, @kyisaiah47Newest commit Sep 16, 2026, AgentwireNewest writing Sep 16, 2026Site changelog Sep 16, 2026
FetchDueAug 23, 20263 min read

FetchDue reads every dollar figure back out of a drafted reply, and refuses the ones it did not compute

A client answers a chase email with a number of their own, and it is smaller than the invoice. Whatever goes back to them leaves the agency's own mailbox with the owner's name at the bottom. If that reply repeats the client's figure, the agency has just put a lower balance in writing, inside a sentence nobody read twice.

FetchDue is a collections agent for agencies. It works the overdue list from the agency's own mailbox, reads what each client writes back, drafts the answer, and follows up until the money lands. The drafting is done by a model, which makes the numbers in that draft the part of the product that can actually cost someone.

Watch the FetchDue, The collections agent built only for agencies, it chases from your own mailbox, in your voice demo

The model is handed the figures, never asked for them

Before a word is written, the server computes the verified figures from the invoice row and the late-fee policy: the balance, the applied late fee, the two added together, the original due date, and the payment link. The late fee is recomputed on the spot rather than trusted from storage, and it is clamped to the state's own interest ceiling on the way through. Nothing is read from what the client wrote. Those figures are the only numeric material in the drafting instructions, under a hard rule that says use only these, and never state any other dollar amount or due date.

That rule is a request. Everything after it is the part that does not depend on the model agreeing.

FetchDue changelog page with August 2025 product updates and features, Recent shipped improvements including workspace features, late-fee rules, and geographic coverage.
FetchDue changelog page with August 2025 product updates and features, Recent shipped improvements including workspace features, late-fee rules, and geographic coverage.

The draft gets read back

The finished subject line and body are scanned for currency amounts, and every amount found has to match one the server handed over, within a cent. A figure matching nothing means no draft is queued at all. The conversation flips to human handoff and the agency owner answers that client personally.

The allow list is wider than the three computed numbers, deliberately. It carries the clean halves, thirds and quarters of the balance and of the total, because "two payments of $4,400" is the correct reply when a client asks to split a bill, and a check that killed that sentence would disarm the agent exactly where it earns its keep.

The scanner is also narrow about what counts as money. Bare integers, single-decimal percentages and dates are skipped, so a draft can say an invoice is 45 days overdue at 1.5% monthly without tripping anything.

What the draft saysWhere that figure came fromOutcome
"Your balance is $8,800 plus a $132 fee = $8,932."all three computed server sidequeued for approval
"Two payments of $4,400.00."half of a computed totalqueued for approval
"Thanks, I'll send the plan details shortly."no figure at allqueued for approval
"Invoice INV-1039 is 45 days overdue at 1.5% monthly"not currency, so never checkedqueued for approval
"No problem, we'll settle the $500 balance."the client's own replyno draft, the thread goes to a human

Three replies that never reach the model

A reply classified as hostile is handed straight over, because an automated answer to a legal threat is never worth sending. An opt-out flips that client to do-not-chase, and no cadence reaches them again. Once the agent has written five messages in one thread it stops, on the view that an unbounded back and forth with a paying client is a failure rather than a negotiation.

Nothing sends by itself in any of these paths. A draft is written into the thread as pending review and waits for a click. Pro is $9 a month flat, and Firm is $29 for bookkeepers running collections across many agency clients.

How we built this: https://fetchdue.thecompound.tech/hn?utm_campaign=compound

---

One shipped product, taken apart, once a month. What it does, what it cost to build, what the pipeline behind it looks like, and what the numbers did, read off the repository and the live site, not written from memory. Join the list.

All writing