Routing and contextThe AI always knows which conversation it's in.
Every inbound message is matched to the right campaign and the right conversation. If no open conversation exists, a new one is created. If one exists, the message is attached to it — context is always complete.
Campaign routing
The inbound module resolves which campaign a contact belongs to and loads that campaign's configuration — questions, persona, scheduling level, and business hours — so the AI always has the right context for the right campaign.
How it works: Context assembly loads campaign from conversation — the AI never receives a mismatch between config and conversation history.
Conversation threading
If a contact already has an open conversation for the campaign, the inbound message is attached to it rather than creating a new one. The full history is preserved — the AI reads everything that has already been said.
How it works: A second open conversation for the same contact and campaign is never created — deduplication enforced at the pipeline level.
Unknown contact handling
If an inbound message arrives from a phone number that cannot be matched to any contact in the database, the pipeline exits cleanly without creating any records or calling the AI. No error, no incomplete data.
How it works: Unknown contacts return 200 OK to Twilio with no processing — the platform never creates orphaned records.
Malformed payload handling
If the inbound webhook receives a structurally malformed payload — missing required fields, empty message body, or unexpected format — the pipeline handles it gracefully without raising an unhandled exception or creating a partial record.
How it works: Malformed payloads exit cleanly — no partial database records, no silent errors.