前線部署工程

Edge Case Shipping Guide: Exception Handling That's Easiest to Miss Before Enterprise AI Goes Live

A contract AI that got standing ovations in demo. Four months live with only 3 users out of 11. The problem isn't the model: it's the 5% dirtiest inputs. Our experience: 80% of the work from prototype to production is hidden in edge cases. This breaks down how to audit, prioritize, and ship these exception handlers one by one, turning "it looks like it works" into "people use it every day."

By

Tenten AI FDE 團隊

前線部署工程

Published

May 25, 2026

Read time

7 分鐘

FDE 前線部署工程AI 邊角案例處理企業 AI 上線採用率工程例外處理RAG 知識系統

Last month we took over a contract review Copilot that's been live for four months. The feature list looks solid: clause extraction, risk flagging, line-by-line summaries. The general counsel applauded during the demo. I pulled the usage logs. Monthly active users: 3 out of 11. The problem isn't the model. It's that those 3 users only upload standard procurement contracts. When they try a bilingual M&A agreement, a scanned document, or an old contract with handwritten notes, the system goes silent, generates nonsense, or treats attachments as the document itself. After two bad experiences, users went back to Word.

Here's the core insight: most of the work between demo and production lives in edge cases. A prototype that runs the happy path completes maybe 20% of the total launch work. The remaining 80% goes almost entirely to exceptions you deliberately avoided during the demo.

Why edge cases determine adoption, not accuracy

Demo logic asks: what can this do? Production logic asks: what will it do when it fails? The sample distributions are completely different.

A demo runs on curated cases (clean format, clear semantics, hand-selected examples). The real pipeline contains PDFs that are half tables. Numbers mangled by OCR. Three different ways of writing the same field. Users typing questions as fragments with no subject. Inputs where the question itself is ambiguous: does this contract even apply?

Trust works asymmetrically. One bad answer loses a user for ten correct ones. Adoption depends on what happens with the worst 5% of inputs, not on average accuracy. A 95% demo accuracy means nothing if that 5% fails silently with a confident wrong answer.

Step 1: Audit edge cases upfront: don't wait for them to blow up

Most teams wait for user reports to find exceptions. This costs the most because every report damages trust.

During the first week on site, we stress test. Pull 200 to 300 random samples from the customer's actual pipeline over the past six months (not the clean ones, everything) and run each through the system. Log every failure: wrong output, incomplete output, or crashes. This usually surfaces 40 to 60 distinct failure patterns in two or three days.

Auditing requires three answers: What does this input look like? What did the system output? What should the correct behavior be? Teams skip the third one most often, but it's crucial. For many edge cases, correct behavior isn't answering correctly. It's gracefully admitting uncertainty. A system that says I can't read this document completely, I recommend manual review of page 3 is more trustworthy than one that answers anyway.

Step 2: Prioritize: decide what to fix now versus what to block

After auditing you'll have a long, frightening list. The worst mistake is thinking fix everything before launch: you'll never launch. Prioritize on two dimensions: frequency and consequence.

LevelFrequency × ConsequenceHandling Before LaunchExamples
P0 BlockingHigh frequency or high riskMust fix or don't launchScanned PDFs treated as body text, amount extraction errors, expired clauses marked as valid
P1 GuardrailsMedium frequency or medium riskAdd detection: surface to human review or explicitly declineBilingual parsing gaps, ambiguous applicability calls
P2 BacklogLow frequencyPost-launch iteration queue, ship weeklyRare document formats, niche industry terminology
P3 AcceptedVery low frequency and low riskDocument as known limitation, don't fixOnce-a-decade historical formats

The table's value isn't the categories themselves. It lets you and your customer explicitly decide what not to fix. The P3 row matters most: saying we're not fixing this, and we know we're not fixing this is more honest than pretending omniscience, and it makes scope deliverable.

The guardrails tier is underrated. You don't need the system to answer every difficult question. You need it to recognize which questions it shouldn't answer and defer cleanly to a human. This tier usually has the best return: a good decline-and-escalate mechanism often improves adoption better than three more months of training.

Step 3: Ship it weekly: make exception handling a rhythm

After prioritization, enforce discipline. Break P1 and P2 into a visible backlog where every item is a testable assertion: when input is X, system should do Y. Ship a batch every week. Fix one item, pick the corresponding test sample, verify you didn't break something else.

Don't say fixed and move on. Every edge case needs a test sample in the regression suite, permanently. AI systems update prompts or swap models, and old exceptions come back to life. Without regression tests, you're falling into the same hole repeatedly.

That contract Copilot with 3 active users out of 11 didn't need the model rebuilt. We spent three weeks adding detection for scanned PDFs, bilingual parsing, and applicability declination (three P0/P1 issues), then queued a dozen P2s for weekly iteration. By week six, monthly active users reached 9. What changed wasn't accuracy. Users now knew when the system would raise its hand and say I'm not sure about this one.

,

At Tenten, we judge frontline deployment on simple criteria: a polished demo doesn't count. It counts when it handles the dirtiest 5% of your real inputs and someone uses it every day. Our first move on site usually isn't to add features. It's to audit those edge cases nobody wants to touch one by one (the ones that are 80% of the work), prioritize them, and get them into the ship rhythm.

One stuck workflow
is enough to begin

Tell us what the team does today, where it breaks down, and what a better working day should look like.