feat: Super Search for Business — project inception
Product spec, architecture diagram, README, CHANGELOG. Multi-tenant competitive intelligence SaaS built on Super Search v2. Pricing: Starter 99/mo, Pro 99/mo, Enterprise ,499+/mo.
This commit is contained in:
@@ -0,0 +1,343 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Super Search for Business — 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: 1300px; 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.5rem; font-weight: 700; letter-spacing: -0.025em; }
|
||||
.subtitle { color: #94a3b8; font-size: 0.875rem; 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: 1000px; display: block; }
|
||||
.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 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 h3 { font-size: 0.875rem; font-weight: 600; }
|
||||
.card ul { list-style: none; color: #94a3b8; font-size: 0.75rem; }
|
||||
.card li { margin-bottom: 0.375rem; }
|
||||
.footer { text-align: center; margin-top: 1.5rem; color: #475569; font-size: 0.75rem; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<div class="header-row">
|
||||
<div class="pulse-dot"></div>
|
||||
<h1>Super Search for Business — Architecture</h1>
|
||||
</div>
|
||||
<p class="subtitle">Multi-tenant competitive intelligence & OSINT search platform · IT Pro Partner</p>
|
||||
</div>
|
||||
|
||||
<div class="diagram-container">
|
||||
<svg viewBox="0 0 1100 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="arrowhead-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="arrowhead-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="arrowhead-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>
|
||||
|
||||
<!-- Background -->
|
||||
<rect width="100%" height="100%" fill="url(#grid)" />
|
||||
|
||||
<!-- ============================================================
|
||||
REGION BOUNDARIES
|
||||
============================================================ -->
|
||||
|
||||
<!-- ITPP Infrastructure Region -->
|
||||
<rect x="30" y="165" width="1040" height="340" rx="12" fill="rgba(34, 211, 238, 0.03)" stroke="#22d3ee" stroke-width="0.8" stroke-dasharray="8,4"/>
|
||||
<text x="42" y="183" fill="#22d3ee" font-size="9" font-weight="600">IT Pro Partner Infrastructure (netcup VPS / app1)</text>
|
||||
|
||||
<!-- Search Provider Layer -->
|
||||
<rect x="30" y="530" width="1040" height="170" rx="12" fill="rgba(251, 191, 36, 0.04)" stroke="#fbbf24" stroke-width="0.8" stroke-dasharray="8,4"/>
|
||||
<text x="42" y="548" fill="#fbbf24" font-size="9" font-weight="600">Search & Enrichment Providers</text>
|
||||
|
||||
<!-- ============================================================
|
||||
LAYER 1: Customers (y=30-110)
|
||||
============================================================ -->
|
||||
|
||||
<!-- Customer Browser -->
|
||||
<rect x="200" y="30" width="140" height="55" rx="6" fill="rgba(30, 41, 59, 0.5)" stroke="#94a3b8" stroke-width="1.5"/>
|
||||
<text x="270" y="52" fill="white" font-size="11" font-weight="600" text-anchor="middle">Customer A</text>
|
||||
<text x="270" y="69" fill="#94a3b8" font-size="9" text-anchor="middle">Browser / Mobile</text>
|
||||
|
||||
<rect x="410" y="30" width="140" height="55" rx="6" fill="rgba(30, 41, 59, 0.5)" stroke="#94a3b8" stroke-width="1.5"/>
|
||||
<text x="480" y="52" fill="white" font-size="11" font-weight="600" text-anchor="middle">Customer B</text>
|
||||
<text x="480" y="69" fill="#94a3b8" font-size="9" text-anchor="middle">insights.cust.com</text>
|
||||
|
||||
<rect x="620" y="30" width="140" height="55" rx="6" fill="rgba(30, 41, 59, 0.5)" stroke="#94a3b8" stroke-width="1.5"/>
|
||||
<text x="690" y="52" fill="white" font-size="11" font-weight="600" text-anchor="middle">Customer C</text>
|
||||
<text x="690" y="69" fill="#94a3b8" font-size="9" text-anchor="middle">API Integration</text>
|
||||
|
||||
<!-- ============================================================
|
||||
LAYER 2: Auth & Gateway (y=170-260)
|
||||
============================================================ -->
|
||||
|
||||
<!-- Auth Provider -->
|
||||
<rect x="200" y="175" width="130" height="55" rx="6" fill="rgba(136, 19, 55, 0.4)" stroke="#fb7185" stroke-width="1.5"/>
|
||||
<text x="265" y="196" fill="white" font-size="11" font-weight="600" text-anchor="middle">Auth Service</text>
|
||||
<text x="265" y="214" fill="#94a3b8" font-size="9" text-anchor="middle">OAuth / SSO / MFA</text>
|
||||
|
||||
<!-- API Gateway -->
|
||||
<rect x="430" y="175" width="240" height="55" rx="6" fill="rgba(136, 19, 55, 0.4)" stroke="#fb7185" stroke-width="1.5"/>
|
||||
<text x="550" y="196" fill="white" font-size="11" font-weight="600" text-anchor="middle">API Gateway (Caddy)</text>
|
||||
<text x="550" y="214" fill="#94a3b8" font-size="9" text-anchor="middle">Rate Limiting · Key Validation · Routing</text>
|
||||
|
||||
<!-- ============================================================
|
||||
LAYER 3: Core Platform (y=290-440)
|
||||
============================================================ -->
|
||||
|
||||
<!-- Multi-Tenant Portal -->
|
||||
<rect x="50" y="300" width="180" height="70" rx="6" fill="rgba(8, 51, 68, 0.4)" stroke="#22d3ee" stroke-width="1.5"/>
|
||||
<text x="140" y="325" fill="white" font-size="12" font-weight="600" text-anchor="middle">Multi-Tenant Portal</text>
|
||||
<text x="140" y="344" fill="#94a3b8" font-size="9" text-anchor="middle">React + TypeScript</text>
|
||||
<text x="140" y="359" fill="#22d3ee" font-size="8" text-anchor="middle">portal.itpropartner.com</text>
|
||||
|
||||
<!-- REST API -->
|
||||
<rect x="300" y="300" width="180" height="70" rx="6" fill="rgba(6, 78, 59, 0.4)" stroke="#34d399" stroke-width="1.5"/>
|
||||
<text x="390" y="325" fill="white" font-size="12" font-weight="600" text-anchor="middle">REST API</text>
|
||||
<text x="390" y="344" fill="#94a3b8" font-size="9" text-anchor="middle">FastAPI · Python 3.13</text>
|
||||
<text x="390" y="359" fill="#34d399" font-size="8" text-anchor="middle">api.itpropartner.com/v1</text>
|
||||
|
||||
<!-- Super Search Engine -->
|
||||
<rect x="550" y="300" width="200" height="70" rx="6" fill="rgba(6, 78, 59, 0.4)" stroke="#34d399" stroke-width="1.5"/>
|
||||
<text x="650" y="325" fill="white" font-size="12" font-weight="600" text-anchor="middle">Super Search Engine v2</text>
|
||||
<text x="650" y="344" fill="#94a3b8" font-size="9" text-anchor="middle">7 Providers · Circuit Breakers</text>
|
||||
<text x="650" y="359" fill="#34d399" font-size="8" text-anchor="middle">MCP Server :8899</text>
|
||||
|
||||
<!-- OSINT Enrichment -->
|
||||
<rect x="820" y="300" width="200" height="70" rx="6" fill="rgba(6, 78, 59, 0.4)" stroke="#34d399" stroke-width="1.5"/>
|
||||
<text x="920" y="325" fill="white" font-size="12" font-weight="600" text-anchor="middle">OSINT Enrichment</text>
|
||||
<text x="920" y="344" fill="#94a3b8" font-size="9" text-anchor="middle">Identity · Courts · Sentiment</text>
|
||||
<text x="920" y="359" fill="#34d399" font-size="8" text-anchor="middle">Dossier Reports</text>
|
||||
|
||||
<!-- ============================================================
|
||||
LAYER 4: Data & Support (y=390-480)
|
||||
============================================================ -->
|
||||
|
||||
<!-- PostgreSQL -->
|
||||
<rect x="50" y="405" width="180" height="60" rx="6" fill="rgba(76, 29, 149, 0.4)" stroke="#a78bfa" stroke-width="1.5"/>
|
||||
<text x="140" y="428" fill="white" font-size="11" font-weight="600" text-anchor="middle">PostgreSQL</text>
|
||||
<text x="140" y="446" fill="#94a3b8" font-size="9" text-anchor="middle">Tenants · Users · History · Reports</text>
|
||||
|
||||
<!-- Report Scheduler -->
|
||||
<rect x="300" y="405" width="180" height="60" rx="6" fill="rgba(6, 78, 59, 0.4)" stroke="#34d399" stroke-width="1.5"/>
|
||||
<text x="390" y="428" fill="white" font-size="11" font-weight="600" text-anchor="middle">Report Scheduler</text>
|
||||
<text x="390" y="446" fill="#94a3b8" font-size="9" text-anchor="middle">Cron · Recurring · Alerts</text>
|
||||
|
||||
<!-- Report Generator -->
|
||||
<rect x="550" y="405" width="200" height="60" rx="6" fill="rgba(6, 78, 59, 0.4)" stroke="#34d399" stroke-width="1.5"/>
|
||||
<text x="650" y="428" fill="white" font-size="11" font-weight="600" text-anchor="middle">Report Generator</text>
|
||||
<text x="650" y="446" fill="#94a3b8" font-size="9" text-anchor="middle">Markdown · PDF · Email</text>
|
||||
|
||||
<!-- Stripe -->
|
||||
<rect x="820" y="405" width="200" height="60" rx="6" fill="rgba(120, 53, 15, 0.3)" stroke="#fbbf24" stroke-width="1.5"/>
|
||||
<text x="920" y="428" fill="white" font-size="11" font-weight="600" text-anchor="middle">Stripe Billing</text>
|
||||
<text x="920" y="446" fill="#94a3b8" font-size="9" text-anchor="middle">Subscriptions · Invoicing</text>
|
||||
|
||||
<!-- ============================================================
|
||||
LAYER 5: Search Providers (y=560-670)
|
||||
============================================================ -->
|
||||
|
||||
<rect x="50" y="565" width="120" height="45" rx="6" fill="rgba(30, 41, 59, 0.5)" stroke="#94a3b8" stroke-width="1.5"/>
|
||||
<text x="110" y="585" fill="white" font-size="10" font-weight="600" text-anchor="middle">SearXNG</text>
|
||||
<text x="110" y="599" fill="#94a3b8" font-size="8" text-anchor="middle">Meta Search</text>
|
||||
|
||||
<rect x="185" y="565" width="120" height="45" rx="6" fill="rgba(30, 41, 59, 0.5)" stroke="#94a3b8" stroke-width="1.5"/>
|
||||
<text x="245" y="585" fill="white" font-size="10" font-weight="600" text-anchor="middle">Exa</text>
|
||||
<text x="245" y="599" fill="#94a3b8" font-size="8" text-anchor="middle">Premium Search</text>
|
||||
|
||||
<rect x="320" y="565" width="120" height="45" rx="6" fill="rgba(30, 41, 59, 0.5)" stroke="#94a3b8" stroke-width="1.5"/>
|
||||
<text x="380" y="585" fill="white" font-size="10" font-weight="600" text-anchor="middle">OpenCorporates</text>
|
||||
<text x="380" y="599" fill="#94a3b8" font-size="8" text-anchor="middle">Business Records</text>
|
||||
|
||||
<rect x="455" y="565" width="120" height="45" rx="6" fill="rgba(30, 41, 59, 0.5)" stroke="#94a3b8" stroke-width="1.5"/>
|
||||
<text x="515" y="585" fill="white" font-size="10" font-weight="600" text-anchor="middle">CourtListener</text>
|
||||
<text x="515" y="599" fill="#94a3b8" font-size="8" text-anchor="middle">Legal Records</text>
|
||||
|
||||
<rect x="590" y="565" width="120" height="45" rx="6" fill="rgba(30, 41, 59, 0.5)" stroke="#94a3b8" stroke-width="1.5"/>
|
||||
<text x="650" y="585" fill="white" font-size="10" font-weight="600" text-anchor="middle">DuckDuckGo</text>
|
||||
<text x="650" y="599" fill="#94a3b8" font-size="8" text-anchor="middle">Web + Instant</text>
|
||||
|
||||
<rect x="725" y="565" width="120" height="45" rx="6" fill="rgba(30, 41, 59, 0.5)" stroke="#94a3b8" stroke-width="1.5"/>
|
||||
<text x="785" y="585" fill="white" font-size="10" font-weight="600" text-anchor="middle">Wikipedia</text>
|
||||
<text x="785" y="599" fill="#94a3b8" font-size="8" text-anchor="middle">Encyclopedic</text>
|
||||
|
||||
<rect x="860" y="565" width="120" height="45" rx="6" fill="rgba(30, 41, 59, 0.5)" stroke="#94a3b8" stroke-width="1.5"/>
|
||||
<text x="920" y="585" fill="white" font-size="10" font-weight="600" text-anchor="middle">Firecrawl</text>
|
||||
<text x="920" y="599" fill="#94a3b8" font-size="8" text-anchor="middle">Web Extraction</text>
|
||||
|
||||
<!-- Screenshot / Browserless -->
|
||||
<rect x="860" y="625" width="120" height="45" rx="6" fill="rgba(30, 41, 59, 0.5)" stroke="#94a3b8" stroke-width="1.5"/>
|
||||
<text x="920" y="645" fill="white" font-size="10" font-weight="600" text-anchor="middle">Browserless</text>
|
||||
<text x="920" y="659" fill="#94a3b8" font-size="8" text-anchor="middle">Screenshots</text>
|
||||
|
||||
<!-- ============================================================
|
||||
ARROWS / CONNECTIONS
|
||||
============================================================ -->
|
||||
|
||||
<!-- Customers → Portal (through Auth + Gateway) -->
|
||||
<!-- Customer A → Auth → Gateway → Portal -->
|
||||
<line x1="270" y1="85" x2="270" y2="173" stroke="#22d3ee" stroke-width="1.2" marker-end="url(#arrowhead-cyan)"/>
|
||||
<line x1="270" y1="230" x2="270" y2="298" stroke="#22d3ee" stroke-width="1.2" marker-end="url(#arrowhead-cyan)"/>
|
||||
|
||||
<!-- Customer B → Gateway (white-label) -->
|
||||
<line x1="480" y1="85" x2="480" y2="173" stroke="#22d3ee" stroke-width="1.2" marker-end="url(#arrowhead-cyan)"/>
|
||||
<line x1="550" y1="230" x2="550" y2="298" stroke="#22d3ee" stroke-width="1.2" marker-end="url(#arrowhead-cyan)"/>
|
||||
|
||||
<!-- Customer C → Gateway (API) -->
|
||||
<line x1="690" y1="85" x2="690" y2="173" stroke="#22d3ee" stroke-width="1.2" marker-end="url(#arrowhead-cyan)"/>
|
||||
|
||||
<!-- Auth → Gateway -->
|
||||
<line x1="330" y1="202" x2="428" y2="202" stroke="#fb7185" stroke-width="1" stroke-dasharray="4,3" marker-end="url(#arrowhead)"/>
|
||||
|
||||
<!-- Gateway → Portal -->
|
||||
<line x1="550" y1="230" x2="300" y2="298" stroke="#22d3ee" stroke-width="1" stroke-dasharray="4,3"/>
|
||||
|
||||
<!-- Gateway → REST API -->
|
||||
<line x1="550" y1="230" x2="390" y2="298" stroke="#34d399" stroke-width="1.2" marker-end="url(#arrowhead-emerald)"/>
|
||||
<text x="520" y="265" fill="#94a3b8" font-size="8" text-anchor="middle">REST</text>
|
||||
|
||||
<!-- Portal → REST API -->
|
||||
<line x1="230" y1="335" x2="298" y2="335" stroke="#34d399" stroke-width="1.2" marker-end="url(#arrowhead-emerald)"/>
|
||||
<text x="264" y="329" fill="#94a3b8" font-size="7">JSON</text>
|
||||
|
||||
<!-- REST API → Search Engine -->
|
||||
<line x1="480" y1="335" x2="548" y2="335" stroke="#34d399" stroke-width="1.2" marker-end="url(#arrowhead-emerald)"/>
|
||||
<text x="514" y="329" fill="#94a3b8" font-size="7">MCP</text>
|
||||
|
||||
<!-- REST API → OSINT -->
|
||||
<line x1="480" y1="335" x2="818" y2="335" stroke="#34d399" stroke-width="1.2" marker-end="url(#arrowhead-emerald)"/>
|
||||
<text x="650" y="299" fill="#94a3b8" font-size="7">dossier</text>
|
||||
|
||||
<!-- Search Engine → Providers -->
|
||||
<line x1="650" y1="370" x2="110" y2="563" stroke="#fbbf24" stroke-width="1" marker-end="url(#arrowhead)"/>
|
||||
<line x1="650" y1="370" x2="245" y2="563" stroke="#fbbf24" stroke-width="1" marker-end="url(#arrowhead)"/>
|
||||
<line x1="650" y1="370" x2="380" y2="563" stroke="#fbbf24" stroke-width="1" marker-end="url(#arrowhead)"/>
|
||||
<line x1="650" y1="370" x2="515" y2="563" stroke="#fbbf24" stroke-width="1" marker-end="url(#arrowhead)"/>
|
||||
<line x1="650" y1="370" x2="650" y2="563" stroke="#fbbf24" stroke-width="1" marker-end="url(#arrowhead)"/>
|
||||
<line x1="650" y1="370" x2="785" y2="563" stroke="#fbbf24" stroke-width="1" marker-end="url(#arrowhead)"/>
|
||||
<line x1="650" y1="370" x2="920" y2="563" stroke="#fbbf24" stroke-width="1" marker-end="url(#arrowhead)"/>
|
||||
|
||||
<!-- OSINT → CourtListener + OpenCorporates -->
|
||||
<line x1="920" y1="370" x2="380" y2="563" stroke="#fbbf24" stroke-width="1" stroke-dasharray="3,3" marker-end="url(#arrowhead)"/>
|
||||
<line x1="920" y1="370" x2="515" y2="563" stroke="#fbbf24" stroke-width="1" stroke-dasharray="3,3" marker-end="url(#arrowhead)"/>
|
||||
|
||||
<!-- REST API → Scheduler -->
|
||||
<line x1="390" y1="370" x2="390" y2="403" stroke="#a78bfa" stroke-width="1.2" marker-end="url(#arrowhead-violet)"/>
|
||||
|
||||
<!-- REST API → PostgreSQL -->
|
||||
<line x1="300" y1="370" x2="140" y2="403" stroke="#a78bfa" stroke-width="1.2" marker-end="url(#arrowhead-violet)"/>
|
||||
|
||||
<!-- Scheduler → Report Generator -->
|
||||
<line x1="480" y1="435" x2="548" y2="435" stroke="#34d399" stroke-width="1.2" marker-end="url(#arrowhead-emerald)"/>
|
||||
|
||||
<!-- Report Generator → PostgreSQL -->
|
||||
<line x1="550" y1="435" x2="232" y2="435" stroke="#a78bfa" stroke-width="1" marker-end="url(#arrowhead-violet)"/>
|
||||
|
||||
<!-- REST API → Stripe -->
|
||||
<line x1="390" y1="370" x2="920" y2="403" stroke="#fbbf24" stroke-width="1.2" marker-end="url(#arrowhead)"/>
|
||||
|
||||
<!-- ============================================================
|
||||
LEGEND
|
||||
============================================================ -->
|
||||
<text x="720" y="195" fill="white" font-size="10" font-weight="600">Legend</text>
|
||||
<rect x="720" y="207" width="16" height="10" rx="2" fill="rgba(8, 51, 68, 0.4)" stroke="#22d3ee" stroke-width="1"/>
|
||||
<text x="742" y="215" fill="#94a3b8" font-size="8">Frontend / Portal</text>
|
||||
<rect x="720" y="223" width="16" height="10" rx="2" fill="rgba(6, 78, 59, 0.4)" stroke="#34d399" stroke-width="1"/>
|
||||
<text x="742" y="231" fill="#94a3b8" font-size="8">Backend / Engine</text>
|
||||
<rect x="720" y="239" width="16" height="10" rx="2" fill="rgba(76, 29, 149, 0.4)" stroke="#a78bfa" stroke-width="1"/>
|
||||
<text x="742" y="247" fill="#94a3b8" font-size="8">Database / Storage</text>
|
||||
<rect x="720" y="255" width="16" height="10" rx="2" fill="rgba(136, 19, 55, 0.4)" stroke="#fb7185" stroke-width="1"/>
|
||||
<text x="742" y="263" fill="#94a3b8" font-size="8">Security / Gateway</text>
|
||||
<rect x="720" y="271" width="16" height="10" rx="2" fill="rgba(120, 53, 15, 0.3)" stroke="#fbbf24" stroke-width="1"/>
|
||||
<text x="742" y="279" fill="#94a3b8" font-size="8">External / Billing</text>
|
||||
<rect x="720" y="287" width="16" height="10" rx="2" fill="rgba(30, 41, 59, 0.5)" stroke="#94a3b8" stroke-width="1"/>
|
||||
<text x="742" y="295" fill="#94a3b8" font-size="8">3rd-Party Provider</text>
|
||||
<line x1="720" y1="308" x2="736" y2="308" stroke="#fb7185" stroke-width="1" stroke-dasharray="3,3"/>
|
||||
<text x="742" y="311" fill="#94a3b8" font-size="8">Auth Flow</text>
|
||||
</svg>
|
||||
</div>
|
||||
|
||||
<!-- Info Cards -->
|
||||
<div class="cards">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-dot cyan"></div>
|
||||
<h3>Customer Features</h3>
|
||||
</div>
|
||||
<ul>
|
||||
<li>• Competitive landscape reports</li>
|
||||
<li>• Customer review sentiment analysis</li>
|
||||
<li>• Market trend monitoring & alerts</li>
|
||||
<li>• White-label dashboard (own domain)</li>
|
||||
<li>• API access for internal tooling</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-dot emerald"></div>
|
||||
<h3>Search Capabilities</h3>
|
||||
</div>
|
||||
<ul>
|
||||
<li>• 7-provider fallback chain with circuit breakers</li>
|
||||
<li>• OSINT person/business deep dossiers</li>
|
||||
<li>• Court records, corporate filings, skip tracing</li>
|
||||
<li>• Web screenshots via browserless Chrome</li>
|
||||
<li>• Academic, news, and image search</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-dot violet"></div>
|
||||
<h3>Pricing Tiers</h3>
|
||||
</div>
|
||||
<ul>
|
||||
<li>• Starter: $199/mo — 50 searches, basic reports</li>
|
||||
<li>• Pro: $499/mo — unlimited searches, weekly reports</li>
|
||||
<li>• Enterprise: $1,499+/mo — API access, OSINT, custom dashboards</li>
|
||||
<li>• All plans: 14-day free trial, no CC required</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="footer">Super Search for Business · IT Pro Partner · Architecture v1.0 · July 2026</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,214 @@
|
||||
# Super Search for Business — Product Specification
|
||||
|
||||
> **Status:** Draft v1.0 · July 25, 2026
|
||||
> **Author:** Sho'Nuff (Hermes Agent) for Germaine Brown / IT Pro Partner
|
||||
|
||||
---
|
||||
|
||||
## 1. Product Overview
|
||||
|
||||
Super Search for Business is a multi-tenant competitive intelligence and OSINT search platform sold as a SaaS subscription. Companies subscribe to gain continuous visibility into their competitive landscape: who their competitors are, what customers say about them, what the market is looking for, and actionable intelligence from public records.
|
||||
|
||||
**What it is:** A business search engine that does the work of a competitive intelligence analyst — for $199-1,499/mo instead of $5k+/mo.
|
||||
|
||||
**What it isn't:** SEO keyword research (Semrush), web traffic estimation (SimilarWeb), or a generic search tool. This is investigative business intelligence.
|
||||
|
||||
### Core value proposition
|
||||
|
||||
> "Know everything the public internet knows about your competitors, your reputation, and your market — continuously, automatically, and without hiring an analyst."
|
||||
|
||||
---
|
||||
|
||||
## 2. Target Market
|
||||
|
||||
### Primary
|
||||
- SMB service businesses (legal, medical, trades, agencies) who can't afford a dedicated analyst
|
||||
- Small consulting firms doing competitive research for clients
|
||||
- Debt recovery / skip tracing firms (existing DRE workflow)
|
||||
|
||||
### Secondary
|
||||
- Mid-market companies wanting continuous market monitoring
|
||||
- Franchise operators tracking local competitive dynamics
|
||||
- Law firms doing due diligence research
|
||||
|
||||
### Buyer persona
|
||||
**"Mike"** — Operations director at a 50-person HVAC company. He knows there are 4 competitors in his market but has no systematic way to track their pricing, reviews, hiring, or expansion. He'd pay $199/mo to get a monthly report instead of spending 4 hours Googling.
|
||||
|
||||
---
|
||||
|
||||
## 3. Feature Matrix by Tier
|
||||
|
||||
| Feature | Starter ($199) | Pro ($499) | Enterprise ($1,499+) |
|
||||
|---------|:---:|:---:|:---:|
|
||||
| Competitive search queries | 50/mo | Unlimited | Unlimited |
|
||||
| Web extraction (full pages) | 25/mo | 100/mo | Unlimited |
|
||||
| News monitoring | ✓ | ✓ | ✓ |
|
||||
| Sentiment analysis (reviews) | Basic | Advanced | Custom models |
|
||||
| Saved searches | 5 | 25 | Unlimited |
|
||||
| Scheduled reports | Monthly | Weekly | Daily + real-time alerts |
|
||||
| Report export | PDF | PDF + CSV | PDF + CSV + API |
|
||||
| OSINT person/business dossier | — | 5/mo | Unlimited |
|
||||
| Court records search | — | ✓ | ✓ |
|
||||
| Skip tracing | — | — | ✓ |
|
||||
| White-label domain | — | ✓ | ✓ |
|
||||
| API access | — | — | ✓ |
|
||||
| Custom dashboard | — | — | ✓ |
|
||||
| Multi-user accounts | 1 | 3 | Unlimited |
|
||||
| Dedicated analyst summary | — | — | ✓ |
|
||||
|
||||
---
|
||||
|
||||
## 4. Technical Architecture
|
||||
|
||||
See `super-search-business-architecture.html` for the visual diagram.
|
||||
|
||||
### Stack
|
||||
|
||||
| Layer | Technology | Status |
|
||||
|-------|-----------|--------|
|
||||
| Search engine | Super Search v2 (FastMCP, 7 providers) | ✅ Built |
|
||||
| OSINT enrichment | osint-person MCP server | ✅ Built |
|
||||
| API gateway | Caddy reverse proxy | ✅ Running |
|
||||
| Portal frontend | React + TypeScript (new) | 🔨 To build |
|
||||
| REST API | FastAPI wrapping MCP tools | 🔨 To build |
|
||||
| Multi-tenant DB | PostgreSQL (new schema) | 🔨 To build |
|
||||
| Auth | OAuth/SSO (existing pattern from Ops Portal) | 🔨 Adapt |
|
||||
| Billing | Stripe subscriptions | 🔨 Integrate |
|
||||
| Hosting | app1 (Hetzner) or netcup VPS | 🔨 Deploy |
|
||||
| Reports | Markdown → PDF pipeline (pandoc/weasyprint) | 🔨 To build |
|
||||
| Scheduler | Hermes cron → report generation | 🔨 Configure |
|
||||
|
||||
### What's already built (80%)
|
||||
|
||||
Super Search v2 already has:
|
||||
- 7 providers with circuit breakers and health checks
|
||||
- Web extraction (single + batch)
|
||||
- Racing search (fastest provider wins)
|
||||
- Premium search (Exa API)
|
||||
- Academic, news, image search
|
||||
- Web lookups (DuckDuckGo Instant + Wikipedia)
|
||||
- Screenshot capture (browserless Chrome)
|
||||
- OSINT person search with identity clustering, source scoring, dossier reports
|
||||
- All accessible via MCP protocol on `:8899`
|
||||
|
||||
### What needs building (20%)
|
||||
|
||||
| Component | Effort | Priority |
|
||||
|-----------|--------|----------|
|
||||
| Multi-tenant REST API wrapper | 2-3 days | P0 |
|
||||
| Customer portal (React) | 3-5 days | P0 |
|
||||
| PostgreSQL schema (tenants, users, history) | 1 day | P0 |
|
||||
| Stripe integration | 2 days | P1 |
|
||||
| Auth (OAuth + API keys) | 1 day | P1 |
|
||||
| Report generation pipeline | 2 days | P1 |
|
||||
| White-label domain routing | 1 day | P2 |
|
||||
| Scheduled search/monitoring | 2 days | P2 |
|
||||
|
||||
---
|
||||
|
||||
## 5. Implementation Phases
|
||||
|
||||
### Phase 1: MVP (2 weeks)
|
||||
- REST API wrapping Super Search MCP tools
|
||||
- Single-tenant portal (validate the concept with 1-2 beta customers)
|
||||
- Manual billing (Stripe invoice links, no integration)
|
||||
- Basic report generation (markdown → email)
|
||||
|
||||
### Phase 2: Multi-Tenant Launch (2 weeks)
|
||||
- PostgreSQL schema with tenant isolation
|
||||
- Stripe subscription integration
|
||||
- Customer signup flow (14-day trial)
|
||||
- White-label domain support
|
||||
- Saved searches + history
|
||||
|
||||
### Phase 3: Advanced Features (ongoing)
|
||||
- Scheduled monitoring with alerts
|
||||
- Sentiment analysis pipeline
|
||||
- OSINT dossier automation
|
||||
- API access for Enterprise tier
|
||||
- Custom dashboard builder
|
||||
|
||||
---
|
||||
|
||||
## 6. Pricing & Unit Economics
|
||||
|
||||
### Subscription Pricing
|
||||
|
||||
| Tier | Monthly | Annual (2 mo free) | Target CAC |
|
||||
|------|---------|---------------------|------------|
|
||||
| Starter | $199 | $1,990 | < $200 |
|
||||
| Pro | $499 | $4,990 | < $500 |
|
||||
| Enterprise | $1,499+ | Custom | < $1,000 |
|
||||
|
||||
### Cost Structure (per customer, estimated)
|
||||
|
||||
| Cost Driver | Starter | Pro | Enterprise |
|
||||
|-------------|---------|-----|------------|
|
||||
| Exa API (premium search) | ~$5/mo | ~$15/mo | ~$50/mo |
|
||||
| Firecrawl (web extraction) | ~$3/mo | ~$10/mo | ~$30/mo |
|
||||
| Server compute (netcup VPS) | Shared | Shared | Dedicated |
|
||||
| Report generation (LLM) | ~$2/mo | ~$5/mo | ~$20/mo |
|
||||
| **Total marginal cost** | **~$10/mo** | **~$30/mo** | **~$100/mo** |
|
||||
| **Gross margin** | **95%** | **94%** | **93%** |
|
||||
|
||||
### Break-even
|
||||
- 10 Starter customers = $1,990/mo revenue vs. ~$200/mo infra cost
|
||||
- Infrastructure already paid for (Hermes, app1) — marginal cost only
|
||||
|
||||
---
|
||||
|
||||
## 7. Competitive Landscape
|
||||
|
||||
| Competitor | What they do | Our advantage |
|
||||
|------------|-------------|---------------|
|
||||
| Semrush | SEO keyword + domain analytics | We do actual competitive intelligence, not SEO metrics |
|
||||
| SimilarWeb | Traffic estimation | We pull from court records, corporate filings, reviews |
|
||||
| Crayon | Enterprise competitive intel ($20k+) | Same capability at 1/10th the price |
|
||||
| Klue | Competitive enablement | We're self-serve, not sales-enablement |
|
||||
| Custom analyst | $5-15k/mo for one analyst | We're automated, always-on, $199/mo |
|
||||
|
||||
**Positioning:** "Competitive intelligence" tools exist — they're just either SEO tools mislabeled, or $20k+/yr enterprise suites. The SMB market is completely unserved.
|
||||
|
||||
---
|
||||
|
||||
## 8. Go-to-Market
|
||||
|
||||
### Channel 1: Existing ITPP customers
|
||||
- Liberty Tire, Forefront Wireless, DRE — existing relationships
|
||||
- Offer them free beta access in exchange for testimonials
|
||||
|
||||
### Channel 2: Content marketing
|
||||
- Publish sample competitive reports for well-known industries (HVAC, legal, dental)
|
||||
- "We analyzed the top 5 HVAC companies in Savannah — here's what we found"
|
||||
- LinkedIn + industry subreddits
|
||||
|
||||
### Channel 3: Partnerships
|
||||
- Business coaches / consultants who resell to their clients
|
||||
- MSPs who want to offer competitive intel as a value-add
|
||||
|
||||
### Launch sequence
|
||||
1. Build MVP (2 weeks)
|
||||
2. Beta with Liberty Tire + 1-2 others (free, 30 days)
|
||||
3. Collect testimonials + refine based on feedback
|
||||
4. Public launch with 3 tiers
|
||||
5. Target: 10 paying customers by month 3
|
||||
|
||||
---
|
||||
|
||||
## 9. Open Questions
|
||||
|
||||
1. **Product name:** "Super Search for Business" is functional but not marketable. Options: IntelSight, MarketPulse, BizScope, CompassIntel?
|
||||
2. **Hosting:** Share app1 resources or deploy to a dedicated VPS?
|
||||
3. **Data retention:** How long do we keep search history per tenant? (GDPR/CCPA implications)
|
||||
4. **Rate limiting:** What's a "search" in the Starter tier? One query = one provider call, or one "session" with multiple providers?
|
||||
5. **LLM for reports:** Use deepseek-v4-pro (cheap) or Claude (better summaries)? Both?
|
||||
|
||||
---
|
||||
|
||||
## 10. Next Steps
|
||||
|
||||
- [ ] Germaine approves spec and picks a product name
|
||||
- [ ] Architect the PostgreSQL multi-tenant schema
|
||||
- [ ] Scaffold the FastAPI REST wrapper around Super Search MCP
|
||||
- [ ] Build the React portal shell with auth
|
||||
- [ ] Deploy to staging and invite beta customers
|
||||
Reference in New Issue
Block a user