Support Ticket Contract Normalizer
Scenario
Use at the intake boundary when tickets arrive from email, forms, chat, or a helpdesk with inconsistent fields.
Input and output
Input is redacted JSON with ticket id, subject, body, requester reference, channel, and received time. Output has normalized text, safe references, duplicate key, and contract_hash.
Execution and recovery
Run python scripts/normalize.py examples/input.json. Missing ticket id or body returns a visible error. Fix the input contract and rerun; no customer lookup is performed.
Privacy boundary and acceptance
Use placeholders for names, email addresses, account ids, and private payloads. The sample must produce a non-empty hash, normalized category fields, and a stable duplicate key.