Cadensend is open source under the MIT licenseRead the source
OPEN SOURCE EMAIL CURRICULUM ENGINE
Cadensend turns one learning goal into a structured email series. It plans the curriculum, writes every issue grounded in your own sources with real citations, and delivers on schedule — exactly once.
MIT LICENSED · SELF-HOSTED · NO HOSTED SIGNUP

0
Duplicate deliveries
Tolerated, by design
<60s
Scheduler claim lag
p95 target
<2min
Approved-send lag
p95 target
Engineering targets from the project's design blueprint. Read the spec
SCOPE
Cadensend does one thing: turn a single learning goal into a structured email series, and deliver every approved issue reliably and only once. It is not a marketing suite, not a CRM, not an autonomous research agent, and not a bulk-email provider. That discipline shows up in every layer of the architecture.
HOW IT WORKS
PLAN
Describe the topic, the outcome, and who it is for. A LangGraph planning graph turns that brief into a structured plan of modules and issues, then validates coverage and prerequisite ordering before you ever see it.
Create Series wizard
Topic, included and excluded concepts, outcome, audience level, cadence, timezone, and tone — captured once, up front.
Validated plans
Coverage and prerequisite ordering are checked automatically, with a revision pass when validation fails.
Plan Studio
Reorder issues, edit objectives, and lock approved issues so they survive a regeneration of everything around them.

GROUND
Upload files or point Cadensend at URLs. Structure-aware ingestion preserves heading hierarchy, keeps code and tables intact, and records section anchors — so a citation lands on a real location, not a vague gesture at a document.
Idempotent ingestion
Fetch, parse, chunk, embed, verify. Every step is content-hash keyed and safely resumable after a failure.
Scoped retrieval
Queries are filtered to workspace and series before they reach the vector store, then deduped and diversified by source.
Structural citations
The model returns source and chunk references. A deterministic renderer turns them into links, so citations cannot be fabricated.

WRITE
Separate graphs handle planning and issue generation: retrieve, write, spec the visual, critique, gate on quality, revise within a hard limit. The model returns a validated content tree — never raw HTML, never a raster image.
Structured output only
A validated block AST goes to a deterministic renderer that produces the final email HTML and plain text.
Editorial workspace
Edit subject and preheader, inspect retrieved context, regenerate a single section, and diff against version history.
Diagrams as dataBETA
Mermaid and D2 specs render server-side to SVG, convert to PNG for email, and carry required alt text.

DELIVER
Jobs are claimed from Postgres with FOR UPDATE SKIP LOCKED — a durable queue, not an in-memory timer that forgets on deploy. The delivery record is written before the provider call, so a retry returns the original attempt.
Idempotent sends
Keyed on workspace, issue, recipient, and issue version. Retrying is safe because it cannot produce a second email.
Timezone-correct
Stores the UTC instant beside the original IANA zone, preserving local intent across DST without shifting existing schedules.
Run Center
Every job across generating, awaiting review, scheduled, sending, and failed — with stable error codes and safe retries.

SECURITY
The prompt-injection boundary is structural rather than a warning in a system prompt. Retrieval tools return content and metadata only: source text cannot register a tool or change policy, and the writer has no arbitrary network or code-execution access.
Tenant isolation
Workspace scope is enforced in every repository query and tested adversarially across tenants, not left to the model.
No tool escalation
Tool inputs are schema-validated against an allowlist. Ingested text cannot introduce new capabilities.
Hardened ingestion
SSRF controls, size and type limits, and sanitization on everything fetched or uploaded.
Secrets and transport
KMS-backed encryption, and a private, authenticated, TLS-only vector store.
Verified webhooks
Email provider callbacks are signature-checked and replay-protected before they mutate state.
Redacted logging
Prompts and source text are redacted from logs; identifiers are kept for tracing.
ROADMAP
No update starts until the previous release's acceptance criteria and operational gates are met.
MVP
NOWPlan, grounded generation, scheduling, and delivery to a single verified recipient.
Individual learner / creator
Update 1
Hybrid dense and sparse retrieval, reranking, citation coverage scoring, OCR, charts, brand kits.
Technical educators
Update 2
Opt-in audiences, consent and suppression, unsubscribe, analytics, public archives, billing.
Newsletter creators
Update 3
Reader-level segments, quizzes, progress tracking, branching paths, multilingual issues.
Learning businesses
Update 4
Roles, approval chains, SSO, SAML, SCIM, audit export, and data residency.
Companies / training teams
Update 5
Public API, webhooks, LMS and CMS integrations, marketplace, measured scaling.
Partners
BUILT WITH
FAQ
Is there a hosted version I can sign up for?
No. Cadensend is an open-source, MIT-licensed project. There is no hosted signup — you clone the repository and run it yourself.
Can it send to a mailing list today?
Not yet. The current build sends only to your own verified address, by design. Opt-in audiences, consent, and suppression are scoped for a later update and gated on those controls being hardened first.
How does it avoid sending the same issue twice?
Delivery is keyed on workspace, issue, recipient, and issue version, and the record is written before the provider call. A retry returns the original attempt instead of creating a second send.
Can the model browse the web or run code on its own?
No. The writer has no arbitrary network or code-execution tool. Retrieval returns content and metadata only, and every tool input is schema-validated against an allowlist.
What does it cost to run?
Cadensend itself is free. You pay for whatever you plug into it: your LLM provider, your email provider, and the infrastructure you host it on.
Cadensend is MIT licensed and self-hosted. Everything you need to run it is in the repository.