
The AI-operated marketing department.
A multi-tenant SaaS platform that runs a digital marketing agency end-to-end. 60+ Claude-powered agents do the production work — research, copy, ads, SEO, social, email, WhatsApp, reporting. Humans supervise. The cost structure of a SaaS, the output of an agency.
- 60+ specialised agents · 11 functions
- Claude for text · OpenAI for media
- Multi-tenant · RLS-isolated workspaces
- INR + USD · Razorpay + Stripe
Built on the AI infrastructure brands already trust
60 agents, one brand voice, cost you can budget.
Most "AI marketing tools" bolt ChatGPT onto a UI and call it a day. Marketing OS is an engineering-grade agent framework — Zod-typed input / output, versioned prompts, model-tier routing, per-agent token budgets, prompt caching, batch API, RLS-isolated workspaces and a cost dashboard that ties every dollar to a client and an agent run.
60+ specialised agents
Not one chat box pretending to be everything. Each agent has a single job — brand brief, ICP, keyword research, blog writer, Google Ads builder, anomaly detector — with its own schema, tools, prompt version and budget. Orchestrator (AGT-110) routes jobs across agents.
Cost-engineered from day one
Claude prompt caching (80%+ hit rate on brand context), Anthropic Batch API for non-realtime (50% off), enforced model mix (15% Haiku / 75% Sonnet / 10% Opus). Every run logs tokens (cached vs uncached), cost, latency. Per-agent and per-client budgets stop runaways.
Human-in-the-loop by default
Nothing goes to a real prospect, ad account or social channel without approval (unless you explicitly set auto-send rules). Every change is in the audit log; Brand Voice Enforcer and Originality Checker gate every customer-facing draft.
Six families. 60+ agents. One orchestrator.
Each agent is defined in code with Zod input / output, model tier, versioned system prompt, tool whitelist and budget. Orchestrator (AGT-110) routes work; specialised agents do it.
Every agent is a typed contract — not a prompt in a Slack thread.
Each agent is defined with defineAgent() — Zod-validated input / output, an explicit model tier, a versioned system prompt loaded from a markdown file, a tool whitelist and budgets for tokens, latency and cost. Runs are recorded to the agent_runs table with full observability.
- Zod input + output schemas
- Haiku / Sonnet / Opus tier per agent
- Versioned prompts in markdown
- Tool whitelists per agent
- Token / latency / cost budgets
- agent_runs observability table
Three orchestration patterns
Real marketing work isn't one prompt — it's a chain. Marketing OS supports three orchestration patterns out of the box, each implemented in the framework so you don't roll your own.
- Linear chain · A → B → C (e.g. brief → write → review)
- Map-reduce · N parallel → synthesis (e.g. 50 keywords → cluster)
- Iterative loop · agent → evaluator → revise → re-check
- Orchestrator (AGT-110) routes when destination isn't fixed
- Trace IDs across multi-agent runs
Cost levers, by design
The reason this is cheaper than an agency isn't magic — it's engineering. Four levers, baked in, that compound to roughly an order of magnitude cost-per-deliverable difference.
- Prompt cache — 80%+ hit on system + brand context
- Batch API — 50% off for non-realtime work
- Model mix — 15% Haiku / 75% Sonnet / 10% Opus
- Per-agent and per-client cost ceilings
- Cache hit-rate dashboard, alerts on drift
One workspace per client. Isolated at the database row.
A traditional agency CMS keeps client data in the same tables and prays the queries filter correctly. We don't pray — we use Postgres Row-Level Security. The web app connects as the app role which respects RLS; workers connect as system which bypasses it. Two pools, no leakage.
- One workspace per client
- Postgres Row-Level Security
- app role respects RLS (web)
- system role bypasses (workers)
- Separate connection pools
- Cross-workspace = explicit only
- Role ∩ clients ∩ verticals ∩ functions
- owner / account_manager / specialist
- client_admin / client_viewer
- function tags (seo / content / paid)
- Owner bypasses all filters
- TOTP 2FA via otplib
Brand. Agency. SaaS.
One platform, three operating models. Pick the one that fits — same agents, same observability, same RLS isolation underneath.
Single D2C brand
One workspace, one brand voice, one currency. Best for D2C founders who want to run marketing themselves without paying agency rates.
Marketing agency
Many workspaces, many clients, your team supervises. Replace 60% of agency production cost while keeping the strategic layer human.
Managed-by-SourceForge
We run the platform on your behalf — bring brand, brief and budget; we run agents and report. Hybrid of SaaS and managed service.
Every external system, behind one contract.
Each connector implements the same five-method contract — connect · validate · pull(since) · push(action) · disconnect. Stateless, idempotent, credentials encrypted, exponential-backoff retry on failure.
Eight first-party connectors out of the box, plus a connector SDK for fixed-scope custom integrations (your CRM, your DMP, your BI warehouse).
Engineering-grade by intent.
Node 24 + TypeScript strict. Next.js 15 + React 19 + Tailwind v4. Drizzle on Postgres 18 with pgvector for embeddings. BullMQ on Redis 7 for the worker pool. Anthropic for text, OpenAI for media. Docker + GHCR. Pino + Sentry. Vitest + Playwright + MSW.
- Next.js 15 + React 19 App Router
- Tailwind v4 + shadcn/ui + Tabler
- TanStack Query v5 · RHF + Zod
- Server Components by default
- Server Actions for mutations
- Operator + client portals
- Route Handlers + tRPC v11
- Drizzle ORM + Postgres 18 + pgvector
- BullMQ v5 on Redis 7 · worker pool
- Auth.js v5 + TOTP via otplib
- Pino logs · Sentry for unhandled
- ULID primary keys everywhere
- Claude (Opus / Sonnet / Haiku) for text
- OpenAI (gpt-image-1 + Whisper + TTS)
- bge-large-en-v1.5 embeddings (self-hosted)
- Prompt-cache 80%+ hit rate
- Batch API for non-realtime (50% off)
- Per-agent budgets + per-client ceilings
- Docker + compose.production.yml
- Hostinger VPS launch · AWS-ready
- GHCR registry · SHA + semver tags
- Migrations: one-shot container
- Nightly backups + 14d / 8w retention
- Image size <200 MB web / <150 MB worker
Built for D2C — bends to anyone selling on the internet.
Optimised for Indian D2C consumer brands and their international counterparts; the same agent set covers B2B SaaS, agencies, coaches and infoproducts with vertical-specific configurations.
Six phases. Single brand in 5–10 days.
AGT-113 Onboarding Concierge runs the structured interview, builds the brand brief, defines the ICP, runs the competitor teardown and lays out a 90-day plan — all reviewed by a human account manager before campaigns go live.

