▸ ads.sync 02:00 · seo.serp.daily 06:00 IST · crm.leads 06:30 · insights.daily 07:00▍

One person.
The whole machine.

m361 runs marketing as infrastructure — a 07:00 brief that says what to do next, a writer that holds its own drafts to spec, and 16 job queues working the night shift. Operated by you, on your own AI keys.

no card · your own model keys · zero token markup

The night shift, on a cron.

insights.daily · 07:00 IST

Your first hire is a chief of staff.

The first screen after login is a morning brief: one headline under fifteen words, at most three bullets, one “start with this” button. It costs one model call per workspace per day — ever. The first reader pays, everyone else reads the same words, and a quiet morning costs nothing at all.

The AI is not allowed to know anything. Every fact comes from arithmetic over database rows; the model’s only decision is which insight to lead with — and the button’s link comes from the database, so it can never 404.

$ insights.daily — one call, cached for the dayEight KPIs recomputed live before this line rendered.1 CAT keyword slipped on mobile — refresh the pillar2 “Aug retarget” runs ~₹41,000 over account average3 Tue 7pm wins: 8 posts · 3 in-hour · 1.25× lift▸ Start with this →

1 model call/day · cached in the audit trail · quiet mornings are free

Six rules. Zero hallucination.

The to-do list under the brief comes from six deterministic rules — pure arithmetic over your own rows, no AI anywhere near the numbers. Each card shows its own working and links to the screen that fixes it.

Rank drops

seo.serp.daily · desktop + mobile

A keyword that slipped overnight arrives with its exact positions and the page that can fix it.

Expensive campaigns

CPL ≥ 1.5× account avg → watch · ≥ 2× → act

Translated into money: “about ₹41,000 more than the same leads would have cost anywhere else in this account.”

Wrong posting hours

8 posts analysed · 3 in-hour · ≥ 1.25× lift

Below those floors the rule refuses to fire. A guess is worse than silence.

Unrepurposed hits

blog > own average · 0 derivatives

A post that beat your own average and was never fanned out into its eight formats.

Untouched leads

> 20% of pipeline idle → flagged

Fires when the pipeline goes quiet, sorted so the highest scores are handled first.

Leaky journeys

step judged after ≥ 10 runs

A wait-then-send step that loses people is named, with its journey linked.

dismissing a card is a 30-day snooze, not a delete — what’s still burning money in June comes back with June’s numbers

The engine room is theirs.
The console is yours.

make → ship → listen → learn → make

Marketing is a loop. This one closes itself.

01 / MAKE

The writer scores your brief 0–100 across seven weighted signals and quotes the exact cost — input and output priced separately, in USD and INR — before you press the button.

blog.write · density enforced

Up to 2 correction passes hold the draft to the keyword density you asked for — billed as their own line item, and a “fix” that shrinks the article below 70% is rejected outright.

1 blog → 8 formats · parallel

Reel script, carousel, X thread, LinkedIn, email, WhatsApp, YouTube Short, Google Business post. One format failing costs you that format, nothing else.

content.embed · pgvector

Every asset embedded seconds after saving. Search the library by meaning, with full version history — restore is itself a versioned edit.

writer · new draft

blog.write

Brief strength82 · Strong

length · 1,800 words

density · 1.2%

est. cost $0.21 · ₹19

Generate

density holds or you see the real figure — never a silent miss

02 / SHIP

One master caption publishes to Instagram, Facebook Pages, YouTube and X — trimmed to each platform's real ceiling on a word boundary, never mid-sentence.

social.publish · idempotent

If one of four platforms fails, the retry re-attempts only that one. The other three are never posted twice.

pages · A/B split 50/50

AI landing pages in seven strict block shapes, live on a public URL in under a minute, split-tested by a cookie so a returning visitor always sees the same side.

msg.campaign · four honest numbers

Before any send: matched, eligible, missing an address, and no consent. A hard bounce revokes consent by itself.

composer · one master caption

social.publish

X280 ch
Google Business1,500 ch
Instagram2,200 ch
LinkedIn3,000 ch
Facebook5,000 ch
YouTube5,000 ch

trimmed on a word boundary · a failed platform retries alone

03 / LISTEN

The internet doesn't keep office hours. Reddit is swept every 30 minutes with a 7-day backfill the moment a query is created — the feed fills before you finish reading the form.

listen.sentiment · batches of 20

