Funnel Vision is an AI-powered landing page teardown tool.
It captures your page, analyzes conversion elements with Claude using a FLOW framework, overlays visual bounding-box diagnostics, generates a PDF teardown report, and provides an in-app follow-up chatbot for implementation questions.
- Scrapes a landing page and captures a full-page screenshot.
- Extracts text and button bounding boxes from the DOM.
- Sends visual + structural context to Claude for conversion analysis.
- Produces a visual PDF report with color-coded overlays.
- Shows grouped issue insights in Streamlit.
- Enables a contextual AI chat assistant after analysis.
The analysis categorizes issues into:
- Friction
- Legitimacy
- Offer Clarity
- Willingness to Buy
- UI: Streamlit
- Browser automation and capture: Playwright + AgentQL
- LLM analysis and chat: Anthropic Claude via LangChain
- Report rendering: Pillow + FPDF2
- Packaging and dependency management: uv / pip
- app.py: Streamlit app entry point, full pipeline orchestration, and post-analysis chat UI.
- src/scraper.py: Browser automation, screenshot capture, and DOM box extraction.
- src/analyze_local.py: Claude FLOW analysis and JSON output creation.
- src/pdf_generator.py: Builds report inputs from scraped + analyzed artifacts.
- src/report_generator.py: Draws overlays/legend and writes final PDF.
- src/main.py: Script-based pipeline entry point (non-UI).
- src/delete_screenshots.py: Cleanup helper for screenshot artifacts.
- Python 3.13+
- One of:
- uv (recommended)
- pip + virtual environment
- API keys:
- ANTHROPIC_API_KEY (required for analysis and assistant chat)
- AGENTQL_API_KEY (recommended/required for AgentQL queries, depending on your account/setup)
Create a .env file in the project root:
ANTHROPIC_API_KEY=your_anthropic_key
AGENTQL_API_KEY=your_agentql_keyNotes:
- If ANTHROPIC_API_KEY is missing, analysis and chat cannot run.
- If AgentQL is not authenticated/configured, scraping query steps may fail.
uv syncpython -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python -m playwright install chromiumuv run streamlit run app.pyThen open the local URL shown by Streamlit (usually http://localhost:8501).
- Enter a landing page URL.
- Click Analyze Funnel.
- Wait for scrape + Claude analysis + PDF generation.
- Review:
- Visual teardown preview (left)
- Structured Claude FLOW issues (right)
- AI CRO Assistant chat (below report section)
- Download funnel_teardown_report.pdf.
You can also run the pipeline from the terminal:
uv run python src/main.py "https://example.com"If no URL is provided, src/main.py uses its internal default URL.
Generated files in project root:
- scrape_results.json: raw scrape payload, text/button boxes, screenshot paths.
- flow_analysis.json: Claude output with structured FLOW issues.
- teardown_report.pdf: final visual report with overlays and legend.
Intermediate folder:
- page_screenshots/: captured screenshots used during processing.
Cleanup:
- src/delete_screenshots.py clears screenshot files after successful runs.
The PDF overlay currently uses:
- Scored issue boxes (selected by Claude): heatmap colors by score.
- Non-selected boxes: green highlight.
- A legend in the top-right area of each report image to explain colors.
The Streamlit chatbot:
- Is available after a successful analysis.
- Uses the current flow_analysis.json context plus recent chat turns.
- Resets chat history when a new analysis result is generated.
Run app:
uv run streamlit run app.pyRun script pipeline:
uv run python src/main.py "https://example.com"Remove screenshots manually:
uv run python src/delete_screenshots.pySymptom:
- Analysis fails, or chat says ANTHROPIC_API_KEY is missing.
Fix:
- Add ANTHROPIC_API_KEY to .env.
- Restart Streamlit.
Symptom:
- Scraper fails to launch Chromium.
Fix:
- Run: python -m playwright install chromium
- On Linux/containers, install system libraries listed in packages.txt.
Symptom:
- Scrape step fails around AgentQL calls.
Fix:
- Ensure AGENTQL_API_KEY is configured.
- Re-run after validating network access.
Symptom:
- teardown_report.pdf not created.
Fix:
- Verify page_screenshots contains at least one PNG.
- Confirm flow_analysis.json exists and contains issues array.
- Page screenshots and extracted on-page text are sent to external AI services during analysis.
- Do not run this tool against sensitive/private pages unless you are authorized.
- Review vendor data-handling policies for compliance requirements.
- requirements.txt is generated from pyproject.toml.
- The Streamlit app currently auto-attempts Playwright Chromium install at startup.
- tests directory currently has no active test suite.
No license file is currently present in this repository.