Agents draft. Humans review. Nothing reaches a real prospect or ad account without explicit approval — unless you set the auto-send rule.
Brand brief
AGT-001 runs the structured interview, ingests existing site and past campaigns, builds the brand fingerprint.
ICP + teardown
AGT-002 defines the ideal customer; AGT-003 tears down 3–5 competitors on positioning, channels, weakness.
Channel + 90-day plan
AGT-004 picks the channel mix and budget split; AGT-005 lays out the sprint-by-sprint go-live plan.
Connector wire-up
OAuth into Google Ads, Meta, LinkedIn, GA4, Search Console, WhatsApp Business; permissions audited.
Sprint 1 launch
First wave of agents fire — keyword research, content briefs, ad builds, social calendar — all queued for human review.
Optimise + report
Daily anomaly detection, weekly performance narration, monthly branded report — automated, reviewable, exportable.
Real SLAs, calibrated to a live campaign.
Two marketing stories — placeholders till the real ones land.
Real brand names and metrics available on a discovery call.
Founder-led marketing, two part-time freelancers writing copy. Meta ads creative refresh cycle: 3 weeks. Blog cadence: 1 post / month. Brand voice drifting; ROAS dropping below 2.0; founder was the bottleneck on everything.
Onboarded to Marketing OS. AGT-035 Brand Voice Enforcer captured the founder's voice from 50 past posts. AGT-030 Blog Writer + AGT-041 Meta Ads Builder + AGT-043 Creative Briefer (with OpenAI gpt-image-1) took over production. Founder review queue cut to 30 min / day.
- Ad creative refresh: 3 weeks → 3 days
- Blog cadence: 1 / month → 12 / month
- ROAS: 1.8 → 3.4 in 90 days
22 D2C clients, 11 production staff, gross margin 28%. Brand voice inconsistent across writers; monthly reports taking 3 days per client; aggregation across GA4, Meta and Google Ads was manual.
Migrated to Marketing OS as the agency operating system. Each client got an isolated RLS workspace; AGT-080 Data Aggregator + AGT-083 Monthly Report Author replaced the manual reporting pipeline. AGT-035 Brand Voice Enforcer standardised quality.
- Production staff: 11 → 5 (redeployed to strategy)
- Gross margin: 28% → 61%
- Monthly report cycle: 3 days → 4 hours
Common questions
Both, by design. It's a multi-tenant SaaS platform with 60+ AI agents that do the production work of a digital agency — research, writing, ad-builds, SEO, social, email, WhatsApp, reporting. Humans supervise. You can run your own agency on it, or have ours run on it for you. Either way the cost structure is fundamentally different from a traditional agency because production is AI, not people.
30-minute demo with your brand voice and your real channels.
Tell us your operating model (brand / agency / managed), your current channels and 2–3 things your current setup can't do. We'll demo with a configured sandbox using your real brand voice — agents writing your copy, not generic vendor reel.
- 30-minute discovery + tailored demo
- Live agent walk-through on your channels
- Cost model for your scale
- Migration plan from your current tools
