Capability 15 · Communication Systems

Communication Systems

Reach people where they actually are — email, SMS, WhatsApp and push, reliably delivered.

Before you read: Written from live engineering practice — the money-moving, million-user work our team runs on our own products, set down so anyone building something can learn from it.

01 · What it is

Reaching customers reliably is harder than it looks: emails land in spam, SMS gets lost, push notifications get denied. We build communication systems engineered for deliverability — transactional email with proper DKIM/SPF and templates, SMS and WhatsApp with correct sender IDs, push notifications and an in-app inbox as the reliable fallback. Delivery is tracked, failures get fallbacks instead of silence, history stays on the record where it belongs, and consent and message limits keep you on the right side of spam rules and customers.

What a communication systems build covers:

  • Transactional email with professional templates & deliverability settings
  • SMS & WhatsApp messaging with correct sender identity
  • Push notifications & a dependable in-app inbox
  • Delivery tracking & automatic fallbacks
  • Conversation history on the permanent record
  • Consent management & message-limit controls
What we do · How we do it — as TGJOF Enterprise

This is how we do Communication Systems

Communication systems at TGJOF are built on one uncomfortable fact: sending is not reaching. A message vanishes into a spam filter, a silent SMS or a denied push, and neither the sender nor the receiver is ever told. We engineer delivery itself as the product — channel identity, deliverability, automatic fallbacks and proof that a message actually arrived. On top of that transactional discipline sits realtime conversation, where presence, typing and read receipts make chat feel honest rather than theatrical.

What we do

  • Delivery that proves itself — every message carries a per-channel status from queued to read, so 'did the customer know?' is a query with an answer, not a hope.
  • A fallback cascade that refuses silence — a message that fails on push escalates to SMS, then email, then the in-app inbox, with the route configured per message type.
  • Transactional traffic on its own priority lane — a payment confirmation or a security notice never queues behind a campaign batch, because money messages cannot wait on marketing.
  • Consent and frequency as machinery — opt-ins, opt-outs and frequency budgets are enforced per channel by the sender, so the brand never becomes the reason a customer mutes it.
  • Realtime chat with the honesty layer — encrypted threads, presence heartbeats, typing indicators, per-user read receipts and groups, all with a poll fallback that covers any dropped connection.

How we do it

  • Deliverability is engineered, not hoped — identity alignment, sender-reputation management, bounce suppression and content hygiene keep messages out of the filters before a single word is sent.
  • Every send is observable end to end — message id, channel hops, timestamps and outcome are traceable, and a message that exhausts its path rests visibly in a dead letter with its payload.
  • Preference-first send decisions — channel and topic preferences are read before the send is made, so muting payments never mutes security alerts.
  • The realtime core degrades gracefully — live subscriptions carry the connected audience while periodic polling and fetch-on-focus keep everyone else honest when sockets drop.
  • Built to fan out without fracturing — broadcasts and digests drain through batched, locked jobs with per-tenant isolation, so a viral moment on one channel never freezes the platform.

02 · The full discipline

Emails land in spam, SMS gets lost and pushes get denied — reaching people is an engineering problem we solve properly.

Most businesses discover their communication is broken the same way a dropped customer discovers nothing at all: the message was sent, the customer never saw it, and nobody has proof either way. In Kenya the reality is sharper — the channels that actually reach people are SMS and WhatsApp and push on a phone that lives in a pocket, and a message that stalls in a silent channel is a message that costs revenue, bookings, payments and trust.

We build communication systems the way a payments studio has to, because KodiiPay is a live platform that messages hundreds of thousands of times a day about real money — transaction receipts, rent reminders, subscription notices, KYC holds, meeting invites and support threads, delivered across email, SMS, WhatsApp and push, with receipts, fallbacks and an audit trail. On top of that transactional layer we build WhatsApp-style realtime chat: encrypted conversations, presence, typing indicators, read receipts, groups and media — the same machinery, the same trust.

