Polaris · Docs

Polaris — Strategic Marketing OS by Marketising. Bilingual (EN + FA) 8-node AI strategic-marketing operating system. Connect via web, Telegram, or MCP from Claude / Claude Code / Cursor / any MCP client.

What it does

Send a one-line brand brief (just a brand name is enough) → Polaris turns it into a defensible strategic decision — what deserves budget, backed by tagged evidence — plus the complete 12-month marketing operating plan, composed by 8 specialist AI roles working in sequence:

  1. Researcher & Campaign Planner — brand audit, competitor map (typically ~15), review-sentiment synthesis, SWOT, PESTLE, hypotheses. When server env vars are configured (Brave Search, Google Places, brand-site URL in the brief), competitor and review sections become live retrieval and every claim is tagged [VERIFIED · source]; otherwise they are AI-inferred analytical drafts (see Data Integrity Note below)
  2. Senior Strategist (Posture-Aware) — TOWS-derived posture (Offensive / Defensive / Reorientation / Diversification), Ansoff, 15-lever scorecard, 12-month calendar, bundles, quarterly OKRs, Marketing P&L with break-even client count
  3. Creative Director (IMC · Trends) — Trend Pulse across IG/TikTok/Pinterest/Google Trends, 3-path selection (Trend-Led / Challenge-Led IMC / User-Seed), Big Idea, 3-phase rollout, slogan bank, per-channel briefs, production-ready prompts for Nano Banana / Canva / AI video / human storyboard
  4. Digital Marketing Manager — Google + Meta ads, content tiers, ROAS forecast, pixel/GTM map
  5. Customer Relations Manager — loyalty club, 9-stage lifecycle, SMS / push libraries, retargeting matrix, CRM Creative asset bridge
  6. Affiliate & Influencer Marketer — nano/micro/mid/macro tiers, affiliate program, UTM convention, quarterly forecast
  7. Customer Efficiency Manager + Mega Report — AI-CRM scores, win-back wave, automation map, Final Integrity Pass that flags untagged claims, executive Mega Report
  8. Execution Plan — 52-week run-book, RACI, cadence templates, tool stack with CAD costs, 30/60/90 onboarding, risk register, Day-1 checklist

Three discipline layers in the system prompt enforce: (1) Calendar discipline — anchor every date to the brief's start date, scale to campaign duration; (2) Strategic posture discipline — every node aligns to the chosen posture; (3) Industry-agnostic — never assume beauty/clinic; tailor to the brand's actual category.

Data Integrity Note · یادداشت یکپارچگی داده
Polaris tags every claim with one of four labels — [VERIFIED · source], [USER-PROVIDED], [AI-INFERRED], [HYPOTHESIS] — and ends every node with a Confidence & Verification Map (H/M/L) the UI renders as colored chips and cells.

Competitor matrices, review sentiment, and Trend Pulse are AI-inferred analytical drafts unless the server is configured with the optional live-retrieval API keys (BRAVE_SEARCH_API_KEY for competitors, GOOGLE_PLACES_API_KEY for reviews, and a website field in the brief for live brand-site fetch via cheerio). They are designed for strategic direction, not standalone factual verification. Treat AI-INFERRED and HYPOTHESIS claims as starting points to validate before launch or before making spending decisions. Every deliverable (HTML/DOCX/PPTX) auto-includes a Source-Citation Appendix that counts every claim by category so you can audit grounding without re-reading the body.

Plan Modes — Survival / Quick-Start / Lean / Full / Enterprise

A plan mode sets the depth of the plan — how many specialist nodes run and how long the deliverable is. It does not decide how ambitious the recommendations are: the Budget Reality Gate scales every recommendation to your actual budget in any mode, so a small budget no longer gets a stripped-down plan.

ModeForNodesCreditsOutput
SurvivalPre-revenue founder, first 3 clients2 — Researcher + Strategist1ONE angle · ONE offer · first-3-clients plan · ZERO forecasts
Quick-StartSolo, beginner3 — + Creative1~10 pages, action-first
LeanSMB, 1–3 person team5 — + Digital + CRM3~25 pages
FullGrowth stage7 — all main nodes6~80 pages
EnterpriseAgency / brand7 + Enterprise Extensions10~100 pages, multi-market notes + PI planning

