# CTR Doctor — Full Product Description > https://ctrfix.com ## Problem solved Many websites rank on page 1 of Google but receive far fewer clicks than their position should generate. A page at position 3 should receive ~11% CTR by industry benchmarks — if it's receiving 0.1%, that's a CTR gap costing hundreds of potential monthly visitors. The cause is rarely obvious from Search Console data alone. ## How CTR Doctor works 1. User connects Google Search Console property via secure OAuth (read-only scope — no write access, no data stored publicly) 2. CTR Doctor fetches 90 days of page-level performance data (impressions, clicks, CTR, average position) via the GSC Search Analytics API 3. For each page, expected CTR is calculated using industry position benchmarks (position 1: 28%, position 3: 11%, position 10: 1.5%, logarithmic decay) 4. Pages where actual CTR is meaningfully below expected CTR are flagged, ranked by opportunity score (impressions × CTR gap) 5. Rule-based diagnostic engine checks each flagged page for: JavaScript rendering failure (H1/title missing in raw HTML), title-query mismatch, missing or malformed meta description, keyword cannibalization across pages, canonical tag conflicts, position volatility 6. AI layer (Groq Llama 3.3 70B) generates plain-English diagnosis explaining the specific cause, plus ready-to-implement title suggestions (3 options with character counts), meta description, and keyword recommendations validated against real Google Ads search volume data (via DataForSEO) 7. Weekly auto-rescan tracks whether implemented fixes improved CTR — scan delta shows improved/worsened/resolved status per page 8. Estimated monthly click recovery shown per fix: (monthly impressions × CTR gap × 0.5) presented as "Fix this → recover ~X clicks/month" ## Diagnostic rules detected - js_render_block: Title or meta description absent in raw HTML but present after JavaScript execution — Google crawls pre-render, missing these kills CTR - title_mismatch: Page title doesn't contain terms from the page's top-ranking query - meta_missing: No meta description tag present - meta_length: Meta description under 70 or over 160 characters - cannibalization: Two or more pages ranking within 5 positions for the same core query - canonical_conflict: Canonical tag points to a different URL than the ranking page - position_volatility: Significant position swings week-over-week indicating instability ## Comparison to alternatives - Google Search Console: Shows CTR data but no diagnosis, no fix recommendations - Ahrefs/Semrush: Can sort by CTR but no automated root-cause detection, no AI fix layer - Frizerly: Suggests new titles but no root-cause diagnosis, not standalone - CTR Doctor: Only tool combining rule-based root-cause detection + AI fix generation + scan delta tracking at an indie/SMB price point ## Technical stack - Frontend: React (Readdy.ai) - Backend: Supabase Edge Functions (Deno) - Database: Supabase Postgres - AI: Groq (Llama 3.3 70B Versatile) - Keyword data: DataForSEO Google Ads Search Volume API + DataForSEO Labs Keyword Suggestions - Auth: Supabase Auth + Google OAuth 2.0 (webmasters.readonly scope) ## Contact - Website: https://ctrfix.com - Support: support@ctrfix.com