case study·saas · enterprise adoption

A verification UI killed our renewals. Quietly.

A B2B SaaS shipped an AI document tool to enterprise customers. The product asked end-users to confirm every extracted field. The AI was accurate. The UX was a disaster. Users abandoned. Renewals stalled. Nobody at the company knew that the verification modal was the reason — until they cut it.

0
confirmation modals shipped
Industry: B2B SaaS · invoice & receipt automation
Volume: ~3,400 pages / mo
Tier: Growth · standard priority
Integration: Python SDK · 3 days
the problem

Asking enterprise users to babysit AI never works.

They built an extraction product that read invoices and receipts. The AI handled 92% of fields perfectly. For the rest, they shipped what every responsible team ships: a verification UI that asked the end-user to confirm a handful of low-confidence fields per document.

The UI looked clean in QA. In production it was an adoption killer.

Enterprise customers buy AI products to get time back. Asking the user to verify "Is this total $12,340 or $12,840?" on every fifth document gives them a new job they didn't sign up for. They stopped opening the product after week three. Renewal calls went south. Nobody at the SaaS company knew why — they were watching extraction accuracy, not abandonment.

WHAT END-USERS SAW
Confirm extracted fields · 6 of 24
vendorAcme Inc.? ▢total$12,340.00? ▢due date06/30? ▢tax id34-1928? ▢
· 6 fields per doc, avg
· ~120 docs / user / week
· 38% never finished a session
cascade

They were tracking the wrong metric.

Their AI dashboard showed 99% extraction accuracy week over week. Their NPS was crashing. The team was confused because the metric they were optimizing — model quality — wasn't the metric customers cared about. Customers were measuring something simpler: how much time does this thing actually save me? When the answer was "not enough to bother," they stopped logging in.

what they tracked
extraction accuracy
what customers tracked
time saved per doc
what was happening
session abandonment
what it cost
−18pp net retention
We thought we were shipping an AI product. We were shipping a checklist for users to fill out. Once we saw it that way, the renewal data made perfect sense.
VP Product, B2B SaaS · post-mortem
the fix

Move the verification off the user's plate. Entirely.

They ripped out the in-product verification modal. Anywhere their extractor returned a field with confidence below 0.95, they called verify() with the document and the AI's draft.

An AwaitVerify reviewer confirmed the field in the background, typically within 30 seconds. The end-user never saw the verification step. The product surfaced one final, correct answer per document. The "please confirm" modal disappeared from their UI completely.

# before — UX killer
for field in extracted:
    if field.confidence < 0.95:
        ui.ask_user_to_confirm(field) # <- they abandon

# after — invisible
from awaithumans import verify_document

for field in extracted:
    if field.confidence < 0.95:
        field = await verify_document(
            task_description="Confirm this field",
            response_schema=type(field),
            document_path=doc,
            prior_extraction=field,
        )

# user sees one answer. trusts the product.
outcome

The numbers that mattered, after.

+38pp
weekly active retention
+71%
documents processed per user
−18pp → +6pp
net retention swing
3 days
from signup to production
The cheapest renewal we ever bought was deleting a confirmation modal. AwaitVerify made deleting it actually safe.
CEO, B2B SaaS