The Execution Plan (52-week run-book, RACI, tool stack, 30/60/90) is a separate add-on in every mode, not part of Full's seven nodes. It costs 2 more credits.

Choosing a mode

Pick one explicitly and you get it — an explicit choice always wins. Survival, Quick-Start and Lean are deliberate choices for a shorter deliverable; a small budget does not drop you into one.

Leave it on Auto (the default) and Polaris reads the brief's monthly_ad_budget:

Monthly ad budgetAuto picks
$50k or moreEnterprise
Any amount above zeroFull — every real budget gets the complete plan
Not givenLean — a sensible middle default when there is no budget signal

Auto then caps the mode to what your credits can afford, so it never lands you on a paywall: 10+ credits → Enterprise, 6+ → Full, 3+ → Lean, 1+ → Quick-Start, 0 → Survival. On the Unlimited tier nothing is capped. Your budget is used only to pick the mode — it is never treated as a revenue figure, and revenue is not part of this decision.

Every mode also renders a 1-Page Summary at the top of the output — posture, primary challenge, Big Idea, top-3 strategies, 3 actions this week — so you get the bird's-eye view without reading the detail. Survival mode skips forecasts entirely by design and replaces OKRs with a first-3-clients hit-list.

1. Web app

The simplest way. No install, no auth required.

  1. Open https://polaris.marketising.ca
  2. Fill at minimum brand_name — everything else can be auto-filled with Smart-Fill
  3. (Optional) Pick Strategic Posture, Plan Mode, Campaign Duration
  4. Click ▶ Run All Nodes
  5. Watch the 1-Page Summary + each node stream in
  6. Download Word / PowerPoint / HTML / Markdown

2. MCP — Connect from Claude.ai / Claude Code / Cursor

The MCP server exposes 7 tools that any MCP-aware client can call.

Endpoint

https://polaris.marketising.ca/api/mcp (Streamable HTTP transport)

Tools

Claude.ai / Claude Code config

{
  "mcpServers": {
    "advertising-agency": {
      "transport": "streamable-http",
      "url": "https://polaris.marketising.ca/api/mcp"
    }
  }
}

If MCP_API_KEYS is set on the server, supply Authorization: Bearer <key>.

3. Telegram bot

Mobile-friendly. Send a brief, get every generated bilingual node report back as a separate message. The number of reports depends on the auto-resolved plan mode — 2 for Survival, 3 for Quick-Start, 5 for Lean, 8 for Full, 8 + Extensions for Enterprise.

  1. Open Telegram, search @newmonitoring_Xbot
  2. Send /start to see the brief format
  3. Send a brief in key: value lines, e.g.:
brand: Aurora Beauty
location: Toronto, Canada
services: HydraFacial, Laser, Botox
budget: 3000
target_audience: women 25-45, downtown Toronto
private: true   # optional — opt out of all archiving

4. REST API

Any program that can send an HTTP request can generate a Polaris plan. Calls are authenticated with a personal API key and meter the same credits as a run started in the web app — the plan is archived to your account either way.

Authentication

Create a key in the dashboardPublic API. It is shown once; store it as a secret. Send it on every request:

X-API-Key: pol_live_…

A browser session can send Authorization: Bearer <session JWT> instead. A request with neither is treated as anonymous: it still generates, but nothing is metered, archived, or white-labelled.

Endpoints

MethodPathPurposeAPI key
POST/api/marketing/nodeGenerate one node — the call you build a plan from
POST/api/marketing/build-docxWord document
POST/api/marketing/build-pptxPowerPoint deck
POST/api/marketing/build-htmlHTML report
POST/api/marketing/enrichSmart-Fill empty brief fields❌ session only
POST/api/marketing/telegramTelegram webhook — internal, not for callers

Your key also carries your white-label branding into the three exporters, so a document generated by a script looks like one downloaded from the app.

POST /api/marketing/node

