Case study  /  Product build

An AI copy editor that deploys into your cloud, not a vendor's

Newsrooms need house-style enforcement and cited fact-checking at deadline speed, and increasingly need the AI to run inside their own infrastructure. StyleProof is a copy-desk tool built around exactly that constraint.

Working build, verified on Bedrock
  • Host-agnostic engine
  • Eval gate in CI
  • Runs in a customer's Bedrock
StyleProof case study card

The engagement

Challenge

Two mechanical jobs, under deadline, on someone else's cloud

Enforce a house style guide and check that a story's claims hold up: both slow, both error-prone. And media companies increasingly want the AI to run inside their own cloud, not a vendor's, which most tools are not built to do.

Action

A portable engine with a quality gate

A host-agnostic verification engine with zero HTTP or UI knowledge (enforced by a lint rule, not a convention), models and search behind swappable interfaces, a tiered agentic fact-checker, and a streaming review UI where a human accepts or rejects each item. Quality is gated in CI against a committed eval baseline.

Result

The same build runs as a demo or inside a customer's Bedrock

Verified end to end against live Bedrock models and live search, not mocks: it produced correct corrections, caught a planted arithmetic error, and contradicted a planted false date with a citation. Clean-room, so it is mine to show and to sell.

How it is built

The shape that makes it portable

Document in
normalized article plus tenant config
engine
Verification engine
no HTTP or UI, lint-enforced
stream
Review UI
typed event stream, one item at a time

Models and search sit behind interfaces, so the same engine runs on a demo host or in a customer's isolated account.

  • 01Engine purity. A lint rule fails the build if anything in the engine imports a framework or transport.
  • 02Model map. Claude Sonnet 4.6 for extraction and verification, Haiku 4.5 for the copy passes, Amazon Nova 2 Lite for deterministic extraction, all through Bedrock, resolved by a ModelMap with no model ids outside tenant config.
  • 03Search interface. Tavily behind a SearchProvider, swappable per tenant.
  • 04Eval gate. npm run eval fails on F1 or fact-status accuracy dropping more than 5 points, cost per article rising more than 25 percent, or any blacklisted false positive.
  • 05Reviewed baselines. Regenerating the baseline prints an old-to-new diff that is the review artifact in the pull request, so a ratified regression is never silently absorbed.

What it proves

The eval gate answers the hardest question about shipping AI into a customer's cloud: when you swap a model per tenant, how do you know you did not make it worse.

See the rest of the work →

Clean-room reimplementation from public knowledge. Fixture articles are invented, not any real newsroom's copy.