Every mention auto-classified on your own key. Unclassified is never dressed up as neutral — a failed batch stays visible and retries.

reply drafts · always two

Two ready-to-send replies that differ in posture, not wording — answer in public, or move it private. Never guaranteed outcomes, never posing as a customer.

social.metrics.* · every 6h

Every post's numbers fetched four times a day for 30 days, one queue per platform so X's tight rate limit never starves Instagram.

listening · r/CATpreparation

listen.poll · 30m

u/mock_aspirant · 2h

negative

“Their mock series felt way harder than the actual paper. Worth it or hype?”

draft A · answer in public draft B · take it private

u/mock_topper · 5h

positive

“The sectional analysis genuinely changed how I revised. Recommending.”

torn? filed negative — a buried complaint costs more than a second look

04 / LEARN

Three attribution models side by side — first touch, last touch, linear — with 30-minute sessionization, and the verdict locked in at enrolment.

winning formats · ≥ 1.25× your avg

Each format's real numbers come back and are judged against your own average — and winners pre-select themselves in the repurpose picker. The loop closes because the product closes it.

ads · AI analyst, no invented figures

Fed your top campaigns and weekly trends, forbidden to make up a single number, returning severity-ranked actions with effort labels.

events · one stream

A single form submission is consumed three ways at once: the A/B conversion, the reminder journey's trigger, and the registration count.

attribution · 30 days

attribution.derive

firstlastlinear

google / organic

instagram

whatsapp

youtube

locked at enrolment — this month’s report never changes next month

guard.check · runs before anything leaves

Nothing ships that shouldn’t.

Brand Guard reads every outbound line against five closed rule categories — unprovable guarantees, manufactured urgency, platform policy, your claims policy, banned words — written to the standard India’s ad regulator and both major ad platforms actually apply. Every flagged span is a verbatim quote, verified server-side, so “Fix all” can never look like it worked while doing nothing.

Usage rights get the same teeth: record who licensed a creative and when the window closes, and the server refuses to publish an expired asset — naming the exact expiry date. A creator’s 30-day reel can never quietly keep running as an ad.

composer · new post

Guaranteed 99 percentile in 30 days. unprovable guarantee

fix Structured prep, tracked weekly — see last year’s results.

reel_08.mp4 — licensed · 14 days left

Publish

the pixel

3,926 bytes

The entire tracking script — smaller than most favicons, with a hard 4,608-byte budget enforced at build time. The build fails rather than quietly shipping something fat to every page of your site.

pixel.jsbudget: 4,608 B

the only comparison shown is against its own budget — it wins by refusing to grow

yoursite.in/cat-mock-analysis

page_view · utm_source=instagram ← held, never overwritten

page_view · /fees

page_view · /toppers (18 days pass)

form_submit · identify

contact created — 3 weeks of anonymous history snap on

first touch: instagram · the retargeting ad doesn’t steal the credit

batched 800ms · sendBeacon on pagehide · zero dependencies · fails silent

settings/ai

Your keys. Your models.

There is no server-side AI key at all. Every model call runs on your workspace’s own credential — zero token markup by design. Keys are AES-256-GCM encrypted, live-verified against the provider before saving, and shown as their last four characters only. Seven text models across three providers, and 13 AI jobs each routable to its own — Opus for blog drafts, the cheapest capable model for sentiment.

anthropic

sk-ant-····rk4t

claude sonnet 5 · opus 4.5 · haiku 4.5

✓ verified live

openai

sk-proj-····9fa2

gpt-4.1 · gpt-4.1 mini · gpt-image-2

✓ verified live

google

AIza····q7Lm

gemini 2.5 pro · gemini 2.5 flash

✓ verified live

m361 runtime

13 jobs · each on its own model

statement · this month

blog.writeclaude-sonnet-512,410 tok$0.214531
blog.density_fixclaude-sonnet-53,102 tok$0.048112
listen.sentimentgemini-2.5-flash20 mentions$0.000912
guard.checkgpt-4.1-mini1,844 tok$0.001204

every call ledgered: tokens · cost to 6 decimals · latency
warns at 80% of budget · blocks only at 110%

0

job queues on the night shift

0

AI jobs, each on its own model

0

formats from one blog, in parallel

0

bytes of pixel, budget-enforced

One seat.
The whole machine.

The brief lands at 07:00. The queues never left.