[verdict][curated prompt][source: hiremara.com]
Can I vibecode Mara?
// buildable in a weekend, but real gaps stay open
The first send is a weekend. An agent can absolutely wire product events to an LLM draft to an email API with an approval queue, and that covers the visible part of the product. What does not come out of one prompt is the part after the first send: your own domain's reputation, suppression and compliance, variants split across real sends with the results read back, replies classified and answered, and someone still tuning it in month four. Build the sender, then be honest about whether you will keep running it.
confidence: high
what it is: An AI lifecycle marketer that proposes, writes, sends, and keeps rewriting a SaaS product's welcome, activation, and churn-save emails
Buildability index · an editorial game
- Price from 99 $ · usage-based weight: plus 3
- Time multi-day weight: plus 1
- Category newsletter no weight
- Moat infrastructure scale · execution quality weight: minus 3
- Confidence high weight: plus 1
- What you lose 5 items weight: minus 2
- Site hiremara.com (si apre in una nuova scheda) no weight
They cancel out. This is where it comes down to how much the subscription annoys you.
Gioco editoriale: il verdetto dice se un agente può, l’indice se conviene.
What you build
Take product events, draft the next lifecycle email with an LLM in your voice, hold it for approval, and send it on a schedule.
what you need
- Anthropic or OpenAI API key
- email sending API (Resend, Postmark, or SES)
- your own sending subdomain with SPF/DKIM/DMARC
- an always-on host for the scheduler
- product events from your app (webhook or DB)
Submitted by the maker. The honest split: the sender is a weekend, the loop that keeps rewriting it is not.
The prompt
A weekend with a coding agent. The gaps that stay are right below, under “what you lose”.
Build me a self-hosted lifecycle email agent to replace Mara, for one SaaS product. Requirements:
- Node + Express + better-sqlite3 on my VPS, one SQLite file holding contacts,
events, sequences, drafts, sends, and suppressions. node-cron ticks once a minute,
no queue service.
- POST /events takes {type, email, properties} with a bearer token from .env. Every
event upserts a contact and appends a row I can read back later.
- Sequences are JSON files in ./sequences/: an entry event type, then steps with a
wait ("2d"), an intent in plain words ("nudge them to connect their first
integration"), and an optional skip-if event type. Ship two: welcome and
trial-ending.
- Each tick, find contacts due for a step, drop anyone whose skip-if event already
fired, then draft with the Anthropic API (key in .env): pass ./voice.md plus that
contact's last 20 events, get back a subject and a plain-text body.
- Drafts land as pending. A localhost-only admin page lists them with subject, body,
recipient, and the step that produced it, with Approve and Reject buttons. Nothing
sends without a click.
- Approved mail goes out through Resend or SMTP from .env, one send row per recipient
with the provider message id. Bounce and complaint webhooks write to a suppression
table checked before every send. One-click unsubscribe link in every footer, no
login.
- Cap at 2 emails per contact per 7 days across all sequences, enforced in code
before drafting.
- Out of scope: A/B variants, reply parsing, open tracking. Do not build multi-user
accounts or a visual sequence builder, this runs for one product and one operator.
- README with the deliverability homework: SPF, DKIM, and DMARC on a subdomain like
mail.example.com, a two-week warmup at low volume, and a blunt line that mail from
a cold domain lands in spam no matter how good the copy is. Curated prompt: written and reviewed by hand for this app. In English on purpose — it is the language coding agents work best in.
What you lose
- deliverability: warmup, domain reputation, bounce and complaint handling
- the improvement loop: variants written, split across live sends, losers rewritten
- reply handling: inbound classified, answers drafted, suppressions applied
- outcome tracking wired back to the copy that caused it
- the maintenance nobody does, which is the actual reason lifecycle programs rot
Why people still pay
Lifecycle email is not a build problem, it is an upkeep problem. The DIY version works the week you build it and then sits at whatever quality your first draft happened to have, because nobody goes back to rewrite the activation email that quietly stopped working. Founders pay for the part that keeps happening after launch week: something reading the outcomes, rewriting the losers, and handling the replies without being asked.
moat: Infrastructure scale Execution quality what a moat is
deliverability/iteration loop/operations
Who has already built it
Starting from here is still vibecoding: the prompt is for when you want it exactly your way.
- Mautic (opens in a new tab) — Open-source marketing automation with campaign builder, segments, and drip flows. Heavy, but it is the real self-hosted analog. (alive)
- Listmonk (opens in a new tab) — Open-source, single-binary mailing-list and campaign manager. Good sending substrate to build the agent on top of. (alive)
- Keila (opens in a new tab) — Self-hosted newsletter tool with an API, lighter to run than Mautic. (alive)
Do you agree?
The vote balance
Ancora nessun voto: il tuo è il primo.
Nessun voto ancora — il primo pesa.