A CRM product catalogue is usually typed in once and then quietly drifts from whatever document is supposed to govern it. This one is generated, and the drift it replaced had been sitting there unnoticed.
- The catalogue is built by a script that parses the canonical pricing document and writes the products, the units and the price list from it. Nothing in the CRM restates a figure, so the two cannot be edited apart by hand.
- The catalogue that already existed disagreed with that document in three ways: a rate the document explicitly supersedes, a recurring figure matching no published tier, and several products carrying no price at all. Nothing had noticed, because nothing was looking.
- A verification script now compares the live catalogue against the document and runs in the daily close out. It shares only the parser with the build, so a build that wrote the wrong value still fails the check. It was made to fail on purpose before being trusted: a seeded change produced exactly the two expected failures and a non-zero exit, and the source file was restored and confirmed identical afterwards.
- One rule was recorded too broadly, applying a minimum commitment to every tier rather than to the single engagement option that carries it. That mattered beyond the documentation, because product descriptions appear on quote lines, so the wrong version would have stated a commitment to a customer on engagements that do not have one.