Below is how we build communication that reaches people — the delivery tiers, deliverability engineering, channel fallbacks, receipts, consent and frequency management, and the realtime messaging core from presence to read receipts. Every line is grounded in how it is actually built, not promised.

03

Reaching people is an engineering problem

The naive assumption is that sending equals reaching: press send, and the customer has it. In reality, delivery is a chain of events with a failure at every link — a spam filter, a blocked SMS sender ID, an OS that denied push permission, a phone that was off, an app that was uninstalled. None of those failures announces itself to the sender. Engineering communication means building the delivery itself as the product, not the message text.

  • Sending is not reaching — a message written and dispatched is a hope; a message delivered and proven is a fact. We engineer the distance between the two.
  • Every channel has its own physics — email fights spam filters, SMS fights sender reputation, push fights OS permissions; each needs its own deliverability discipline.
  • The message must land where life happens — in Kenya that is the phone: SMS, WhatsApp and push, with email as the permanent record and the in-app inbox as the guarantee.
  • Proof is part of the product — 'did the customer know?' must be a query with an answer, so disputes and compliance questions resolve from the record.
  • Fallbacks decide the outcome — the system that tries the next channel automatically when one fails is the system that actually reaches people.
  • Consent and frequency are engineering — the customer you message is the customer who asked; the noisy brand loses the privilege, so limits are enforced by code.

We have built the 'message sent' surface and the 'message reached' surface and learned they are different products. The reachable one is the one we ship.

04

The channels: email, SMS, WhatsApp, push and the inbox

Each channel has a job. Email is the permanent, documented record. SMS is the near-universal floor that reaches any phone. WhatsApp is where Kenyan customers already live. Push is the attention tap with an inbox as its honest fallback. We build all of them behind one message model, so the sender writes a message and the system chooses the right face for it:

  • Email with professional identity — DKIM, SPF and DMARC configured, proper templates and a canonical sender, so the business has sender reputation instead of a filter jail.
  • SMS with a trusted sender ID — a short, correct, recognisable sender identity on a reliable aggregator with delivery callbacks, so replies and receipts behave.
  • WhatsApp with a business presence — rich messages and one-tap actions through the WhatsApp Business API on a verified number, meeting the customer in their home app.
  • Push with an in-app inbox — banners call attention when appropriate, and the in-app inbox is the guaranteed landing place where nothing ever depends on OS permission.
  • Transactional and bulk split — receipts and OTPs ride dedicated transactional paths with higher priority than campaigns, so money messages never queue behind marketing.
  • One message model — the system composes once and renders per channel, so a rent reminder looks intentional on SMS, rich on WhatsApp and identical in meaning everywhere.

The channel is chosen for reach and for truth. We build the tier so the message genuinely arrives, on the channel the customer uses, with a record that it did.

05

Deliverability: the message actually arriving

Spam filters are not random; they judge identity, reputation and behaviour. SMS senders get silently throttled when their sender ID or content pattern loses trust. Push is refused by an OS the moment the app annoys the user. Deliverability is a discipline with concrete machinery, and we build it in rather than discover it after the first campaign:

  • DKIM, SPF and DMARC as the floor — email identity aligned and authenticated so the filter can believe the sender, and the customer's own provider can too.
  • Sender reputation managed — warm-up, consistent identity and bounce handling protect the SMS and email reputation that determines quiet throttling.
  • Canonical from-name and sender — every message carries the same recognisable identity, so the customer learns the sender the way they learn a PayBill number.
  • Content that does not trip machines — money-word density, links and attachments moderated against the patterns filters use, so a genuine receipt is not classified as spam.
  • Bounce and complaint handling — hard bounces, soft bounces and complaints are absorbed into suppression lists automatically, keeping reputation healthy and lists honest.
  • Testing into the real providers — deliverability is verified against the actual mailboxes and networks customers use, not a local inbox in the office.

