Sweep follow-up to 93e43fc. Display labels now consistent across docs,
landing pages, CLI output, code comments, docstrings, and test prose.
Five parallel surfaces touched:
- docs (EN + ES): README, USER-GUIDE, CLI-REFERENCE, and 11 internal
design/planning docs
- landing pages: index + bookkeeper/revops/shopify-pet
- src: CLI module docstrings, _TOOL_DISPLAY dicts in cli_analyze.py
and gui/components/_legacy.py, core module headers, every tool
page's module docstring
- tests: class/method/module docstrings and section-header comments
- test-cases READMEs
Page slugs (1_Deduplicator etc.), tool_id strings (01_deduplicator
etc.), Python class names (TestDeduplicatorWorkflow, FeatureFlag.*),
URL paths, anchor IDs, CSS classes, and asset filenames were left
intact since they're code identifiers / structural references.
All 2033 tests pass.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Map Columns — corpus
Acceptance fixtures for src/core/column_mapper.py. Each .csv under
test_data/ is paired with assertions in
tests/test_column_mapper_corpus.py.
Use cases (target client profiles)
| File | Buyer profile | Tested behaviour |
|---|---|---|
uc01_crm_import.csv + schemas/uc01_crm_target.json |
Sales ops admin importing leads into Salesforce / HubSpot | Schema enforcement: rename via aliases, coerce types, drop extras, add owner default. |
uc02_vendor_{a,b,c}.csv + schemas/uc02_canonical.json |
Operator unifying vendor exports | Multi-source unification: each vendor uses different headers; auto-inference resolves them all. |
uc03_type_coercion.csv + schemas/uc03_types.json |
Analyst quick-fixing a mistyped CSV | Mixed-type coercion with documented per-column failure counts (bad rows survive as NaN). |
Edge cases
| File | Stresses |
|---|---|
ec01_duplicate_target.csv |
Mapping two source columns to the same target → InputValidationError. |
ec02_unicode_columns.csv |
Non-ASCII column names (Japanese) survive rename and coerce. |
ec03_whitespace_headers.csv |
Leading/trailing whitespace in headers still fuzzy-matches the schema. |
ec04_no_match.csv |
No source column scores above threshold → empty mapping, fallback unmapped strategy fires. |
ec05_required_missing.csv |
Required target field has no source column → InputValidationError unless enforce_required=False. |