Files
itpp-infrastructure/projects/seo-ci-architecture.html
T
root f5175f1ce0 Sync docs, audit artifacts, project notes, and VerdictTank proposal docs
- audit/phase-one + phase-two: security audit briefs, findings, credential-rotation plan, Docker-USER hardening scripts, rollback refs
- disaster-recovery/restore-test-log.md + backup-dr-audit-2026-08-10.md
- clients/ (modelortho SEO audit, ai-biz-dev competitive landscape), notes/ (tiktok strategy)
- projects/: front-desk-voice-agent, seo-visibility-checker product plan, hotnow-savannah HTML, resend-transactional-email, backup-dashboard-enhancements, code-review-graph, seo-ci-architecture
- proposals/verdicttank/: architecture v4.0, methodology, judge-pool review, consolidation reasoning, cross-check review
- docs/super-search/firecrawl-provider-strategy.md
- updates: CHANGELOG, model-chain, projects-master-readme, intelsight.io
- .gitignore: exclude nested standalone repos (seo-tool, venturebuilt)
2026-08-26 02:27:28 -04:00

312 lines
19 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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>