An AI scanner sweeping a vault of documents, four flaring red

← all writing

01

The agent that audited my own contracts

Pointing an LLM at the operational risk no human has the hours to read.

FXVPS is a multi-tenant SaaS that I run solo. Over the years, customer-facing copy accumulates: onboarding emails, refund replies, affiliate terms, SLA language, retention messages. Each was written at a different time, often for a different situation, against a different version of the policy.

Individually, each message makes sense. Collectively, they drift. Nobody sits down to re-read years of customer emails against the current terms and conditions. It is exactly the sort of work that is important, repetitive, and almost never done.

Audit pipeline diagram: 126 customer emails, extract every commitment, cross-check vs canonical policy, 4 contradictions flagged, corrections to 38 customers, on a monthly cron hook.
Ingest the corpus, extract every explicit commitment, cross-check against the canonical policy, flag the conflicts, then re-run it monthly on a cron hook.

The problem

That creates a quiet operational risk. If one email promises a refund window the policy does not offer, or an SLA the infrastructure cannot meet, you have created an obligation you never intended. You usually discover it only when a customer quotes your own words back to you.

You usually discover it only when a customer quotes your own words back to you.

What I built

An LLM-powered content-audit pipeline that ingests customer-facing emails, extracts every explicit commitment, and compares those commitments against both the canonical policy and the rest of the corpus. Rather than producing a vague summary, it identifies the exact sentences that conflict and suggests a correction.

The output was a worklist,

not a vibe.

Contradiction matrix comparing what customer emails promise against what the policy allows, across refund window, affiliate payout, retention clause, and SLA uptime.
Every promise, lined up against the policy that was supposed to govern it. Where they disagree, the agent raises a flag you can act on.

The run

Across 126 customer emails, the audit surfaced four genuine contradictions covering refunds, affiliate terms, retention, and SLA language. Each finding was reviewed manually before any changes were made. Once confirmed, I shipped corrected wording to 38 active customers with zero failures, then wrapped the audit in a monthly scheduled hook so the corpus cannot quietly drift that far again.

Diagram showing emails drifting away from policy over time as copy piles up, with a monthly audit sweep snapping them back to the source of truth.
Copy drifts away from the policy as it accumulates. The monthly audit sweeps the corpus and snaps every promise back to the source of truth.

The real lesson

Agents are not only useful for headline product features. Some of the highest-return applications are the operational jobs that are too large, too repetitive, and too consequential for a person to keep revisiting.

Every long-running product accumulates documentation, emails and policies that slowly diverge. Those inconsistencies rarely break all at once. They compound quietly until somebody relies on one.

Find the corpus that nobody has time to police manually, but that matters when it is wrong. That is often where an agent pays for itself in its first week.

PHP, multi-tenant Go/PHP backend, Anthropic Claude, scheduled hooks.

// let's talk

Have a system worth getting right?

Book a call

or email [email protected] · find me on LinkedIn