The best-written message in the world is worthless in a spam folder. We engineer the identity, reputation and behaviour that keep messages out of it.

06

Failures get fallbacks, not silence

The expensive message is the one that silently fails — the customer never knew, the business never knew, and the consequence lands later as a missed payment, a no-show or a broken promise. The rule is simple: a message is never abandoned because one channel failed. The system automatically tries the next:

  • Delivery tracking with visible status — each recipient's message carries a per-channel status — queued, sent, delivered, failed, read — so 'did they see it?' is a query.
  • Automatic channel fallback — when push is undeliverable, the system escalates to SMS; when SMS is unreachable, email; when email is unknown, the in-app inbox — with the cascade configured per message type.
  • The cascade never gives up changing channels — a message that matters has a defined escalation path to the end, because the money message that fails is a money message that costs.
  • Receipts available for disputes — delivery and read records answer 'the customer says they never saw it' with evidence, not an argument.
  • Retries with backoff — transient failures retry on a controlled schedule with broad visibility, never silently dropped and never hammering a channel.
  • Dead-letter honesty — a message that exhausted its path sits visibly with its payload intact, so support knows exactly what never landed and why.

The silent failure is the one that hurts. We build the cascade so every message either reaches, or ends life as a visible, actionable fact — never a vocal silence.

07

Consent respected, history permanent

The customers you can reach tomorrow are the ones you did not annoy today. Consent is not a legal checkbox to file; it is a living record that governs every send. Frequency is a technical limit that protects the brand from itself. And history is the permanent asset that makes the whole system defensible:

  • Consent at the record level — opt-in, opt-out and channel preference tracked per customer, so a preference update is honoured by the machinery, not by hope.
  • Unsubscribe that actually works — every campaign carries a working exit, and the exit is applied instantly across all channels, because a broken unsubscribe destroys reputation fastest.
  • Message frequency limits — per-customer, per-period caps enforced by the sender, so the brand never becomes the reason a customer silences its own alerts.
  • The noisy brand loses reach — customers who mute or delete train suppression lists; the system learns the audience's tolerance instead of overstaying it.
  • Conversation threads stored with context — messages live as conversations with full context, never fragmented into isolated sends that lose meaning.
  • Records survive the dispute — history, consent logs and delivery receipts are permanent, so regulation and complaint questions have documented answers.

The customers you message are the ones who asked. We build consent and frequency as machinery, and history as a permanent record, so you stay on the right side of both regulations and customers.

08

The transactional layer: messages about money

On a payments platform, most communication is transactional and some of it is urgent — a receipt, a rent reminder, a KYC hold, a security notice. These messages are not marketing; they are part of the money machinery, and they carry the same discipline as the ledger: exact, idempotent, observable and provable:

  • Transactional traffic rides its own priority path — receipts and security notices never queue behind a campaign batch, because money messages cannot wait on marketing.
  • Every message is idempotent — a retried job or a redelivered event produces one message, not three; the deduplication window is part of the job.
  • Money messages carry references — the receipt cites the transaction, the hold cites the reason, and the reminder cites the account — so 'why was I told this?' maps instantly.
  • The audit trail is the source — who was notified, through which channel, at what time and with what outcome is on the record for support, finance and compliance.
  • Sensitive content travels carefully — tokens, OTPs and amounts use the fastest secure channel; links expire; nothing critical lives only in an unreadable channel.
  • Failure on a money message escalates — a rent reminder that could not reach via push tries SMS, and a failed receipt surfaces in the dead letter where support can act.

We run this transactional layer live on our own platform, around real money, thousands of times a day. What your customers hear is the same machinery that keeps our users' money honest.

09

Realtime chat: from in-app to WhatsApp-style

