WTWilly Tai
Case study · live demoForward-Deployed Engineering · Data

Day one at the client: three systems, three versions of the truth.

Forward-deployed engineering is the discipline of landing inside a client's operation and making AI work there, on their data, in their mess. Its first two weeks are always the same: the CRM, the ERP and an operations spreadsheet all disagree about who the customers are, and nothing intelligent can be built until someone reconciles them. This workbench is that fortnight, compressed and governed: profile, gate, resolve, map, certify. Runs live in your browser, and it will profile your own CSV without the file ever leaving the page.

01 / The pain

Every deployment stalls in the same place, and it is never the model.

The pitch deck says "we connect to your systems". The reality of week one is a CRM export where the emails read N/A, an ERP vendor master where money is sometimes "S$25,000" and sometimes 50000, and an operations spreadsheet where the same customer is typed four different ways and one contract apparently ends before it starts. Roughly 80 percent of the effort in a field deployment is this reconciliation, and it is usually done as heroics: someone fixes things silently in a notebook, nobody records what changed, and month three delivers the invoice that posts to the wrong company. I have been the person on the client's floor for ten years of this, across command centres, banks and retail estates. The fix is not more heroics. It is treating data onboarding as a governed process with evidence, the way an auditor would treat a period close.

02 / Why the naive approach fails

"Just let the AI clean it up" is how you lose the client's trust in month three.

03 / How it works

Five stages, and the two consequential ones go to a person.

The workbench runs the onboarding pipeline in order. Profile: every column typed, counted and pattern-checked, so the conversation with the client's IT team happens over evidence. Gate: five deterministic rules with IDs and versions; failing rows are quarantined with reasons, never silently repaired. Resolve: candidate duplicate entities scored on name similarity, registration number and email domain, with the arithmetic printed per pair; the certain merges happen automatically under three stated rules, and the uncertain band goes to a human whose decision is recorded. Map: every surviving field lands in one small target model under a named transform, and the fields that map nowhere are parked on the record. Certify: a certificate that recomputes from the raw extracts on every load, and refuses to call itself complete while the adjudication queue has open items.

CRM export ERP master Ops spreadsheet profiletypes · nulls · formats quality gatesG1–G5 · quarantine, not fix entity resolutionevidence per pair human queueuncertain merges only target modelnamed transforms certificaterecomputed live nothing is fixed silently · quarantine has reasons · merges have arithmetic · the certificate refuses to complete while the queue is open
fig.1 · onboarding as a governed pipeline; judgment reserved for the calls that deserve it
04 / One worked example

Fifty-four raw entities walk in. Twenty golden records walk out, and two needed a person.

Across the three extracts the same eighteen companies appear fifty-four times under different spellings: Acme Engineering Pte Ltd, ACME ENGINEERING PTE. LTD., Acme Engrg. The stated rules merge the certain cases automatically, each with its evidence grid. Two pairs land in the human queue. One is a typo (Pinaccle for Pinnacle): merge it, and the decision is recorded as yours. The other is the trap: Solstice Aircon Engineering versus Solaris Aircon Engineering, two genuinely different firms whose names differ by four letters. No shared registration number, different email domains. Merge them and the demo tells you what you just did to their invoices; keep them separate and the certificate closes clean.

PairEvidenceRight call
Acme (CRM) vs ACME (CRM dupe)same registration no. · name 1.00auto-merge · authoritative key
Pinnacle vs "Pinaccle" (ops typo)name 0.93 · no keys in opshuman queue → merge
Solstice vs Solaris Airconname 0.86 · different domains, no shared reg. no.human queue → keep separate
The trap is the argument. Any threshold that auto-merges the typo also auto-merges the two competitors, in one direction or the other. The uncertain band exists because no score can tell those cases apart; only context can, and context is a person's job. The queue is deliberately tiny: the rules cleared forty-eight matches so a human could concentrate on two.
05 / Numbers & honest trade-offs

What it does, and what it does and doesn't prove.

58
rows, three systems
Profiled, gated and resolved live on each load.
5
versioned gates
13 rows quarantined with reasons; zero silent fixes.
54 → 20
entities to golden records
Three stated merge rules; two human calls.
2
fields parked openly
Unmapped is a decision on the record, not a loss.

Where this stands, honestly. The extracts are synthetic, planted with the specific pathologies I keep meeting in real ones: mixed date formats, money as text, nulls dressed as N/A, near-duplicate names, one referential orphan. The profiler is real and will run on your own CSV entirely in your browser; the gates, resolution and certificate run on the synthetic client only, and the page says so at the point of upload. Scale is the honest gap: at fifty-four entities the pair comparison is trivial, while at five million it needs blocking strategies and a real matching engine. The governance shape, though, transfers exactly: stated rules for the certain, recorded human authority for the uncertain, and a certificate that knows the difference.

The trade-off you tune is the automation band. Widen the auto-merge rules and the queue shrinks but the trap gets merged eventually; narrow them and people drown in obvious matches, which is its own failure because tired reviewers rubber-stamp. The demo's answer is structural: automate certainty, evidence everything, and spend scarce human attention only where the arithmetic genuinely cannot decide.

06 / The value proposition

What a client buys when they buy this.

A forward-deployed engagement earns its fee in week one or never. The Data Room is the week-one deliverable made tangible: by Friday the client holds a profile of every column they gave you, a quarantine list their team can action, a deduplicated customer spine with every merge either ruled or signed, and a certificate their auditor can read. The AI that arrives in week three then lands on ground that can bear its weight. The proposition in one line: I make the unglamorous 80 percent of deployment auditable, so the glamorous 20 percent actually ships.

Onboarding certificate · closing staterecomputed from raw extracts on every load
sources    3 systems · 58 rows (CRM 20 · ERP 15 · Ops 23)
gates      G1 v1.2 … G5 v1.0 · 13 rows quarantined with reasons · 0 silent fixes
entities   54 raw → 20 golden · 48 matches under stated rules · 2 on human authority
open       none · adjudication queue cleared
mapping    16 fields under named transforms · 2 parked on the record
transforms trim v1.0 · upper_uen v1.1 · normalize_phone v1.2 · parse_money v1.2 · parse_date v1.4
The certificate is incomplete, and says so, until every uncertain merge has a human decision behind it. "Done" is a state of the evidence, not a feeling.

What this says about how I work.

Ten years of delivery taught me that deployments do not die in the model layer; they die in the first fortnight, in the gap between "we connect to your systems" and what the systems actually contain. So I treat that fortnight the way my audit training says to treat anything that matters: rules with versions, exceptions with reasons, judgment reserved for the calls that deserve it, and a certificate at the end that someone can check. That is forward-deployed engineering done in an assurance firm's accent, and it is the accent clients keep paying for after the pilot.

See it run, live.

Profile the three extracts and find the mixed date formats. Open the gates and read why each of the thirteen rows was quarantined. Then clear the queue yourself: merge the typo, and decide what to do about Solstice and Solaris before the demo tells you which one was the trap. Finish by dropping in any CSV of your own; it never leaves your browser.

Open the Data Room →Runs client-side over synthetic extracts: no sign-in, nothing to install, uploads stay local.