Add shared architecture doc: SEO Tool + IntelSight

This commit is contained in:
ShoNuff
2026-08-10 21:43:06 -04:00
parent ca4ee42f0f
commit d0e4611b7b
2 changed files with 561 additions and 0 deletions
+311
View File
@@ -0,0 +1,311 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SEO Tool + IntelSight Architecture</title>
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: 'JetBrains Mono', monospace;
background: #020617;
min-height: 100vh;
padding: 2rem;
color: white;
}
.container { max-width: 1100px; margin: 0 auto; }
.header { margin-bottom: 2rem; }
.header-row { display: flex; align-items: center; gap: 1rem; margin-bottom: 0.5rem; }
.pulse-dot { width: 12px; height: 12px; background: #22d3ee; border-radius: 50%; animation: pulse 2s infinite; }
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
h1 { font-size: 1.4rem; font-weight: 700; }
.subtitle { color: #94a3b8; font-size: 0.8rem; margin-left: 1.75rem; }
.diagram-container {
background: rgba(15, 23, 42, 0.5);
border-radius: 1rem;
border: 1px solid #1e293b;
padding: 1.5rem;
overflow-x: auto;
}
svg { width: 100%; min-width: 950px; display: block; }
.cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-top: 2rem; }
.card { background: rgba(15, 23, 42, 0.5); border-radius: 0.75rem; border: 1px solid #1e293b; padding: 1.25rem; }
.card-header { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.75rem; }
.card-dot { width: 8px; height: 8px; border-radius: 50%; }
.card-dot.cyan { background: #22d3ee; }
.card-dot.emerald { background: #34d399; }
.card-dot.violet { background: #a78bfa; }
.card-dot.amber { background: #fbbf24; }
.card-dot.rose { background: #fb7185; }
.card h3 { font-size: 0.8rem; font-weight: 600; }
.card ul { list-style: none; color: #94a3b8; font-size: 0.72rem; }
.card li { margin-bottom: 0.3rem; }
.footer { text-align: center; margin-top: 1.5rem; color: #475569; font-size: 0.72rem; }
</style>
</head>
<body>
<div class="container">
<div class="header">
<div class="header-row">
<div class="pulse-dot"></div>
<h1>SEO Audit Tool + IntelSight — Shared Architecture</h1>
</div>
<p class="subtitle">Two products. One infrastructure. Zero product merge.</p>
</div>
<div class="diagram-container">
<svg viewBox="0 0 1050 720">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#64748b" />
</marker>
<marker id="arrow-cyan" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#22d3ee" />
</marker>
<marker id="arrow-emerald" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#34d399" />
</marker>
<marker id="arrow-violet" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#a78bfa" />
</marker>
<pattern id="grid" width="40" height="40" patternUnits="userSpaceOnUse">
<path d="M 40 0 L 0 0 0 40" fill="none" stroke="#1e293b" stroke-width="0.5"/>
</pattern>
</defs>
<rect width="100%" height="100%" fill="url(#grid)" />
<!-- ============ USERS (left side) ============ -->
<rect x="20" y="120" width="110" height="55" rx="6" fill="rgba(30,41,59,0.5)" stroke="#94a3b8" stroke-width="1.5"/>
<text x="75" y="142" fill="white" font-size="10" font-weight="600" text-anchor="middle">ITPP Hosting</text>
<text x="75" y="158" fill="#94a3b8" font-size="8" text-anchor="middle">Clients</text>
<rect x="20" y="220" width="110" height="55" rx="6" fill="rgba(30,41,59,0.5)" stroke="#94a3b8" stroke-width="1.5"/>
<text x="75" y="242" fill="white" font-size="10" font-weight="600" text-anchor="middle">CI Buyers</text>
<text x="75" y="258" fill="#94a3b8" font-size="8" text-anchor="middle">SMB/Mid-Market</text>
<!-- ============ PRODUCT LAYER ============ -->
<!-- SEO Audit Tool box -->
<rect x="180" y="80" width="350" height="160" rx="8" fill="rgba(8,51,68,0.25)" stroke="#22d3ee" stroke-width="1.5"/>
<text x="192" y="98" fill="#22d3ee" font-size="10" font-weight="600">SEO Audit Tool</text>
<text x="192" y="112" fill="#64748b" font-size="8">Free / $49/mo Pro</text>
<!-- SEO features -->
<rect x="195" y="125" width="155" height="48" rx="5" fill="rgba(8,51,68,0.4)" stroke="#22d3ee" stroke-width="1"/>
<text x="205" y="142" fill="white" font-size="9" font-weight="600">Launch Audit</text>
<text x="205" y="156" fill="#94a3b8" font-size="7">Auto-runs on deploy</text>
<text x="205" y="167" fill="#94a3b8" font-size="7">50+ checks, fix-it snippets</text>
<rect x="360" y="125" width="155" height="48" rx="5" fill="rgba(8,51,68,0.4)" stroke="#22d3ee" stroke-width="1"/>
<text x="370" y="142" fill="white" font-size="9" font-weight="600">Monthly Crawl</text>
<text x="370" y="156" fill="#94a3b8" font-size="7">Trend tracking 0-100</text>
<text x="370" y="167" fill="#94a3b8" font-size="7">Score history per site</text>
<rect x="195" y="180" width="155" height="48" rx="5" fill="rgba(34,211,238,0.12)" stroke="#22d3ee" stroke-width="1" stroke-dasharray="3,3"/>
<text x="205" y="197" fill="#22d3ee" font-size="8" font-weight="600">✦ AI Fix Prompts</text>
<text x="205" y="211" fill="#94a3b8" font-size="7">Ready-made Claude/Cursor prompts</text>
<text x="205" y="222" fill="#94a3b8" font-size="7">per finding — copy, paste, done</text>
<rect x="360" y="180" width="155" height="48" rx="5" fill="rgba(34,211,238,0.12)" stroke="#22d3ee" stroke-width="1" stroke-dasharray="3,3"/>
<text x="370" y="197" fill="#22d3ee" font-size="8" font-weight="600">✦ GEO Visibility</text>
<text x="370" y="211" fill="#94a3b8" font-size="7">How visible in ChatGPT/</text>
<text x="370" y="222" fill="#94a3b8" font-size="7">Gemini/Claude/Perplexity?</text>
<!-- IntelSight box -->
<rect x="580" y="80" width="420" height="160" rx="8" fill="rgba(6,78,59,0.15)" stroke="#34d399" stroke-width="1.5"/>
<text x="592" y="98" fill="#34d399" font-size="10" font-weight="600">IntelSight</text>
<text x="592" y="112" fill="#64748b" font-size="8">$199 / $499 / $1,499/mo</text>
<rect x="595" y="125" width="190" height="48" rx="5" fill="rgba(6,78,59,0.4)" stroke="#34d399" stroke-width="1"/>
<text x="605" y="142" fill="white" font-size="9" font-weight="600">Competitor Intelligence</text>
<text x="605" y="156" fill="#94a3b8" font-size="7">Crunchbase + Hunter.io + OSINT</text>
<text x="605" y="167" fill="#94a3b8" font-size="7">Funding, team, product alerts</text>
<rect x="795" y="125" width="190" height="48" rx="5" fill="rgba(6,78,59,0.4)" stroke="#34d399" stroke-width="1"/>
<text x="805" y="142" fill="white" font-size="9" font-weight="600">Market Analysis</text>
<text x="805" y="156" fill="#94a3b8" font-size="7">Multi-provider search</text>
<text x="805" y="167" fill="#94a3b8" font-size="7">LLM synthesis &amp; reports</text>
<rect x="595" y="180" width="190" height="48" rx="5" fill="rgba(52,211,153,0.12)" stroke="#34d399" stroke-width="1" stroke-dasharray="3,3"/>
<text x="605" y="197" fill="#34d399" font-size="8" font-weight="600">✦ Competitive SEO Scan</text>
<text x="605" y="211" fill="#94a3b8" font-size="7">Top 5 competitors SEO health</text>
<text x="605" y="222" fill="#94a3b8" font-size="7">side-by-side with yours</text>
<rect x="795" y="180" width="190" height="48" rx="5" fill="rgba(52,211,153,0.12)" stroke="#34d399" stroke-width="1" stroke-dasharray="3,3"/>
<text x="805" y="197" fill="#34d399" font-size="8" font-weight="600">✦ AI Visibility Matrix</text>
<text x="805" y="211" fill="#94a3b8" font-size="7">Which competitors get cited</text>
<text x="805" y="222" fill="#94a3b8" font-size="7">in ChatGPT/Gemini/Claude?</text>
<!-- Arrows: users → products -->
<line x1="130" y1="147" x2="178" y2="147" stroke="#22d3ee" stroke-width="1.2" marker-end="url(#arrow-cyan)"/>
<text x="154" y="141" fill="#64748b" font-size="7" text-anchor="middle">deploy</text>
<line x1="130" y1="247" x2="578" y2="195" stroke="#34d399" stroke-width="1.2" marker-end="url(#arrow-emerald)"/>
<text x="350" y="226" fill="#64748b" font-size="7">subscribe</text>
<!-- ============ DATA FLOW BOUNDARY ============ -->
<rect x="160" y="280" width="860" height="70" rx="8" fill="transparent" stroke="#fbbf24" stroke-width="1" stroke-dasharray="8,4"/>
<text x="172" y="298" fill="#fbbf24" font-size="9" font-weight="600">Cross-Product Data Flow (aggregated, anonymous only)</text>
<text x="350" y="320" fill="#94a3b8" font-size="8">Client site crawl → Competitive SEO baseline</text>
<text x="350" y="335" fill="#94a3b8" font-size="8">Client SEO scores → Industry benchmarks · IntelSight alerts → Audit comparisons</text>
<!-- Arrows in data flow boundary -->
<line x1="355" y1="145" x2="355" y2="290" stroke="#22d3ee" stroke-width="1" stroke-dasharray="3,3"/>
<line x1="690" y1="145" x2="690" y2="290" stroke="#34d399" stroke-width="1" stroke-dasharray="3,3"/>
<!-- ============ SHARED INFRASTRUCTURE ============ -->
<rect x="160" y="385" width="860" height="130" rx="8" fill="rgba(251,191,36,0.04)" stroke="#fbbf24" stroke-width="1.5"/>
<text x="172" y="403" fill="#fbbf24" font-size="10" font-weight="600">Shared Infrastructure Layer</text>
<!-- Crawler Engine -->
<rect x="180" y="418" width="185" height="55" rx="6" fill="rgba(120,53,15,0.2)" stroke="#fbbf24" stroke-width="1.5"/>
<text x="272" y="440" fill="white" font-size="10" font-weight="600" text-anchor="middle">Crawler Engine</text>
<text x="272" y="456" fill="#94a3b8" font-size="8" text-anchor="middle">Python/requests · HTTP fetch</text>
<text x="272" y="468" fill="#94a3b8" font-size="7" text-anchor="middle">Config depth · Rate limit · Polite</text>
<!-- Audit Checkers -->
<rect x="385" y="418" width="185" height="55" rx="6" fill="rgba(120,53,15,0.2)" stroke="#fbbf24" stroke-width="1.5"/>
<text x="477" y="440" fill="white" font-size="10" font-weight="600" text-anchor="middle">Audit Checker Library</text>
<text x="477" y="456" fill="#94a3b8" font-size="8" text-anchor="middle">50+ rules · pass/fail/warn</text>
<text x="477" y="468" fill="#94a3b8" font-size="7" text-anchor="middle">Impact×Effort · Fix snippets</text>
<!-- Report Renderer -->
<rect x="590" y="418" width="185" height="55" rx="6" fill="rgba(120,53,15,0.2)" stroke="#fbbf24" stroke-width="1.5"/>
<text x="682" y="440" fill="white" font-size="10" font-weight="600" text-anchor="middle">Report Renderer</text>
<text x="682" y="456" fill="#94a3b8" font-size="8" text-anchor="middle">PDF · HTML · Email</text>
<text x="682" y="468" fill="#94a3b8" font-size="7" text-anchor="middle">Branded per product</text>
<!-- Super Search -->
<rect x="795" y="418" width="210" height="55" rx="6" fill="rgba(120,53,15,0.2)" stroke="#fbbf24" stroke-width="1.5"/>
<text x="900" y="440" fill="white" font-size="10" font-weight="600" text-anchor="middle">Super Search v2</text>
<text x="900" y="456" fill="#94a3b8" font-size="8" text-anchor="middle">7 providers · Cache · Circuit break</text>
<text x="900" y="468" fill="#94a3b8" font-size="7" text-anchor="middle">Port :8899 · Production-hardened</text>
<!-- API Gateway -->
<rect x="350" y="488" width="480" height="20" rx="4" fill="rgba(6,78,59,0.3)" stroke="#34d399" stroke-width="1"/>
<text x="590" y="502" fill="#34d399" font-size="8" font-weight="600" text-anchor="middle">API Gateway (FastAPI) — single entry point for both products</text>
<!-- Arrows: infra components → API Gateway -->
<line x1="272" y1="473" x2="470" y2="486" stroke="#fbbf24" stroke-width="1"/>
<line x1="477" y1="473" x2="530" y2="486" stroke="#fbbf24" stroke-width="1"/>
<line x1="682" y1="473" x2="590" y2="486" stroke="#fbbf24" stroke-width="1"/>
<line x1="900" y1="473" x2="710" y2="486" stroke="#fbbf24" stroke-width="1"/>
<!-- ============ DATABASES ============ -->
<rect x="250" y="555" width="240" height="55" rx="6" fill="rgba(76,29,149,0.25)" stroke="#a78bfa" stroke-width="1.5"/>
<text x="370" y="577" fill="white" font-size="10" font-weight="600" text-anchor="middle">SEO Audit DB</text>
<text x="370" y="593" fill="#94a3b8" font-size="8" text-anchor="middle">Site audits · Scores · Trends · Client sites</text>
<text x="370" y="605" fill="#a78bfa" font-size="7" text-anchor="middle">ITPP hosting tenant scope</text>
<rect x="560" y="555" width="240" height="55" rx="6" fill="rgba(76,29,149,0.25)" stroke="#a78bfa" stroke-width="1.5"/>
<text x="680" y="577" fill="white" font-size="10" font-weight="600" text-anchor="middle">IntelSight DB</text>
<text x="680" y="593" fill="#94a3b8" font-size="8" text-anchor="middle">Competitor profiles · CI data · Alerts</text>
<text x="680" y="605" fill="#a78bfa" font-size="7" text-anchor="middle">Multi-tenant SaaS scope</text>
<!-- Arrows: API Gateway → Databases -->
<line x1="410" y1="508" x2="370" y2="553" stroke="#a78bfa" stroke-width="1.2" marker-end="url(#arrow-violet)"/>
<line x1="680" y1="508" x2="680" y2="553" stroke="#a78bfa" stroke-width="1.2" marker-end="url(#arrow-violet)"/>
<!-- ============ EXTERNAL APIs (right side) ============ -->
<rect x="920" y="120" width="110" height="40" rx="5" fill="rgba(30,41,59,0.5)" stroke="#94a3b8" stroke-width="1"/>
<text x="975" y="138" fill="white" font-size="9" font-weight="600" text-anchor="middle">Crunchbase</text>
<text x="975" y="151" fill="#94a3b8" font-size="7" text-anchor="middle">API · $49/mo</text>
<rect x="920" y="175" width="110" height="40" rx="5" fill="rgba(30,41,59,0.5)" stroke="#94a3b8" stroke-width="1"/>
<text x="975" y="193" fill="white" font-size="9" font-weight="600" text-anchor="middle">Hunter.io</text>
<text x="975" y="206" fill="#94a3b8" font-size="7" text-anchor="middle">Email intel · $34/mo</text>
<rect x="920" y="230" width="110" height="40" rx="5" fill="rgba(30,41,59,0.5)" stroke="#94a3b8" stroke-width="1"/>
<text x="975" y="248" fill="white" font-size="9" font-weight="600" text-anchor="middle">GSC / GA</text>
<text x="975" y="261" fill="#94a3b8" font-size="7" text-anchor="middle">SEO data</text>
<rect x="920" y="285" width="110" height="40" rx="5" fill="rgba(30,41,59,0.5)" stroke="#94a3b8" stroke-width="1"/>
<text x="975" y="303" fill="white" font-size="9" font-weight="600" text-anchor="middle">AI Engines</text>
<text x="975" y="316" fill="#94a3b8" font-size="7" text-anchor="middle">ChatGPT · Gemini</text>
<!-- Arrows: external APIs → products -->
<line x1="918" y1="140" x2="1002" y2="140" stroke="#94a3b8" stroke-width="1" stroke-dasharray="3,3"/>
<line x1="918" y1="195" x2="1002" y2="195" stroke="#94a3b8" stroke-width="1" stroke-dasharray="3,3"/>
<line x1="918" y1="250" x2="530" y2="175" stroke="#94a3b8" stroke-width="1" stroke-dasharray="3,3"/>
<line x1="918" y1="305" x2="900" y2="440" stroke="#94a3b8" stroke-width="1" stroke-dasharray="3,3"/>
<!-- ============ LEGEND ============ -->
<text x="30" y="660" fill="white" font-size="9" font-weight="600">Legend</text>
<rect x="30" y="672" width="14" height="9" rx="2" fill="rgba(8,51,68,0.4)" stroke="#22d3ee" stroke-width="1"/>
<text x="50" y="680" fill="#94a3b8" font-size="7">SEO Audit Tool</text>
<rect x="170" y="672" width="14" height="9" rx="2" fill="rgba(6,78,59,0.4)" stroke="#34d399" stroke-width="1"/>
<text x="190" y="680" fill="#94a3b8" font-size="7">IntelSight</text>
<rect x="290" y="672" width="14" height="9" rx="2" fill="rgba(120,53,15,0.2)" stroke="#fbbf24" stroke-width="1"/>
<text x="310" y="680" fill="#94a3b8" font-size="7">Shared Infra</text>
<rect x="410" y="672" width="14" height="9" rx="2" fill="rgba(76,29,149,0.3)" stroke="#a78bfa" stroke-width="1"/>
<text x="430" y="680" fill="#94a3b8" font-size="7">Database</text>
<rect x="530" y="672" width="14" height="9" rx="2" fill="rgba(30,41,59,0.5)" stroke="#94a3b8" stroke-width="1"/>
<text x="550" y="680" fill="#94a3b8" font-size="7">External API</text>
<line x1="640" y1="677" x2="658" y2="677" stroke="#22d3ee" stroke-width="1" stroke-dasharray="3,3"/>
<text x="664" y="680" fill="#94a3b8" font-size="7">New Feature (✦)</text>
<line x1="790" y1="677" x2="808" y2="677" stroke="#fbbf24" stroke-width="1" stroke-dasharray="8,4"/>
<text x="814" y="680" fill="#94a3b8" font-size="7">Data Boundary</text>
</svg>
</div>
<!-- Info Cards -->
<div class="cards">
<div class="card">
<div class="card-header">
<div class="card-dot cyan"></div>
<h3>SEO Tool — New Features</h3>
</div>
<ul>
<li>• AI Fix Prompt Generation — Claude/Cursor ready-made prompts per finding</li>
<li>• llms.txt Checking — detect missing or malformed AI crawler instructions</li>
<li>• GEO/AEO Visibility Scan — how visible is your site in AI search engines?</li>
<li>• Impact × Effort Matrix — ranked fixes, not just severity lists</li>
<li>&lt;10s Scan Speed — dopamine hit = conversion</li>
<li>• MCP Server (Pro tier) — AI agents can trigger scans directly</li>
</ul>
</div>
<div class="card">
<div class="card-header">
<div class="card-dot emerald"></div>
<h3>IntelSight — New Features</h3>
</div>
<ul>
<li>• Competitive SEO Health Scan — top 5 competitors vs your site</li>
<li>• Competitor AI Visibility Matrix — who gets cited in AI engines?</li>
<li>• Combined CI + SEO Report — funding + team + SEO in one view</li>
<li>• llms.txt Competitive Analysis — who's preparing for AI crawlers?</li>
<li>• Cross-product benchmarks — industry SEO averages from ITPP data</li>
</ul>
</div>
<div class="card">
<div class="card-header">
<div class="card-dot amber"></div>
<h3>Implementation Sequence</h3>
</div>
<ul>
<li>• Phase 1 (Wk 1-2): Crawler Engine + Checker Library + API Gateway</li>
<li>• Phase 2 (Wk 3-4): SEO Tool launch — audit, snippets, AI prompts</li>
<li>• Phase 3 (Wk 5-8): IntelSight SEO features — competitive scan, AI matrix</li>
<li>• Phase 4 (Wk 9-12): Cross-product benchmarks, white-label, MCP server</li>
</ul>
</div>
</div>
<p class="footer">
IT Pro Partner — Product Division · git.itpropartner.com/ippadmin/seo-tool · intelsight.io
</p>
</div>
</body>
</html>
+250
View File
@@ -0,0 +1,250 @@
# SEO Tool + IntelSight — Shared Architecture
**Status:** OPEN
**Date:** 2026-08-10
**Products:** SEO Audit Tool (`git.itpropartner.com/ippadmin/seo-tool`), IntelSight (`intelsight.io`)
---
## 1. Core Principle
Two products. One infrastructure layer. Zero product merge.
| | SEO Audit Tool | IntelSight |
|---|---|---|
| **Buyer** | ITPP hosting client (small business owner) | Marketing VP, Founder, Strategy lead |
| **Question** | "Why isn't my site getting traffic?" | "What are my competitors doing?" |
| **Pricing** | Free / $49/mo Pro | $199$1,499/mo |
| **Current state** | Proposal (repo created Aug 10) | Proposal (July 25, 2026) |
They share the crawl engine, the audit checker library, the report renderer, and the Super Search backend. They sell to different people, at different price points, through different channels.
---
## 2. Shared Infrastructure Layer
```
┌─────────────────────────────────────────────────────────┐
│ SHARED INFRASTRUCTURE │
│ │
│ ┌──────────┐ ┌───────────┐ ┌──────────┐ ┌────────┐ │
│ │ Crawler │ │ Audit │ │ Report │ │ Super │ │
│ │ Engine │ │ Checkers │ │ Renderer │ │ Search │ │
│ │ (Python/ │ │ (50+ rules│ │ (PDF/HTML│ │ (7 │ │
│ │ requests)│ │ library) │ │ /email) │ │providers│ │
│ └────┬─────┘ └─────┬─────┘ └────┬─────┘ └───┬────┘ │
│ │ │ │ │ │
│ ┌────┴──────────────┴─────────────┴────────────┴───┐ │
│ │ API Gateway (FastAPI) │ │
│ └──────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ IntelSight DB │ │ SEO Audit DB │ │
│ │ (competitor │ │ (site audits, │ │
│ │ profiles, │ │ scores, trends,│ │
│ │ alerts, CI) │ │ client sites) │ │
│ └──────────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────┘
```
### Crawler Engine
- HTTP crawler that fetches and parses any URL
- Extracts: HTML structure, meta tags, headings, links, images, structured data, performance metrics
- Used by both products — SEO tool crawls the client's own site; IntelSight crawls competitor sites
- Configurable depth, rate limiting, politeness
### Audit Checker Library
- 50+ reusable check functions: `check_meta_description()`, `check_og_tags()`, `check_canonical()`, `check_structured_data()`, `check_heading_hierarchy()`, `check_image_alts()`, `check_internal_links()`, `check_llms_txt()`
- Each check returns: `{ status: pass|fail|warn, score: 0-100, fix: "<html snippet>", impact: high|medium|low, effort: low|medium|high }`
- Used by both products — SEO tool runs all checks on the client's site; IntelSight runs summary checks on competitor sites
### Report Renderer
- Takes audit results and produces: HTML dashboard, PDF report, email summary
- SEO tool renders: per-page issues, fix-it snippets, trend charts
- IntelSight renders: competitive SEO comparison, AI visibility matrix, CI + SEO combined report
### Super Search Backend
- Already production-hardened: 7 providers, circuit breakers, caching, port 8899
- Powers IntelSight's competitive intelligence queries
- Powers SEO tool's AI engine visibility checks (GEO/AEO)
---
## 3. Product-Specific Architecture
### SEO Audit Tool
```
┌─────────────────────────────────────┐
│ SEO AUDIT TOOL │
│ │
│ Launch Audit Monthly Crawl │
│ (on deploy) (cron, 30 days) │
│ │ │ │
│ └──────┬───────┘ │
│ │ │
│ ┌────────┴────────┐ │
│ │ Per-Site Audit │ │
│ │ Dashboard │ │
│ │ seo.itpropartner│ │
│ │ .com/{site} │ │
│ └────────┬────────┘ │
│ │ │
│ ┌───────────┴───────────┐ │
│ │ Fix-It Snippets │ │
│ │ (copy-paste HTML │ │
│ │ per issue, per page)│ │
│ └───────────────────────┘ │
│ │
│ AI Fix Prompts AI Visibility │
│ (Claude/Cursor/ (GEO/AEO check │
│ Codex ready-made via Super Search)│
│ fix instructions) │
└─────────────────────────────────────┘
```
**Feature Enhancements (from SeoLoupe analysis):**
| Enhancement | Effort | Value | Description |
|---|---|---|---|
| **AI Fix Prompt Generation** | Low | High | Each finding generates a ready-made prompt for Claude/Cursor/Codex — "Fix the meta description on /pricing. Current: '...' Suggested: '...'" |
| **llms.txt Checking** | Low | Medium | Check if llms.txt exists and is well-formed. Flag missing or malformed. Zero-cost add to crawl phase |
| **GEO/AEO Visibility Scan** | Medium | High | Query Super Search providers: "Is {domain} cited in AI search results?" Surface how the site appears in ChatGPT, Gemini, Claude, Perplexity |
| **Impact x Effort Matrix** | Low | Medium | Formalize priority ranking as a 2x2 matrix (not just P0/P1/P2 list). Makes reports more actionable |
| **<10s Scan Speed Target** | Medium | High | Automate end-to-end pipeline for instant feedback. Dopamine hit = conversion |
| **MCP Server (Pro tier)** | Medium | High | Expose audit as MCP tools so external AI agents can trigger scans. First-mover in the agent ecosystem |
### IntelSight
```
┌─────────────────────────────────────┐
│ INTELSIGHT │
│ │
│ Competitor Market Analysis │
│ Profiles (funding, moves, │
│ (Crunchbase, team changes, │
│ Hunter.io, product launches) │
│ OSINT) │
│ │ │ │
│ └──────┬───────┘ │
│ │ │
│ ┌────────┴────────┐ │
│ │ CI Dashboard │ │
│ │ intelsight.io │ │
│ │ /dashboard │ │
│ └────────┬────────┘ │
│ │ │
│ ┌───────────┴───────────┐ │
│ │ Competitive SEO Scan │ ← NEW │
│ │ (competitor site │ │
│ │ health vs yours) │ │
│ └───────────────────────┘ │
│ │
│ Competitor AI Alert Engine │
│ Visibility (funding, team, │
│ (GEO matrix) product changes) │
└─────────────────────────────────────┘
```
**Feature Enhancements:**
| Enhancement | Effort | Value | Description |
|---|---|---|---|
| **Competitive SEO Health Scan** | Medium | High | Crawl top 5 competitors and surface their SEO health side-by-side with yours. "Their meta tags are complete. Yours are missing on 12 pages." Uses the shared audit checker library |
| **Competitor AI Visibility Matrix** | Medium | High | How visible are your competitors in ChatGPT, Gemini, Claude, Perplexity, Grok? Which competitors get cited? What queries? The GEO/AEO scan but applied to competitors |
| **Combined CI + SEO Report** | Medium | Very High | One report per competitor: funding moves, team changes, product launches, AND their SEO health. "They raised $5M, hired a CMO, and their SEO score dropped 15 points — they're distracted, your window is now" |
| **llms.txt Competitive Analysis** | Low | Low | Flag competitors who have/don't have llms.txt. Trend indicator — who's thinking about AI crawlers? |
---
## 4. Cross-Product Data Flow
```
SEO Audit Tool IntelSight
────────────── ──────────
Client site crawl ──────────────→ Competitive SEO baseline
(anonymous, aggregated)
Shared Crawler
←────────────── Competitor site crawl
Client SEO scores ──────────────→ Industry benchmarks
(aggregated, anon) "Average SMB scores 62/100.
Your clients average 78/100."
←─────────────── IntelSight alerts
"Competitor X launched new site.
Run audit comparison?"
```
Key rule: **client data stays in the SEO tool. Competitor data stays in IntelSight.** The shared layer only moves aggregated, anonymous benchmarks between them. No client PII crosses the boundary.
---
## 5. Implementation Sequence
### Phase 1: Foundation (Weeks 1-2)
- Build the shared Crawler Engine (Python/requests, configurable depth, politeness)
- Build the Audit Checker Library (50+ check functions)
- Stand up shared API Gateway (FastAPI)
- Separate databases per product
### Phase 2: SEO Tool Launch (Weeks 3-4)
- Launch Audit: auto-runs on CloudPanel deploy webhook
- Fix-It Snippets: HTML output per finding
- Monthly crawl cron
- AI Fix Prompt Generation (low effort, high impact)
- llms.txt checking
- Impact x Effort matrix in reports
- Dashboard at `seo.itpropartner.com`
### Phase 3: IntelSight Enhancements (Weeks 5-8)
- Competitive SEO Health Scan (uses shared audit checker)
- Competitor AI Visibility Matrix (uses Super Search GEO queries)
- Combined CI + SEO report template
- MCP Server for external AI agent access
### Phase 4: Cross-Product (Weeks 9-12)
- Anonymous industry benchmarks from SEO tool data
- IntelSight alerts triggering SEO comparisons
- White-label dashboard for agency clients
- <10s scan speed optimization
---
## 6. What Stays Separate
| Layer | Separate? | Why |
|---|---|---|
| **Databases** | Separate | Client site data vs competitor intelligence — different access patterns, retention policies, privacy considerations |
| **Auth / Tenants** | Separate | SEO tool: ITPP hosting auth (Stack Auth, existing). IntelSight: standalone SaaS auth with Stripe billing |
| **Pricing / Billing** | Separate | SEO: bundled with hosting or $49/mo add-on. IntelSight: $199-1,499/mo standalone |
| **Branding** | Separate | SEO: ITPP-branded, "your hosting includes this." IntelSight: standalone brand, intelsight.io |
| **Go-to-Market** | Separate | SEO: hosting upsell, retention play. IntelSight: SaaS marketing, Product Hunt, direct sales |
---
## 7. Key Decisions
| Decision | Status | Notes |
|---|---|---|
| Merge products into one platform? | **SETTLED: No** | Different buyers, different pricing, different GTM |
| Share crawl engine? | **SETTLED: Yes** | Same underlying tech, no reason to build twice |
| Share audit checker library? | **SETTLED: Yes** | Check functions are pure logic — zero product coupling |
| Cross-product data sharing? | **OPEN** | Aggregated/anonymous only. Privacy boundary TBD |
| SEO Tool MCP Server? | **OPEN** | Pro tier feature. Proximity to agent ecosystem is a differentiator |
| IntelSight SEO report depth? | **OPEN** | Full audit (like SEO tool) or summary (top 20 checks)? Depends on crawl politeness and competitor detection risk |
---
## 8. Next Actions
- [ ] Build shared Crawler Engine (`seo-crawler` package)
- [ ] Define Audit Checker Library spec (50+ checks, output format)
- [ ] Add AI Fix Prompt Generation to seo-audit skill (immediate low-effort win)
- [ ] Add llms.txt check to seo-audit skill crawl phase
- [ ] Prototype GEO/AEO visibility query via Super Search