That bounded shape is exactly right. Five acceptance tests I’d require before calling it production-ready:
1. caller hangs up after question two → partial lead is flagged, not silently “qualified”;
2. CRM times out after accepting the write → retry does not create a duplicate card;
3. confirmation SMS fails → lead remains visible with an explicit recovery state;
4. repeat caller within the retry window → one conversation/lead, not two;
5. low-confidence answer → human-review queue, with the original audio/transcript provenance retained.
The hidden requirement is idempotency across the CRM write and SMS send. Otherwise the happy path works while recovery creates duplicate leads or duplicate customer texts.