Beyond one-way notification lies conversation — an in-app chat between customers and support, between landlord and tenant, between colleagues. And in its fullest form, a WhatsApp-style messaging experience: encrypted, realtime, with presence, typing and read receipts. We build both on the same platform, and the chat layer carries its own exactness:

  • In-app inbox and conversations — messages live as threads in the app, so nothing depends on OS permissions and nothing is ever lost to a silent channel.
  • Push as the reach extender — a new message fires a realtime toast or banner; the threaded inbox is always the authoritative record beneath it.
  • End-to-end encryption — conversations are encrypted with keys exchanged per participant, so message content is not readable at rest by the platform or by a leak.
  • Presence that is respectful — last-seen and online state shown where useful and guarded where it is not, with privacy honoured by design.
  • Typing indicators and read receipts — delivered and read states per user, so a team knows the message landed without spamming the recipient's attention.
  • Groups and direct threads — one-to-one, group and broadcast shapes on the same message model, with membership and roles enforced server-side.
  • Search and history — the thread is the memory: searchable, paginated and permanent, so conversation context never fragments.

Chat is where a customer feels heard and a team feels connected. We build it with the discipline of a live platform — realtime, encrypted, proven and searchable.

10

Presence, typing and read receipts: the honesty layer

The value of a messaging platform is not the transport; it is the social honesty — knowing whether the person is present, whether they are writing, whether they have seen it. Each of these signals is a small state machine with its own privacy rules, and each must be realtime without being spammy:

  • Presence as a heartbeat — online and last-seen are derived from real activity heartbeats, so staff in the field and customers on prepaid data both report honestly.
  • Typing indicators on a cursor — transient, expiring signals broadcast on a dedicated channel so they reach fast without hammering the database.
  • Read receipts per user — delivered and read transition per recipient, updating the thread and the unread count without a single global 'seen' lie.
  • Group receipts stay private — who has read what is shown per member where appropriate, and withheld where the policy says; receipts never prompt a confrontation the platform creates.
  • Privacy controls ride the machine — disable-presence and disable-reads preferences are honoured by the same system that generates them, not by a cosmetic setting.
  • Realtime channels with a poll fallback — live updates flow through realtime subscriptions, with a periodic poll so a dropped socket never freezes the honest state.

The honesty layer is what makes chat feel real rather than transactional. We engineer it so the signals are true, realtime and respectful — not theatrical.

11

Group chat and the machinery of many

A group is where communication becomes organisational — a landlord's tenants, a company's team, a vendor's buyers. Groups multiply the engineering: membership races, key distribution, read state fan-out and permission confusion all arrive together. We build groups the way we build anything with many participants — exactly and under control:

  • Membership and roles enforced server-side — who may add, remove, mute or broadcast is decided by the backend, so a rogue member cannot escalate themselves.
  • Atomic add and remove — membership changes are one transaction; a removal cannot race an add into an impossible group state.
  • Key distribution on join — a new member receives the conversation key wrapped to them specifically, so encryption survives membership without exposing history.
  • Read state per member — unread counts and receipts fan out per participant with proper indexing, so a group of hundreds does not collapse the messages table.
  • Mute, archive and pin per user — conversation state is personal; each member manages their own attention without affecting anyone else's thread.
  • Broadcast-aware limits — large audiences get broadcast or channel semantics rather than a group that chokes on its own fan-out.

Groups are where communication becomes a system. We engineer membership, keys, read states and attention so the group scales without breaking the honesty or the encryption.

12

Conversations that never fragment

The most common communication failure is not a lost message; it is a fragmented conversation — a reply in email, a follow-up in WhatsApp and a decision in a meeting, with no thread connecting them. A platform's conversation model is its memory, and memory that fragments is memory that lies about what was agreed:

  • The thread is the unit of truth — messages attach to a conversation with full context, so 'what did we agree last week?' is one scroll, not four searches.
  • Channels feed one thread — a support case can receive replies over email, WhatsApp and in-app chat into the same thread, labelled by channel and still continuous.
  • History is permanent and searchable — pagination and full-text search make the thread usable at scale; old context is never decayed into silence.
  • Attachments live with context — documents, images and voice notes attach to the thread and render inline, so evidence and decisions travel together.
  • Escalation preserves continuity — handing a conversation to another agent carries the whole thread, so the customer never re-explains themselves.
  • Exports and records — the permanent record can be exported for compliance and dispute resolution without breaking the live thread.

