Candidate intake that does not silently duplicate or lose applicants.
Illustrative n8n acceptance artifact for Google Forms → normalization → Airtable → WhatsApp acknowledgement. All names, numbers, IDs, and outcomes are invented. No real candidate or employer data is used.
Download the credential-free n8n test harness Customize this harness — USD 25
Import the JSON into n8n and run it manually. It uses Code nodes and synthetic fixtures only: no external calls, credentials, or customer data.
State contract
Non-negotiable invariants
One normalized phone number maps to one candidate record. Re-applications create events, not cloned people.
The workflow never records “message sent” from an API request alone; it stores the provider delivery state separately.
If Airtable succeeds but the message call fails, retry resumes from the message step without creating another candidate.
Priority failure paths
- Duplicate submit: identical form submission arrives twice within 30 seconds.
- Malformed phone: local number has no country context and cannot become a safe candidate key.
- Airtable 429: rate limit occurs after validation but before record creation.
- WhatsApp timeout: request result is unknown after the candidate record is committed.
- Schema drift: form field label changes while downstream mapping still expects the old field.
Acceptance tests
- AT-01 Replay: submit the same synthetic payload twice. Expected: one candidate, two trace events, at most one acknowledgement.
- AT-02 Partial failure: force a WhatsApp timeout after Airtable creation. Expected: retry uses the same idempotency key and creates no second candidate.
- AT-03 Bad input: omit consent and provide an ambiguous phone number. Expected: quarantine with a human-readable reason; no CRM write and no message.
- AT-04 Rate limit: return 429 with Retry-After. Expected: bounded backoff, no immediate hot loop, visible exhausted state.
Evidence required at handoff
- Sanitized execution IDs for one success, one duplicate replay, and one forced failure
- Before/after Airtable row counts
- Idempotency key and retry attempt ledger
- Field mapping version and owner
- Operator recovery instruction that does not require editing production data by hand
This sample is architecture and QA evidence, not proof of a production deployment or a promise of WhatsApp provider approval, deliverability, legal compliance, or hiring outcomes.