You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Login error message bug (showed "Something went wrong" for non‑Error rejections)
DONE
Fixed in app/login/page.tsx.
Still gaps in Phase 2
Gap
Why it matters
DONE — Save target business per user in Supabase, not localStorage
app/api/settings/route.ts + migration 004. Loads from Supabase on mount, debounced write on change, localStorage fallback.
DONE — "Why am I missing?" deep dive when target isn't in any leaderboard
lib/missingDiagnosis.ts + WhyMissingPanel in dashboard. Per-engine root causes, leader comparison, priority action plan sorted by impact/effort.
DONE — Pull actual cited URLs from Perplexity response and surface "who's citing your competitors"
lib/citationAggregator.ts + CitationIntelligencePanel. Top cited domains, gap domains (competitors cited but not you), per-brand citation breakdown. perplexity.ts now returns { content, citations[] }.
DONE — Sentiment / context of mentions, not just rank
lib/sentimentParser.ts now classifies every mention positive/neutral/negative (was binary positive/negative) and extracts a context_snippet. globalScoring.ts + consensusEngine.ts + buildPerEngineLeaderboards (app/api/scan/route.ts) score neutral mentions at 60% weight, exclude negative entirely. Dashboard leaderboard shows both ⚠ neg and ◐ neutral badges.
Phase 3 — Selling GEO improvement (revenue lever)
Recommendations alone aren't enough — we want to charge for execution.
Feature
Status
Notes
TODO — "Done‑for‑you" tier: we run outreach to get you into target listicles
Real GEO business — manual + tooling hybrid.
TODO — Wikidata / Wikipedia setup service
Strongest single lever for GPT + Gemini.
TODO — Schema.org markup audit + generated snippets
Concrete deliverable, easy to package.
TODO — Reddit / forum presence playbook
Highest Perplexity ROI.
DONE — Tracked recommendations: "did rank improve after action X?"
app/api/actions/, migration 005_tracked_actions.sql, RecommendationList component with "Mark done" toggle per rec.
DONE — Weekly digest email with rank changes + new opportunities
app/api/digest/route.ts using Resend. Requires RESEND_API_KEY + RESEND_FROM_EMAIL. Call via cron (Vercel Cron or GitHub Actions).
Phase 4 — Engines & data depth
Feature
Status
Notes
DONE — Add Claude (Anthropic) as a 4th engine
lib/engines/claude.ts using claude-haiku-4-5-20251001. Requires ANTHROPIC_API_KEY. Full GEO levers + missing diagnosis added.
DONE — Add ChatGPT search (browse mode) as a 5th engine
lib/engines/chatgptSearch.ts — gpt-4o-mini + Responses API web_search tool. Returns real citation URLs like Perplexity. Reuses OPENAI_API_KEY, no new env var. Wired into dashboard engine picker as chatgpt_search.
TODO — Add Google AI Overviews scraping
Where most consumers will actually see AI answers.
TODO — Authority‑weighted scoring (cite domain DA, not just engine)
Better global score.
TODO — Geo‑aware scanning (auto‑expand by city / neighborhood)
Local search is most of the demand.
Phase 5 — Distribution / growth
Feature
Status
Notes
TODO — Public "AI visibility report" landing page for sample brands
SEO + lead magnet.
DONE — CSV export of scan + recommendations
exportCSV() in dashboard. Includes global leaderboard, per-engine leaderboards, citation domains, citation gaps. "Export CSV" button in analytics header.
TODO — White‑label dashboard for agencies
Higher ACV.
DONE — Slack alerts on rank change
lib/slackAlert.ts. Fires after scan if slack_webhook_url set in user settings. Configurable in dashboard Notifications panel.
TODO — API access (charge per scan)
Developer tier.
Cross‑cutting tech debt
Item
Status
Notes
TODO — Real test coverage on scoring functions
Currently no tests. Easy wins: globalScoring, consensusEngine, keywordInsights.
DONE — Rate limiting on /api/scan beyond quota
lib/rateLimit.ts — sliding window, 5 req/min per IP. Per-instance (no Redis); sufficient for burst protection.
DONE — Name normalization improvements
lib/keywordInsights.ts — strips leading "The", strips common suffixes (LLC, Inc, Restaurant, Cafe, etc.) before comparison.
DONE — Cache scan results for the same query within a TTL (24h)
lib/scanCache.ts — in-memory Map keyed by query::engines_sorted. Cache hit skips quota decrement. force_refresh param bypasses cache.
IDEA — Move scoring to a Postgres function / materialized view
Marketing copy advertised GA4 integration, a "Copilot" 6th engine, a "5M+ prompt library", GPTBot/Claudebot detection, and a real-time "Competitor Battlemap" — none built. Pricing.tsx also showed the identical €89/mo on both Starter and Pro. Replaced with real shipped features and dropped fabricated prices. See md/progress.md 2026-07-17 entry.
TODO — Delete orphaned lib/geo/ directory + dead top-level files
lib/geo/* (6 files) is unwired leftover from an incomplete refactor — nothing outside it imports from it. Also lib/queryGenerator.ts, lib/analyze.ts, lib/scoring.ts, lib/consensus.ts are unused, superseded by their current equivalents. Flagged, not yet deleted — confirm before removing.
Phase 6 — AEO (Answer Engine Optimization) track
Competitor intelligence shows every serious GEO buyer also wants AEO. This is the next major surface to add depth on.
Feature
Status
Notes
TODO — Per-prompt citation share tracking (AEO)
Track citation % across ChatGPT, Perplexity, Gemini, AI Overviews, Copilot for a defined prompt set
Core AEO KPI — not just "did we rank" but "were we cited in the AI answer"
TODO — Prompt cluster management
Define top 20–50 brand/category prompts; group by funnel stage (awareness, comparison, decision)
Powers AEO dashboard
TODO — AEO content scoring on existing pages
Score each page for direct-answer paragraph structure, entity density, FAQPage schema coverage
Show which pages are AEO-ready vs missing
TODO — AEO-aware page recommendations
When citation share drops for a prompt, surface the pages that should be serving those citations + what's wrong
Close the tracker-to-optimizer gap
TODO — Sentiment classification on citations
Being cited as "avoid" hurts; distinguish positive / neutral / negative citation contexts
Competitor 1 has basic sentiment; Gauge AI has the best taxonomy
Phase 7 — MCP server (developer + agent tier)
Competitor 1 already has production MCP. This is the highest-leverage gap to close for developer/agency adoption.
Feature
Status
Notes
TODO — MCP server exposing core primitives
track_visibility(), audit_brand(), get_recommendations() as LLM-readable MCP tools
Works with Claude, ChatGPT agents, any MCP-compatible agent framework
TODO — Per-agent auth scoping
Each agent credential limited to specific tools + rate limits; full audit log
Required for enterprise/agency security
TODO — Structured error responses for agent retry
Errors include context: "cache miss, retry in 5s" vs "quota exceeded, upgrade required"
Not just HTTP status codes
TODO — Developer tier pricing
Charge per scan via API; MCP access as paid add-on
Unlocks agency and builder market
TODO — Agent workflow documentation
Example: agent that monitors citation share daily + triggers content review when threshold drops
Drives adoption of the MCP tier
Phase 8 — pSEO (programmatic page generation)
Lower priority than AEO + MCP but a natural expansion once the citation tracking layer is solid.
Feature
Status
Notes
IDEA — pSEO batch page generator
Generate location/comparison/category pages at scale from structured datasets
Per-page research agent model (not template substitution) to avoid HCU risk
IDEA — Schema-as-build-output
FAQPage, Article, LocalBusiness generated dynamically per page during pSEO build
Ensures AEO-readiness for every generated page
IDEA — IndexNow integration for generated pages
Submit pages to Bing IndexNow at generation time; sitemap management
Faster indexation for programmatic batches
IDEA — Near-duplicate detection
Score each batch for semantic uniqueness before publishing; flag near-duplicate clusters
Prevents pSEO penalties
Phase 9 — Reddit marketing (execution track)
Reddit is the single highest-weighted citation source for Perplexity (md/engines.md) and, per competitor scrapes, ~46–68% of cited sources for Perplexity/AI-answer generation broadly (md/competitor_airix.md, md/competitor_reddgrow.md). Closest reference products: md/competitor_scaloom.md (Reddit posting/warmup automation, no citation feedback loop) and md/competitor_reddgrow.md (scan → match → draft → cited loop, the shape to beat).
Feature
Status
Notes
IDEA — Reddit thread discovery: find threads our engines already cite for target keywords
Reuses existing scan pipeline (lib/citationAggregator.ts) — filter cited URLs to reddit.com domains instead of building new scanning.
IDEA — AI-drafted, on-brand comment generation for matched threads
Read the actual thread content before drafting (LinkDR/Scaloom/ReddGrow pattern) — no generic templates.
IDEA — Human-in-the-loop approval flow before posting
Reddit-native audiences penalize obvious marketing; every competitor in this space (Scaloom, ReddGrow) treats one-click approval as the core trust mechanic, not optional.
IDEA — Account warmup / ban-avoidance safeguards
Required if we post on the user's behalf at all — gradual karma-building, pacing limits per account.
IDEA — Subreddit discovery + match scoring
Rank candidate subreddits by relevance to the brand/niche (Scaloom does this over 50k+ subreddits).
IDEA — Post-action re-scan: did the comment/post actually get cited afterward?
The gap every competitor leaves open (Scaloom tracks karma/replies but never citation outcome; ReddGrow tracks citation growth but only within Reddit). Closing this loop with our existing scan pipeline is the differentiator — prove the Reddit activity moved AI visibility, not just engagement.
IDEA — Chrome extension for ad-hoc commenting outside the dashboard
Lower priority; ReddGrow ships this, useful for one-off opportunistic replies.
IDEA — Community management / subreddit moderation via AI + knowledge base
Further-out, retention/expansion play once a brand has its own active subreddit — not core to the citation loop.
Open product questions
These aren't bugs — they're decisions that change the shape of the product.
Per‑business vs per‑keyword pricing? Most GEO buyers think in "I'm a restaurant, track my brand across 50 keywords." Quota by keyword could be more natural than by scan.
Who is the buyer? Local SMBs (low ACV, high volume) vs marketing agencies (high ACV, demands white‑label) vs in‑house brand teams (mid ACV, demands deeper analytics). Pick one before building Phase 3.
How do we prove ROI? Tracked recommendations + before/after rank delta is the answer. Until we ship that, churn risk is real.
GEO-depth vs 4-track breadth? Competitor 1 goes broad across SEO + AEO + GEO + pSEO. We go deep on GEO. Hold the GEO depth advantage while adding AEO tracking — that's the wedge. Don't build a shallow AEO tab; build AEO that's as deep as our GEO layer.
MCP as paid tier or included? Developer/agency market expects API access. Charge per scan via API; bundle MCP access with Growth plan to drive adoption before monetizing separately.