A conversation that fragments is a decision that gets lost. We build threads as the permanent memory of the relationship — complete, contextual and continuous.

13

Media, attachments and the heavy content

Conversations carry more than words: photos of a delivery, voice notes from the field, PDFs a customer must sign. Media has to upload fast on a real network, store safely, render predictably and never be the reason a message fails:

  • Compression on the way in — images and voice are downscaled and re-encoded before storage, so every attachment is small enough to send on prepaid data.
  • Signed, scoped URLs — media is served through short-lived signed URLs with access control, not public buckets that leak sensitive conversations.
  • Upload resume and retry — attachments survive a dropped network with progress and resume, because the field worker's photo must arrive even on 3G.
  • Inline rendering with fallbacks — documents, images and voice render in-thread, with graceful fallbacks when the client cannot render the rich form.
  • Storage access protected — who may read a file derives from the conversation membership, enforced on every request, not by the URL's obscurity.
  • Lifecycle and retention — media respects the thread's retention policy, so history stays complete without storing sensitive files forever.

The heavy content is where conversations carry proof. We make the pipeline fast, the storage safe and the render predictable on the networks people actually use.

14

Notifications that respect the user

A notification system must understand when not to notify as carefully as when to. The noisy app loses its permissions, its badges and eventually its users. Preference, priority and volume are engineering inputs, not afterthoughts:

  • Preference-first architecture — channel and topic preferences are read before the send decision, so a user who muted payments still receives security alerts, and one who muted marketing hears neither.
  • Priority tiers — a security notice or money receipt outranks a campaign by design; urgency is a field the machinery honours, not a hope.
  • Aggregation over interruption — routine messages batch into digests where appropriate, so one calm evening update beats ten mid-afternoon banners.
  • Per-channel budgets — push banner, inbox row, email and SMS each have their own frequency budget, so one channel cannot consume the user's patience.
  • Silent by default, loud by request — non-critical notifications arrive quietly with in-app visibility, and only the user's explicit choice makes them banners.
  • Quiet hours and scheduling — sends respect operating realities; a rent reminder at a respectful hour reaches more people than one the phone buried at midnight.

The brand that respects attention earns the attention it needs. We build preferences and budgets as machinery so the right message reaches the right user without becoming noise.

15

Compliance, records and the regulator in the room

Communication platform rules — data protection, consent obligations, message retention and the right to be forgotten — are not theatre; they are the operating licence. As with money, the answer to compliance is provability: records that reconstruct the truth in minutes:

  • Consent logs that stand up — opt-in and opt-out events timestamped at the record level, so 'may we message this person?' is a data query with a defensible answer.
  • Delivery and read records on file — proof of what was sent and seen survives for compliance, dispute and audit without burdening the live read path.
  • Data residence and protection — message content and media stored and handled per the law of the market, with encryption, signing and access control that survive an audit.
  • Retention with a defined policy — message history kept on a schedule that balances the permanent record with the customer's right to control their data.
  • Exports for the regulator — a customer's conversation history, consent history and delivery records reconstruct in hours, not weeks.
  • Deletion with machinery — the right to be forgotten is executed across messages, media and logs through the same disciplined path as everything else.

We are not lawyers and we do not pretend to be — but we build the machinery that makes the legal team's life easy. When the conversation record is provable, the compliance conversation stops being scary.

16

Scale: millions of messages without fracturing

