| title | Topic Coverage |
|---|---|
| emoji | πΈοΈ |
| colorFrom | green |
| colorTo | indigo |
| sdk | docker |
| app_port | 7860 |
| pinned | false |
Know exactly where you win β and where you're invisible β in the content battle for your market.
Type in your domain + your competitors'. Topic Coverage crawls every site, reads all the copy, and clusters it into the topics your category actually talks about. Then it draws one picture: a radial map showing, topic by topic, who covers what β and who covers it more.
Content and SEO teams burn budget writing more without knowing where more actually helps. "We should do more content" is a guess. Topic Coverage turns it into an evidence-backed map:
| Without it π΅βπ« | With Topic Coverage β |
|---|---|
| "Are we behind on content?" β a gut feeling | A ranked, visual answer per topic |
| Competitor research done by hand, tab by tab | Every competitor's whole site, clustered automatically |
| Content plans based on opinion | Plans based on where you measurably lead or lag |
| No way to prove content ROI to leadership | A shareable map that makes the gap obvious |
In one glance you can see:
- π’ Topics you own β your moat; defend and double down
- π΄ Topics only competitors cover β you're invisible here; biggest blind spots
- π Topics where a competitor out-covers you β you're losing ground
- βͺ Even topics β contested; winnable with focused effort
Who it's for: π content & SEO leads Β· π founders sizing up a market Β· π’ agencies auditing a client vs. its rivals Β· π§ product marketers shaping positioning.
Honest scope: this compares content that exists β who has written what, and how much. It is not an SEO-rankings or backlink tool (that's a separate, bigger beast). It's the fastest way to see the shape of the content battlefield.
- πΊοΈ A radial coverage map β your brand at the center, categories β topics on the rings, every topic colour-coded by who leads.
- π Click any topic β the exact sentences each site wrote on it, with links to the source pages (the receipts).
- π·οΈ Plain-English topic names β auto-labelled by a local AI model (e.g. "Health Insurance Benefits", not keyword soup).
- π Full transparency β see every page analysed per domain, one click away.
- π 100% local & private β your data never leaves the machine; no accounts, no API keys, no cost.
crawl each site β extract clean copy β embed it locally β cluster into shared topics β score who covers each topic more β draw the map.
Topics are discovered from the content itself (never a hardcoded list), so the map reflects your market, whatever it is.
You need Python 3.9+ and git. First install takes ~10 min (it downloads the AI libraries); after that it starts in seconds. No API keys, no accounts.
macOS / Linux
git clone https://github.com/growthwithjoseph-bot/topic-coverage.git
cd topic-coverage
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[ml]"
# β€· Linux only: if that pulls a multi-GB CUDA torch, cancel and run this first, then re-run:
# pip install torch --index-url https://download.pytorch.org/whl/cpu
python -m backend.pipeline.demo # optional: seed a demo run to see it instantly
uvicorn backend.app:app --port 8000Windows (PowerShell)
git clone https://github.com/growthwithjoseph-bot/topic-coverage.git
cd topic-coverage
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -e ".[ml]"
uvicorn backend.app:app --port 8000Then open http://localhost:8000 β enter your domain + competitors, set Max pages = 40 for a quick run, click Analyze. Or open http://localhost:8000/?run=1 first to see the seeded demo instantly.
Labels default to keyword-based (readable). For plain-English names from a local
model, install Ollama, run ollama pull qwen2.5:3b, then add
a .env file:
TC_LLM_LABELS=true
TC_LLM_PROVIDER=ollama
TC_LLM_MODEL=qwen2.5:3b
FastAPI Β· sentence-transformers (local embeddings) Β· BERTopic (topic
clustering) Β· trafilatura (polite crawling & extraction) Β· SQLite Β· vanilla
HTML/JS/SVG frontend. Every threshold lives in config.py. See SPEC.md for
the full build spec and CLAUDE.md for conventions.
- πΈοΈ Topic Coverage (this repo) β who covers which topics, and who covers them more
- π€ Homepage Language Match β is your homepage messaging differentiated, or an echo of your competitors?
- π¬ Anatomy of a Brand Conversation β how real people talk about a brand across the internet