Personal Project
Marketing Intelligence System
AI · Python · Claude API · PPTX
Marketing Intelligence System
A full-stack AI system that turns a brand name into a competitive intelligence report in minutes
Personal Project · Live in Production
3-5 min
Report Generation
From brand name to full deck
10
Data Sources
News, social, ads, web, sentiment
46
Slides at Full Scope
Scales with competitor count
$3-5
Cost Per Run
Full report with Tier-1 enrichment on
The Problem
The Problem
Competitive intelligence is slow, manual, and shallow. Getting a clear picture of what competitors are doing across ads, social, PR, and pricing typically means hours of scattered research, work that is stale by the time it is compiled and almost impossible to repeat week to week.
The question that senior marketing leaders actually need answered: “what changed since last week, and what should we do about it?”, had no fast, structured answer. I built one.
What It Does
What It Does
Name a brand, add up to five competitors, choose a market and industry, and the system handles the rest.
Input
Brand, competitors (or auto-discover), market, and industry.
Accessible via Telegram bot conversation or web command center.
Collect
Ten collectors run across news, Meta ads, Google ads, Instagram, TikTok, YouTube, LinkedIn, website changes, Reddit sentiment, and property listings.
A Tier-1 enrichment layer adds SimilarWeb web traffic, SpyFu SEO and paid keywords, Google Maps review sentiment, and Instagram profile stats.
Each degrades gracefully, one failure never sinks the run.
Synthesize
All collected data is sent to Claude with a strict output schema. Claude returns structured JSON: summary, top signals, opportunities, threats, and per-competitor intelligence.
Every observation is tied to real collected data, the model is instructed not to invent facts.
Deliver
A branded multi-slide report is generated in three formats, PowerPoint, a self-contained HTML deck, and PDF, then delivered via Telegram as a file or the web UI as a download.
The report highlights what is new since the last run, giving a week-on-week change log, not just a snapshot.
System Architecture
System Architecture
Triggers
Telegram Bot
Web Command Center
Intelligence Pipeline
Normalize inputs
Run 10 collectors
Week-on-week diff
Claude synthesis
PPTX generation
Deliver output
Claude API
Analysis and synthesis
claude-sonnet-4-6
Serper.dev
News, social, web, sentiment
Google News · Reddit · Instagram · TikTok · YouTube · LinkedIn
Apify
Ad libraries and Tier-1 enrichment
Meta & Google ads · SimilarWeb · Maps reviews · IG & TikTok
Supabase
runs · signals · diffs
Hetzner VPS
3 containers · nginx · TLS
Three Docker containers. One pipeline. Telegram and web run the same code.
Two Ways to Run It
Two Ways to Run It

Telegram Bot
Guided conversation: brand, competitors, market, industry
Runs in the background, summary and PPTX delivered on completion
Allow-listed access only

Web Command Center
Mission parameters panel with live pipeline progress
Dashboard, Signals, Competitors, History tabs
Every past run stored and re-downloadable
What the Report Contains
What the Report Contains
A full run with three competitors produces about 32 slides, scaling to roughly 46 at full scope with five competitors. The structure scales with competitor count.
Global Sections
Cover and intelligence dashboard
6 KPI cards with week-on-week delta
Executive summary and market pulse
Competitive landscape overview
Share of Voice: comparative bar chart scoring each competitor and the brand across news, social, and ad signal volume.
Per Competitor (x7 slides each)
Overview with digital presence score, 0 to 10 threat score, and momentum
Strategic narrative
News and signals with NEW markers
Social and digital intelligence
Ad intelligence
Market intelligence and sentiment
Recommended actions per competitor
Closing Sections
Strategic opportunities
Threats and risks
Consolidated action plan
Methodology and sources
Week-on-Week Intelligence
Every run stored in Supabase
New signals highlighted vs previous run
Delta shown on the dashboard slide
First run is a baseline, every run after is a change log
How It Is Built
How It Is Built
Analysis
Claude claude-sonnet-4-6, streamed, up to 24,000 output tokens
Bot
Python, python-telegram-bot 22.8
Web Backend
FastAPI, uvicorn, single worker
Data Collection
Serper.dev (news, social, web, sentiment)
Ad Intelligence
Apify (Meta and Google ad transparency)
Report Generation
pptxgenjs PPTX, self-contained HTML deck, and PDF export (Node.js)
Database
Supabase (Postgres, two tables: runs and signals)
Infrastructure
Hetzner VPS, Docker Compose, nginx, Let's Encrypt TLS
Runtime
Python 3.11 and Node 20 in one Docker image
Keep-alive cron
Daily VPS cron job prevents Supabase free tier from pausing, logged to /var/log/supabase-keepalive.log
What I Built
What I Built
Every part of this system: architecture, code, prompting, deployment, and iteration, was built by me using Claude Code as the development environment.
Designed the full system architecture across bot, web, pipeline, and infrastructure
Built and deployed three Docker containers on a Hetzner VPS with nginx and TLS
Engineered the ten-collector data pipeline with graceful degradation
Designed the Claude prompt schema for structured competitive intelligence output
Built the week-on-week comparison system using Supabase run history
Designed and shipped the web command center UI with live progress and history
Built a Share of Voice scoring system that calculates each competitor’s signal volume across news, social, and ads and renders it as a comparative slide in the report
Built a 0 to 10 competitive threat score that grades each competitor on digital intensity, ad activity, and hiring signals, color-banded red, amber, and green across the deck
Added a Tier-1 enrichment layer (SimilarWeb traffic, SpyFu keywords, Google Maps review sentiment, Instagram profile stats) that deepens each competitor profile beyond snippet data
Added per-run cost tracking that records the exact Claude token spend to Supabase for every report
Shipped a Tony Stark / JARVIS aesthetic web command center at blackfortdefense.com: pure HTML/CSS/JS, no framework, mobile responsive with password gate and 8-hour session token
Iterated the report structure across three output formats, PowerPoint, a self-contained HTML deck, and PDF, to produce board-ready competitive intelligence decks
Competitive intelligence used to take half a day of manual research across a dozen tabs. Now it takes five minutes, costs three to five dollars, and delivers a board-ready deck of up to 46 slides with a week-on-week change log automatically built in.
Password protected, request access via LinkedIn or email