Heimdall is marketing automation for businesses that have marketing work but no marketing team. I supported product architecture and built the backend behind campaign planning, generation, approval, publishing and monitoring across the major social networks.
Week three
The first two weeks of any automation rollout look great. Week three is where it goes. The person who signs off on posts is traveling, the queue stops, and nobody finds out until a campaign has a hole in it. Or the opposite happens: approval gets switched off to keep things moving, and something ships that should not have.
Both failures come from the same missing thing. Nobody can see the state of the work. A post exists somewhere between an idea and a published URL, and no single surface says where.
A post is a state machine
So a post is not a document. It is a record with a state: drafted, in review, scheduled, published, measured. Every move between states is explicit and logged. Approval is a transition rather than a meeting, and it is scoped by role so the right person signs off without becoming a daily blocker.
That framing decided how the AI features fit. Generation proposes caption variants and repurposed content, and it produces a draft like any other draft. It gets no private path to publish. The model is a fast writer inside the workflow, not an exception to it.
Eight networks, eight ways to fail
Publishing spans eight platforms, each with its own rate limits, media rules, token expiries and outage behavior. Fan-out runs through background workers in Go, with per-network retries, so one platform rejecting a post does not stall the other seven or the campaign around them.
The tool surface grew past thirty across planning, generation, publishing and monitoring. At that size the interesting question stops being whether the model can call a tool. It becomes which tools a given role is allowed to reach, and what happens when one of them returns something unusable.
Monitoring closes the loop by returning engagement to the workspace that planned the campaign, so the next plan starts from what happened instead of from a blank page.
Scope
- Built backend systems for a marketing automation SaaS aimed at small businesses.
- Implemented campaign, generation, approval, publishing and monitoring workflows across eight networks.
- Supported product architecture for the automation and stakeholder review loops.
The codebase is public at github.com/hrmasss/heimdall: Go and Fiber on the API side, React and Vite on the front.
Publishing is easy to demo and hard to run. Most of the work here went into the second part.