The moment a platform succeeds, its message volume behaves like payments volume — a campaign, a rent day, a broadcast to everyone at once. The messaging core must stay fast and exact under fan-out that would flatten a naive system:

  • Batch fan-out with bounded work — broadcasts and digests send in batched, scheduled jobs with advisory locks and LIMITs, so millions of recipients are drained steadily, never in one catastrophic query.
  • Queues with dead-letter honesty — per-message work flows through queued workers; failures retry then rest visibly, so a hiccup in one channel never freezes the whole system.
  • Indexed hot paths — unread counts, thread pagination and receipt lookup are indexed for the read patterns real conversations produce, at scale.
  • Realtime channels with graceful degradation — live subscriptions handle the connected audience while polling and fetch-on-focus keep the rest honest when sockets drop.
  • Per-tenant isolation — a busy sender or a viral channel cannot degrade every other conversation; resources and limits isolate the loud noise.
  • Proven under the load you expect — the messaging core is load-tested at the fan-out volumes the business actually predicts, not the volume that fit on a slide.

A communication system that freezes on its own success taught its users to call instead. We build the core to stay fast when everyone talks at once.

17

How we build and run communication systems

The process is the same whether we are building a client's messaging layer or operating the one that runs our own platform. It is staged, honest and delivered in increments a business can absorb:

  • 01 · The audience audit — map who must be reached, through which channels, at what frequency, with what consent, and where messages currently die.
  • 02 · The channel design — sender identity, provider selection and deliverability setup (DKIM/SPF/DMARC, sender IDs, WhatsApp verification) decided first.
  • 03 · The message model — one composition model rendering per channel, with transactional and bulk traffic separated onto honest paths.
  • 04 · The delivery core — send, status tracking, fallback cascade, retries and dead letters wired before any surface exists.
  • 05 · The consent layer — preferences, opt-outs and frequency budgets as machinery governing every send.
  • 06 · The realtime core — threads, presence, typing, receipts and groups built on a realtime substrate with a poll fallback.
  • 07 · The encryption layer — key exchange, wrapped keys per participant and signed, scoped media access protecting every conversation.
  • 08 · The surfaces — in-app inbox, WhatsApp, SMS, email and push all composed from the one message model.
  • 09 · The tests — channel failure, fallback cascade, dedup, preference enforcement and group races simulated as part of the build.
  • 10 · The ops — delivery dashboards, dead-letter triage, sender-reputation health and the 'did the customer know' answer path.
  • 11 · The growth — more channels, more volume, more regulated markets — added to the architecture, never as a bolt-on that fractures the record.

You own the message data, the conversation history, the delivery records and the code. No hostageware — the communication machinery is yours.

18

Honesty about communication systems

Because communication is a promise to reach someone, we are direct about the trade-offs — the ones a vendor who wants the logo would never mention:

  • No provider guarantees delivery — SMS aggregators lose messages, inboxes filter, and WhatsApp and push are governed by someone else's policies; the fallback cascade is the mitigation, not a guarantee.
  • Reputation is earned slowly and spent instantly — a sender identity can be burned by one bad campaign pattern or one spam complaint; the recovery is slower than the damage.
  • End-to-end encryption costs features — server-side search, full admin oversight and certain content features trade against absolute privacy; we build the balance the client actually needs and say what it costs.
  • Realtime is a cost, not a checkmark — constant sockets and presence heartbeats have infrastructure and battery costs; we meter them honestly rather than pretending realtime is free.
  • The noisy brand learns too late — frequency abuse shows up as deleted apps and silenced channels before anyone reads the dashboard; the budgets exist because the learning curve is expensive.
  • Consent is a record, not a form — a checkbox that is not enforced by the send machinery is not consent; we make the record govern every send.
  • You own the history and the record — the conversations, consents and receipts belong to you, not to whoever hosted the sending.

We will tell you honestly when a client does not need the full realtime chat platform and simply needs disciplined transactional delivery — and give the smallest correct build. And when the full system is needed, this is what communication that reliably reaches people looks like.

The toolchain

