Case Study / Infrastructure Engineering
A workflow automation platform that simulates realistic, threaded email conversations across multiple product lanes, so a new sending domain earns trust with mail providers before real customer volume goes out.
Eleven sender identities route through a shared reply engine, each keeping its own thread history and voice.
The Problem
The company's outbound mail was landing in spam more often than not. New sending domains had no history with mail providers, and every real campaign that went out on a cold domain made the deliverability numbers worse instead of better. It was flagged as a priority problem across a notifications lane, a research digest, six product specialists, and a support desk, each needing a believable sending history before a single real campaign could safely go out. Mail providers score a domain on how it behaves over time: reply rates, thread depth, spam complaints. There is no shortcut around that except time and genuine looking conversation.
I was asked to find a way to fix it. The brief that came out of that was to build the conversation automatically, at a pace and shape that reads as human, across every lane, without turning into an obvious bot loop.
Architecture
Everything reads from a single lane configuration table rather than being duplicated per identity, so adding a twelfth sender is a data change, not a new workflow.
Routes fixed template mail and AI generated persona mail through a shared renderer, merges the branches, and logs every send per lane.
Listens for replies to the notifications lane, generates a contextual answer, and constructs raw MIME with correct In Reply To and References headers by hand, since the sending API has no native reply endpoint.
Covers the research lane and all six product specialists through an allowlist and a per product lookup table, so each persona keeps a consistent voice and brand.
Plays the other side of the conversation using native OAuth threading, with a quoted block of the original message so the thread reads correctly in any client.
Field Notes
A code node left on run once for all items will silently collapse an entire batch into a single item. Now a standing checklist item on every new node.
Two parallel render branches need an explicit merge before the next step, or the platform treats each branch as its own execution run. Easy to miss, easy to debug wrong.
A naive ends with check on the sending domain silently dropped subdomains. Fixed once, but a good reminder to test the edge case you did not write.
Some clients strip In Reply To and References headers outright, so filtering by recipient address turned out more reliable than trusting headers alone.
A six hop cap on both reply workflows keeps two bots from replying to each other indefinitely. Cheap insurance against a very embarrassing failure mode.
Tech Stack
Status