Open Source CLI Tool

Map the funnel.
Inspect the proof.

Explore a brand’s public touchpoints, offer sequence, and open questions in one sourced report.

Conceptual journey. Open the AG1 report for sourced observations.

Inspect the AG1 example report

Coverage: inspect the touchpoints represented in the example.

AG1 / saved example report

This report’s seven journey labels

Unaware
Problem Aware
Solution Aware
Product Aware
Most Aware
Customer
Advocate

The report groups observations by journey stage. Missing evidence remains an open question.

What you get

Read what the sources support.

One command, one report, full breakdown.

📡
Awareness Coverage Map
See exactly which Schwartz stages the brand is hitting — and which gaps they're leaving open for competitors.
Full Funnel Diagram
Mermaid.js flowchart of the complete stranger-to-advocate journey with color-coded awareness stages.
✓ / ⚡
Bustamante-Style Analysis
What's Working and What's Missing for every single funnel step. Specific, actionable, not generic.
💰
Offer Stack
All identified offers with price, type, awareness target, and connection to the funnel step that presents them.
Epistemic Honesty
Open questions distinguish what the public sources show from what remains unknown.
💾
Step Cache & Resume
Each agent's output is cached to .tmp/. Re-run just Agent 3 without repeating the web search.

How it works

3 agents, 1 report.

Sequential pipeline with shared Pydantic state.

1
Brand Resolver
gpt-4o-mini
Web search → identifies brand, website, founder, ICP, confidence level
2
Touchpoint Mapper
gpt-4o-mini
Web search + homepage scraping → maps all public channels by awareness level
3
Journey Mapper
claude-sonnet-4-6
Deep reasoning → full funnel map with steps, offers, working/missing, open questions
HTML Report
pure Python
Deterministic renderer → dark-mode report with Mermaid.js diagrams

Quick start

Run your first report.

Requires Python 3.9+, an OpenAI key, and an Anthropic key.

1
Clone and install

Clone the repo and install Python dependencies.

git clone https://github.com/siddchauhan77/funnel-teardown
cd funnel-teardown
pip3 install -r requirements.txt
2
Add your API keys

Copy the env template and add your OpenAI + Anthropic keys.

cp .env.example .env
# Then edit .env:
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
3
Run your first teardown

Pass any brand name. Optionally add hints to disambiguate.

# Basic usage
python3 teardown.py "Athletic Greens"

# With disambiguation hints
python3 teardown.py "Justin Welsh" --url justinwelsh.me

# Re-run only the journey mapper (uses cached brand + touchpoints)
python3 teardown.py "Justin Welsh" --from-cache --agent 3

Output lands in output/{brand}_{timestamp}/teardown_report.html. Open it in any browser.

All CLI flags
python3 teardown.py "Brand Name" --founder "Founder Name" # disambiguation hint --url "website.com" # website hint --from-cache # load .tmp/ cache instead of re-running Agent 1+2 --agent 3 # start from this agent (1, 2, or 3)

Your selected evidence

Return to Coverage in the AG1 report ↗

Saved example. New analyses run locally with your own API keys.

DRAFTS TO DONE · WEEKLY

By Sidd Chauhan · draftstodone.substack.com · LinkedIn