Why: AMS-1 settlement statements start from vendor exports, and each vendor names the same columns differently. We already map Intercom and Zendesk native headers to canonical fields (registry/vendor-rules.json) — adding a vendor is a data-only change, no engine code needed.
What to do: pick a vendor we do not cover yet (e.g. Freshdesk, Help Scout, Gorgias, or Salesforce Agentforce conversation exports), find their documented CSV column names, and add a vendor block with header aliases.
Acceptance:
- aliases map only to existing canonical fields (do not invent new semantics)
- run
python scripts/gen_web_rules.py and commit the regenerated website/vendor-rules.js
healthcheck parity tests stay green (run the conformance suite locally)
Good to know: registry/ is the single source of truth; healthcheck and website copies are regenerated. See commit ec0d06a history for the Zendesk alias example (space-form headers like "Ticket ID" / "Solved at").
Why: AMS-1 settlement statements start from vendor exports, and each vendor names the same columns differently. We already map Intercom and Zendesk native headers to canonical fields (
registry/vendor-rules.json) — adding a vendor is a data-only change, no engine code needed.What to do: pick a vendor we do not cover yet (e.g. Freshdesk, Help Scout, Gorgias, or Salesforce Agentforce conversation exports), find their documented CSV column names, and add a vendor block with header aliases.
Acceptance:
python scripts/gen_web_rules.pyand commit the regeneratedwebsite/vendor-rules.jshealthcheckparity tests stay green (run the conformance suite locally)Good to know: registry/ is the single source of truth; healthcheck and website copies are regenerated. See commit ec0d06a history for the Zendesk alias example (space-form headers like "Ticket ID" / "Solved at").