The communication toolchain

This is the stack that reliably reaches people — transactional delivery with receipts and fallbacks, plus WhatsApp-style encrypted realtime chat. The same machinery that messages a live payments platform about real money.

stack.toolchain

01

Delivery channels

The faces of the message

  • SMTP with DKIM/SPF/DMARCEmail identity aligned and authenticated so transactional mail is believed, not filtered.
  • SMS aggregatorTrusted sender IDs on a reliable gateway with delivery callbacks and sender-reputation health.
  • WhatsApp Business APIRich messages and one-tap actions on a verified business presence where customers live.
  • Push deliveryBanner notifications through the OS with an in-app inbox as the guaranteed fallback.
  • In-app inboxThe authoritative thread store that depends on no OS permission and never loses a message.
  • One message modelCompose once, render per channel; transactional and bulk split onto honest priority paths.

02

Realtime messaging core

The WhatsApp-style layer

  • Thread & conversation modelMessages attached to conversations with full context, permanent, paginated and searchable.
  • Realtime subscriptionsLive message and state flow with a periodic poll fallback so a dropped socket never freezes honesty.
  • Presence heartbeatOnline and last-seen derived from real activity, respectful of privacy preferences.
  • Typing & receipt statesTransient typing signals and per-user delivered-and-read states on a dedicated fast path.
  • Group membership engineRoles, atomic add/remove, per-member mute/pin/archive enforced server-side.
  • Reaction & message readsPer-member read state and reactions fanning out at scale without collapsing the thread.

03

Encryption & trust

Content that only the participants read

  • End-to-end key wrapConversation keys exchanged and wrapped per participant so content is private at rest and in transit.
  • Member key distributionKeys re-wrapped on membership change so joining preserves privacy and leaving revokes it.
  • Signed scoped mediaShort-lived, signed, membership-scoped URLs so files are never an open bucket.
  • At-rest encryptionMessage rows and attachments encrypted and access-controlled against a leak or a subpoena.
  • AuthN/AuthZ enforcementWho may read a thread derives from membership, enforced per request, not per page render.
  • Compression pipelineImages and voice downscaled and re-encoded for prepaid-data delivery without losing proof value.

04

Notifications & routing

The right channel for the right moment

  • Priority tiersSecurity and money messages outrank campaigns by design, with urgency a field, not a hope.
  • Fallback cascadepush → SMS → email → inbox escalation configured per message type, triggered automatically.
  • Delivery receiptsQueued, sent, delivered, failed and read status per recipient, queryable and exportable.
  • Retries & dead lettersTransient failures retry on a schedule; exhausted messages rest visibly with their payload.
  • Aggregation & digestsRoutine messages batch into calmer summaries where the user's attention deserves it.
  • Quiet hours & schedulingSends respect operating realities and sensible hours so urgency is not buried at midnight.

05

Consent & preference

Machinery that respects the ask

  • Consent recordOpt-in, opt-out and channel preferences tracked at the record level and enforced per send.
  • Working unsubscribeEvery campaign carries an exit applied instantly across all channels.
  • Frequency budgetsPer-customer, per-channel caps enforced by the sender so the brand never becomes the noise.
  • Suppression listsBounces, complaints and mutes absorbed automatically to protect reputation and honesty.
  • Preference-first send decisionChannel and topic preferences read before the send, so muting payments never mutes security.
  • Per-channel budgetsPush, inbox, email and SMS each spend their own patience allowance.

06

Observability & deliverability

Proof the message reached

  • Delivery dashboardPer-channel status, failure rates and cascade usage visible to ops in real time.
  • Sender-reputation healthBounce, complaint and throttling indicators watched like a wallet balance.
  • Send-time tracingMessage id, channel hops, timestamps and outcome traceable end to end.
  • Dead-letter triageExhausted messages surfaced with full payload so support can act, not apologise.
  • Load & fan-out testingBroadcast-scale batches proven under real predicted volumes, not slide volumes.
  • Compliance exportsConsent, delivery and conversation records reconstructing for audit and dispute in hours.

