The stack
08 · Communications & support
One Exo communications layer sends email, text, and voice through Bird; customer records live in Twenty, an open-source CRM.
- Dimension
- 08 · Communications & support
- Platform
- Bird + Twenty
- Bird
- One consent-aware communications layer for email, text, and voice with per-app sending domains. Core standard · authority: EXO
- Twenty
- Open-source customer context synchronized through replaceable intake adapters. Optional adapter · authority: App
- Status
- Communications: Planned (roadmap horizon: now). Resend is still the required default until the migration lands. CRM: TBD — named standard in the catalog; no integration is documented in the repository yet.
What it is
One Exo communications layer sends email, SMS, WhatsApp, Apple Messages, and voice. It is consent-aware, runs server-side, uses per-app sending domains, and stays separate from product data. Apps never hold provider keys. They call Exo's send function with their tenant ID (roadmap: bird-communications).
CRM
Customer context stays in the CRM, while forms and signals synchronize through replaceable, consent-aware adapters (the stack description on exo.now).
Platform
Bird will be the single communications provider, replacing Resend and any one-off messaging integrations.
CRM
Twenty, an open-source CRM. Its catalog posture is optional adapter, and the App is the authority: customer relationships belong to the App, not to Exo.
Boundary and replaceability
- Exo owns the infrastructure: the Bird account, keys, DNS verification, templates, analytics, and suppression lists.
- Vendor-neutral subdomains. Each App sends from its own custom domain (for example
mail.2daysearly.comorinbox.2daysearly.com) for recipient trust and per-domain reputation. Names are neverbird., so a provider swap never touches DNS. - Exo speaks as Exo from an Exo-owned subdomain (
ops.exo.nowornotify.exo.now) for billing, operations, and agent notifications. - Adapter shape. A Convex
communicationslayer (anoutboundMessagestable plus per-channelsendactions), with the same adapter shape as the billing providers.
CRM
- The catalog describes the boundary as "open-source customer context synchronized through replaceable intake adapters". The adapter contract itself is TBD.
- Related intake that exists today: Exo's own contact inquiries are stored in the Convex
contactInquiriestable, and the portfolio dashboard counts inbound volume over 30 days (revenue monitoring). - Direct customer contact data is excluded from Exo's revenue ledger (commerce contract).
Cost notes
Bird per-channel pricing: TBD. The roadmap notes that SMS, WhatsApp, and voice "land free on the same layer — no new vendor later", which means no added vendor, not no usage cost.
CRM
Twenty hosting (self-hosted or cloud) and cost: TBD.
Status
- Planned, priority high, horizon now, trail
IV-170. - Scope: migrate Resend call sites (Construct waitlist, contact, and email library; the Interspace inbound route; the Observatory changelog email; Exo templates), add inbound email via Bird mailboxes, and add domain onboarding with warm-up sequencing to tenant provisioning.
- Until then: Resend remains the required default email provider for active managed projects, and outbound email fails closed unless explicitly enabled (repository contract, environment lifecycle).
CRM
TBD. The repository names Twenty as the standard, but no adapter, ADR, or roadmap item exists yet. Adding one is a next step.