Authentication. Send X-API-Key (or a signed-in session) to generate a whole plan. A call with neither is treated as anonymous: it may run the researcher node only, a few times an hour per address — enough to try the API, not enough to build with. Anything else answers 401 sign_in_required, and going over the ceiling answers 429 with Retry-After.

Request body (JSON):

FieldRequiredMeaning
brandBrief.brand_nameyesThe only required field in the whole API. Every other brief field is optional and improves the output.
nodeIdyesOne of researcher, strategist, creative, digital, crm, affiliate, efficiency, plus the add-on execution-plan.
priorOutputsnoAn object of {nodeId: markdown} from the nodes you already ran. This is how a node inherits the plan — researcher takes {}, every later node should receive the ones before it.
chunkIdnoSome nodes are generated in parts. Omitting it gives you the whole node.
continueFromnoText of a truncated response, to resume it. Rarely needed.

The response is streamed plain text (text/plain; charset=utf-8), not JSON — the node's markdown, arriving as it is written. Read it to the end; do not expect a JSON envelope. Useful response headers: X-Node-Id, X-Node-Order, X-Chunk-Id.

Running a whole plan

Call the nodes in order, feeding each result into the next call's priorOutputs. Which nodes make up a plan depends on the plan mode:

Plan modeNodesCredits
survivalresearcher → strategist1
quick+ creative1
lean+ digital, crm3
full+ affiliate, efficiency (all 7)6
enterpriseall 7, at multi-market depth10

Set brandBrief.plan_mode explicitly, or leave it out and Polaris derives it from the budget. The execution-plan add-on costs 2 more credits. Credits are charged once per run, on the researcher call — the nodes after it are already paid for.

Example

curl -N -X POST https://polaris.marketising.ca/api/marketing/node \
  -H "X-API-Key: pol_live_…" \
  -H "Content-Type: application/json" \
  -d '{
        "nodeId": "researcher",
        "brandBrief": { "brand_name": "Acme", "plan_mode": "lean" },
        "priorOutputs": {}
      }'

-N disables curl's buffering so you see the stream. Feed the text you get back in as priorOutputs.researcher on the next call, with "nodeId": "strategist".

Rate limit

15 requests per minute per key, in a fixed one-minute window. Over it you get 429 with a Retry-After: 60 header. Sessions signed in through the web app are not rate-limited.

Errors

StatusMeaningWhat to do
400Missing brandBrief.brand_name, unknown nodeId, or invalid JSONFix the request; the body names which.
402insufficient_credits — and only thatTop up. The body carries cost, balance, upgrade_url.
405Not a POSTUse POST.
429Rate limitWait out Retry-After.
502The AI provider failed in a way worth retryingRetry with backoff.
503A Polaris-side fault — including a billing check that could not be readRetry shortly. This is not a balance problem, and Polaris will not tell you to top up for it.

A 402 always means your balance; it is never used for a server-side fault. That distinction is deliberate — see Methodology.

Revoking a key

Revoke from the dashboard. It stops working immediately, and anything using it stops with it — one key per integration makes that survivable.

5. CLI

From a cloned repo:

npm install
cp .env.local.example .env.local   # fill in OPENAI_API_KEY
START_DATE=2026-05-13 \
STRATEGIC_POSTURE=auto \
CAMPAIGN_DURATION_MONTHS=12 \
USE_ENRICH=1 \
BRAND_NAME="Your Brand" \
bash run-all-nodes.sh
python3 build-deliverables.py   # produces Word + PPT + HTML in outputs/deliverables

Pricing

Polaris runs on a hybrid subscription + credits model: Free ($0 — Survival & Quick marketing plans, 2 plan runs/month, Markdown output), Pro ($500/mo — all plan modes, 20 credits/month, Word · PowerPoint · HTML export), and Unlimited ($1,500/mo — everything in Pro, no usage cap, MCP + Telegram access). Extra credits are $25 each and never expire. See Pricing for current details and Terms for the agreement.

Contact

Email: mahan.sma@gmail.com
GitHub: advertising-agency (private — request access)