Spaces:
Running
A newer version of the Gradio SDK is available: 6.20.0
maria_crm_export.csv — demo cheat-sheet & planted-issue inventory
Persona. Maria, an ops coordinator, exported the company CRM on Monday morning.
383 rows × 12 columns. Engineered against the shipped pipeline
(scrubdata.planner.mock_plan + reconcile.grounded_mapping + pii.detect_column_pii),
regenerate with uv run python samples/make_maria_crm.py (deterministic, seed 20260612).
Columns: company, contact_name, email, phone, country, state, signup_date, plan_tier, mrr, status, cc_on_file, notes.
What ScrubData should do, by column
| Column | Planted mess | Expected action |
|---|---|---|
| company | mojibake (Müller GmbH); case/whitespace variants of Acme; Globex vs Globex Corp |
fix_encoding → strip_whitespace → canonicalize_categories folds acme corp/ACME Corp→Acme Corp. Does NOT merge ACME Corporation (see YOUR CALL #1). |
| contact_name | ALLCAPS / lowercase / leading-trailing spaces | fix_encoding, strip_whitespace, case-fold of exact case-variants. Rare names → suspect_values review flag (won't merge distinct people — abstention-first). |
| UPPERCASE + whitespace | flag_pii [email] (flag only, not masked — users need it) → strip_whitespace → normalize_email. |
|
| phone | 5 formats: (555) x-y, 555.x.y, +1 555 x y, 555xy, 1-555-x-y |
flag_pii [phone] → standardize_phone. |
| country | 4+ USA spellings + rare typos | canonicalize_categories: U.S.A/us/USA.→United States, germny→Germany, Nigeia→Nigeria, Polnd/Swedn→Poland/Sweden. Abstains on the YOUR CALL items. |
| state | abbrev chaos CA/California, typos |
canonicalize_categories: Calfornia→California, Wahsington→Washington, Virgina→Virginia, Mississipi→Mississippi (cast to column's dominant case = ALLCAPS abbrevs). |
| signup_date | 3 formats: ISO, M/D/YY, Month D YYYY, DD-MM-YYYY |
parse_date → ISO YYYY-MM-DD. |
| plan_tier | Premium/premium/PREMIUM/Prem, Basic/…, Ent, Free |
canonicalize_categories case-folds the variants. |
| mrr | $1,200.00 / 1200.00 / 1,200 USD / 1200 |
parse_currency → numeric. |
| status | Active/active/ACTIVE, Churned, Trial, Lapsed |
case-fold canonicalization. |
| cc_on_file | 8 Luhn-valid fake cards, 4 surface formats | flag_pii [credit_card] (checksum-confirmed) → mask_pii → ****-****-****-5559 (last 4 kept). |
| notes | clearly-fake SSNs (123-45-6789, 078-05-1120) in free text |
Sparse free-text → column PII typer does NOT fire (needs ≥60% of distinct cells to match). SSNs survive as text — honest limitation; tier-2 NER would be needed to mask in-prose PII. |
THE YOUR CALL moments (the abstention wow — these SHOULD surface, not auto-merge)
Entity near-tie —
Acme Corp(7+3 case-variants) vsACME Corporation(4). Genuinely unclear if the same company. The tool folds only the case/whitespace variants intoAcme Corpand leavesACME Corporationuntouched — it does not silently merge two plausibly-distinct entities. Human judgment call. ✅ behaves correctly.Ambiguous country
Slovia. Reconciles toSlovakia(0.857) andSloveniaessentially tied → margin 0.0 < 0.03 ⇒ ABSTAIN. Surfaces in theuncertain_canonicalizationreview flag. The hero wow-moment.Ambiguous country
Austrai.Australia(0.875) vsAustria→ margin 0.018 < 0.03 ⇒ ABSTAIN. Second genuine geographic ambiguity.
Bonus near-miss abstentions also fire (Indai→India 0.80 < 0.84 threshold; Frnace,
Brasil) — they look like typos but don't clear the confidence bar, so they're flagged,
not guessed.
Contrast: clean auto-fixes vs abstentions (the trust story)
- Confident typos auto-fix:
Nigeia→Nigeria,germny→Germany,Calfornia→California (high score, wide margin to the next candidate). - Ambiguous/low-confidence ABSTAIN:
Slovia,Austrai,Indai— left unchanged, raised ascountry | uncertain_canonicalizationfor Maria to decide. That split (fix the obvious, flag the genuine judgment calls) is the demo's whole pitch.