07

Surfaces & integration

Where people actually meet the messages

  • Web & mobile clientsThe chat experience with threads, media, typing and receipts on the devices users hold.
  • Staff & admin surfacesConversation management, member administration and deliverability views for operations.
  • Public/partner APIsThe same send, receipt and fallback machinery exposed to the platform's own partners.
  • Support-case integrationEmail, WhatsApp and in-app replies feeding one continuous thread with escalation continuity.
  • Deep linking & actionsMessages carry one-tap actions — pay, confirm, rebook, reply — on every channel.
  • Template engineBrand-styled, parameterised templates for receipts, reminders and campaigns composed once.

Lifecycle

The communication lifecycle — from audience audit to scale

Every communication system we build passes through the same arc — delivery discipline first, realtime on top of it, and the record kept permanent throughout. This is also the lifecycle our own platform's messaging runs on.

01

Audit the audience

Map who must be reached, through which channels, at what frequency, with what consent, and where messages currently die.

02

Design the channels

Sender identity, provider selection and deliverability (DKIM/SPF/DMARC, sender IDs, WhatsApp verification) set before content.

03

Build the message model

One composition model rendering per channel, transactional and bulk on honest priority paths.

04

Wire delivery

Send, status tracking, fallback cascade, retries and dead letters built before any surface exists.

05

Install the consent layer

Preferences, opt-outs and frequency budgets as machinery that governs every send.

06

Build the realtime core

Threads, presence, typing, receipts and groups on a realtime substrate with a poll fallback.

07

Layer encryption

Key exchange, per-participant wrapping and scoped media with authored-by revocation.

08

Connect the surfaces

In-app, WhatsApp, SMS, email and push all composed from the one message model.

09

Rehearse failure

Channel deaths, cascade behaviour, dedup, preference enforcement and group races simulated in the build.

10

Operate

Delivery dashboards, dead-letter triage, reputation health and the 'did they hear?' answer path.

11

Audit continuously

Consent, delivery and conversation records reviewed and exportable for compliance and dispute.

12

Grow

More channels, more volume, more markets — added to the architecture, never as a bolt-on.

Closing

More than development

Communication systems are where a business meets the people it depends on — and a platform is judged by whether the message actually lands. We build the landing as engineering, not luck. That includes:

Transactional email with DKIM, SPF and DMARC identity worth believing.SMS on trusted sender IDs with delivery callbacks and reputation health.WhatsApp Business delivery where the customer already lives.Push with an in-app inbox as the guaranteed fallback.A fallback cascade that never lets one dead channel silence a message.Delivery and read receipts that prove who heard, for disputes and compliance.Consent and preference enforced by the send machinery, not a checkbox.Frequency budgets that stop the brand from becoming the noise.Conversation threads that never fragment across channels.An in-app inbox that depends on no OS permission to be the truth.Realtime chat with presence, typing indicators and per-user read receipts.Encrypted conversations with keys wrapped per participant.Group chat with server-side membership, roles and attention controls.Media that uploads on prepaid data and stays privately accessible.Money messages on a dedicated priority path with idempotency.Retries and dead-letter triage so nothing silently fails.Compliance and export machinery that reconstructs the record in hours.Load-tested fan-out so a broadcast never freezes the platform.The discipline run live on our own payments platform.You own the conversations, the consents, the records and the code.

A communication platform is a promise that the word got out. Everything above exists to make that promise measurable, honour the people being reached, and survive the moment a million words go out at once.

We run communication like this every day, alongside money. When your business needs to reach people and prove it, you get the machinery that survived being live — not the one that survived only a demo.

Previous capability

Booking & Reservation Systems

Next capability

Automation

Building something like this?

The discipline above is what we run on our own products every day. If it would help on yours, our door is open.