Skip to main content
Glama
Marketic

Marketic

by Das-rebel

Marketic — Your Marketing Brain

The best marketing teams don't guess what the market wants. They measure it.

Marketic watches the market 24/7. Every morning, you get a briefing with what actually matters — before your first coffee.

Not a dashboard. Not another tab. A prioritised brief with real signals, budget advice, competitor moves, and campaign plans — generated from 9 sources, measured against outcomes, and logged with reasoning.

GitHub stars Tests License: MIT


The Monday Morning Problem

(If you've ever opened 7 browser tabs at 8am wondering what actually happened — this is for you.)

YOUR MONDAY WITHOUT MARKETIC
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  7:45  Wake up. Coffee. Open laptop.
  8:00  Open 7 browser tabs:
           Google Trends  "what's trending?"
           Competitor ads "what launched?"
           Mixpanel      "why did last week drop?"
           LinkedIn      "what's everyone saying?"
           Slack #mktg  "did anyone reply?"
           Email analyst "can you pull..."
           HubSpot      "which lead converted?"
  9:30  Still don't know what matters.
  10:00 Stand-up. Wing it.

YOUR MONDAY WITH MARKETIC
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  7:58  Notification: "Your briefing is ready"
  8:00  Read 6 sentences:
           ① Kraken IPO buzz ($1.6M, 15% likely)
              → Ride fintech content today
           ② D2C skincare India rising (Google IN)
              → Publish before the spike peaks
           ③ Shark Tank India: 3x mentions this week
              → "As seen on Shark Tank" angle
           ⚠ IGNORED: Crypto drama ($4M, 6% likely)
              → Probability-adjusted — doesn't make the brief
           📊 Budget: Email $9,200 · Social $5,800
              → Email margin 85% > Social 15%
           🤖 Competitor X: new ad live since Tue
              → Counter-angle: clinical vs DIY
  8:07  Coffee. Done.
  8:08  Start the actual work.

See: docs/assets/monday_problem.txt


Related MCP server: campaign_chest

3 Numbers That Tell the Story

Before

With Marketic

Briefing time

175 min

8 min

Decisions informed/day

2–3 (gut feel)

4–5 (signal-backed)

Time saved per week

0

3.2 hrs

See: docs/assets/comparison_table.txt


What You Actually Get

1. The Signal Brief (8:00 AM)

TOP SIGNALS
① Kraken IPO buzz — $1.6M bet · 15% probability · SCORE 72/100
   → Ride fintech narrative this week
② D2C skincare India — Rising Google searches in IN
   → Publish before spike peaks · 5-day window
③ Shark Tank India buzz — 3x mentions week-over-week
   → Angle: "as seen on Shark Tank" trust signal

⚠ IGNORED: Crypto crash talk ($4M volume, 6% odds)
   → Drama, not signal — probability-adjusted out

2. The Campaign Brief (2:00 PM)

BRAND: GlowSkincare IN
BUDGET: Email $9,200 · Paid Social $5,800
  (margin-adjusted: email 85% margin > social 15%)

COPY VARIANTS:
  A: "Your skin deserves clinical-grade care"
  B: "Dermatologist-approved. Now in India."
  C: "Skincare that actually works in Delhi heat"

BEST TIMES (IN): 7-9AM · 12-1PM · 7-9PM
BRAND TOKENS: #6D0000 · DM Sans · @glowskinofficial

3. The Competitor Alert (10:00 AM)

BRAND X — "Skin that survives Delhi heat"
Running since Aug 20 · ~$12-18K/week
Hook: survival · Offer: heat-proof · CTA: shop now

COUNTER-ANGLES (AI-generated):
  ① Clinical vs DIY: "Derms agree: $47 gel > $300 AC"
  ② Speed: "Results in 14 days or money back"
  ③ Transparency: "We list every active ingredient"

See: docs/assets/sample_brief.txt


Signal Calibration — The Proof

Most tools say "our signals are reliable." Marketic shows you:

SIGNAL CALIBRATION — Last 30 Days
════════════════════════════════════════════════════
 Source            Signals   Brier   Verdict
────────────────────────────────────────────────────
 Polymarket              12    0.09   ✅  Well-calibrated
 Google Trends            8    0.14   ✅  Reliable
 Hacker News              6    0.21   ⚠️  Uncertain
 Reddit                   9    0.28   ⚠️  Needs data
 Twitter / X             14    0.31   ⚠️  Needs data
 Product Hunt             5    0.24   ⚠️  Needs data
────────────────────────────────────────────────────
 Overall                54    0.19   📊  Honest
 Random baseline         —    0.25   ─────  ─────
════════════════════════════════════════════════════

Brier score:  0.00 = perfect  ·  0.25 = random  ·  Higher = worse

What this means:

  • Polymarket signals: right ~9 out of 10 times

  • Twitter/X signals: 3 more weeks of data before we trust them

  • This is the first marketing tool that tells you how wrong it might be

See: docs/assets/calibration_table.txt See: docs/assets/calibration.mmd — pie chart


How It Works

flowchart LR
    subgraph SENSE["📡 SENSE"]
        P[Polymarket]
        G[Google Trends]
        H[Hacker News]
        R[Reddit]
        X[X / Twitter]
        Y[YouTube]
        I[Indian RSS]
        F[FB Ads Library]
    end

    subgraph THINK["🧠 THINK"]
        EA[Ensemble AI]
        SC[Scorecard]
        BR[Budget Router]
        AA[Ad Analyzer]
        PS[Prospect Scout]
    end

    subgraph HANDOFF["📋 HANDOFF"]
        BF[Brief JSON]
        BT[Brand Tokens]
        PW[Posting Windows]
    end

    subgraph LEARN["🔄 LEARN"]
        AT[Audit Trail]
        DS[Distillation]
        BB[Brand Brain]
    end

    SENSE -->|"volume × P(YES)"| THINK
    SENSE -->|"all signals"| SC
    THINK -->|"scored signals"| EA
    EA -->|"reasoned"| BR
    EA -->|"ad insights"| AA
    EA -->|"prospects"| PS
    BR -->|"budget split"| BF
    AA -->|"counter-angles"| BF
    PS -->|"enriched leads"| BF
    BF -->|"handoff"| HANDOFF
    BT --> HANDOFF
    PW --> HANDOFF
    HANDOFF -->|"execute"| AT
    AT -->|"patterns"| DS
    DS -->|"approved rules"| BB
    BB -->|"inject"| THINK

    classDef sense fill:#6366f1,color:#fff,stroke:none
    classDef think fill:#f59e0b,color:#fff,stroke:none
    classDef handoff fill:#22c55e,color:#fff,stroke:none
    classDef learn fill:#f43f5e,color:#fff,stroke:none
    class P,G,H,R,X,Y,I,F sense
    class EA,SC,BR,AA,PS think
    class BF,BT,PW handoff
    class AT,DS,BB learn

See: docs/assets/architecture.mmd

Two design decisions worth knowing:

  1. Polymarket: volume × P(YES) — $2.1M at 4% = $84K effective, not $2.1M. Because 73.4% of all Polymarket markets resolve "No" historically. Raw volume overweights drama.

  2. Budget: margin-adjusted, not vanity-ROAS — Email at 5× ROAS but 15% margin can lose to social at 1.5× ROAS but 85% margin. Marketic recommends where profit actually lands.


55 Tools Across 12 Categories

flowchart TB
    subgraph GTM["🎯 GTM & Intel (20 tools)"]
        A1[search_fb_ads]  A2[analyze_competitor_ad]
        A3[analyze_competitor]  A4[analyze_positioning]
        A5[breakdown_ad]  A6[generate_narrative]
        A7[discover_prospects]  A8[signal_fanout]
        A9[...]
    end

    subgraph CORE["⚙️ Core (12 tools)"]
        B1[generate_creatives]  B2[generate_social_posts]
        B3[generate_seo_content]  B4[build_campaign]
        B5[optimize_budget]  B6[launch_campaign_ad]
        B7[generate_brief]  B8[run_prospect_loop]
        B9[distill_learnings]  B10[ask_marketic]
    end

    subgraph DATA["📊 Data & Learning (13 tools)"]
        C1[track_signal]  C2[get_calibration_report]
        C3[resolve_signal]  C4[ensemble_vote]
        C5[audit_log]  C6[audit_get_log]
        C7[get_cost_summary]  C8[get_attribution]
        C9[crm_leads/deals/pipeline/activities...]
    end

    subgraph PUB["🚀 Publishing & UGC (10 tools)"]
        D1[schedule_content]  D2[get_upcoming_posts]
        D3[optimize_hashtags]  D4[curate_ugc]
        D5[request_ugc_permission]  D6[track_ugc]
        D7[render_template]  D8[hub_*]  D9[...]
    end

    classDef gtm fill:#6366f1,color:#fff,stroke:none
    classDef core fill:#f59e0b,color:#fff,stroke:none
    classDef data fill:#22c55e,color:#fff,stroke:none
    classDef pub fill:#f43f5e,color:#fff,stroke:none
    class A1,A2,A3,A4,A5,A6,A7,A8,A9 GTM
    class B1,B2,B3,B4,B5,B6,B7,B8,B9,B10 CORE
    class C1,C2,C3,C4,C5,C6,C7,C8,C9 DATA
    class D1,D2,D3,D4,D5,D6,D7,D8,D9 PUB

See: docs/assets/tools.mmd

Category

Highlights

Signal intelligence

9 sources: Polymarket · Google Trends IN · HN · Reddit · X · YouTube · Indian RSS · PH · FB Ads

Competitor intel

FB Ads Library search · Ad breakdown (hook/offer/CTA) · Positioning analysis

Calibration

Track signals → Resolve outcomes → Brier score per source

Campaigns

Full-funnel brief · Margin-aware budget · Narrative framing

Prospecting

ICP discovery (4 sources) + CRM enrichment loop

Creative

Copy variants · Social posts · SEO — scored by predicted performance

Publishing

Content calendar · Hashtag optimisation · Platform scheduling

UGC

Discover · Curate · Request permission · Track reposts

Design

Brand-as-data templates: one template, any brand

CRM

Leads · Deals · Pipeline · Activities

Analytics

5-model attribution: first/last/linear/time-decay/data-driven

Learning

Audit trail → Distillation → Brand brain (markdown)


Quick Start

git clone https://github.com/Das-rebel/marketic
cd marketic && pip install -e .
python3 init_memory_db.py

# Your first briefing — no API keys needed for core loop
python3 daily_briefing.py "D2C skincare brand India"

Optional Key

Adds

FB_ACCESS_TOKEN

Real competitor ad data from Facebook Ads Library

SERPER_API_KEY

ICP prospect discovery across Google/Twitter/Reddit/PH

OLLAMA_BASE

Free local AI models for creative generation


Open Source, MIT

Everything self-hosted. Your competitor data, your pipeline, your budget logic — stays yours.

git clone https://github.com/Das-rebel/marketic

Learn More

docs/BRIEF_SCHEMA.md

What's inside a campaign brief

docs/BRAIN_WORKFLOW.md

How the learning loop compounds over time

docs/COUNCIL_ROUND2.md

Architecture decisions and why

API_DOCUMENTATION.md

All 55 tools, all parameters

docs/assets/

Visual assets: Mermaid diagrams + ASCII, regenerate with python3 docs/assets/generate_assets.py

MIT © Subho Das

Available Tools

54 tools
analyze_competitorC

Deep-dive competitive analysis: positioning, messaging, ad strategy, audience targeting, strengths, weaknesses, and exploitable gaps.

Inputs: brand (required), category.

analyze_competitor_adB

Deconstruct a competitor ad (image/video frame URL or local path) via VLM: hook, pacing, psychological triggers, CTA, counter-angles. Falls back to copy heuristics when no vision backend available. Use derive=true to aggregate multiple ads into a counter-brief for generate_creatives.

Inputs: batch, derive, caption, transcript, +1 more.

analyze_positioningC

Analyze your brand's market positioning against competitors. Returns positioning map, differentiation strategy, and messaging framework.

Inputs: brand (required), product, industry.

ask_marketicA

Master router - one entry point for Marketic. Describe what you need in plain language (e.g. 'what's moving in AI markets', 'allocate my budget', 'deconstruct this competitor ad') and it routes to the right specialist tool(s). Use route_only=true to preview routing without executing.

Inputs: question (required), arguments, route_only.

audit_get_cost_summaryC

Get cost summary by model and action type for a date range.

Inputs: brand_id, end_date, start_date.

audit_get_logC

Retrieve audit log entries with filtering by brand, action, and date range.

Inputs: limit, action, brand_id, end_date, +1 more.

audit_logA

Log an AI marketing action with full audit trail. Records model, cost, confidence, reasoning chain, and human approval status.

Inputs: action (required), cost, model, brand_id, +7 more.

breakdown_adA

Break down a competitor ad into its structural components: hook, offer, call-to-action, emotional triggers, pacing, and format. Works from a URL (uses Ollama vision model locally if available, falls back to cloud vision then heuristic parsing) or from raw ad copy text. Optionally enrich with brand context.

Inputs: ad_url_or_text (required), brand_name, analysis_depth.

build_campaignC

Build a complete multi-channel campaign strategy with channel-specific tactics, budgets, and timelines.

Inputs: objective (required), campaign_name (required), channels, total_budget, +2 more.

build_utm_urlC

Build a UTM-tagged URL for campaign tracking.

Inputs: medium (required), source (required), base_url (required), campaign (required), +2 more.

collect_signalsC

Collect marketing signals from Product Hunt, Hacker News, Twitter, Reddit for a brand.

Inputs: brand (required), days, sources.

compare_competitorsA

Compare your product against multiple competitors. Returns feature comparison matrix, price comparison, and strategic recommendations.

Inputs: competitors (required), your_product (required).

crm_create_dealB

Create a new deal/opportunity from a lead. Sets deal value, stage, and links to lead.

Inputs: name (required), stage, value, lead_id, +1 more.

crm_create_leadC

Create a new CRM lead from marketing data. Stores lead with email, name, company, source, and scoring data.

Inputs: email (required), tags, phone, source, +4 more.

crm_get_dashboardC

Get CRM dashboard with lead/deal pipeline metrics.

Inputs: no named parameters.

crm_get_pipelineA

Get deal pipeline summary with values per stage.

Inputs: no named parameters.

crm_get_timelineC

Get timeline of all activities and stage changes for a lead or deal.

Inputs: entity_id (required).

crm_log_activityC

Log an activity (call, email, meeting, note) on a lead or deal.

Inputs: entity_id (required), activity_type (required), notes, subject, +1 more.

crm_move_dealA

Move a deal to a new pipeline stage. Updates probability and logs stage history.

Inputs: deal_id (required), new_stage (required).

crm_search_leadsB

Search CRM leads by name, email, or company.

Inputs: query (required), limit.

curate_ugcA

Curate user-generated content for a given hashtag. Discovers posts via hashtag monitoring, filters by aesthetic score, and returns a list sorted by combined relevance + aesthetic score.

Inputs: hashtag (required), limit, platform, min_aesthetic_score.

distill_learningsB

Promote recurring audit-trail patterns into brand learnings; optionally capture an explicit rule; export brain/.md markdown for human review.

Inputs: brand, category, capture_rule, export_brain, +1 more.

ensemble_voteC

Run ensemble voting across multiple AI models. Selects optimal model tier based on task complexity. Returns consensus decision with confidence score.

Inputs: prompt (required), task_type (required), models, context.

generate_briefB

Generate a self-contained campaign brief (handoff artifact) for any brand execution agent: positioning, budget split, posting windows, resolved BrandTokens, and execution contract. The agent can execute without calling back.

Inputs: objective (required), product_name (required), campaign_name (required), product_description (required), +9 more.

generate_creativesC

Generate ad copy variants across channels (Google, Meta, LinkedIn, etc.). Each variant includes headline, description, CTA, hooks, confidence score, and performance prediction.

Inputs: product_name (required), product_description (required), tone, channel, +4 more.

generate_narrativeC

Generate brand narrative, stories, and messaging frameworks for marketing.

Inputs: brand (required), narrative_type (required), product, industry.

generate_seo_contentC

Generate SEO-optimized content including meta titles, descriptions, headers, and FAQs for target keywords.

Inputs: target_keyword (required), word_count, content_type, competitor_url.

generate_social_postsC

Generate platform-specific social media posts (LinkedIn, X/Twitter, Instagram, Facebook). Supports threads, single posts, and multi-format content.

Inputs: topic (required), tone, format, length, +2 more.

get_attributionB

Calculate multi-touch attribution across marketing channels using various models.

Inputs: channel_points (required), model.

get_calibration_reportA

Get the signal calibration report: number of predictions, Brier score (lower=better), resolved vs pending breakdown, and per-source accuracy. Shows whether Marketic's signal sources are reliable.

Inputs: source, end_date, start_date.

get_upcoming_postsC

Get all scheduled posts for the upcoming N days from the content calendar.

Inputs: days, limit, platform.

hub_broadcast_eventC

Track an event across ALL connected marketing platforms simultaneously.

Inputs: contact_id (required), event_name (required), revenue, properties.

hub_create_segmentC

Create an audience segment across ALL connected marketing platforms.

Inputs: name (required), conditions, description.

hub_get_dashboardA

Get unified analytics dashboard across ALL connected marketing platforms. Aggregates metrics from WebEngage, CleverTap, Mixpanel, HubSpot, Braze, etc.

Inputs: no named parameters.

hub_health_checkA

Check health status of ALL connected marketing platforms. Returns connection status and capabilities.

Inputs: no named parameters.

hub_list_platformsA

List all supported marketing platforms and their capabilities. Returns platform features, supported channels, and connection status.

Inputs: no named parameters.

hub_search_prospectsC

Search for prospects using Clay data enrichment. Returns enriched company/contact data including title, company size, tech stack, funding, and social profiles.

Inputs: query (required), limit.

hub_send_campaignC

Send a marketing campaign via the best available platform. Routes to Mailchimp, HubSpot, WebEngage, Braze, or CleverTap.

Inputs: campaign_name (required), channel, subject, content_html, +2 more.

hub_send_transactionalD

Send a transactional message (single contact) via the best platform for the channel.

Inputs: body (required), contact_id (required), title, channel, +1 more.

hub_sync_contactC

Sync a contact to ALL connected marketing platforms. Creates/updates profile across WebEngage, HubSpot, CleverTap, Braze, Mailchimp, etc.

Inputs: email (required), contact_id (required), tags, phone, +5 more.

launch_campaign_adC

⚠️ REQUIRES APPROVAL. Launch a campaign ad via Composio integration (Meta, LinkedIn, Google Ads).

Inputs: platform (required), campaign_name (required), targeting, ad_creative, +1 more.

optimize_budgetC

Optimize budget allocation across marketing channels based on historical ROAS data.

Inputs: total_budget (required), current_allocation (required), channel_performance (required), strategy.

optimize_hashtagsC

Get optimized hashtags for a social media post. Returns a mix of trending and content-specific hashtags, respecting platform limits.

Inputs: content_text (required), limit, platform.

parse_utm_paramsC

Extract UTM parameters from a URL.

Inputs: url (required).

render_templateB

Render a brand design template to a Paper MCP script or JSON layer spec. Accepts a template name, brand tokens (name, primary, background, accent, secondary, font, handle, tagline), and optional content overrides. Returns HTML/layers or a placeholders list if required content is missing.

Inputs: brand (required), template_name (required), content_overrides.

request_ugc_permissionC

Request permission from a UGC creator to repost their content. Sends a DM template (English or Indonesian) via platform API.

Inputs: platform (required), content_url (required), message.

resolve_signalB

Resolve a previously tracked signal with its actual outcome (YES/NO/PARTIAL). Used to close the calibration loop and improve future signal quality.

Inputs: signal_id (required), actual_outcome (required), notes.

run_prospect_loopA

Signal-driven prospecting (JoeCRM pattern): discover prospects matching a niche, enrich with live market signals, auto-draft personalized outreach, insert scored leads into CRM. Degrades to signal-derived prospects when Serper key absent.

Inputs: niche_query (required), limit, market_query.

run_workflowA

Execute a multi-step marketing workflow. Chain operations: sync_contact → create_segment → send_campaign.

Inputs: steps (required), first_step (required), workflow_id (required), name.

schedule_contentA

Schedule a social media post to a platform via Postiz or direct API. Takes platform, content text, optional media URLs, scheduled time (ISO datetime), and hashtags. Falls back to PostizPublisher.publish_post() when platform=postiz.

Inputs: platform (required), content_text (required), hashtags, media_urls, +1 more.

search_fb_adsA

Search Facebook Ads Library for REAL competitor ad creatives, copy and delivery data (ground truth, not VLM guessing). Requires FB_ACCESS_TOKEN env var.

Inputs: brand_name (required), limit, country.

signal_fanoutC

Parallel multi-source signal search (Product Hunt, HN, Twitter, Reddit, Polymarket) with cross-source engagement normalization. Returns one synthesized brief with consensus themes and money outliers.

Inputs: query, sources, limit_per_source.

track_signalA

Record a signal prediction for later calibration tracking. Once tracked, you can call resolve_signal when the outcome is known to measure prediction accuracy (Brier score). Used to build calibration over time.

Inputs: url (required), title (required), source (required), signal_type (required), +3 more.

track_ugcC

Track UGC repost performance: reach, likes, comments, saves, and shares across platforms.

Inputs: platform (required), repost_id (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.7/5.0

    Scored across 54 tools

    Disambiguation4/5

    Most tools have clearly distinct purposes, with some overlap in competitor ad analysis (analyze_competitor_ad vs breakdown_ad) but descriptions differentiate them by use case and output. Signal-related tools (track_signal, collect_signals, signal_fanout) are also distinct in scope.

    Naming Consistency3/5

    Tool naming is mostly snake_case with verb_noun patterns, but there are exceptions like 'ask_marketic', 'signal_fanout', and 'ensemble_vote' that break the pattern. Prefixes like hub_ and crm_ provide some consistency, but the mix of action verbs (get, create, launch, run) and occasional non-verb nouns is inconsistent.

    Tool Count1/5

    With 54 tools, the server is extremely heavy. This far exceeds the typical well-scoped range (3-15) and even the 'too many' threshold of 25+. The vast count suggests a broad aggregation of marketing capabilities that would likely overwhelm an agent and cause selection difficulty.

    Completeness4/5

    The tool surface covers an impressively wide range of marketing functions: scheduling, UGC, CRM, analytics, competitor analysis, content generation, campaign management, and calibration. While some niche areas like A/B testing are absent, the core lifecycle of marketing operations (plan, create, launch, track, learn) is well covered.

    Maintenance

    ActivityActive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      MCP server for Meta Ads providing 30 tools for account discovery, campaign management, targeting research, and insights. Designed with LLM-friendly outputs and productivity features like cloning and bulk operations.
      31
      1
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Provides 35 MCP tools for automated marketing campaigns, integrating event management, booking, and email marketing into a deterministic pipeline for AI agents.
      -
    • F
      license
      Not graded
      quality
      D
      maintenance
      A remote MCP server that provides a complete digital-marketing employee with 45 marketing skills, orchestration logic, persona, and per-client context for any MCP host.
      1
      -
    • A
      license
      Not graded
      quality
      B
      maintenance
      A universal marketing MCP server that lets AI clients manage 20+ ad and marketing platforms (Google Ads, Meta, TikTok, etc.) with 500+ operations, including write actions with user approval.
      59
      MIT