Publish Docs Site / build (push) Failing after 5s
- mkdocs.yml with dark slate theme, nav for 12 ITPP projects - build-docs.sh aggregates docs from all project repos - .gitea/workflows/docs-publish.yml for nightly rebuild+deploy - README and CHANGELOG for the itpp-docs repo itself - docs-source/ populated from all 12 repos - site/ ready for deployment to docs.itpropartner.com
1 line
193 KiB
JSON
1 line
193 KiB
JSON
{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"],"fields":{"title":{"boost":1000.0},"text":{"boost":1.0},"tags":{"boost":1000000.0}}},"docs":[{"location":"","title":"IT Pro Partner Documentation","text":"<p>Welcome to the IT Pro Partner centralized documentation site.</p>"},{"location":"#projects","title":"Projects","text":"Project Description Repo ITPP Infrastructure Server inventory, DNS, architecture Repo ITPP Standards Documentation standards & templates Repo TransitPin White-label transportation portal Repo HomeLab Home lab infrastructure automation Repo Scripts Operations and automation scripts Repo FleetTracker360 GPS fleet tracking platform Repo Shark Game Shark Attack Fantasy League Repo VerdictTank Product review and validation platform Repo Apex Track Track event management Repo BoxPilot Logistics operations platform Repo OSINT Tool OSINT people search & skip tracing Repo LaunchCheck Startup validation SaaS Repo"},{"location":"#about","title":"About","text":"<p>This site is auto-generated by mkdocs-material from source repositories hosted on Gitea. Rebuilt nightly via Gitea Actions.</p>"},{"location":"apex-track/","title":"apex-track","text":"<p>Owner: Germaine | Status: PLANNED Last Updated: 2026-08-09</p> <p>Apex Track is a track event and racing experience management platform. Designed for track day organizers, racing clubs, and motorsport venues to manage event scheduling, participant registration, timing and scoring, and live results publishing.</p>"},{"location":"apex-track/#tech-stack","title":"Tech Stack","text":"<ul> <li>TBD \u2014 architecture and stack decisions pending</li> </ul>"},{"location":"apex-track/#quick-start","title":"Quick Start","text":"<pre><code>git clone https://git.itpropartner.com/ippadmin/apex-track.git\ncd apex-track\n# Project in early planning phase \u2014 implementation to follow\n</code></pre>"},{"location":"apex-track/#related","title":"Related","text":"<ul> <li>itpp-infrastructure \u2014 server inventory, DNS</li> <li>itpp-standards \u2014 docs standards and templates</li> </ul>"},{"location":"apex-track/CHANGELOG/","title":"Apex Track Experience \u2014 CHANGELOG","text":""},{"location":"apex-track/CHANGELOG/#2026-07-10-initial","title":"2026-07-10 \u2014 Initial","text":"<ul> <li>Created project repository and directory structure.</li> </ul>"},{"location":"boxpilot/","title":"boxpilot","text":"<p>Owner: Germaine | Status: PLANNED Last Updated: 2026-08-09</p> <p>BoxPilot is a logistics operations platform for freight, shipping, and delivery management. Designed to streamline dispatch, route optimization, carrier management, and shipment tracking for logistics operations.</p>"},{"location":"boxpilot/#tech-stack","title":"Tech Stack","text":"<ul> <li>TBD \u2014 architecture and stack decisions pending</li> </ul>"},{"location":"boxpilot/#quick-start","title":"Quick Start","text":"<pre><code>git clone https://git.itpropartner.com/ippadmin/boxpilot.git\ncd boxpilot\n# Project in early planning phase \u2014 implementation to follow\n</code></pre>"},{"location":"boxpilot/#related","title":"Related","text":"<ul> <li>itpp-infrastructure \u2014 server inventory, DNS</li> <li>itpp-standards \u2014 docs standards and templates</li> </ul>"},{"location":"boxpilot/CHANGELOG/","title":"BoxPilot Logistics \u2014 CHANGELOG","text":""},{"location":"boxpilot/CHANGELOG/#2026-07-10-initial","title":"2026-07-10 \u2014 Initial","text":"<ul> <li>Created project repository and directory structure.</li> </ul>"},{"location":"fleettracker360/","title":"fleettracker360","text":""},{"location":"fleettracker360/#overview","title":"Overview","text":"<p>Self-hosted GPS tracking using Traccar (open source) with live dashboard, ETA predictions, vehicle telemetry, and Sho'Nuff integration.</p>"},{"location":"fleettracker360/#architecture","title":"Architecture","text":"<pre><code>iPhone (Traccar Client) \u2192 Traccar Server (Docker) \u2192 HERE Maps API (traffic)\nOBD2 dongles \u2192 \u2192 Sho'Nuff (ETAs, alerts)\nGarrison's iPhone \u2192 \u2192 Live Dashboard (ops portal)\n</code></pre>"},{"location":"fleettracker360/#tech-stack","title":"Tech Stack","text":"<ul> <li>Traccar \u2014 GPS tracking server (Docker)</li> <li>Traccar Client \u2014 iOS/Android app for phone tracking</li> <li>HERE Maps API \u2014 Traffic-aware routing (250k free transactions/mo)</li> <li>Custom Dashboard \u2014 Dark theme, live-updating HTML/JS</li> <li>Sho'Nuff \u2014 AI agent for ETA queries, alerts, geofencing</li> <li>Domain: fleettracker360.com (Cloudflare proxied)</li> </ul>"},{"location":"fleettracker360/#status","title":"Status","text":"<ul> <li>[ ] Fresh Traccar Docker deployment on netcup</li> <li>[ ] iOS Traccar Client setup (Germaine + Garrison)</li> <li>[ ] OBD2 dongle pairing (specs TBD)</li> <li>[ ] HERE API key and routing integration</li> <li>[ ] Live dashboard design and deploy</li> <li>[ ] ETA automation (Sho'Nuff queries)</li> <li>[ ] Geofence alerts (home, office, school)</li> <li>[ ] Cancel old fleettracker Hetzner server</li> </ul>"},{"location":"fleettracker360/#directory-structure","title":"Directory Structure","text":"<pre><code>fleettracker/\n\u251c\u2500\u2500 README.md <- This file\n\u251c\u2500\u2500 server/ <- Docker compose, Traccar config\n\u251c\u2500\u2500 dashboard/ <- Frontend HTML/CSS/JS\n\u251c\u2500\u2500 api/ <- Scripts for Sho'Nuff integration\n\u2514\u2500\u2500 ideas/ <- Feature ideas, mockups, research\n</code></pre>"},{"location":"fleettracker360/CHANGELOG/","title":"FleetTracker360 \u2014 CHANGELOG","text":""},{"location":"fleettracker360/CHANGELOG/#2026-07-16-branding-gps-accuracy","title":"2026-07-16 \u2014 Branding & GPS Accuracy","text":""},{"location":"fleettracker360/CHANGELOG/#branding","title":"Branding","text":"<ul> <li>Replaced Traccar logo SVG with FleetTracker360 (GPS dot + signal waves + gradient text)</li> <li>Created custom branded login page at <code>/login.html</code> \u2014 dark navy theme, animated grid background</li> <li>HTTPS proxy: Caddy on Core (gps.fleettracker360.com) \u2192 Traccar on app2 (152.53.39.202:8082)</li> <li>DNS: gps.fleettracker360.com moved from app2 direct to Core proxy (Cloudflare proxied)</li> </ul>"},{"location":"fleettracker360/CHANGELOG/#gps-accuracy","title":"GPS Accuracy","text":"<ul> <li>Server-side filtering enabled in Traccar config:</li> <li><code>filter.enable=true</code> (Kalman smoothing)</li> <li><code>filter.accuracy=30</code> (reject cell tower triangulation >30m)</li> <li><code>filter.distance=5</code> (ignore micro-jitter <5m)</li> <li><code>geolocation.enable=true</code> (road snapping via Nominatim)</li> <li>Computed attributes added to database:</li> <li><code>motion</code>: auto-detect transport mode (walking/cycling/driving/flying)</li> <li><code>gpsQuality</code>: tag fix accuracy (excellent/good/fair/poor)</li> </ul>"},{"location":"fleettracker360/CHANGELOG/#still-pending","title":"Still Pending","text":"<ul> <li>Computed attribute device linking in UI</li> <li>Full community dashboard integration</li> </ul>"},{"location":"homelab/","title":"homelab","text":"<p>Proxmox, QNAP, and home network management. Last updated: 2026-08-09</p>"},{"location":"homelab/#hosts","title":"Hosts","text":"Host IP Role Version vm-host-01 10.1.1.100 Proxmox \u2014 docker-host-01, adguard-home PVE 8.4.1 (kernel 6.8.12-10-pve) vm-host-02 10.1.1.110 Proxmox \u2014 cleared for GPU PVE 8.4.1 (kernel 6.8.12-10-pve) QNAP TS-1635 10.1.1.40 Shared storage, 4 pools Firmware 5.2.7 docker-host-01 10.1.1.14 Docker services (13 containers) VM 105 on vm-host-01 MikroTik router 10.1.1.1 Gateway, WireGuard/L2TP endpoint \u2014"},{"location":"homelab/#connectivity","title":"Connectivity","text":"Tunnel Type Status Notes Core \u2194 MikroTik WireGuard (wg0) \u2705 Up Core's wg0, port 51821 Core \u2194 MikroTik L2TP \u2705 Up SSH: <code>shonuff@192.168.88.1</code> MikroTik \u2192 LAN Route \u2705 Up 10.1.0.0/24 reachable from Core"},{"location":"homelab/#ssh-access","title":"SSH Access","text":"<ul> <li>Key: <code>homelab</code> (ed25519) at <code>/root/.ssh/homelab</code></li> <li>Deployed to: vm-host-01, vm-host-02, QNAP (admin user), docker-host-01</li> </ul>"},{"location":"homelab/#storage","title":"Storage","text":"Pool Size Used Mount CACHEDEV4_DATA 2.0T 6% (112.8G) <code>/share/CACHEDEV4_DATA</code> CACHEDEV5_DATA 14.9T 31% (4.6T) <code>/share/CACHEDEV5_DATA</code> CACHEDEV6_DATA 15.9T 38% (6.1T) <code>/share/CACHEDEV6_DATA</code> CACHEDEV7_DATA 1.0T 4% (40.8G) <code>/share/CACHEDEV7_DATA</code>, ISO export <p>NFS exports on Proxmox hosts (as of Aug 9): - <code>qnap-nfs-backups</code> \u2014 10.1.1.40:/ISO \u2192 <code>/mnt/pve/qnap-nfs-backups</code> (1TB) - <code>qnap-nfs-iso</code> \u2014 10.1.1.40:/ISO \u2192 <code>/mnt/pve/qnap-nfs-iso</code> (1TB) - \u26a0\ufe0f <code>qnap-nfs</code> (VM migration storage) mount point <code>/mnt/pve/qnap-nfs</code> does not exist on vm-host-01</p>"},{"location":"homelab/#vms","title":"VMs","text":""},{"location":"homelab/#vm-host-01-1011100","title":"vm-host-01 (10.1.1.100)","text":"VMID Name Status RAM Disk 100 adguard-home stopped 2GB 32GB 105 docker-host-01 running 16GB 150GB"},{"location":"homelab/#vm-host-02-1011110","title":"vm-host-02 (10.1.1.110)","text":"<p>CLEARED \u2014 no VMs. Ready for GPU installation.</p>"},{"location":"homelab/#dns","title":"DNS","text":"<ul> <li>Primary AdGuard Home: docker-host-01 at <code>10.1.1.14</code></li> <li>Admin UI: <code>http://10.1.1.14:8080/login.html</code></li> <li>DNS service: port <code>53</code></li> <li>Secondary: app2 Technitium (<code>dns1.itpropartner.com</code>)</li> <li>Tertiary: vm-host-01 AdGuard (<code>10.1.1.10</code>) \u2014 VM stopped, secondary DNS unavailable</li> </ul> <p>Do not use <code>http://10.1.1.14:80</code> for AdGuard administration; that port serves NGINX Proxy Manager.</p>"},{"location":"homelab/#services-on-docker-host-01","title":"Services on docker-host-01","text":"<ul> <li>Mealie (:9925), n8n (:5678), Home Assistant (:8123)</li> <li>Jellyfin (:8096), Prowlarr/Radarr/Sonarr/Sabnzbd (media pipeline)</li> <li>AdGuard Home DNS (:53) + admin UI (:8080)</li> <li>NPM (:80/:443), Uptime Kuma (:3001)</li> <li>Dockhand (:3100), Browser-Use WebUI (:6080/:7788)</li> <li>13 containers total, ~3.8GB RAM of 16GB allocated</li> </ul>"},{"location":"homelab/#key-docs","title":"Key Docs","text":"<ul> <li><code>state-2026-08-09.md</code> \u2014 current state snapshot</li> <li><code>state-2026-07-21.md</code> \u2014 previous state (pre-August audit)</li> </ul>"},{"location":"homelab/CHANGELOG/","title":"Home Lab Changelog","text":""},{"location":"homelab/CHANGELOG/#2026-07","title":"2026-07","text":""},{"location":"homelab/CHANGELOG/#added","title":"Added","text":"<ul> <li>Documentation repo initialized \u2014 Git-tracked home lab infrastructure docs</li> <li>Host inventory: vm-host-01 (10.1.1.100), vm-host-02 (10.1.1.110), QNAP TS-1635 (10.1.1.40), docker-host-01 (10.1.1.14), MikroTik router (10.1.1.1)</li> <li>SSH key: homelab ed25519 key pair created and deployed to all hosts</li> <li>QNAP NFS storage: 3 exports configured \u2014 VM migration (2TB), backups (1TB), ISOs (1TB)</li> <li>DNS chain documented: AdGuard Home primary (docker-host-01, 10.1.1.14:53), Technitium secondary (dns1.itpropartner.com), AdGuard tertiary (vm-host-01)</li> </ul>"},{"location":"homelab/CHANGELOG/#changed","title":"Changed","text":"<ul> <li>vm-host-02 cleared \u2014 all VMs migrated to vm-host-01 or destroyed; host ready for GPU installation</li> <li>VM consolidation: destroyed template VM, Graylog, Zabbix, and FOG VMs for later rebuild</li> </ul>"},{"location":"homelab/CHANGELOG/#added_1","title":"Added","text":"<ul> <li>State snapshot (<code>state-2026-07-21.md</code>) \u2014 VM inventory, service listing, and migration state captured</li> <li>Docker-host-01 service catalog: 13 containers including Mealie, n8n, Home Assistant, Jellyfin, media pipeline (Prowlarr/Radarr/Sonarr/Sabnzbd), AdGuard Home, NPM, Uptime Kuma, Dockhand, Browser-Use WebUI</li> </ul>"},{"location":"itpp-infrastructure/","title":"itpp-infrastructure","text":"<p>Last Updated: July 17, 2026 Maintainer: Sho'Nuff</p>"},{"location":"itpp-infrastructure/#server-inventory","title":"Server Inventory","text":""},{"location":"itpp-infrastructure/#core-server","title":"Core Server","text":"<ul> <li>Hostname: Core</li> <li>IP: 152.53.192.33</li> <li>Provider: netcup RS 2000 G12</li> <li>Specs: 8 vCPU EPYC 9645, 15 GB DDR5 ECC, 512 GB NVMe</li> <li>OS: Debian 13</li> <li>Role: Hermes + Portals</li> <li>Key Services:</li> <li>Hermes Agent (Telegram + cron, 22 cron jobs)</li> <li>Caddy reverse proxy (12 domains, auto-TLS)</li> <li>Ops Portal (FastAPI, port 8090)</li> <li>Prometheus (native, port 9090) + Grafana (native, port 3002)</li> <li>Uptime Kuma (Docker, port 3001) \u2014 9+ monitors</li> <li>Vaultwarden (Docker, port 8080) \u2014 vault.iamgmb.com</li> <li>Twenty CRM (Docker) \u2014 crm.debtrecoveryexperts.com</li> <li>DocuSeal (Docker, port 3000) \u2014 sign.core.itpropartner.com</li> <li>SearXNG (Docker, port 8888)</li> <li>Komodo (Docker, port 9120)</li> <li>Tailscale, StrongSwan, WireGuard (home CCR tunnel 10.77.0.0/24)</li> <li>Redis cache</li> </ul>"},{"location":"itpp-infrastructure/#app1-server","title":"App1 Server","text":"<ul> <li>Hostname: app1</li> <li>IP: 152.53.36.131</li> <li>Provider: netcup RS 4000 G12</li> <li>Specs: 12 vCPU EPYC 9645, 32 GB DDR5 ECC, 1 TB NVMe</li> <li>OS: Debian 13</li> <li>Role: AI/Service Hub</li> <li>Key Services:</li> <li>Open WebUI (Docker, port 3000) \u2014 ai.itpropartner.com</li> <li>n8n + Postgres (Docker, port 5678) \u2014 n8n.itpropartner.com</li> <li>LiteLLM (Docker) + Postgres \u2014 admin-ai.itpropartner.com</li> <li>Mattermost Team Edition (Docker, port 8065) \u2014 noc.itpropartner.com</li> <li>Caddy (systemd, 80/443)</li> <li>4 MCP servers: Browser (:8901), Filesystem (:8900), Email (:8902), Git (:8903)</li> <li>Super Search MCP (systemd, port 8899)</li> </ul>"},{"location":"itpp-infrastructure/#app2-server","title":"App2 Server","text":"<ul> <li>Hostname: app2</li> <li>IP: 152.53.39.202</li> <li>Provider: netcup RS 4000 G12</li> <li>Specs: 12 vCPU EPYC 9645, 32 GB DDR5 ECC, 1 TB NVMe</li> <li>OS: Debian 13</li> <li>Role: Infrastructure Server</li> <li>Key Services:</li> <li>Traccar GPS (Docker, port 8082 + 5000-5150) \u2014 fleettracker360.com</li> <li>UniFi Controller (Docker, port 8443) \u2014 unifi.itpropartner.com</li> <li>UNMS/UISP (10 Docker containers) \u2014 unms.forefrontwireless.com</li> <li>Hudu (Docker) \u2014 hudu.itpropartner.com</li> <li>Caddy (4 domains)</li> </ul>"},{"location":"itpp-infrastructure/#app3-server","title":"App3 Server","text":"<ul> <li>Hostname: app3</li> <li>IP: 152.53.241.111</li> <li>Provider: netcup RS 4000 G12</li> <li>Specs: 12 vCPU EPYC 9645, 32 GB DDR5 ECC, 1 TB NVMe</li> <li>OS: Debian 13</li> <li>Role: Web Hosting + Backup Restore</li> <li>Key Services:</li> <li>CloudPanel CE \u2014 panel.itpropartner.com</li> <li>Nginx (80/443) + Percona MySQL 8.4 + PHP 8.3</li> <li>Backup Restore System (Flask, port 8090) \u2014 my.itpropartner.com/backups</li> <li>WordPress sites (7 migrated from wphost02, all live):<ul> <li>debtreecoveryexperts.com, boxpilotlogistics.com, iamgmb.com</li> <li>katiewattsdesign.com, vigilanttac.com, apextrackexperience.com</li> <li>mainwp.itpropartner.com, voipsimplicity.com, my.voipsimplicity.com</li> </ul> </li> <li>Daily snapshots: 1 AM + 1 PM, 60-day retention, /opt/backup-restore/snapshots</li> </ul>"},{"location":"itpp-infrastructure/#core-bu-warm-standby","title":"Core-BU (Warm Standby)","text":"<ul> <li>Hostname: core-bu</li> <li>IP: 5.161.225.131</li> <li>Provider: Hetzner CPX21</li> <li>Specs: 3 vCPU, 4 GB RAM, 80 GB SSD</li> <li>Role: Warm standby \u2014 auto-failover if Core down</li> <li>Watchdog: 5-min check, 4-cycle confirmation, S3 sync every 10 min</li> </ul>"},{"location":"itpp-infrastructure/#legacy-decommissioned","title":"Legacy / Decommissioned","text":"<ul> <li>old-ai: 178.156.167.181 (Hetzner CPX41) \u2014 decommissioned (LiteLLM migrated to app1)</li> <li>old app1: 87.99.144.163 (Hetzner CPX11) \u2014 deleted</li> <li>wphost02: 5.161.62.38 (Hetzner CPX21) \u2014 migrated to app3</li> <li>Ollama: Removed from Core (systemd) and app1 (Docker) Jul 17</li> </ul>"},{"location":"itpp-infrastructure/#model-fallback-chain","title":"Model Fallback Chain","text":"<p>All providers use direct API keys. GPT-5.5 quality survives through admin-ai \u2192 OpenRouter, then degrades through DeepSeek \u2192 Gemini \u2192 Grok.</p> # Model Provider Gateway Primary GPT-5.5 admin-ai Self-hosted LiteLLM (app1) Fallback 1 GPT-5.5 OpenRouter openrouter.ai Fallback 2 DeepSeek v4 Pro DeepSeek api.deepseek.com Fallback 3 Gemini 3.5 Flash Google generativelanguage.googleapis.com Fallback 4 Grok 4.5 xAI api.x.ai <p>Credits (Jul 17): DeepSeek $58, OpenRouter ~$30 remaining, OpenAI/xAI/Google on pay-as-you-go Health check: Daily 8 AM cron (<code>model-usage-check</code>)</p>"},{"location":"itpp-infrastructure/#domain-dns-map","title":"Domain / DNS Map","text":""},{"location":"itpp-infrastructure/#itpropartnercom-siteground-nameservers-only","title":"\u26a0\ufe0f itpropartner.com \u2014 SiteGround Nameservers Only","text":"<p><code>itpropartner.com</code> uses SiteGround nameservers exclusively. A Cloudflare zone exists (<code>0dc20632\u2026</code>) but is NOT authoritative \u2014 records created there silently fail. All <code>*.itpropartner.com</code> changes must be manual through SiteGround panel.</p> Domain IP Server Service core.itpropartner.com 152.53.192.33 Core Landing page + Grafana link ops.itpropartner.com 152.53.192.33 Core Ops dashboard sign.core.itpropartner.com 152.53.192.33 Core DocuSeal uptimekuma.itpropartner.com 152.53.192.33 Core Uptime monitoring gps.fleettracker360.com 152.53.192.33 Core Traccar HTTPS proxy \u2192 app2 my.itpropartner.com 152.53.192.33 Core Customer portal hub hudu.itpropartner.com 152.53.39.202 app2 IT documentation unifi.itpropartner.com 152.53.39.202 app2 UniFi controller panel.itpropartner.com 152.53.241.111 app3 CloudPanel CE ai.itpropartner.com 152.53.36.131 app1 Open WebUI n8n.itpropartner.com 152.53.36.131 app1 n8n automation admin-ai.itpropartner.com 152.53.36.131 app1 LiteLLM"},{"location":"itpp-infrastructure/#cloudflare-managed-domains","title":"Cloudflare-Managed Domains","text":"Domain IP Server Service fleettracker360.com Cloudflare app2 Fleet tracking website gps.fleettracker360.com Cloudflare \u2192 Core Core \u2192 app2 Traccar devices voipsimplicity.com Cloudflare app3 VoIP marketing site my.voipsimplicity.com Cloudflare app3 VoIP customer portal portal.debtrecoveryexperts.com 152.53.192.33 Core DRE portal crm.debtrecoveryexperts.com Cloudflare Access \u2014 DRE CRM vault.iamgmb.com 152.53.192.33 Core Vaultwarden sign.iamgmb.com 152.53.192.33 Core Document signing shark.iamgmb.com 152.53.192.33 Core Shark game"},{"location":"itpp-infrastructure/#dns-pending-create-at-siteground","title":"DNS PENDING (create at SiteGround)","text":"Subdomain \u2192 IP Service vault.itpropartner.com 152.53.36.131 Vaultwarden (after migration) status.itpropartner.com 152.53.192.33 Public status page"},{"location":"itpp-infrastructure/#backup-pipeline","title":"Backup Pipeline","text":"Backup Schedule Target Purpose hermes-live-sync Every 15 min s3://hermes-vps-backups/live/ Live state sync hermes-full-backup Daily 1 AM s3://hermes-vps-backups/hermes-full-backup/ Full Hermes backup home-router-backup Daily 6 AM s3://mikrotik-ccr-backups/ CCR config root-essentials-backup Daily 3 AM S3 /root essentials docker-volume-sync Daily 3 AM S3 Docker volumes system-config-sync Daily 4 AM S3 System configs unms-backup-sync Daily 6 AM (Core) s3://hermes-vps-backups/unms-backups/ UNMS data (pulled from app2) unifi-backup-sync Daily 2 AM (Core) s3://hermes-vps-backups/unifi-backups/ UniFi configs (pulled from app2) hudu-backup Daily 7 AM s3://hermes-vps-backups/hudu/backups/ Hudu volume dump gitea-backup Daily 8 AM s3://hermes-vps-backups/gitea/daily/ Gitea repos app1-backup Daily 2 AM s3://hermes-vps-backups/app1/ LiteLLM, n8n, OpenWebUI, MCP, Mattermost app2-backup Daily 2:30 AM s3://hermes-vps-backups/app2/ Traccar, Gitea, Hudu, UNMS, UniFi app3-backup Daily 3 AM s3://hermes-vps-backups/app3/ CloudPanel, MySQL, WordPress wphost02-backup Daily 5 AM s3://hermes-vps-backups/wphost02-backup/ Webapps + MySQL warm-standby-sync Every 10 min core-bu \u2190 S3 DR readiness"},{"location":"itpp-infrastructure/#caddy-configuration","title":"Caddy Configuration","text":""},{"location":"itpp-infrastructure/#core-1525319233","title":"Core (152.53.192.33)","text":"<pre><code>core.itpropartner.com \u2192 static files\nsign.core.itpropartner.com \u2192 localhost:3000 (DocuSeal)\nops.itpropartner.com \u2192 127.0.0.1:8090 + static\nuptimekuma.itpropartner.com \u2192 127.0.0.1:3001 (Uptime Kuma)\ngps.fleettracker360.com \u2192 app2:8082 (Traccar)\nmy.itpropartner.com \u2192 static files\nportal.debtrecoveryexperts.com \u2192 static files\nvault.iamgmb.com \u2192 localhost:8080 (Vaultwarden)\nsign.iamgmb.com \u2192 127.0.0.1:8090\nshark.iamgmb.com \u2192 static + :8083\n</code></pre>"},{"location":"itpp-infrastructure/#app1-1525336131","title":"App1 (152.53.36.131)","text":"<pre><code>ai.itpropartner.com \u2192 :3000 (Open WebUI)\nn8n.itpropartner.com \u2192 :5678 (n8n)\nadmin-ai.itpropartner.com \u2192 :4000 (LiteLLM)\napp1.itpropartner.com \u2192 static response\n</code></pre>"},{"location":"itpp-infrastructure/#app2-1525339202","title":"App2 (152.53.39.202)","text":"<pre><code>hudu.itpropartner.com \u2192 Hudu internal\ngps.fleettracker360.com \u2192 :8082 (Traccar)\nunms.forefrontwireless.com \u2192 UNMS Nginx\nunifi.itpropartner.com \u2192 :8443 (UniFi)\n</code></pre>"},{"location":"itpp-infrastructure/#service-access","title":"Service Access","text":"Service URL Location Auth Open WebUI https://ai.itpropartner.com app1 Chat UI Open WebUI Admin https://admin-ai.itpropartner.com/ui app1 user: admin, pw: LITELLM_MASTER_KEY Ops Portal https://ops.itpropartner.com Core Internal dashboard Grafana http://core.itpropartner.com:3002 Core admin/admin Uptime Kuma https://uptimekuma.itpropartner.com Core Service monitoring Vaultwarden https://vault.iamgmb.com Core Password vault CloudPanel https://panel.itpropartner.com app3 user: gmb / SQLite auth Traccar https://gps.fleettracker360.com app2 GPS fleet tracking UniFi https://unifi.itpropartner.com app2 Network controller UNMS https://unms.forefrontwireless.com app2 WISP management Hudu https://hudu.itpropartner.com app2 IT documentation n8n https://n8n.itpropartner.com app1 Automation CRM (DRE) https://crm.debtrecoveryexperts.com Cloudflare Access TwentyCRM"},{"location":"itpp-infrastructure/#mcp-access-from-open-webui","title":"MCP Access (from Open WebUI)","text":"MCP Server Location Port Tools Super Search app1 :8899 10 tools \u2014 web_search, web_extract, person_search, email_search, phone_search, etc. Browser app1 :8901 browser_navigate, browser_snapshot, browser_click, browser_type, browser_console Filesystem app1 :8900 read_file, write_file, search_files, list_dir, file_info Email app1 :8902 search_emails, send_email, get_email Git/Gitea app1 :8903 clone, commit, push, pull"},{"location":"itpp-infrastructure/#ssh-access","title":"SSH Access","text":"<ul> <li>Key: <code>itpp-infra</code> (deployed to all servers)</li> <li>User: <code>ippadmin</code> (sudo privileges)</li> <li>Root SSH: Enabled on app1, app2, app3 (key-only exception per provisioning standard)</li> <li>Core SSH: <code>ssh -i /root/.ssh/itpp-infra root@152.53.192.33</code></li> </ul>"},{"location":"itpp-infrastructure/#firewall","title":"Firewall","text":"<p>UFW is enabled on all servers. Standard rules: - Core: 22, 80, 443, 3000, 3001, 3002, 8080, 8082, 8090, 8443, 9090 - app1: 22, 80, 443, 3000, 5678, 8899, 8900, 8901, 8902, 8903 - app2: 22, 80, 443, 3000, 8080, 8082, 8089, 8443, 8843, 3478, 10001, 5000:5150 - app3: 22, 80, 443, 8443</p>"},{"location":"itpp-infrastructure/#ssl","title":"SSL","text":"<p>All SSL certificates issued via Let's Encrypt through Caddy. All certs auto-renew. No manual management needed.</p>"},{"location":"itpp-infrastructure/#notes","title":"Notes","text":"<ul> <li>DNS trap: <code>itpropartner.com</code> uses SiteGround nameservers. Cloudflare zone is NOT authoritative. Always verify with <code>dig NS domain.com</code> before creating records.</li> <li>SiteGround: No API access. All DNS changes are manual through SiteGround panel.</li> <li>Provider diversity: core-bu stays at Hetzner specifically so a netcup outage can't kill both Core and standby simultaneously.</li> <li>app3 MySQL: Root password in Vaultwarden + <code>/root/.my.cnf</code> on app3, accessible via 127.0.0.1:3306.</li> <li>CloudPanel: SQLite DB at <code>/home/clp/htdocs/app/data/db.sq3</code> \u2014 users live here, not in MySQL.</li> <li>AWS CLI PATH: All backup scripts must use <code>/opt/awscli-venv/bin/aws</code> or <code>source /opt/awscli-venv/bin/activate</code> \u2014 <code>aws</code> bare fails in cron context (PATH doesn't include venv bin). Documented in server-provisioning-standard v1.3.0.</li> <li>Backup verification: Always run at least one manual backup after provisioning a server and verify it landed in S3 \u2014 never trust cron entries alone. Silent failures (<code>aws: command not found</code>, wrong file paths, S3 permission issues) won't surface otherwise.</li> </ul>"},{"location":"itpp-infrastructure/CHANGELOG/","title":"itpp-infrastructure \u2014 CHANGELOG","text":""},{"location":"itpp-infrastructure/CHANGELOG/#2026-07-16-audit-remediation","title":"2026-07-16 \u2014 Audit Remediation","text":"<ul> <li>Created CHANGELOG.md (missing per project documentation standard)</li> <li>Project directory: <code>/root/projects/itpp-infrastructure</code></li> </ul>"},{"location":"itpp-infrastructure/app2-caddyfile-audit-2026-07-21/","title":"app2 Caddyfile Audit \u2014 July 21, 2026","text":""},{"location":"itpp-infrastructure/app2-caddyfile-audit-2026-07-21/#root-cause","title":"Root cause","text":"<p>Technitium DNS was deployed on app2. During the Caddyfile rewrite to add <code>dns1.itpropartner.com</code>, two existing services were dropped:</p> <ol> <li>UNMS \u2014 <code>reverse_proxy localhost:80</code> failed because UNMS nginx exposes port 443 (via host 8444), not port 80. Fixed by proxying via HTTPS with <code>tls_insecure_skip_verify</code>.</li> <li>Gitea \u2014 entry was completely removed. Fixed by adding <code>reverse_proxy 127.0.0.1:3001</code>.</li> </ol>"},{"location":"itpp-infrastructure/app2-caddyfile-audit-2026-07-21/#prevention","title":"Prevention","text":"<ul> <li>Always audit <code>docker ps</code> output BEFORE rewriting Caddyfile</li> <li>Verify every running container that exposes web ports has a Caddy entry</li> <li>Test each domain with <code>curl -sk</code> after Caddy reload</li> </ul>"},{"location":"itpp-infrastructure/app2-caddyfile-audit-2026-07-21/#final-caddyfile-validated","title":"Final Caddyfile (validated)","text":"<pre><code>{\n default_bind 152.53.39.202\n auto_https disable_redirects\n}\ndns1.itpropartner.com:443 \u2192 127.0.0.1:5380\ngps.fleettracker360.com:443 \u2192 localhost:8082\nfleettracker360.com:443 \u2192 localhost:8082\nunms.forefrontwireless.com:443 \u2192 https://localhost:8444 (tls_insecure_skip_verify)\nunifi.itpropartner.com:443 \u2192 https://localhost:8443 (tls_insecure_skip_verify)\nhudu.itpropartner.com:443 \u2192 localhost:3000\ngit.itpropartner.com:443 \u2192 127.0.0.1:3001\n</code></pre>"},{"location":"itpp-infrastructure/cost-control-rollout-2026-07-24/","title":"Cost Control Rollout \u2014 2026-07-24","text":"<p>Trigger: $46 additional unexpected spend on top of $155.76/3-day burn. Root cause: Unlimited LiteLLM key + GPT-5.6 Terra as default gateway model with no enforced budget, session-size, or model-allowlist guardrails.</p>"},{"location":"itpp-infrastructure/cost-control-rollout-2026-07-24/#changes-deployed","title":"Changes Deployed","text":""},{"location":"itpp-infrastructure/cost-control-rollout-2026-07-24/#1-litellm-new-constrained-team-key","title":"1. LiteLLM \u2014 New constrained team + key","text":"<ul> <li>Team <code>hermes-normal-ops</code>: $3.33 rolling daily cap + $100 rolling 30-day cap, 30 RPM, 250K TPM, max 3 parallel requests.</li> <li>Key <code>hermes-normal-ops-daily-capped</code> (<code>...I3gQ</code>): Hard $3.33/day, model-restricted to approved list only.</li> <li>Allowed models: <code>claude-sonnet-5</code>, <code>deepseek-v4-pro</code>, <code>deepseek-v4-flash</code>, <code>glm-5.2</code>, <code>MiniMax-M3</code>, <code>qwen3.7-plus</code>.</li> <li>Terra/GPT-5.6/Claude-Opus-4: explicitly excluded from this key \u2014 LiteLLM returns HTTP 403.</li> <li>Legacy key <code>sk-...itzA</code>: blocked (blocked=t in DB).</li> </ul>"},{"location":"itpp-infrastructure/cost-control-rollout-2026-07-24/#2-hermes-config-default-routing","title":"2. Hermes config \u2014 Default routing","text":"<ul> <li>Conductor: <code>claude-sonnet-5</code> (admin-ai/LiteLLM proxy).</li> <li>Fallbacks: <code>deepseek-v4-pro</code> \u2192 <code>deepseek-v4-flash</code> (admin-ai only).</li> <li>Delegation/workers: <code>deepseek-v4-pro</code>, fallback <code>deepseek-v4-flash</code>.</li> <li>No automatic escalation to premium \u2014 failure stops, not silently upgrades.</li> </ul>"},{"location":"itpp-infrastructure/cost-control-rollout-2026-07-24/#3-session-controls","title":"3. Session controls","text":"<ul> <li>Context length: 128k tokens hard ceiling.</li> <li>Compression: enabled at 50% fill, targets 20% ratio.</li> <li>Max turns: 50 per session (prevents unbounded tool-call marathons).</li> </ul>"},{"location":"itpp-infrastructure/cost-control-rollout-2026-07-24/#4-rate-limits-on-litellm-key","title":"4. Rate limits (on LiteLLM key)","text":"<ul> <li>30 RPM, 250K TPM, max 3 concurrent requests.</li> <li>429 throttle-backoff confirmed working in live logs.</li> </ul>"},{"location":"itpp-infrastructure/cost-control-rollout-2026-07-24/#verification","title":"Verification","text":"<ul> <li>Sonnet makes calls through new key: HTTP 200.</li> <li>Terra through new key: HTTP 403 (blocked).</li> <li>Old key blocked in DB: <code>blocked = t</code>.</li> <li>Live gateway confirmed routing through <code>admin-ai</code> at <code>https://admin-ai.itpropartner.com/v1/</code>.</li> </ul>"},{"location":"itpp-infrastructure/cost-control-rollout-2026-07-24/#whats-still-behavioral-not-enforced","title":"What's still behavioral (not enforced)","text":"<ul> <li>Model compliance is enforced at the proxy key layer. Cost caps are enforced at the key+team layer. Session size is a Hermes config setting \u2014 stickiness depends on the runtime respecting it.</li> </ul>"},{"location":"itpp-infrastructure/key-inventory/","title":"IT Pro Partner \u2014 Complete Key Inventory","text":"<p>Generated: 2026-07-23 Sanitized: 2026-07-23 (plaintext secrets replaced with storage references) Scope: All SSH keys, API tokens, service credentials, device keys, and passwords across the infrastructure \u26a0\ufe0f SENSITIVE: All credential values live in the listed storage locations. See Hudu for API keys (layout 49).</p>"},{"location":"itpp-infrastructure/key-inventory/#1-ssh-keys","title":"1. SSH Keys","text":"Key Name File Type Fingerprint (SHA256) Purpose Deployed To itpp-infra <code>/root/.ssh/itpp-infra</code> ED25519 <code>Jxh0bbT9dUV3q1DYYB3hHyhy/1TDj7Q8U4xrVmB38uQ</code> Universal server admin key All servers (Core, app1, app2, app3, wphost02, app1-bu, home router) wisp_rsa <code>/root/.ssh/wisp_rsa</code> ED25519 <code>MxQw1oh90NibSgN2mDbKP+07/jE4FEUEBbFAzuk5DcI</code> WISP MikroTik CCR router SSH Home CCR router (10.77.0.2 via WireGuard) germaine-personal <code>/root/.ssh/germaine-personal</code> ED25519 <code>dDbLH+bdPFcGU0mm1DpGa43ec0nUZ88YnpCi4p63y3I</code> Germaine's personal key (from his machines) Germaine's devices \u2192 Core homelab <code>/root/.ssh/homelab</code> ED25519 <code>c1nts4wR9EU06/O/k895Pb2tGZublgnGWG6NoQrK/qs</code> Homelab Proxmox/QNAP access vm-host-01, vm-host-02, QNAP NAS siteground.key <code>/root/.ssh/siteground.key</code> RSA (encrypted) N/A (RSA, encrypted) SiteGround SFTP backup (port 18765) SiteGround shared hosting authorized_keys <code>/root/.ssh/authorized_keys</code> \u2014 \u2014 Who can SSH into Core Core (this server)"},{"location":"itpp-infrastructure/key-inventory/#ssh-key-details","title":"SSH Key Details","text":"<pre><code>itpp-infra.pub: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII4dxTH11aJkBqCY8lXl1kTfZ8yXWhTcthHnt1MtAuIE itpp-infra\nwisp_rsa.pub: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDnI4UwwPL8gJvtP/Jr7qiw0Qj/bQBwi2+f03p730xvn wisp-backup\ngermaine-personal.pub: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID2H/2VMn8i7YSUUpcag6yXiI6nB3T99h7JIOs5/+73r germaine@itppartner\nhomelab.pub: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHT+727Cti4cZ2x6CiYDeDKZ9BhvCJCzTHlO9vMInHie homelab-itpp\n</code></pre>"},{"location":"itpp-infrastructure/key-inventory/#2-server-root-passwords","title":"2. Server Root Passwords","text":"<p>Storage: Hudu (Vaultwarden asset) + <code>/root/.hermes/.env</code> (netcup CCP section)</p> Server IP Provider Access Notes Core 152.53.192.33 netcup RS 2000 SSH key only <code>itpp-infra</code> key, password auth disabled app1 152.53.36.131 netcup RS 4000 Via root or ippadmin+sudo Root password in Vaultwarden app2 152.53.39.202 netcup RS 4000 Via root or ippadmin+sudo Root password in Vaultwarden app3 152.53.241.111 netcup RS 4000 Via root or ippadmin+sudo Root password in Vaultwarden app1-bu 5.161.114.8 Hetzner CPX11 itpp-infra SSH key Warm standby, offline by default"},{"location":"itpp-infrastructure/key-inventory/#admin-account-all-servers","title":"Admin Account (all servers)","text":"<ul> <li>Username: <code>ippadmin</code></li> <li>Password: \u2192 Vaultwarden entry \"ippadmin\"</li> <li>Sudo: Yes (full sudo access)</li> <li>SSH: Key-based only (<code>itpp-infra</code>)</li> </ul>"},{"location":"itpp-infrastructure/key-inventory/#3-cloud-infrastructure-api-keys","title":"3. Cloud & Infrastructure API Keys","text":"<p>Storage: All in <code>~/.hermes/.env</code> + Hudu API assets (layout 49)</p> Service Hudu Asset Storage Location Status Hetzner Cloud [177] <code>/root/.hermes/scripts/.hetzner_token</code> + <code>/root/.hermes/.env</code> \u2705 Verified Jul 22 Cloudflare DNS [165] <code>~/.hermes/.env</code> \u2192 <code>CLOUDFLARE_API_TOKEN</code> \u2705 Active (verified by health check) Wasabi S3 [176] <code>/root/.aws/credentials</code> \u2705 Active netcup API [166] <code>~/.hermes/.env</code> \u2192 <code>NETCUP_API_KEY</code> \u2705 Active netcup CCP [167] <code>~/.hermes/.env</code> \u2192 <code>NETCUP_CUSTOMER_NUMBER</code> + <code>NETCUP_CCP_PASSWORD</code> \u2705 Active Gitea (OLD/DEAD) \u2014 \u26a0\ufe0f EXPIRED \u2014 still in homelab + itpp-infrastructure remotes \u274c INVALID (verified Jul 23) Gitea (ACTIVE) \u2014 All other repos + <code>gitea-backup.sh</code> \u2014 ippadmin \u2705 Active (verified Jul 23)"},{"location":"itpp-infrastructure/key-inventory/#4-ai-provider-api-keys","title":"4. AI Provider API Keys","text":"<p>All stored in <code>/root/.hermes/.env</code> and Hudu API assets (layout 49).</p> Provider Hudu Asset Purpose Status admin-ai (LiteLLM) [126] Hermes Primary Key Primary model gateway (all models) \u2705 Active Anthropic [150] Claude models \u2705 Active OpenAI [149] GPT models \u2705 Active DeepSeek [152] DeepSeek models \u2705 Active Google Gemini [161] / [151] Gemini models \u2705 Active xAI (Grok) [154] Grok models \u2705 Active OpenRouter [153] Multi-provider routing \u2705 Active Mistral [155] Mistral models \u2705 Active Groq [157] Fast inference \u2705 Active Fireworks AI [156] Serverless inference \u2705 Active Perplexity [159] Search-augmented LLM \u2705 Active Cohere [158] Cohere models \u2705 Active AI21 Labs [160] Jurassic models \u2705 Active MiniMax [187] MiniMax M3 \u2705 Active Z.ai (GLM) [188] GLM models \u2705 Active Alibaba Qwen [189] Alibaba Qwen (DashScope) Qwen models \u2705 Active Deepgram [162] STT (voice transcription) \u2705 Active"},{"location":"itpp-infrastructure/key-inventory/#5-communication-apis","title":"5. Communication APIs","text":"<p>Storage: All in <code>~/.hermes/.env</code> + Hudu API assets (layout 49)</p> Service Hudu Asset Storage Status Telegram Bot [170] <code>~/.hermes/.env</code> \u2192 <code>TELEGRAM_BOT_TOKEN</code> \u2705 Active Twilio (Live) [184] Twilio Live <code>~/.hermes/.env</code> \u2192 <code>TWILIO_ACCOUNT_SID</code> + <code>TWILIO_AUTH_TOKEN</code> \u2705 Active Twilio (Test) [185] Twilio Test <code>~/.hermes/.env</code> \u2192 <code>TWILIO_TEST_ACCOUNT_SID</code> + <code>TWILIO_TEST_AUTH_TOKEN</code> \u2705 Active Twilio API Key [186] Twilio API Key <code>~/.hermes/.env</code> \u2192 <code>TWILIO_API_KEY_SID</code> + <code>TWILIO_API_KEY_SECRET</code> \u2705 Active ElevenLabs [148] <code>~/.hermes/config.yaml</code> (auxiliary vision / TTS) \u2705 Active Email SMTP/IMAP \u2014 <code>/root/.config/himalaya/shonuff.pass</code> \u2705 Active Email account \u2014 <code>shonuff@germainebrown.com</code> \u2014 MXroute via mail.germainebrown.com:2525 (SMTP) / :993 (IMAP) \u2705 Active"},{"location":"itpp-infrastructure/key-inventory/#6-voip-ringlogix","title":"6. VoIP / RingLogix","text":"<p>Storage: <code>~/.hermes/.env</code> + Hudu API assets</p> Credential Hudu Asset Storage RingLogix Client ID [174] <code>~/.hermes/.env</code> \u2192 <code>RINGLOGIX_CLIENT_ID</code> RingLogix Client Secret [175] <code>~/.hermes/.env</code> \u2192 <code>RINGLOGIX_CLIENT_SECRET</code> RingLogix Username \u2014 <code>~/.hermes/.env</code> \u2192 <code>RINGLOGIX_USERNAME</code> RingLogix Password \u2014 <code>~/.hermes/.env</code> \u2192 <code>RINGLOGIX_PASSWORD</code> RingLogix Domain \u2014 <code>~/.hermes/.env</code> \u2192 <code>RINGLOGIX_DOMAIN</code>"},{"location":"itpp-infrastructure/key-inventory/#7-msp-rmm-security-apis","title":"7. MSP / RMM / Security APIs","text":"<p>Storage: All in <code>~/.hermes/.env</code> + Hudu API assets</p> Service Hudu Asset Storage Status SyncroMSP [168] Token + [169] API Key <code>~/.hermes/.env</code> \u2192 <code>SYNCROMSP_API_TOKEN</code> + <code>SYNCROMSP_API_KEY</code> \u2705 Active Bitdefender GZ [172] <code>~/.hermes/.env</code> \u2192 <code>BITDEFENDER_API_KEY</code> \u2705 Active VirusTotal [171] <code>~/.hermes/.env</code> \u2192 <code>VIRUSTOTAL_API_KEY</code> \u2705 Active UISP/UNMS [173] <code>~/.hermes/.env</code> \u2192 <code>UISP_API_KEY</code> \u2705 Active"},{"location":"itpp-infrastructure/key-inventory/#8-search-data-apis","title":"8. Search & Data APIs","text":"Service Hudu Asset Storage Status Firecrawl [164] <code>~/.hermes/.env</code> \u2192 <code>FIRECRAWL_API_KEY</code> \u2705 Active Exa AI Search [163] <code>~/.hermes/.env</code> \u2192 <code>EXA_API_KEY</code> \u2705 Active"},{"location":"itpp-infrastructure/key-inventory/#9-database-credentials","title":"9. Database Credentials","text":"Database Host User Password Location Purpose MySQL (apex track) 127.0.0.1:33060 (SSH tunnel from wphost02) <code>apextrackexperience_1781549652</code> <code>wp-config.php</code> on wphost02 Apex Track Experience WordPress MySQL (CloudPanel) app3:3306 <code>root</code> <code>/root/.my.cnf</code> on app3 (also in Vaultwarden) CloudPanel WordPress hosting LiteLLM Postgres app1 (Docker) (in docker-compose) <code>/root/docker/litellm/docker-compose.yml</code> on app1 LiteLLM operational DB"},{"location":"itpp-infrastructure/key-inventory/#10-docker-services","title":"10. Docker Services","text":"Service URL Credential Location Storage Vaultwarden vault.itpropartner.com / vault.iamgmb.com Admin Token \u2192 <code>/root/docker/vaultwarden/.env</code> on Core Docker env file DRE Portal portal.debtrecoveryexperts.com Basic Auth (htpasswd) <code>/etc/caddy/dre-passwd</code> SearXNG (internal, no public endpoint) (none) \u2014 DocuSeal sign.core.itpropartner.com / sign.iamgmb.com (none / app-managed) \u2014 Uptime Kuma uptimekuma.itpropartner.com (app-managed) \u2014 Open WebUI admin-ai.itpropartner.com <code>admin@itpropartner.com</code> (password: ask Sho'Nuff) Not in .env Mealie recipe.iamgmb.com <code>G@germainebrown.com</code> (password \u2192 Vaultwarden) Vaultwarden Ops Portal ops.itpropartner.com <code>ippadmin</code> (password \u2192 <code>~/.hermes/.env</code>) <code>~/.hermes/.env</code>"},{"location":"itpp-infrastructure/key-inventory/#11-vpn-network-keys","title":"11. VPN & Network Keys","text":""},{"location":"itpp-infrastructure/key-inventory/#wireguard-core","title":"WireGuard (Core)","text":"Item Value Interface <code>wg0</code> Core Private Key \u2192 <code>/etc/wireguard/wg0.conf</code> on Core Core IP <code>10.77.0.1/24</code> Listen Port <code>51821</code> Home Peer Public Key <code>1fPwdGQ20CxlZCQZQV134olDcE91hfp78yNDeaKJZzg=</code> Home Peer Endpoint <code>76.195.7.60:13231</code> Routed Networks <code>10.1.0.0/16</code>, <code>10.2.0.0/16</code>, <code>172.16.1.0/24</code>, <code>172.18.18.0/24</code>"},{"location":"itpp-infrastructure/key-inventory/#tailscale","title":"Tailscale","text":"Node IP Type Status core 100.71.155.7 Linux \u2705 Online app1 100.90.186.109 Linux \u2705 Online app2 100.117.164.66 Linux \u2705 Online app3 100.72.15.12 Linux \u2705 Online app1-bu 100.112.23.21 Linux \u26a0\ufe0f Offline (7d) iphone-15-pro-max 100.106.231.86 iOS \u2705 Online ipp-g-lap 100.120.64.120 macOS \u2705 Online m4-mac-mini 100.116.232.65 macOS \u2705 Online"},{"location":"itpp-infrastructure/key-inventory/#12-unifi-udm-pro-device-keys","title":"12. UniFi / UDM Pro Device Keys","text":"Site Key Location Type Status Grand Lake Club UniFi Network Controller \u2192 Settings \u2192 API Local Network API Key \u2705 Stored, pending direct verification Liberty Tire UniFi Network Controller \u2192 Settings \u2192 API Local Network API Key \u2705 Stored, pending direct verification"},{"location":"itpp-infrastructure/key-inventory/#13-unknown-not-found","title":"13. Unknown / Not Found","text":"<p>The following credentials are known to exist but were not found in the standard locations:</p> Item Notes Open WebUI admin password Recovery manual says \"in .env or ask Sho'Nuff\" \u2014 NOT in current .env. Must ask Germaine. Hudu API key In skill docs (<code>hudu-management</code>) \u2014 used programmatically, not in .env. Traccar/FleetTracker360 admin Not in .env. May be Docker env or app-managed. Twenty CRM credentials Docker on Core, env at <code>/root/docker/twenty/.env</code> (not read). WordPress site DB passwords Various sites, typically in <code>wp-config.php</code> on wphost02 or app3. app1-bu root password Hetzner CPX11 \u2014 accessed via itpp-infra SSH key only. ComfyUI / Z4 GPU server allocated for TripFlow \u2014 credentials not yet documented. Home MikroTik admin SSH via <code>admin@10.77.0.2</code> with <code>wisp_rsa</code> key. RouterOS password in router config (not extracted)."},{"location":"itpp-infrastructure/key-inventory/#14-key-rotation-audit-notes","title":"14. Key Rotation & Audit Notes","text":"<ul> <li>Last full audit: 2026-07-23</li> <li>Last sanitization: 2026-07-23 \u2014 all plaintext secrets removed; use Hudu + file paths for values</li> <li>Hetzner token: Rotated Jul 22 (old tokens in Hudu were invalid)</li> <li>Twilio: Live + test credentials both present in Hudu [184]/[185]/[186]</li> <li>OpenRouter: Fallback routing key \u2014 keep active even if not primary</li> <li>admin-ai: Primary gateway \u2014 all model calls route through this</li> <li>Backups: All .env + config files included in daily Hermes backup to S3</li> </ul>"},{"location":"itpp-infrastructure/key-inventory/#recovery-priority","title":"Recovery Priority","text":"<p>If Core is lost, you need these to rebuild (in order): 1. <code>/root/.ssh/itpp-infra</code> \u2014 SSH to all servers 2. <code>/root/.hermes/.env</code> \u2014 All API keys and secrets 3. <code>/root/.aws/credentials</code> \u2014 S3 access for backups 4. <code>/root/.hermes/config.yaml</code> \u2014 Full Hermes config 5. <code>/root/.config/himalaya/shonuff.pass</code> \u2014 Email access</p>"},{"location":"itpp-infrastructure/key-inventory/#hudu-api-assets-layout-49","title":"Hudu API Assets (layout 49)","text":"<p>All API keys are documented as Hudu assets. List them via: <pre><code>GET https://hudu.itpropartner.com/api/v1/companies/1/assets?page=1&per_page=25\n</code></pre> Filter by <code>asset_layout_id == 49</code> to see all API keys with their Hudu asset IDs and storage locations.</p>"},{"location":"itpp-infrastructure/model-chain/","title":"AI Model Chain \u2014 IT Pro Partner","text":"<p>Updated: July 24, 2026</p>"},{"location":"itpp-infrastructure/model-chain/#active-fallback-chain","title":"Active Fallback Chain","text":"Tier Model Provider Notes Primary <code>claude-sonnet-5</code> <code>admin-ai</code> Conductor via LiteLLM ($3.33/day cap) Fallback 1 (F1) <code>deepseek-v4-pro</code> <code>deepseek</code> Direct DeepSeek API Fallback 2 (F2) <code>gpt-5.6-terra</code> <code>admin-ai</code> Demoted from Primary via LiteLLM ($3.33/day cap) Fallback 3 (F3) <code>grok-4.5</code> (<code>grok-2-1212</code>) <code>xai</code> Direct xAI API Fallback 4 (F4) <code>gemini-3.6-flash</code> <code>google</code> Direct Google API"},{"location":"itpp-infrastructure/model-chain/#admin-ai-virtual-key","title":"Admin-AI Virtual Key","text":"<ul> <li>Key Hash: <code>0237186aaff1ed90295c00d73103103900d4bd07252ec1806af8a4358e45d37a</code></li> <li>Allowed Models: <code>claude-sonnet-5</code>, <code>gpt-5.6-terra</code>, <code>deepseek-v4-pro</code>, <code>deepseek-v4-flash</code>, <code>glm-5.2</code>, <code>MiniMax-M3</code>, <code>qwen3.7-plus</code></li> <li>Daily Budget Cap: $3.33 / day</li> </ul>"},{"location":"itpp-infrastructure/project-log/","title":"Project Log \u2014 All Completed Projects","text":""},{"location":"itpp-infrastructure/project-log/#2026-07-20","title":"2026-07-20","text":""},{"location":"itpp-infrastructure/project-log/#ops-portal-audit-and-overhaul","title":"Ops Portal Audit and Overhaul","text":"<ul> <li>Full audit of all 11 pages, 7 API endpoints, and 5 dashboard widgets</li> <li>Fixed 15 bugs: auth guards, cache-busting, mobile nav, page titles, missing icons, data keys</li> <li>Added 3 new widgets: Wazuh Security, Bitdefender GravityZone, Alerts and Notifications</li> <li>Standardized credentials: ippadmin (password \u2192 Vaultwarden / <code>~/.hermes/.env</code>)</li> <li>Added critical service protection (hermes/caddy/ops-portal restart blocked via API)</li> <li>Server list cleaned up (7\u21925), dependency diagram fixed, config page scripts listing</li> </ul>"},{"location":"itpp-infrastructure/project-log/#backup-restore-enhancements","title":"Backup-Restore Enhancements","text":"<ul> <li>Added manual backup with domain dropdown and note field</li> <li>Added restore history logging with formatted 4-column table</li> <li>Fixed Caddy routing and timeouts (restore was returning 404 via proxy)</li> <li>Fixed mobile toggle on domain expansion cards</li> <li>9 WordPress sites under daily backup (1 AM and 1 PM)</li> </ul>"},{"location":"itpp-infrastructure/project-log/#docs-written","title":"Docs Written","text":"<ul> <li><code>/root/projects/ops-portal/README.md</code> + <code>CHANGELOG.md</code></li> <li><code>/root/projects/backup-restore/README.md</code> + <code>CHANGELOG.md</code></li> </ul>"},{"location":"itpp-infrastructure/project-log/#2026-07-17-backup-restore-initial-deployment","title":"2026-07-17 \u2014 Backup-Restore Initial Deployment","text":"<ul> <li>Flask backup/restore app deployed on app3 (152.53.241.111)</li> <li>Daily snapshots scheduled at 1 AM and 1 PM</li> <li>Caddy reverse proxy from my.itpropartner.com</li> <li>9 WordPress sites configured</li> </ul>"},{"location":"itpp-infrastructure/project-log/#2026-07-21-home-lab-consolidation","title":"2026-07-21 \u2014 Home Lab Consolidation","text":""},{"location":"itpp-infrastructure/project-log/#proxmox-migration","title":"Proxmox Migration","text":"<ul> <li>vm-host-02 VMs migrated/destroyed: graylog, zabbix, fog, Ubuntu-Server</li> <li>vm-host-01 now hosts: docker-host-01, adguard-home</li> <li>vm-host-02 cleared for GPU installation (RTX 3090 pending verification)</li> <li>QNAP NFS shared storage created (2TB pool, mounted on both Proxmox hosts)</li> </ul>"},{"location":"itpp-infrastructure/project-log/#dns-infrastructure","title":"DNS Infrastructure","text":"<ul> <li>Technitium DNS deployed on app2 (dns1.itpropartner.com)</li> <li>DoH upstreams: Quad9, Cloudflare, Google</li> <li>Home DNS chain: docker-host-01 AdGuard \u2192 dns1 Technitium \u2192 vm-host-01 AdGuard</li> <li>Firewall locked: port 53 restricted to 76.195.7.60</li> </ul>"},{"location":"itpp-infrastructure/project-log/#twilio","title":"Twilio","text":"<ul> <li>Toll-free number verification submitted for IT Pro Partner</li> <li>Use case: customer notifications, appointment reminders, IVR</li> </ul>"},{"location":"itpp-infrastructure/project-log/#mattermost","title":"Mattermost","text":"<ul> <li>Branding configured: IT Pro Partner NOC</li> <li>Channel structure designed (13 channels)</li> <li>Mobile push investigation: HPNS required for background notifications</li> </ul>"},{"location":"itpp-infrastructure/project-log/#gift-a-roast","title":"Gift-a-Roast","text":"<ul> <li>Domain giftaroast.com purchased, DNS live (Cloudflare \u2192 app1)</li> <li>ElevenLabs TTS + Deepgram STT keys verified</li> <li>Architecture: Twilio Voice \u2192 STT \u2192 AI \u2192 TTS \u2192 caller</li> </ul>"},{"location":"itpp-infrastructure/project-log/#uptime-kuma","title":"Uptime Kuma","text":"<ul> <li>Backed up (361MB, 25 monitors), updated to latest</li> </ul>"},{"location":"itpp-infrastructure/project-log/#irs","title":"IRS","text":"<ul> <li>Name change letter drafted: CG Premier Transport LLC \u2192 IT Pro Partner LLC</li> <li>Georgia Secretary of State filing confirmed</li> </ul>"},{"location":"itpp-infrastructure/project-log/#skills-updated","title":"Skills Updated","text":"<ul> <li>10 skills patched: docker-service-deployment, home-lab-*, server-architecture-plan, twilio-10dlc, vaultwarden-management, voip-portal, hudu, syncromsp, recurring-information-scout</li> </ul>"},{"location":"itpp-infrastructure/projects-master-readme/","title":"IT Pro Partner / GMB Projects","text":"<p>Master index of all internal and client projects.</p> <ul> <li>Debt Recovery Experts (DRE): A specialized debt recovery platform focused on Texas mechanics liens and B2B collections. Handles client intake, compliance with Texas law, fee structures, and deliverables. (IN DEVELOPMENT)</li> <li>Shark Attack Fantasy League: A fantasy league game where players draft coastal regions and earn points based on real-world shark sightings, bites, and fatalities. (IN DEVELOPMENT)</li> <li>IT Pro Partner Infrastructure: Management of IT Pro Partner server infrastructure, backups, security baselines, and disaster recovery plans. (LIVE)</li> <li>OSINT People Search: An Open Source Intelligence tool for performing background checks, compiling data broker reports, and removing personal information. (IN DEVELOPMENT)</li> <li>Apex Track Experience: Website and operations platform for track day experiences, vehicle registrations, and event logistics. (PLANNED)</li> <li>BoxPilot Logistics: Logistics and shipping management platform. (PLANNED)</li> </ul>"},{"location":"itpp-infrastructure/super-search-cf-bypass/","title":"Super Search \u2014 Cloudflare Bypass","text":"<p>Added: July 21, 2026 Version: 2.1.0</p>"},{"location":"itpp-infrastructure/super-search-cf-bypass/#extraction-chain","title":"Extraction Chain","text":"Tier Provider What it handles Fallback Trigger 1 Trafilatura Normal sites Error OR CF challenge detected 2 Browserless Chrome CF-protected sites Chrome render + Trafilatura 3 Firecrawl Everything else API-based extraction"},{"location":"itpp-infrastructure/super-search-cf-bypass/#cf-detection","title":"CF Detection","text":"<p>Nine detection markers for caught challenge pages (from Hound's code + additional): - cf-turnstile, challenges.cloudflare.com/turnstile - cf_chl_opt, __cf_chl - cf-browser-verification, challenge-platform, cf-mitigated - \"Checking your browser\", \"Just a moment\"</p>"},{"location":"itpp-infrastructure/super-search-cf-bypass/#infrastructure","title":"Infrastructure","text":"<ul> <li>Browserless Chrome on app1 (152.53.36.131), port 3005</li> <li>Caddy proxy: app1:3006 \u2192 localhost:3005</li> <li>Firewall: only Core (152.53.192.33) can reach port 3006</li> <li>Super Search: <code>/root/docker/super-search/server.py</code></li> </ul>"},{"location":"itpp-infrastructure/super-search-cf-bypass/#verify","title":"Verify","text":"<pre><code># Test CF bypass\ncd /root/docker/super-search && source venv/bin/activate\npython3 -c \"\nfrom server import _extract_one\nimport asyncio\nr = asyncio.run(_extract_one('https://nowsecure.nl'))\nprint(r['provider']) # Should be 'trafilatura' or 'browserless'\n\"\n</code></pre>"},{"location":"itpp-infrastructure/super-search-cf-bypass/#v21-features-added-july-21-2026","title":"v2.1 Features (Added July 21, 2026)","text":""},{"location":"itpp-infrastructure/super-search-cf-bypass/#13-tools","title":"13 Tools","text":"# Tool Description 1-10 Original 10 Search, extract, lookup, suggest, images 11 <code>web_search_fast</code> Parallel racing: all providers fire simultaneously 12 <code>screenshot</code> Browserless Chrome \u2192 base64 PNG 13 <code>circuit_status</code> Provider health states (closed/open/half-open)"},{"location":"itpp-infrastructure/super-search-cf-bypass/#circuit-breaker","title":"Circuit Breaker","text":"<ul> <li>8 provider circuits: 3 failures \u2192 open for 60s</li> <li>Prevents hammering dead providers</li> <li>Auto-recovers when provider comes back</li> </ul>"},{"location":"itpp-infrastructure/super-search-cf-bypass/#parallel-racing","title":"Parallel Racing","text":"<ul> <li><code>web_search_fast</code>: SearXNG \u2225 Exa \u2225 DuckDuckGo \u2225 Wikipedia</li> <li>First successful result wins \u2014 others cancelled</li> <li>Typically 2-3x faster than sequential fallback</li> </ul>"},{"location":"itpp-infrastructure/super-search-cf-bypass/#screenshot","title":"Screenshot","text":"<ul> <li>Browserless Chrome on port 3006 (Caddy HTTP proxy)</li> <li>Full-page or viewport capture</li> <li>Base64-encoded PNG in JSON response</li> </ul>"},{"location":"itpp-infrastructure/backup-restore/","title":"Backup-Restore \u2014 my.itpropartner.com/backups/","text":""},{"location":"itpp-infrastructure/backup-restore/#architecture","title":"Architecture","text":"<ul> <li>Server: app3 (152.53.241.111, netcup RS 4000)</li> <li>Backend: Flask Python app at <code>/opt/backup-restore/app/app.py</code> (port 8090)</li> <li>Proxy: Caddy on Core \u2192 reverse_proxy to 152.53.241.111:8090 with 300s timeouts</li> <li>Snapshots: <code>/opt/backup-restore/snapshots/<domain>/<timestamp>/</code></li> <li>Scheduled: <code>0 1,13 * * * /opt/backup-restore/snapshot.sh</code> \u2014 1 AM and 1 PM daily</li> <li>Systemd: <code>backup-restore.service</code></li> <li>Retention: 30 days (auto-cleanup)</li> </ul>"},{"location":"itpp-infrastructure/backup-restore/#sites-backed-up-9-domains","title":"Sites Backed Up (9 domains)","text":"<p>apextrackexperience.com, boxpilotlogistics.com, debtrecoveryexperts.com, iamgmb.com, katiewattdesign.com, katiewattsdesign.com, mainwp.itpropartner.com, vigilanttac.com, voipsimplicity.com</p>"},{"location":"itpp-infrastructure/backup-restore/#snapshot-contents","title":"Snapshot Contents","text":"<p>Each snapshot directory contains: - <code>files.tar.gz</code> \u2014 WordPress document root tarball - <code>database.sql</code> \u2014 MySQL dump - <code>size.txt</code> \u2014 Total backup size in bytes - <code>note.txt</code> \u2014 Optional manual backup note</p>"},{"location":"itpp-infrastructure/backup-restore/#api-endpoints","title":"API Endpoints","text":"Method Path Auth Description GET /backups/ No Backup dashboard page POST /api/backup No Trigger manual backup POST /api/restore No Restore a snapshot POST /api/delete No Delete a snapshot GET /api/download// No Download snapshot archive GET /api/log No Restore history"},{"location":"itpp-infrastructure/backup-restore/#caddy-routes-on-core","title":"Caddy Routes (on Core)","text":"<pre><code>handle /api/backup \u2192 app3:8090\nhandle /api/restore \u2192 app3:8090 (flush_interval -1, 300s timeouts)\nhandle /api/download/* \u2192 app3:8090\nhandle /api/log \u2192 app3:8090\nhandle_path /backups/* \u2192 app3:8090 (300s timeouts)\n</code></pre>"},{"location":"itpp-infrastructure/backup-restore/#recovery","title":"Recovery","text":"<pre><code>systemctl restart backup-restore\n# Manual snapshot:\n/opt/backup-restore/snapshot.sh\n# Manual restore via curl:\ncurl -X POST https://my.itpropartner.com/api/restore \\\n -H \"Content-Type: application/json\" \\\n -d '{\"domain\":\"katiewattdesign.com\",\"snapshot\":\"2026-07-20_130001\"}'\n</code></pre>"},{"location":"itpp-infrastructure/backup-restore/ARCHITECTURE/","title":"Backup-Restore \u2014 Architecture","text":""},{"location":"itpp-infrastructure/backup-restore/ARCHITECTURE/#topology","title":"Topology","text":"<pre><code> INTERNET\n |\n [Caddy on Core]\n my.itpropartner.com\n |\n +---------------+---------------+\n | | |\n /backups/* /api/restore /api/backup\n /api/log /api/download /api/delete\n | | |\n +-------+-------+-------+-------+\n |\n app3 (152.53.241.111)\n netcup RS 4000\n |\n [Flask :8090]\n /opt/backup-restore/\n |\n +-------------------+-------------------+\n | | |\n snapshot.sh app.py (UI+API) snapshots/\n (cron 1AM,1PM) Jinja templates /opt/backup-restore/\n | | snapshots/<domain>/\n v v |\n [tar files] [render HTML] +------+------+\n [mysqldump] [REST API] | | |\n | | .tar.gz .sql note.txt\n v v\n /opt/backup-restore/ [Browser]\n snapshots/<domain>/\n <timestamp>/\n</code></pre>"},{"location":"itpp-infrastructure/backup-restore/ARCHITECTURE/#data-flow-manual-backup","title":"Data Flow \u2014 Manual Backup","text":"<pre><code>Browser (user clicks \"Backup Now\")\n |\n |-- POST /api/backup {\"domain\":\"x.com\",\"note\":\"pre-deploy\"}\n | |\n | v\n | Caddy \u2192 app3:8090\n | |\n | v\n | Flask api_backup()\n | |\n | |-- Parse nginx config \u2192 find htdocs path\n | |-- tar -czf files.tar.gz (timeout 300s)\n | |-- Parse wp-config.php \u2192 find DB_NAME\n | |-- mysqldump \u2192 database.sql (timeout 300s)\n | |-- Save note.txt, size.txt\n | |-- Return {\"ok\":true, \"snapshot\":\"<timestamp>\"}\n | |\n | v\n | snapshots/x.com/2026-07-20_163208/\n | files.tar.gz (16MB)\n | database.sql (74KB)\n | note.txt (\"pre-deploy\")\n | size.txt\n |\n v\nBrowser reloads \u2192 new snapshot in list\n</code></pre>"},{"location":"itpp-infrastructure/backup-restore/ARCHITECTURE/#data-flow-restore","title":"Data Flow \u2014 Restore","text":"<pre><code>Browser (user clicks Restore on a snapshot)\n |\n |-- POST /api/restore {\"domain\":\"x.com\",\"snapshot\":\"2026-07-20_130001\"}\n | |\n | v\n | Caddy \u2192 app3:8090 (flush_interval -1, 300s timeouts)\n | |\n | v\n | Flask api_restore()\n | |\n | |-- Find snapshot path\n | |-- tar -xzf files.tar.gz \u2192 htdocs (timeout 300s)\n | |-- mysql < database.sql \u2192 WordPress DB (timeout 300s)\n | |-- chown -R site-user:site-user\n | |-- Log to restore.log: \"TS|x.com|snap_id|OK\"\n | |-- Return {\"ok\":true, \"msg\":\"x.com restored to <snap>\"}\n | |\n | v\n | Site is restored\n |\n v\nBrowser shows success toast \u2192 Restore History updates\n</code></pre>"},{"location":"itpp-infrastructure/backup-restore/ARCHITECTURE/#components","title":"Components","text":""},{"location":"itpp-infrastructure/backup-restore/ARCHITECTURE/#1-flask-app-optbackup-restoreappapppy","title":"1. Flask App (<code>/opt/backup-restore/app/app.py</code>)","text":"<ul> <li>Single-file Flask application, port 8090</li> <li>Jinja2 templating for backup dashboard (render_template_string)</li> <li>6 API endpoints (backup, restore, delete, download, log, index)</li> <li>All HTML/CSS/JS inline in a single Python triple-quoted string</li> <li>No auth \u2014 accessible via Caddy-only routing</li> <li>Systemd: <code>backup-restore.service</code></li> </ul>"},{"location":"itpp-infrastructure/backup-restore/ARCHITECTURE/#2-snapshot-engine-optbackup-restoresnapshotsh","title":"2. Snapshot Engine (<code>/opt/backup-restore/snapshot.sh</code>)","text":"<ul> <li>Bash script, runs at 1 AM and 1 PM via cron</li> <li>Iterates all WordPress sites in <code>/etc/nginx/sites-enabled/</code></li> <li>Creates: files.tar.gz (document root), database.sql (MySQL dump)</li> <li>Auto-cleanup: deletes snapshots older than 30 days</li> <li>Log: <code>/opt/backup-restore/logs/snapshots.log</code></li> </ul>"},{"location":"itpp-infrastructure/backup-restore/ARCHITECTURE/#3-snapshot-storage-optbackup-restoresnapshots","title":"3. Snapshot Storage (<code>/opt/backup-restore/snapshots/</code>)","text":"<ul> <li>Structure: <code>/<domain>/<YYYY-MM-DD_HHMMSS>/</code></li> <li>9 WordPress domains, 10 snapshots each (10 days retention shown)</li> <li>Average snapshot size: 16MB files + 74KB database</li> <li>Total: ~1.4GB for full snapshot set</li> </ul>"},{"location":"itpp-infrastructure/backup-restore/ARCHITECTURE/#4-restore-log-optbackup-restorelogsrestorelog","title":"4. Restore Log (<code>/opt/backup-restore/logs/restore.log</code>)","text":"<ul> <li>Pipe-delimited format: <code>timestamp|domain|snapshot_id|status</code></li> <li>Written by api_restore() on every restore attempt</li> <li>Read by /api/log \u2192 displayed in Restore History table</li> <li>Last 50 entries retained</li> </ul>"},{"location":"itpp-infrastructure/backup-restore/ARCHITECTURE/#5-caddy-proxy-on-core","title":"5. Caddy Proxy (on Core)","text":"<ul> <li><code>handle /api/backup</code> \u2192 app3:8090</li> <li><code>handle /api/restore</code> \u2192 app3:8090 (flush_interval -1, 300s read/write timeouts)</li> <li><code>handle /api/download/*</code> \u2192 app3:8090</li> <li><code>handle /api/log</code> \u2192 app3:8090</li> <li><code>handle_path /backups/*</code> \u2192 app3:8090 (300s timeouts for long restores)</li> <li>Domain: my.itpropartner.com</li> </ul>"},{"location":"itpp-infrastructure/backup-restore/ARCHITECTURE/#9-hosted-wordpress-sites","title":"9 Hosted WordPress Sites","text":"<p>All served by CloudPanel on app3, backed up by this system:</p> Domain htdocs Path DB Pattern apextrackexperience.com /home/apx/htdocs/apextrackexperience.com wp-config DB_NAME boxpilotlogistics.com /home/boxpilotlogistics/htdocs/boxpilotlogistics.com wp-config DB_NAME debtrecoveryexperts.com /home/debtrecoveryexperts/... wp-config DB_NAME iamgmb.com /home/iamgmb/... wp-config DB_NAME katiewattdesign.com /home/katiewattdesign/htdocs/katiewattdesign.com wp-config DB_NAME katiewattsdesign.com /home/katiewattsdesign/... wp-config DB_NAME mainwp.itpropartner.com /home/mainwp/... wp-config DB_NAME vigilanttac.com /home/vigilanttac/... wp-config DB_NAME voipsimplicity.com /home/voipsimplicity/... wp-config DB_NAME"},{"location":"itpp-infrastructure/backup-restore/ARCHITECTURE/#key-design-decisions","title":"Key Design Decisions","text":"<ol> <li> <p>Single-file Flask app: No package structure needed \u2014 the app has 6 endpoints and one HTML template. Keeping it in one file makes deployment trivial (scp + systemctl restart).</p> </li> <li> <p>Caddy on Core as single entry point: app3 isn't exposed to the internet directly. All access goes through Core's Caddy with proper timeouts. The restore operation takes 30-45s and Caddy's default proxy timeout was killing connections mid-operation.</p> </li> <li> <p>Tar + mysqldump over rsync: Snapshots are point-in-time archives, not incremental backups. Each snapshot is self-contained (files.tar.gz + database.sql). Restore is a single operation with no dependency chain.</p> </li> <li> <p>No auth on backup API: The endpoints have no authentication. Access is controlled by Caddy routing \u2014 only requests through my.itpropartner.com reach the app. Internal network only.</p> </li> </ol>"},{"location":"itpp-infrastructure/backup-restore/CHANGELOG/","title":"Backup-Restore Changelog","text":""},{"location":"itpp-infrastructure/backup-restore/CHANGELOG/#2026-07-20-restore-logging-and-manual-backup","title":"2026-07-20 \u2014 Restore logging and manual backup","text":""},{"location":"itpp-infrastructure/backup-restore/CHANGELOG/#added","title":"Added","text":"<ul> <li>Backup Now button: Green \"+ Backup Now\" button on backup page</li> <li>Domain dropdown: Select element with all 9 hosted domains</li> <li>Note field: Optional \"why\" note saved as note.txt in snapshot</li> <li>Restore History section: Auto-expanded table at bottom \u2014 Domain, Snapshot, Date/Time, Status</li> <li>Restore logging: Every restore writes to <code>/opt/backup-restore/logs/restore.log</code></li> <li>Status formatting: Green OK / red FAILED with centered status column</li> </ul>"},{"location":"itpp-infrastructure/backup-restore/CHANGELOG/#fixed","title":"Fixed","text":"<ul> <li>Restore timing out: Caddy flush_interval added + 300s transport timeouts</li> <li>Route ordering: <code>/api/restore</code> decorator was stacked on backup function \u2192 reconnected to restore function</li> <li>API routing: <code>/api/restore</code>, <code>/api/backup</code>, <code>/api/log</code> not proxied \u2192 added to Caddy config</li> <li>Mobile toggle: Inline <code>display:none</code> on site tables removed \u2192 CSS class toggle now works</li> <li>Mobile touch: role=\"button\", tabindex=\"0\", Enter key support added to card headers</li> <li>Auto-expand first domain: Removed \u2014 all domains now start collapsed</li> <li>Restore History auto-expanded: tbl-log has class=\"show\", arrow is \u25bc</li> </ul>"},{"location":"itpp-infrastructure/backup-restore/CHANGELOG/#changed","title":"Changed","text":"<ul> <li>\"Backup Log History\" \u2192 \"Restore History\"</li> <li>Config page scripts directory now shows content when clicked</li> </ul>"},{"location":"itpp-infrastructure/backup-restore/CHANGELOG/#2026-07-17-initial-deployment","title":"2026-07-17 \u2014 Initial deployment","text":"<ul> <li>Flask app deployed on app3 as systemd service</li> <li>Snapshot script scheduled (1 AM, 1 PM)</li> <li>9 WordPress sites configured for backup</li> <li>Caddy proxy from Core via my.itpropartner.com</li> </ul>"},{"location":"itpp-infrastructure/ops-portal/","title":"Ops Portal \u2014 ops.itpropartner.com","text":""},{"location":"itpp-infrastructure/ops-portal/#architecture","title":"Architecture","text":"<ul> <li>Server: Core (152.53.192.33, netcup RS 2000)</li> <li>Backend: FastAPI at <code>/opt/ops-portal/server.py</code> (port 8090)</li> <li>Proxy: Caddy \u2192 reverse_proxy to 127.0.0.1:8090</li> <li>Static files: <code>/opt/ops-portal/static/</code> \u2014 11 HTML pages, ops.css, app.js, utils.js</li> <li>Auth: JWT via <code>POST /api/auth/login</code>, token in localStorage</li> <li>Data: <code>/var/www/ops/data/ops-status.json</code> (5-min collector refresh)</li> <li>Collector: <code>/root/.hermes/scripts/ops-data-collector.py</code> \u2014 Wazuh, Bitdefender, S3, UISP, system health</li> <li>Systemd: <code>ops-portal.service</code>, env from <code>/root/.hermes/.env</code></li> <li>Credentials: ippadmin (password \u2192 Vaultwarden / <code>~/.hermes/.env</code>)</li> </ul>"},{"location":"itpp-infrastructure/ops-portal/#pages-11-total","title":"Pages (11 total)","text":"Page Path Description Dashboard / System health, widgets, audit log Services /services.html Systemd service control, audit log, server column Servers /servers.html 5 servers with ping health Network /network.html UISP data (44 sites, 90 devices), DNS zones Backups /backups.html S3 bucket status (6 buckets) FleetTracker /fleettracker360.html Traccar device tracking Cron Jobs /cron.html Hermes cron jobs with expandable scripts Config /config.html Active configs, /root/.hermes/scripts/ listing Logs /logs.html Aggregated log viewer Audit /audit.html Full audit trail Costs /cost.html API cost tracking by model"},{"location":"itpp-infrastructure/ops-portal/#api-endpoints","title":"API Endpoints","text":"Method Path Auth Description POST /api/auth/login No JWT authentication GET /api/health No Health check, DB status GET /api/status JWT Full dashboard data (17 sections) GET /api/servers JWT Server list with IPs GET /api/servers/health JWT Ping health (all 7 LIVE) GET /api/audit-log?limit=N JWT Audit trail entries GET /api/ft360/status JWT FleetTracker device data"},{"location":"itpp-infrastructure/ops-portal/#critical-services-api-restart-blocked","title":"Critical Services (API restart blocked)","text":"<p>hermes, hermes-assistant, hermes-browser, caddy, ops-portal, mysql-tunnel</p>"},{"location":"itpp-infrastructure/ops-portal/#dashboard-widgets","title":"Dashboard Widgets","text":"<ul> <li>System Health \u2014 Core metrics (jobs, disk, memory, S3, APIs)</li> <li>Wazuh Security \u2014 agent count, alerts</li> <li>Bitdefender GravityZone \u2014 9 managed endpoints</li> <li>Alerts and Notifications \u2014 DR issues, backup failures, cron errors</li> <li>Quick Actions \u2014 Restart Ops Portal</li> </ul>"},{"location":"itpp-infrastructure/ops-portal/#recovery","title":"Recovery","text":"<pre><code>systemctl restart ops-portal\nsystemctl reload caddy\npython3 /root/.hermes/scripts/ops-data-collector.py\n</code></pre>"},{"location":"itpp-infrastructure/ops-portal/ARCHITECTURE/","title":"Ops Portal \u2014 Architecture","text":""},{"location":"itpp-infrastructure/ops-portal/ARCHITECTURE/#topology","title":"Topology","text":"<pre><code> INTERNET\n |\n [Caddy :443]\n |\n Core (152.53.192.33)\n |\n +---------------+---------------+\n | | |\n /api/* :8090 /data/* :files /static/*\n | | |\n [FastAPI app] ops-status.json [HTML/CSS/JS]\n server.py /var/www/ops/ /opt/ops-portal/\n | /data/ static/\n |\n +-------+-------+-------+-------+\n | | | | |\n S3 API UISP Wazuh Bitdef systemd\n (Wasabi) (FFW) (app1) (Cloud) (Core)\n</code></pre>"},{"location":"itpp-infrastructure/ops-portal/ARCHITECTURE/#data-flow","title":"Data Flow","text":"<pre><code>[Collector] [Dashboard]\n | |\n |-- python3 ops-data- |\n | collector.py |\n | |\n v |\n S3 buckets ----+ |\n UISP API ------+---> ops-status |\n Wazuh API -----+ .json ------> GET /api/status\n Bitdefender ---+ |\n systemd -------+ |\n cron jobs -----+ |\n v\n [Browser renders\n health grid,\n widgets, alerts]\n</code></pre>"},{"location":"itpp-infrastructure/ops-portal/ARCHITECTURE/#components","title":"Components","text":""},{"location":"itpp-infrastructure/ops-portal/ARCHITECTURE/#1-collector-roothermesscriptsops-data-collectorpy","title":"1. Collector (<code>/root/.hermes/scripts/ops-data-collector.py</code>)","text":"<ul> <li>Runs every 5 min via cron</li> <li>Gathers: S3 backup status (6 buckets), UISP devices (90), Wazuh agents/alerts, Bitdefender endpoints, systemd services, cron jobs, server health, disk/memory/CPU</li> <li>Timeout: 90s (was 20s \u2014 too short for 94K-file S3 bucket)</li> <li>Output: <code>/var/www/ops/data/ops-status.json</code></li> </ul>"},{"location":"itpp-infrastructure/ops-portal/ARCHITECTURE/#2-backend-optops-portalserverpy","title":"2. Backend (<code>/opt/ops-portal/server.py</code>)","text":"<ul> <li>FastAPI on port 8090</li> <li>7 API endpoints (health, status, servers, servers/health, audit-log, ft360/status)</li> <li>JWT auth from <code>/root/.hermes/.env</code> (ADMIN_USERNAME, ADMIN_PASSWORD, JWT_SECRET)</li> <li>Critical service restart protection (hermes, caddy, ops-portal blocked)</li> <li>Systemd: <code>ops-portal.service</code></li> </ul>"},{"location":"itpp-infrastructure/ops-portal/ARCHITECTURE/#3-frontend-optops-portalstatic","title":"3. Frontend (<code>/opt/ops-portal/static/</code>)","text":"<ul> <li>11 HTML pages with shared ops.css, app.js, utils.js</li> <li>Auth: login overlay \u2192 localStorage JWT \u2192 all API calls Bearer</li> <li>Auto-refresh: 60s interval + tab visibility API</li> <li>Mobile: hamburger toggle with .nav-links.open CSS</li> <li>Cache-busting: all assets versioned with timestamps</li> </ul>"},{"location":"itpp-infrastructure/ops-portal/ARCHITECTURE/#4-proxy-caddy-on-core","title":"4. Proxy (Caddy on Core)","text":"<ul> <li><code>/</code> and <code>/*.html</code> \u2192 static file server from <code>/opt/ops-portal/static/</code></li> <li><code>/api/*</code> \u2192 reverse_proxy to 127.0.0.1:8090</li> <li><code>/data/*</code> \u2192 file server from <code>/var/www/ops/data/</code></li> <li>Domain: ops.itpropartner.com</li> </ul>"},{"location":"itpp-infrastructure/ops-portal/ARCHITECTURE/#cross-service-dependencies","title":"Cross-Service Dependencies","text":"Dependency Server Purpose Fallback Wasabi S3 External Backup bucket status Shows \"Issues\" UISP API unms.forefrontwireless.com Device/site count Shows 0 devices Wazuh app1 (152.53.36.131) Agent count, alerts Shows \"Offline\" Bitdefender External API Endpoint monitoring Shows \"Offline\" Traccar app2 (152.53.39.202) FleetTracker data Dedicated endpoint Core systemd Local Service health, disk, memory N/A (local)"},{"location":"itpp-infrastructure/ops-portal/ARCHITECTURE/#auth-flow","title":"Auth Flow","text":"<pre><code>Browser Server\n | |\n |-- POST /api/auth/login ->|\n | {username, password} |\n | |-- Validate against ADMIN_USERNAME/ADMIN_PASSWORD\n | |-- Generate JWT with JWT_SECRET\n |<- {access_token} --------|\n | |\n |-- GET /api/status ------->|\n | Authorization: Bearer |\n | |-- Verify JWT\n | |-- Read ops-status.json\n |<- {full dashboard} ------|\n</code></pre>"},{"location":"itpp-infrastructure/ops-portal/ARCHITECTURE/#key-design-decisions","title":"Key Design Decisions","text":"<ol> <li> <p>Collector pattern over direct API calls: Dashboard fetches one JSON blob rather than 6 separate APIs. Single point of failure but fast rendering and offline-capable (shows last-cached data).</p> </li> <li> <p>Python/FastAPI over Node: Already have Python toolchain on Core. FastAPI is lightweight, async-native, and the ops portal is read-heavy with minimal write paths.</p> </li> <li> <p>Static HTML + vanilla JS over React/Vue: 11-page dashboard with no SPA routing. Auth via localStorage JWT. Zero build step, zero dependencies beyond ops.css.</p> </li> <li> <p>JWT over session cookies: Cross-page auth without server-side session state. Token survives page navigations and ops-portal restarts (persistent JWT_SECRET in .env).</p> </li> </ol>"},{"location":"itpp-infrastructure/ops-portal/CHANGELOG/","title":"Ops Portal Changelog","text":""},{"location":"itpp-infrastructure/ops-portal/CHANGELOG/#2026-07-20-major-audit-and-fix-session","title":"2026-07-20 \u2014 Major audit and fix session","text":""},{"location":"itpp-infrastructure/ops-portal/CHANGELOG/#fixed","title":"Fixed","text":"<ul> <li><code>/api/health</code> returning 404: Caddy <code>handle_path</code> was stripping the path \u2192 changed to <code>handle</code>, port corrected to 8090</li> <li><code>/api/servers</code> returning null: Server list now returns all 5 servers with live ping health</li> <li>Server IPs stale: app1-bu updated to 5.161.225.131, legacy entries removed</li> <li>Page titles inconsistent: All 11 pages standardized to \"X \u2014 IT Pro Partner Ops\" format</li> <li>Missing nav icons: All 11 nav items now have SVG icons</li> <li>FleetTracker360 missing from nav: Added to navigation with car icon</li> <li>Backups page no data: <code>s3_buckets</code> \u2192 <code>s3_backups</code> key fix</li> <li>FleetTracker360 page no nav: Added ops.css, app.js, utils.js includes</li> <li>Network page dark sidebar: Replaced with standard top nav bar</li> <li>Cache-busting broken: All JS/CSS references now versioned with timestamps</li> <li>Mobile nav broken: <code>.nav-links.open</code> CSS rule missing \u2192 hamburger menu now toggles properly on iOS/Android</li> <li>Auth guard race condition: IIFE scripts replaced with DOMContentLoaded event listeners \u2014 pages now load data when user is authenticated</li> <li>Cost page broken: Missing <code>loadData</code> function \u2192 defined and wired</li> <li>Dependency diagram 404: File copied to static dir, link corrected</li> <li>Logs page mangled title: Triple-nested <code><title></code> tags from sed accident \u2192 cleaned</li> <li>Config page scripts directory: Now populates directory listing when clicked</li> <li>Services page: Server column added showing \"Core (152.53.192.33)\"</li> <li>Dashboard auto-refresh on tab focus: Visibility API handler added</li> <li>Critical service protection: hermes, caddy, ops-portal restarts blocked via API</li> </ul>"},{"location":"itpp-infrastructure/ops-portal/CHANGELOG/#removed","title":"Removed","text":"<ul> <li>Duplicate server entries: \"app1 (AI Stack)\" and \"Docker Box (legacy)\"</li> <li>Server count: 7 \u2192 5 clean entries</li> </ul>"},{"location":"itpp-infrastructure/ops-portal/CHANGELOG/#changed","title":"Changed","text":"<ul> <li>Admin credentials: germaine/itpp2026! \u2192 ippadmin (password \u2192 Vaultwarden)</li> <li>JWT_SECRET made persistent in /root/.hermes/.env to survive restarts</li> <li>Collector timeout: 20s \u2192 90s to handle 94K-file S3 bucket scanning</li> </ul>"},{"location":"itpp-infrastructure/ops-portal/CHANGELOG/#jul-17-2026-initial-deployment","title":"Jul 17, 2026 \u2014 Initial deployment","text":"<ul> <li>Ops portal deployed on Core as FastAPI app</li> <li>Caddy reverse proxy configured</li> <li>10 HTML pages created</li> <li>Ops collector built for S3, system health, server status</li> </ul>"},{"location":"itpp-standards/","title":"itpp-standards","text":"<p>Owner: Germaine | Status: LIVE Last Updated: 2026-08-09</p> <p>Canonical documentation standards, templates, and CI workflows for all IT Pro Partner repositories. Use this repo as a Gitea template when creating new projects, or copy individual templates as needed.</p>"},{"location":"itpp-standards/#whats-inside","title":"What's Inside","text":"<ul> <li><code>templates/</code> \u2014 README, CHANGELOG, DESIGN.md, and MkDocs config templates for new projects</li> <li><code>templates/gitea-ci/</code> \u2014 Reusable Gitea Actions workflows (docs lint, link check, spell check)</li> <li><code>.markdownlint.json</code> \u2014 Standard Markdown linting rules for all ITPP repos</li> <li><code>.gitignore</code> \u2014 Canonical <code>.gitignore</code> for Python, Node.js, secrets, and build artifacts</li> </ul>"},{"location":"itpp-standards/#quick-start","title":"Quick Start","text":"<pre><code># Option 1: Use as Gitea template\n# In Gitea UI: New Repository \u2192 From Template: itpp-standards\n\n# Option 2: Copy templates into existing repo\ngit clone https://git.itpropartner.com/ippadmin/<your-repo>.git\ncp /path/to/itpp-standards/templates/repo-readme.md <your-repo>/README.md\ncp /path/to/itpp-standards/templates/repo-changelog.md <your-repo>/CHANGELOG.md\ncp /path/to/itpp-standards/.gitignore <your-repo>/\ncp /path/to/itpp-standards/templates/gitea-ci/docs-check.yml <your-repo>/.gitea/workflows/\n</code></pre>"},{"location":"itpp-standards/#standards","title":"Standards","text":"<ul> <li>README.md \u2014 Mandatory. Every repo must have one. Minimum 400 bytes. Follow the template.</li> <li>CHANGELOG.md \u2014 Mandatory. Reverse-chronological, user-facing, one line per change.</li> <li>DESIGN.md \u2014 When the project has a public API or multiple consumers.</li> <li>.gitea/workflows/docs-check.yml \u2014 Recommended. Lints Markdown and checks links on push.</li> </ul>"},{"location":"itpp-standards/#related","title":"Related","text":"<ul> <li>itpp-infrastructure \u2014 server inventory, DNS</li> <li>itpp-docs \u2014 aggregated docs site</li> </ul>"},{"location":"itpp-standards/CHANGELOG/","title":"ITPP Standards \u2014 CHANGELOG","text":""},{"location":"itpp-standards/CHANGELOG/#2026-08-09-initial","title":"2026-08-09 \u2014 Initial","text":"<ul> <li>Created repository with documentation templates and CI workflows.</li> <li>Added README template, CHANGELOG template, DESIGN.md template, MkDocs config template.</li> <li>Added Gitea Actions workflows: docs-check (lint + link check + spell check), docs-publish (aggregated site rebuild).</li> <li>Added canonical .gitignore and .markdownlint.json.</li> </ul>"},{"location":"launchcheck/","title":"launchcheck","text":"<p>Owner: Germaine | Status: PLANNED Last Updated: 2026-08-09 Tagline: Validate your idea before you build it.</p> <p>LaunchCheck is a startup validation SaaS built for pre-revenue founders who need to understand their competitive landscape before writing code. It delivers competitive landscape reports, pricing comparisons, feature benchmarking, OSINT dossiers on key competitors, and investor-ready summary PDFs \u2014 powered by the Super Search v2 engine that drives IntelSight, IT Pro Partner's enterprise-grade intelligence platform.</p>"},{"location":"launchcheck/#whats-inside","title":"What's Inside","text":"<ul> <li><code>docs/</code> \u2014 Product documentation and research</li> <li><code>competitive-analysis.md</code> \u2014 Full competitive landscape for IntelSight (enterprise CI) and LaunchCheck (startup validation)</li> <li><code>launchcheck-business-proposal.md</code> \u2014 Business proposal with market analysis, revenue model, GTM strategy, and financial projections</li> </ul>"},{"location":"launchcheck/#tech-stack","title":"Tech Stack","text":"<ul> <li>Platform: IntelSight shared infrastructure \u2014 Super Search v2 + Premium APIs + LLM Synthesis</li> <li>Backend: TBD \u2014 FastAPI or equivalent</li> <li>Frontend: TBD</li> <li>Target Pricing: $49/month</li> </ul>"},{"location":"launchcheck/#quick-start","title":"Quick Start","text":"<pre><code>git clone https://git.itpropartner.com/ippadmin/launchcheck.git\ncd launchcheck\n# Review docs/ for product spec and competitive analysis\n</code></pre>"},{"location":"launchcheck/#related","title":"Related","text":"<ul> <li>itpp-infrastructure \u2014 server inventory, DNS</li> <li>itpp-standards \u2014 docs standards and templates</li> </ul>"},{"location":"launchcheck/CHANGELOG/","title":"LaunchCheck \u2014 CHANGELOG","text":""},{"location":"launchcheck/CHANGELOG/#2026-07-25-project-inception","title":"2026-07-25 \u2014 Project Inception","text":"<ul> <li>Spun startup validation into a separate product from IntelSight.</li> <li>Created competitive analysis and business proposal documentation.</li> <li>Defined two-audience strategy: startup founders (LaunchCheck) vs enterprise (IntelSight).</li> </ul>"},{"location":"launchcheck/competitive-analysis/","title":"Competitive Analysis: IntelSight & LaunchCheck","text":"<p>Last Updated: July 2026 Products Analyzed: IntelSight (enterprise competitive intelligence) + LaunchCheck (startup validation) Shared Platform: Super Search v2 + Premium APIs + LLM Synthesis</p>"},{"location":"launchcheck/competitive-analysis/#table-of-contents","title":"Table of Contents","text":"<ol> <li>Executive Summary</li> <li>Market Context</li> <li>IntelSight: Competitive Landscape</li> <li>Direct Competitors</li> <li>Comparison Table: IntelSight vs Top 5</li> <li>IntelSight Competitive Positioning</li> <li>LaunchCheck: Competitive Landscape</li> <li>Direct Competitors</li> <li>Adjacent Competitors</li> <li>Comparison Table: LaunchCheck vs Top 6</li> <li>LaunchCheck Competitive Positioning</li> <li>Our Unfair Advantages</li> <li>Why Customers Choose Us</li> <li>Threat Assessment & Risk Mitigation</li> <li>Strategic Recommendations</li> </ol>"},{"location":"launchcheck/competitive-analysis/#executive-summary","title":"Executive Summary","text":"<p>IntelSight and LaunchCheck operate in two distinct but overlapping markets: enterprise competitive intelligence ($1.46B by 2030, ~20% CAGR per Mordor Intelligence) and startup validation (a fragmented, emerging market with no clear leader). Both products share the same infrastructure backbone \u2014 Super Search v2, premium APIs (Crunchbase, Hunter.io), and LLM synthesis via deepseek-v4-pro \u2014 giving them structural cost advantages that no single competitor can match.</p> <p>Key finding: IntelSight competes against incumbents charging 5\u201320\u00d7 more (Crayon $20K\u2013$40K/yr, Klue $20K\u2013$40K/yr) while offering uniquely deep OSINT enrichment and LLM-generated strategic content (SWOT reports, battle cards, war room dashboards) they don't. LaunchCheck has no direct competitor in the $49/mo \"investor-ready validation report\" niche \u2014 the market is dominated by either enterprise platforms (PitchBook $12K+/yr, CB Insights $60K+/yr) or shallow AI-opinion tools ($5\u2013$129 one-off) that lack source-linked evidence.</p> <p>The platform moat: Both products benefit from shared infrastructure, enabling a founder-to-enterprise funnel no competitor can replicate. A founder who validates with LaunchCheck today becomes a natural IntelSight customer when their company reaches $2M+ revenue.</p>"},{"location":"launchcheck/competitive-analysis/#market-context","title":"Market Context","text":""},{"location":"launchcheck/competitive-analysis/#the-competitive-intelligence-market","title":"The Competitive Intelligence Market","text":"<p>The CI tools market is projected to reach $1.46 billion by 2030, growing at nearly 20% annually (Mordor Intelligence). Gartner's 2025 Market Guide reclassified the category from \"Tools\" to \"Platforms,\" signaling maturation. Key dynamics:</p> <ul> <li>68% of B2B deals now involve at least one direct competitor (Crayon 2025 State of CI)</li> <li>76% YoY growth in AI adoption within CI teams (Competitive Intelligence Alliance)</li> <li>40% of tech/service providers predicted to use commercial CI tools by 2026 (Gartner)</li> <li>Average CI platform pricing has risen 15\u201325% YoY as incumbents add AI features</li> <li>Market is consolidating: Semrush acquired Kompyte ($10M), Meltwater acquired Owler, ZoomInfo acquired Comparably</li> </ul>"},{"location":"launchcheck/competitive-analysis/#the-startup-validation-market","title":"The Startup Validation Market","text":"<p>This is an emerging, fragmented market with no clear category leader. The rise of \"vibe coding\" (shipping MVPs over a weekend) has made validation more urgent \u2014 43% of startups fail from poor product-market fit (CB Insights). Current options fall into three buckets:</p> Type Examples Price Range Core Limitation AI-Opinion Tools ValidatorAI, VenturusAI, ChatGPT Free \u2013 $49/mo LLM training data only; no live sources; can't verify claims Demand/Pain Evidence PainMap, WorthBuild, Trend Seeker $5 \u2013 $199 one-off Only answers \"is there pain?\" \u2014 doesn't grade business viability Enterprise Platforms PitchBook, CB Insights, Crunchbase $588 \u2013 $70K+/yr Built for investors, not founders; no validation framework; no deliverables <p>LaunchCheck's position: The only tool combining live-sourced evidence with a structured validation framework and investor-ready deliverables at a founder-accessible price ($49/mo).</p>"},{"location":"launchcheck/competitive-analysis/#intelsight-competitive-landscape","title":"IntelSight: Competitive Landscape","text":""},{"location":"launchcheck/competitive-analysis/#intelsight-direct-competitors","title":"IntelSight Direct Competitors","text":""},{"location":"launchcheck/competitive-analysis/#1-crayon-the-incumbent-leader","title":"1. Crayon \u2014 The Incumbent Leader","text":"<p>Founded: 2014 | Funding: ~$40M | HQ: Boston, MA</p> Dimension Crayon IntelSight Pricing ~$15K\u2013$100K+/yr (quote-based) $2,388\u2013$17,988/yr (transparent) Tiers Essentials ($15K\u2013$25K), Professional ($25K\u2013$60K), Enterprise ($60K+) Pro ($199/mo), Growth ($499/mo), Enterprise ($1,499+/mo) Core Capability Competitor monitoring + battle cards + win/loss SEO monitoring + review sentiment + Crunchbase + OSINT + battle cards + SWOT + war room Battle Cards Dynamic, automated LLM-generated, source-linked OSINT/Enrichment Web monitoring, social media 7-provider search + Hunter.io + Crunchbase + CourtListener + OpenCorporates AI Features AI classification, Win Story Insights deepseek-v4-pro synthesis across all data sources CRM Integration Salesforce, HubSpot Planned (API-first architecture) Target Enterprise CI programs Mid-market ops directors, marketing VPs, strategy teams <p>Crayon Strengths: - Market leader with G2 leader status and 3,000+ customers - Mature win/loss analysis module - Deep Salesforce/HubSpot integrations - Strong brand and analyst recognition (Forrester, Gartner)</p> <p>Crayon Weaknesses: - Prohibitively expensive for mid-market ($15K minimum ACV) - No transparent pricing \u2014 all custom quotes, long sales cycles - No OSINT enrichment beyond web/social monitoring - No Crunchbase or Hunter.io integration - Battle cards require significant manual curation; AI features lag behind agentic competitors - Multi-year contracts with 90-day auto-renewal clauses - No multi-tenant architecture (single organization only)</p> <p>Why IntelSight Wins Against Crayon: - 5\u201310\u00d7 price advantage with transparent, predictable pricing - OSINT depth no CI platform matches (7 search providers + CourtListener + OpenCorporates) - LLM-generated strategic content (SWOT reports, war room dashboards) that Crayon requires manual creation for - Multi-tenant architecture for agencies and consultancies \u2014 Crayon is single-org only - No long-term lock-in \u2014 monthly billing with no multi-year contracts</p>"},{"location":"launchcheck/competitive-analysis/#2-klue-the-battle-card-specialist","title":"2. Klue \u2014 The Battle Card Specialist","text":"<p>Founded: 2015 | Funding: $81M (Series B, Tiger Global + Salesforce Ventures) | HQ: Vancouver, BC</p> Dimension Klue IntelSight Pricing ~$20K\u2013$40K+/yr (quote-based; no public pricing) $2,388\u2013$17,988/yr (transparent) Core Capability CI + Win-Loss analysis, Compete Agent (agentic AI) Full-spectrum CI + OSINT + strategic deliverables Battle Cards Industry-leading (9.5/10 G2); 10 auto-generated content categories LLM-generated from multi-source intelligence Win/Loss Full module (AI interviewer, expert interviews, transcript analysis) Not yet available (roadmap) OSINT/Enrichment Web monitoring, Gong/Teams call analysis, internal docs 7-provider search + Hunter.io + Crunchbase + CourtListener + OpenCorporates CRM Integration Salesforce, Slack, Gong, Microsoft 365, Teams Planned (API-first) Target Mid-market to enterprise B2B with dedicated CI/PMM teams Mid-market ops, strategy, marketing \u2014 no dedicated CI headcount required <p>Klue Strengths: - Compete Agent (launched July 2025) \u2014 the strongest agentic AI in CI, with deal-specific coaching - Win-Loss module is best-in-class; acquired DoubleCheck Research, Goldpan.ai, Ignition - 250,000+ users across 1,000+ competitive programs - Blue-chip customers: Adobe, Shopify, Zendesk, Atlassian, Salesforce, Cisco, Dell, HubSpot - G2 leader in 4 categories; Forrester Strong Performer - Strong community (Compete Network)</p> <p>Klue Weaknesses: - No public pricing \u2014 all terms require demo and custom quote - Requires dedicated CI/PMM professional \u2014 not self-serve; heavy platform management burden - No OSINT depth \u2014 web monitoring only; no Crunchbase, Hunter.io, CourtListener - Navigation difficulties when densely populated with data - Annual contracts only with 90-day auto-renewal - No free trial or free tier - No multi-tenant architecture - Win/Loss module is a separate product, not included in base CI</p> <p>Why IntelSight Wins Against Klue: - 8\u201316\u00d7 cheaper with fully transparent pricing - No dedicated CI headcount required \u2014 IntelSight is designed for ops directors and strategy teams who can't justify a full-time CI role - OSINT breadth Klue cannot touch (public records, corporate registries, court documents) - Hunter.io email discovery \u2014 Klue has no equivalent - Multi-tenant for agencies holding multiple client competitive landscapes - Strategic deliverables (SWOT, war room) that go beyond Klue's sales-focused battle cards</p>"},{"location":"launchcheck/competitive-analysis/#3-semrush-kompyte-the-digital-marketing-giant","title":"3. SEMrush + Kompyte \u2014 The Digital Marketing Giant","text":"<p>Founded: 2008 (SEMrush), 2014 (Kompyte, acquired 2022 for ~$10M) | Public: NYSE: SEMR</p> Dimension SEMrush + Kompyte IntelSight Pricing SEMrush: $117\u2013$456/mo; Kompyte: from $300/yr $199\u2013$1,499+/mo Core Capability SEO, PPC, content marketing + basic CI via Kompyte Purpose-built CI + OSINT + strategic intelligence Competitive Intel SEO competitive analysis (keywords, backlinks, traffic); Kompyte adds battle cards and web monitoring Full CI spectrum: SEO + reviews + Crunchbase + OSINT + LLM synthesis Battle Cards Yes (via Kompyte), CRM-integrated LLM-generated, source-linked OSINT/Enrichment None beyond web monitoring Full OSINT stack: 7 providers + Crunchbase + Hunter.io Target Digital marketers, SEO agencies CI and strategy professionals <p>SEMrush + Kompyte Strengths: - Best-in-class SEO data (43 trillion backlinks, 25 billion keywords) - Public company with massive scale (108,000+ paying customers) - Kompyte adds affordable CI ($300/yr starting) with CRM-integrated battle cards - Strong G2 ratings (4.5/5, 2,200+ reviews for SEMrush) - AI features advancing rapidly (Copilot, content generation)</p> <p>SEMrush + Kompyte Weaknesses: - CI is an add-on, not the core product \u2014 CI features are fragmented across .Trends, Kompyte, and Market Explorer - No Crunchbase integration for funding/market data - No OSINT enrichment beyond digital presence - Kompyte is a small side business for Semrush ($10M acquisition vs $376M annual revenue) - Kompyte missing strategy/product/market intelligence use cases (per Contify analysis) - No review sentiment analysis - No SWOT reports or war room dashboards</p> <p>Why IntelSight Wins Against SEMrush + Kompyte: - Purpose-built CI vs. SEO tool with CI bolted on - OSINT depth \u2014 SEMrush knows digital marketing, IntelSight knows company intelligence (funding, reviews, legal, corporate structure) - Unified platform \u2014 single dashboard vs. fragmented SEMrush + Kompyte experience - Crunchbase integration \u2014 critical funding/market context SEMrush lacks - SWOT + War Room \u2014 strategic deliverables SEMrush doesn't produce</p>"},{"location":"launchcheck/competitive-analysis/#4-similarweb-the-traffic-intelligence-specialist","title":"4. SimilarWeb \u2014 The Traffic Intelligence Specialist","text":"<p>Founded: 2007 | Public: NYSE: SMWB | HQ: Tel Aviv, Israel</p> Dimension SimilarWeb IntelSight Pricing Starter $149/mo, Professional $399/mo, Enterprise ~$16K+/yr Pro $199/mo, Growth $499/mo, Enterprise $1,499+/mo Core Capability Website traffic estimation + digital competitive analysis Full-spectrum CI + OSINT + strategic intelligence CI Depth Traffic sources, audience demographics, engagement metrics SEO + reviews + funding + OSINT + email discovery + LLM synthesis Battle Cards No Yes (LLM-generated) OSINT/Enrichment No Full stack Target Marketing teams, investors, media buyers CI and strategy professionals <p>SimilarWeb Strengths: - Unmatched traffic estimation \u2014 no competitor matches their traffic data depth - Multiple product lines (Web, Sales, App, Shopper Intelligence) - Public company with institutional credibility - Strong for investor due diligence</p> <p>SimilarWeb Weaknesses: - One-dimensional \u2014 traffic data only; no funding, reviews, OSINT, email discovery - No battle cards or sales enablement features - No SWOT or strategic deliverables - Enterprise pricing opaque and expensive ($16K+/yr) - Free tier extremely limited (5 results, 1 month data)</p> <p>Why IntelSight Wins Against SimilarWeb: - Multi-dimensional intelligence \u2014 traffic is one of many signals IntelSight synthesizes - Actionable deliverables (battle cards, SWOT, war room) vs. raw traffic data - Crunchbase + Hunter.io integration for company/funding intelligence - LLM synthesis turns raw data into strategic insight</p>"},{"location":"launchcheck/competitive-analysis/#5-owler-meltwater-the-news-aggregator","title":"5. Owler (Meltwater) \u2014 The News Aggregator","text":"<p>Founded: 2011 | Acquired by Meltwater (2021) | HQ: San Mateo, CA</p> Dimension Owler IntelSight Pricing Community (Free), Pro ($39/mo annual), Enterprise (custom) $199\u2013$1,499+/mo Core Capability Company news aggregation + basic competitive insights Full-spectrum CI + OSINT + strategic intelligence CI Depth News alerts, company profiles, competitor graph 7-provider search + SEO + reviews + Crunchbase + OSINT + email + LLM Battle Cards No Yes OSINT/Enrichment Basic company data Full OSINT stack <p>Owler Strengths: - Free tier with real value \u2014 good for basic company monitoring - Simple, accessible UX - Meltwater's media intelligence ecosystem - AI-powered outreach suggestions (New Owler AI)</p> <p>Owler Weaknesses: - Very shallow CI \u2014 mostly news aggregation; no SEO, reviews, funding, OSINT depth - No battle cards, SWOT reports, or war room dashboards - Limited free tier features; Pro at $39/mo still very basic - UI criticized as difficult to use - Limitations on number of tracked accounts</p> <p>Why IntelSight Wins Against Owler: - Owler is fundamentally a different product category \u2014 news alerts vs. comprehensive CI - IntelSight does everything Owler does plus 10\u00d7 more depth - Owler's Pro tier at $39/mo validates that the market wants affordable CI but can't get depth at that price \u2014 IntelSight occupies the sweet spot between Owler's shallowness and Crayon/Klue's enterprise pricing</p>"},{"location":"launchcheck/competitive-analysis/#intelsight-comparison-table","title":"IntelSight Comparison Table","text":"Feature IntelSight Crayon Klue SEMrush+Kompyte SimilarWeb Owler Starting Price (annual) $2,388/yr ~$15,000/yr ~$20,000/yr $1,404/yr (SEMrush) + $300/yr (Kompyte) $1,500/yr (Starter) $468/yr (Pro) Mid-Tier Price $5,988/yr ~$30,000/yr ~$30,000/yr $2,978/yr (Pro+) $4,788/yr (Professional) \u2014 Enterprise $17,988+/yr $60K\u2013$100K+/yr $40K+/yr $5,468/yr (Advanced) $16K+/yr Custom Transparent Pricing \u2705 Yes \u274c Quote only \u274c Quote only \u2705 Yes \u26a0\ufe0f Partial \u26a0\ufe0f Partial Multi-Tenant \u2705 Yes \u274c No \u274c No \u26a0\ufe0f Agency add-on \u274c No \u274c No SEO Monitoring \u2705 \u274c \u274c \u2705 (Best-in-class) \u26a0\ufe0f Traffic only \u274c Review Sentiment \u2705 \u274c \u274c \u274c \u274c \u274c Crunchbase Integration \u2705 \u274c \u274c \u274c \u274c \u274c Hunter.io Email Discovery \u2705 \u274c \u274c \u274c \u274c \u274c OSINT Enrichment \u2705 Full (7 providers + CourtListener + OpenCorporates) \u26a0\ufe0f Web only \u26a0\ufe0f Web + call transcripts \u274c \u274c \u26a0\ufe0f Basic Battle Cards \u2705 LLM-generated \u2705 Dynamic \u2705 Industry-best \u2705 CRM-integrated \u274c \u274c SWOT Reports \u2705 LLM-generated \u274c \u274c \u274c \u274c \u274c War Room Dashboards \u2705 \u274c \u274c \u274c \u274c \u274c Win/Loss Analysis \u274c (Roadmap) \u2705 \u2705 Best-in-class \u26a0\ufe0f Partner (IcebergIQ) \u274c \u274c CRM Integration \u26a0\ufe0f Planned \u2705 Salesforce, HubSpot \u2705 Salesforce, Slack, Teams, Gong \u2705 Salesforce, HubSpot \u274c \u2705 Salesforce, HubSpot No Long-Term Contract \u2705 Monthly \u274c Annual minimum \u274c Annual minimum \u2705 Monthly \u274c Annual \u2705 Monthly Free Trial \u26a0\ufe0f Planned \u274c Demo only \u274c Demo only \u2705 7-day \u26a0\ufe0f Limited free \u2705 Free tier G2 Rating New 4.5/5 4.8/5 4.5/5 (SEMrush) 4.5/5 4.2/5"},{"location":"launchcheck/competitive-analysis/#intelsight-competitive-positioning","title":"IntelSight Competitive Positioning","text":"<p>IntelSight occupies a unique position: enterprise-grade competitive intelligence depth at mid-market pricing. The market is bifurcated between:</p> <ol> <li>Expensive, deep platforms (Crayon, Klue: $20K\u2013$100K+/yr) \u2014 require dedicated CI teams</li> <li>Cheap, shallow tools (Owler: $39/mo, free tiers) \u2014 news aggregation only</li> </ol> <p>IntelSight sits in the uncontested middle: $199\u2013$1,499/mo for depth that rivals the enterprise platforms plus unique capabilities (OSINT, Crunchbase, Hunter.io) none of them offer. The multi-tenant architecture opens an additional market (agencies, consultancies) that incumbents structurally cannot serve.</p>"},{"location":"launchcheck/competitive-analysis/#launchcheck-competitive-landscape","title":"LaunchCheck: Competitive Landscape","text":""},{"location":"launchcheck/competitive-analysis/#launchcheck-direct-competitors","title":"LaunchCheck Direct Competitors","text":"<p>LaunchCheck's competitive landscape is unique: there is no direct competitor offering a complete, source-linked startup validation report with investor-ready PDFs at $49/mo. The market fragments into enterprise platforms (priced 100\u20131,000\u00d7 higher) and shallow AI tools (priced similarly but lacking evidence). Here's the breakdown:</p>"},{"location":"launchcheck/competitive-analysis/#1-preuve-ai-closest-feature-competitor","title":"1. Preuve AI \u2014 Closest Feature Competitor","text":"<p>Founded: 2025 | Pricing: Free / $29/mo | Method: Full viability (10 agents, 50+ live sources)</p> Dimension Preuve AI LaunchCheck Pricing Free (Reality Check) / $29/mo (Full Report) $49/mo Method 10 AI agents across 50+ live sources Super Search v2 (7 providers) + Crunchbase + Hunter.io + LLM synthesis Source-Linked \u2705 Yes \u2014 every claim linked to source \u2705 Yes \u2014 all intelligence source-linked Competitor Mapping \u2705 With pricing \u2705 With pricing + feature benchmarking Market Sizing \u2705 \u2705 Demand/Pain Signals \u2705 (Reddit, HN, LinkedIn, etc.) \u2705 (7-provider search) OSINT Depth \u26a0\ufe0f Web sources only \u2705 Web + CourtListener + OpenCorporates + Crunchbase Investor-Ready PDF Report format, not investor-specific \u2705 Purpose-built investor-ready summary PDF Feature Benchmarking \u26a0\ufe0f Basic \u2705 Structured comparison tables Pricing Comparisons \u2705 \u2705 Blind Spot Detection \u2705 (3 pivot directions) \u2705 Founder Contact Discovery \u274c \u2705 Via Hunter.io <p>Preuve AI Strengths: - Excellent source-linking \u2014 every claim verifiable - 50+ live data sources per scan - Free tier available - Strong methodology (pain + demand + market size + competitors + blind spots)</p> <p>Preuve AI Weaknesses: - One-person operation (founder-built, disclosed on their blog) - No Crunchbase or OSINT depth (CourtListener, OpenCorporates) - No email/contact discovery for competitor founders - Report format, not investor-ready deck - No multi-product strategy (validation only, no enterprise upsell path)</p> <p>Why LaunchCheck Wins Against Preuve AI: - OSINT depth \u2014 CourtListener, OpenCorporates, and Crunchbase integration provide evidence Preuve can't access - Hunter.io integration \u2014 discover competitor founders' contact info - Investor-ready PDFs \u2014 formatted for pitch decks, not just research reports - Platform ecosystem \u2014 LaunchCheck users graduate to IntelSight (founder-to-enterprise funnel) - Crunchbase data \u2014 funding history, investor networks, market signals</p>"},{"location":"launchcheck/competitive-analysis/#2-dimeadozen-the-ai-business-analyst","title":"2. DimeADozen \u2014 The AI Business Analyst","text":"<p>Founded: 2023 | Pricing: Free / $129+ (one-off reports) | Method: AI + web search</p> Dimension DimeADozen LaunchCheck Pricing Free (basic) / $129+ per report $49/mo (unlimited reports) Method AI analysis + sourced web data Multi-source search + Crunchbase + Hunter.io + LLM Source-Linked \u2705 Yes (web search) \u2705 Yes Report Format Long-form document Structured validation + investor-ready PDF OSINT \u274c \u2705 Subscription Model \u274c One-off reports \u2705 Monthly unlimited <p>DimeADozen Weaknesses: - Per-report pricing ($129+) \u2014 expensive if validating multiple ideas - No OSINT or structured company data - Document format, not investor deliverables - No Crunchbase or Hunter.io</p> <p>Why LaunchCheck Wins: - $49/mo unlimited vs. $129+/report \u2014 3\u00d7 cheaper if validating even one idea per month - Subscription model matches founder behavior (iterate and re-validate) - Investor-ready deliverables built for the fundraising journey - OSINT + Crunchbase depth</p>"},{"location":"launchcheck/competitive-analysis/#3-validatorai-venturusai-ai-opinion-tools","title":"3. ValidatorAI & VenturusAI \u2014 AI-Opinion Tools","text":"<p>ValidatorAI: Free / $49 | VenturusAI: Free / paid tiers</p> <p>These tools represent the \"AI opinion\" category \u2014 they run your idea through an LLM and return analysis based on training data only. No live sources, no verification.</p> <p>Their Weaknesses (shared): - No live data \u2014 output is LLM training data, not real market evidence - Can't verify claims \u2014 may hallucinate competitors or market sizes - No Crunchbase, OSINT, or structured data - \"Confident but wrong\" problem \u2014 sounds authoritative but unverifiable</p> <p>Why LaunchCheck Wins: - Every claim source-linked \u2014 founders can verify, investors trust - Real-time data from 7 search providers + premium APIs - Evidence over opinion \u2014 the fundamental differentiator</p>"},{"location":"launchcheck/competitive-analysis/#launchcheck-adjacent-competitors","title":"LaunchCheck Adjacent Competitors","text":"<p>These aren't direct competitors (they don't offer validation reports), but they compete for the same founder wallet share and attention:</p>"},{"location":"launchcheck/competitive-analysis/#4-crunchbase-freepro-the-company-database","title":"4. Crunchbase (Free/Pro) \u2014 The Company Database","text":"<p>Pricing: Free / Pro $49/mo annual ($588/yr) / Business $199/mo annual ($2,388/yr)</p> <p>What it does: Database of 4M+ companies with funding rounds, investors, news.</p> <p>Why it's NOT a LaunchCheck competitor: - Research tool, not validation tool \u2014 you see data, you don't get analysis - No competitive landscape snapshots \u2014 you build them manually - No pricing comparisons or feature benchmarking - No OSINT dossiers - No investor-ready PDFs \u2014 raw data exports, not formatted deliverables - No validation framework \u2014 no grading, no go/no-go verdict</p> <p>However: Crunchbase's free tier provides basic company lookups that some founders use for DIY research. LaunchCheck integrates Crunchbase data into a structured validation \u2014 making the data actionable rather than raw.</p>"},{"location":"launchcheck/competitive-analysis/#5-pitchbook-the-institutional-database","title":"5. PitchBook \u2014 The Institutional Database","text":"<p>Pricing: $12,000\u2013$70,000+/yr (quote-based)</p> <p>What it does: Deep private market data for VCs, PE firms, investment banks.</p> <p>Why it's NOT a LaunchCheck competitor: - 100\u20131,400\u00d7 more expensive \u2014 irrelevant to solo founders - No validation framework - Built for deal sourcing, not startup validation - No OSINT or competitive analysis features</p>"},{"location":"launchcheck/competitive-analysis/#6-cb-insights-the-research-platform","title":"6. CB Insights \u2014 The Research Platform","text":"<p>Pricing: ~$60,000+/yr (quote-based, per Vendr data)</p> <p>What it does: Technology market intelligence, startup scoring, industry analysis.</p> <p>Why it's NOT a LaunchCheck competitor: - 1,200\u00d7 more expensive \u2014 enterprise-only - No founder-facing validation product - Built for corporate strategy and VC, not pre-revenue founders</p>"},{"location":"launchcheck/competitive-analysis/#launchcheck-comparison-table","title":"LaunchCheck Comparison Table","text":"Feature LaunchCheck Preuve AI DimeADozen ValidatorAI Crunchbase Pro PitchBook Pricing $49/mo Free / $29/mo Free / $129+/report Free / $49 $49/mo ($588/yr) $12K\u2013$70K+/yr Subscription \u2705 Unlimited reports \u2705 Monthly \u274c Per-report \u2705 Monthly \u2705 Annual \u2705 Annual Live Data Sources \u2705 7+ providers \u2705 50+ web sources \u2705 Web search \u274c AI training data only \u2705 Database \u2705 Database Source-Linked Claims \u2705 \u2705 \u2705 \u274c N/A (raw data) N/A (raw data) Competitive Landscape \u2705 With pricing + feature benchmarking \u2705 With pricing \u2705 \u26a0\ufe0f May hallucinate \u274c Manual only \u2705 Manual only OSINT Enrichment \u2705 CourtListener + OpenCorporates \u274c \u274c \u274c \u274c \u274c Crunchbase Integration \u2705 \u274c \u274c \u274c \u2705 (native) \u274c Hunter.io Email Discovery \u2705 \u274c \u274c \u274c \u274c \u274c Investor-Ready PDF \u2705 Purpose-built \u26a0\ufe0f Report format \u26a0\ufe0f Long document \u274c \u274c \u274c Feature Benchmarking \u2705 \u26a0\ufe0f Basic \u274c \u274c \u274c \u274c Validation Score \u2705 \u2705 \u2705 \u2705 \u274c \u274c Blind Spot Detection \u2705 \u2705 \u274c \u274c \u274c \u274c Free Tier \u26a0\ufe0f Planned \u2705 \u2705 \u2705 \u2705 Limited \u274c Trial only Path to Enterprise \u2705 IntelSight upsell \u274c \u274c \u274c N/A N/A"},{"location":"launchcheck/competitive-analysis/#launchcheck-competitive-positioning","title":"LaunchCheck Competitive Positioning","text":"<p>LaunchCheck is the only tool that combines:</p> <ol> <li>Live, source-linked evidence (not AI hallucination)</li> <li>Structured validation framework (not raw data)</li> <li>OSINT depth (CourtListener, OpenCorporates \u2014 unique competitive signal)</li> <li>Investor-ready deliverables (formatted PDFs, not research reports)</li> <li>Founder-accessible pricing ($49/mo \u2014 less than most SaaS tools)</li> </ol> <p>The market is bifurcated between tools that are cheap but unverifiable (ValidatorAI, VenturusAI, ChatGPT) and tools that are data-rich but built for investors, not founders (PitchBook, CB Insights, Crunchbase). LaunchCheck bridges this gap: evidence-grade validation at founder prices.</p>"},{"location":"launchcheck/competitive-analysis/#our-unfair-advantages","title":"Our Unfair Advantages","text":""},{"location":"launchcheck/competitive-analysis/#1-llm-synthesis-across-multi-source-intelligence","title":"1. LLM Synthesis Across Multi-Source Intelligence","text":"<p>What it is: deepseek-v4-pro synthesizes intelligence from 7 search providers + Crunchbase + Hunter.io + CourtListener + OpenCorporates into structured deliverables (SWOT reports, battle cards, war room dashboards, validation reports).</p> <p>Why competitors can't match it: - Crayon/Klue: AI is limited to classification and summarization of web monitoring data. They don't have multi-provider search architecture or OSINT integration. - SEMrush: AI is SEO-focused (content generation, keyword analysis). No general-purpose intelligence synthesis. - Preuve AI/DimeADozen: Use LLM for analysis but lack our data breadth (no Crunchbase, no OSINT, no Hunter.io). - Owler: Basic AI for outreach personalization, not intelligence synthesis.</p> <p>The moat: LLM synthesis is only as good as the data fed into it. Our 7-provider search architecture + premium APIs creates a data moat that's expensive and time-consuming to replicate.</p>"},{"location":"launchcheck/competitive-analysis/#2-osint-depth-no-ci-platform-matches","title":"2. OSINT Depth No CI Platform Matches","text":"<p>Our OSINT stack: - SearXNG \u2014 Metasearch across dozens of engines - Exa \u2014 Semantic web search with domain filtering - OpenCorporates \u2014 Global company registry data (200M+ companies) - CourtListener \u2014 US court records and legal filings - DuckDuckGo \u2014 Privacy-preserving web search - Wikipedia \u2014 Structured encyclopedic data - Firecrawl \u2014 Deep web page extraction</p> <p>Why it matters: - CourtListener reveals lawsuits, IP disputes, regulatory actions \u2014 competitive signals no CI platform captures - OpenCorporates reveals corporate structure, subsidiaries, shell companies \u2014 illuminates competitor org charts - This is the kind of intelligence that traditionally required expensive boutique research firms ($500\u2013$2,000/report)</p>"},{"location":"launchcheck/competitive-analysis/#3-lower-cost-structure-the-infrastructure-advantage","title":"3. Lower Cost Structure \u2014 The Infrastructure Advantage","text":"<p>Our monthly infrastructure costs:</p> Component Monthly Cost Super Search v2 (7 providers) Self-hosted (netcup VPS) Crunchbase API $49/mo Hunter.io API $34/mo deepseek-v4-pro (LLM) Usage-based API Netcup VPS hosting ~$30\u2013$50/mo Total infrastructure ~$150\u2013$200/mo <p>Competitor cost structures (estimated): - Crayon/Klue: $81M+ funding, 200\u2013500+ employees, massive sales orgs \u2014 must charge $20K+/yr to sustain - SEMrush: Public company, 1,300+ employees, massive marketing spend - PitchBook/CB Insights: Large analyst teams, expensive data licensing, enterprise sales</p> <p>Our advantage: 1\u20132 person operation with automated intelligence gathering can serve hundreds of customers at 10\u201320\u00d7 lower price points while maintaining healthy margins.</p>"},{"location":"launchcheck/competitive-analysis/#4-the-founder-to-enterprise-funnel","title":"4. The Founder-to-Enterprise Funnel","text":"<p>No competitor has this:</p> <pre><code>LaunchCheck ($49/mo) \u2192 Solo founder validates idea\n \u2193\nFounder builds company, reaches $2M+ revenue\n \u2193\nIntelSight (Pro $199/mo) \u2192 Now needs competitive intelligence\n \u2193\nCompany grows, needs more \u2192 IntelSight Growth ($499/mo)\n \u2193\nScales to enterprise \u2192 IntelSight Enterprise ($1,499+/mo)\n</code></pre> <p>The math: - A LaunchCheck user today could become a $18K+/yr IntelSight Enterprise customer in 3\u20135 years - Zero customer acquisition cost for the upsell \u2014 they're already in the platform - Competitors: Crayon/Klue acquire enterprise customers through expensive outbound sales ($1,000\u2013$3,000 CAC). PitchBook/CB Insights have no founder product at all.</p> <p>This is a structural advantage. No competitor has a product for pre-revenue founders AND enterprise strategy teams. The shared infrastructure makes serving both segments economically viable.</p>"},{"location":"launchcheck/competitive-analysis/#5-multi-tenant-architecture","title":"5. Multi-Tenant Architecture","text":"<p>IntelSight is multi-tenant \u2014 agencies, consultancies, and holding companies can manage competitive landscapes for multiple clients from a single account.</p> <p>Why competitors can't: - Crayon, Klue, SimilarWeb, Owler \u2014 all single-organization - SEMrush \u2014 has agency features but not for CI specifically - PitchBook, CB Insights \u2014 single-org licensing with strict seat enforcement</p> <p>Market opportunity: The 25,000+ US management consultancies and 14,000+ digital agencies need competitive intelligence for their clients. Multi-tenant IntelSight opens a market incumbents structurally cannot address.</p>"},{"location":"launchcheck/competitive-analysis/#6-transparent-predictable-pricing","title":"6. Transparent, Predictable Pricing","text":"<p>Every enterprise CI competitor (Crayon, Klue, PitchBook, CB Insights) uses opaque, quote-based pricing. This creates:</p> <ul> <li>Friction: 2\u20136 week sales cycles for basic pricing information</li> <li>Distrust: Buyers suspect they're being charged what they can pay, not what the product costs</li> <li>Budget barriers: Mid-market companies can't get pricing without a sales call \u2014 many don't bother</li> </ul> <p>Our transparent pricing ($199, $499, $1,499/mo) removes friction, builds trust, and captures the mid-market that incumbents underserve.</p>"},{"location":"launchcheck/competitive-analysis/#why-customers-choose-us","title":"Why Customers Choose Us","text":""},{"location":"launchcheck/competitive-analysis/#for-intelsight-vs-enterprise-ci-platforms","title":"For IntelSight vs. Enterprise CI Platforms","text":"Decision Factor Why IntelSight Budget \"I need CI depth but can't justify $20K+/yr for Crayon or Klue. IntelSight at $199\u2013$499/mo fits my ops budget without board approval.\" No CI Team \"I run strategy/ops for a 50-person company. I don't have a dedicated CI person. IntelSight gives me intelligence without a platform manager.\" OSINT Depth \"I need to know about competitor lawsuits, corporate structure, and public records \u2014 not just their website changes. IntelSight finds things Crayon misses.\" Multi-Client \"I'm a consultant with 8 clients. I need one platform to manage all their competitive landscapes. Crayon would charge me 8\u00d7.\" Deliverables \"I need SWOT reports and war room dashboards for quarterly board meetings. IntelSight generates them; Crayon gives me raw alerts.\" No Lock-In \"I want monthly billing and the ability to cancel. Crayon and Klue require annual contracts.\""},{"location":"launchcheck/competitive-analysis/#for-launchcheck-vs-validation-tools","title":"For LaunchCheck vs. Validation Tools","text":"Decision Factor Why LaunchCheck Evidence Over Opinion \"I need to show my co-founder real data, not AI guesses. LaunchCheck links every claim to its source.\" Investor-Ready \"I'm pitching in two weeks and need a professional competitive landscape to include in my deck. LaunchCheck generates the PDF I need.\" Affordable Iteration \"I'm testing 3 ideas this month. At $49/mo unlimited, I can validate all of them. DimeADozen would cost me $387.\" OSINT Intel \"I want to know if my competitors have legal troubles or hidden corporate structures. No other validation tool shows me that.\" Path Forward \"I'm validating now, but when my company grows I'll need real CI. LaunchCheck's IntelSight integration means I won't outgrow the platform.\" Contact Discovery \"I need to reach competitor founders for customer discovery interviews. Hunter.io integration finds their emails.\""},{"location":"launchcheck/competitive-analysis/#threat-assessment-risk-mitigation","title":"Threat Assessment & Risk Mitigation","text":""},{"location":"launchcheck/competitive-analysis/#threat-1-incumbents-add-osintapi-integrations","title":"Threat 1: Incumbents Add OSINT/API Integrations","text":"<p>Risk: Crayon or Klue partner with Crunchbase, add CourtListener, or build multi-provider search.</p> <p>Likelihood: Low\u2013Medium. These companies are focused on sales enablement and CRM integration depth, not intelligence breadth. Their product roadmaps center on win/loss, deal coaching, and conversation intelligence \u2014 not OSINT.</p> <p>Mitigation: - Move fast to establish OSINT depth as a brand differentiator - Build proprietary intelligence models (competitor scoring algorithms) that improve with data volume - Lock in Crunchbase/Hunter.io integrations as platform features before incumbents notice</p>"},{"location":"launchcheck/competitive-analysis/#threat-2-semrush-expands-ci-features","title":"Threat 2: SEMrush Expands CI Features","text":"<p>Risk: SEMrush deepens Kompyte integration and adds company intelligence features.</p> <p>Likelihood: Medium. Kompyte's roadmap shows they're moving toward broader CI, and SEMrush has the resources to build. However, SEMrush's DNA is digital marketing, not corporate intelligence.</p> <p>Mitigation: - Double down on what SEMrush can't do: OSINT, Crunchbase, court records, email discovery - Position IntelSight as \"intelligence for strategy teams\" vs. \"CI for marketers\" - Maintain pricing advantage (SEMrush Advanced + Kompyte is already $5,468+/yr)</p>"},{"location":"launchcheck/competitive-analysis/#threat-3-pitchbook-or-crunchbase-launch-a-founder-product","title":"Threat 3: PitchBook or Crunchbase Launch a Founder Product","text":"<p>Risk: Either builds a lightweight validation tool at $50\u2013$100/mo.</p> <p>Likelihood: Low for PitchBook (institutional DNA, $618M ARR from 10,600 accounts \u2014 they optimize for whales). Medium for Crunchbase (already has Pro at $49/mo, could add validation features).</p> <p>Mitigation: - Crunchbase Pro is a data tool, not a validation tool \u2014 we integrate them, we don't compete - Build proprietary validation methodology (scoring algorithms, report formats) that raw data access can't replicate - Establish brand as \"the validation platform\" before Crunchbase enters</p>"},{"location":"launchcheck/competitive-analysis/#threat-4-free-ai-tools-improve","title":"Threat 4: Free AI Tools Improve","text":"<p>Risk: ChatGPT/Claude with web search become good enough for DIY validation.</p> <p>Likelihood: Medium-High. AI models are rapidly improving and adding search capabilities.</p> <p>Mitigation: - Source-linking is our moat \u2014 even with search, raw LLM outputs aren't verifiable without structured sourcing - Investor-ready formatting \u2014 raw AI chat can't produce pitch-ready PDFs - Structured methodology \u2014 our validation framework provides consistency that ad-hoc AI queries can't - OSINT depth \u2014 CourtListener and OpenCorporates aren't indexed by general web search</p>"},{"location":"launchcheck/competitive-analysis/#strategic-recommendations","title":"Strategic Recommendations","text":""},{"location":"launchcheck/competitive-analysis/#near-term-06-months","title":"Near-Term (0\u20136 Months)","text":"<ol> <li>Ship CRM integrations (Salesforce, HubSpot) \u2014 this is the #1 objection from Crayon/Klue evaluators</li> <li>Launch free tier for LaunchCheck \u2014 capture top-of-funnel founders before Preuve AI/DimeADozen</li> <li>Publish comparison pages on intelsight.io and launchcheck.io referencing this analysis</li> <li>Build win/loss analysis for IntelSight Enterprise \u2014 close the feature gap with Klue</li> <li>Content marketing: \"Why OSINT matters in competitive intelligence\" \u2014 establish category authority</li> </ol>"},{"location":"launchcheck/competitive-analysis/#medium-term-612-months","title":"Medium-Term (6\u201312 Months)","text":"<ol> <li>Launch the founder-to-enterprise funnel \u2014 automated upsell path from LaunchCheck to IntelSight</li> <li>Agency/consultancy program for IntelSight multi-tenant \u2014 target 14,000+ digital agencies</li> <li>API access for IntelSight Enterprise \u2014 enable custom integrations and data export</li> <li>Competitor scoring algorithm \u2014 proprietary ML model trained on multi-source intelligence data</li> <li>LaunchCheck investor matching \u2014 connect validated founders with relevant VCs (Crunchbase-powered)</li> </ol>"},{"location":"launchcheck/competitive-analysis/#long-term-1224-months","title":"Long-Term (12\u201324 Months)","text":"<ol> <li>International expansion \u2014 multi-language OSINT and local data sources (EU business registries, UK Companies House, APAC equivalents)</li> <li>Data-as-a-Service \u2014 sell enriched competitive intelligence datasets to enterprises</li> <li>M&A target positioning \u2014 build enough OSINT depth and customer base to become an attractive acquisition for a CRM or sales intelligence platform</li> </ol>"},{"location":"launchcheck/competitive-analysis/#appendix-methodology","title":"Appendix: Methodology","text":"<p>This analysis is based on:</p> <ul> <li>Primary research: Direct extraction of pricing pages, feature documentation, and product marketing from all named competitors (July 2026)</li> <li>Secondary sources: G2 reviews, Gartner Peer Insights, TrustRadius, Vendr pricing data, Capterra, and industry analyst reports</li> <li>Market data: Mordor Intelligence CI Tools Market Report, Crayon State of Competitive Intelligence 2025, Gartner Market Guide 2025</li> <li>Pricing data: Verified via official pricing pages where available; estimated via Vendr, TrustRadius, and third-party analysis for quote-based vendors</li> </ul> <p>Pricing is current as of July 2026 and subject to change. All competitive assessments are based on publicly available information and do not reflect proprietary knowledge of competitor roadmaps or internal strategies.</p> <p>Document maintained by: IntelSight / LaunchCheck Strategy Team Next review: January 2027</p>"},{"location":"launchcheck/launchcheck-business-proposal/","title":"LaunchCheck \u2014 Business Proposal","text":"<p>Prepared for: Germaine Brown & Advisory Team Product: LaunchCheck (launchcheck.io) \u2014 \"Validate your idea before you build it\" Company: IT Pro Partner (established MSP) Date: July 25, 2026 Classification: Confidential \u2014 Advisory Team Only</p>"},{"location":"launchcheck/launchcheck-business-proposal/#table-of-contents","title":"Table of Contents","text":"<ol> <li>Executive Summary</li> <li>Elevator Pitch</li> <li>Problem Statement</li> <li>Market Analysis</li> <li>Product Overview</li> <li>Revenue Model</li> <li>Competitive Advantages</li> <li>Go-to-Market Strategy</li> <li>Risk Analysis</li> <li>Financial Projections</li> <li>The Upgrade Path</li> <li>The Ask</li> </ol>"},{"location":"launchcheck/launchcheck-business-proposal/#1-executive-summary","title":"1. Executive Summary","text":"<p>LaunchCheck is a startup validation SaaS built for pre-revenue founders who need to understand their competitive landscape before they write a single line of code. Priced at $49/month, it delivers competitive landscape reports, pricing comparisons, feature benchmarking, OSINT dossiers on key competitors, and investor-ready summary PDFs \u2014 all powered by the same Super Search v2 engine that drives IntelSight, IT Pro Partner's enterprise-grade intelligence platform.</p> <p>The core insight: 42% of startups fail because there is no market need (CB Insights). The overwhelming majority of those failures are preventable with structured competitive intelligence early in the ideation phase. Yet existing validation tools are either too shallow (single-page AI summaries), too expensive (enterprise platforms starting at $199+/month), or too manual (founders Googling competitors one at a time). LaunchCheck sits in the whitespace: professional-grade competitive intelligence at a price a pre-revenue founder can afford.</p> <p>Why now: The US saw a record 5.5 million new business applications in 2023, Y Combinator processed 96,000+ applications for roughly 620 spots in 2025 (0.7% acceptance rate), and the global SaaS market is $322 billion growing at 19.3% CAGR. More people are starting companies than ever before \u2014 and more of them are failing for reasons that structured competitive intelligence could prevent.</p> <p>The unit economics are compelling. At $49/month, LaunchCheck is profitable on Day 1 customer 1. The Super Search v2 infrastructure already exists and is amortized across IntelSight. The remaining build is a React frontend, a FastAPI wrapper, Stripe integration, and a Postgres schema \u2014 roughly 80% of the engine is already operational on app1. At 1,000 customers, LaunchCheck generates $588,000 ARR with near-zero incremental infrastructure cost.</p> <p>The strategic value extends beyond direct revenue. LaunchCheck is the top of a deliberate funnel: founders who validate with LaunchCheck and then raise funding or achieve product-market fit naturally graduate to IntelSight Pro ($199/mo), Growth ($499/mo), or Enterprise ($1,499+/mo). The customer acquisition cost for IntelSight's higher tiers drops dramatically when the lead arrives pre-qualified through LaunchCheck.</p>"},{"location":"launchcheck/launchcheck-business-proposal/#2-elevator-pitch","title":"2. Elevator Pitch","text":"<p>For founders sitting on an idea they can't stop thinking about: LaunchCheck tells you who your competitors are, what they charge, what features they have that you don't, and whether there's room for you \u2014 in a single report you can take to investors. $49. One month. Know before you build.</p> <p>You wouldn't open a restaurant without knowing what's on the next block. Don't build a startup without knowing your competitive landscape. LaunchCheck gives you the intelligence that used to cost thousands \u2014 for $49/month. Cancel anytime, but most founders keep it until they close their first round.</p>"},{"location":"launchcheck/launchcheck-business-proposal/#3-problem-statement","title":"3. Problem Statement","text":""},{"location":"launchcheck/launchcheck-business-proposal/#31-the-founder-pain-point","title":"3.1 The Founder Pain Point","text":"<p>Every founder faces the same moment of terror: \"What if someone's already built this?\" Right now, the answer to that question comes through one of three paths, all broken:</p> Method What Founders Do Why It Fails Google manually Search \"[idea] competitor\" and skim 20 tabs Incomplete, unstructured, takes days, misses pricing/feature gaps Free AI validators Paste idea into ValidatorAI or ChatGPT Shallow, hallucinates market data, no verifiable sources, zero investor credibility Enterprise tools Try Crunchbase, CB Insights, PitchBook $99\u2013$25,000/year, built for funded companies and VCs, absurd overkill for pre-revenue <p>The result: founders either build blind (and join the 42% who fail from \"no market need\") or waste 2\u20133 weeks doing manual competitive research they could have outsourced for $49.</p>"},{"location":"launchcheck/launchcheck-business-proposal/#32-the-numbers-that-make-this-urgent","title":"3.2 The Numbers That Make This Urgent","text":"<ul> <li>5.5 million new business applications were filed in the US in 2023 \u2014 an all-time record.</li> <li>22.1% of new US businesses close within their first year (Bureau of Labor Statistics, 2024 data).</li> <li>48.6% are gone within five years. 65.3% within ten years.</li> <li>42% of VC-backed startup failures cite \"no market need\" as the primary cause (CB Insights, analysis of 431 failures).</li> <li>63% of tech startups fail within five years \u2014 worse than the overall average.</li> <li>96,000+ founders applied to Y Combinator in 2025. 620 got in (0.65% acceptance rate).</li> <li>A solo founder spending 6 months building an unvalidated product burns $30,000\u2013$60,000 in opportunity cost. LaunchCheck costs $49.</li> </ul>"},{"location":"launchcheck/launchcheck-business-proposal/#33-the-four-founder-personas","title":"3.3 The Four Founder Personas","text":"Persona Situation What They Need Willingness to Pay Solo Founder Has an idea, pre-revenue, pre-funding Confidence to commit weekends for 6 months $49 feels cheap compared to wasted time Indie Hacker Launching a side project, wants recurring revenue Competitive landscape to avoid saturated niches $49/month is a line-item expense they'll justify Pre-Seed Team Preparing a pitch deck, needs the \"competition\" slide Investor-ready competitive analysis in PDF $49 is a rounding error on a $500K raise YC/Techstars Applicant Needs to show market awareness Structured competitive data with named comparables $49 to improve 0.7% odds is a no-brainer"},{"location":"launchcheck/launchcheck-business-proposal/#4-market-analysis","title":"4. Market Analysis","text":""},{"location":"launchcheck/launchcheck-business-proposal/#41-total-addressable-market-tam","title":"4.1 Total Addressable Market (TAM)","text":"<p>Definition: Every person globally who starts a business and needs competitive intelligence.</p> <ul> <li>US new business applications: 5.3\u20135.5 million annually (Census Bureau, 2023\u20132024).</li> <li>Global new business formation: Estimated 100+ million new enterprises annually across all countries (World Bank entrepreneurship data). Narrowing to English-speaking and tech-adjacent markets: conservatively 15\u201320 million new founders per year.</li> <li>YC/accelerator applicants: 96,000+ to YC alone in 2025. Techstars processes tens of thousands more. 500 Global adds thousands. Combined accelerator ecosystem: 200,000\u2013300,000 serious applicants annually.</li> <li>Indie Hackers community: 100,000+ on r/indiehackers alone; broader indie maker movement estimated at 500,000\u20131,000,000 active builders across platforms (Indie Hackers, Makerlog, Product Hunt makers, Twitter/X #buildinpublic).</li> </ul> <p>TAM Estimate: 3\u20135 million serious, tech-savvy founders annually who could benefit from structured competitive validation. At $49/month (annualized $588/year), that's a $1.7\u2013$2.9 billion annual market if every founder paid for one month of validation.</p>"},{"location":"launchcheck/launchcheck-business-proposal/#42-serviceable-addressable-market-sam","title":"4.2 Serviceable Addressable Market (SAM)","text":"<p>Definition: Founders who (a) are building tech or tech-enabled products, (b) operate in English, (c) have $49 of disposable cash, and (d) are actively seeking validation before building.</p> <ul> <li>US-based tech founders: ~500,000\u2013800,000 annually (subset of 5.5M business applications that are tech/software).</li> <li>Accelerator applicants (YC, Techstars, 500 Global, AngelPad, etc.): ~300,000 annually.</li> <li>Indie hackers building SaaS/MRR products: ~200,000\u2013400,000 active at any time.</li> <li>Global English-speaking tech founders: ~500,000\u20131,000,000 additional.</li> </ul> <p>SAM Estimate: 1.0\u20132.0 million founders annually. At $588/year average revenue (accounting for churn), this represents a $588M\u2013$1.18B SAM.</p>"},{"location":"launchcheck/launchcheck-business-proposal/#43-serviceable-obtainable-market-som","title":"4.3 Serviceable Obtainable Market (SOM)","text":"<p>Definition: The portion of SAM LaunchCheck can realistically capture in years 1\u20133 through community-driven growth and Product Hunt.</p> <p>Benchmarks from comparable products:</p> Comparable Early Traction Notes IdeaProof 68,342+ founders since launch Credit-based model, free tier drives growth ValidatorAI Hundreds of thousands of validation sessions Free, single-page AI summary ValidateMySaaS Steady niche growth $19\u2013$29/mo, competitor-focused Trend Seeker Growing community, $9.99/mo Demand-based, different angle <p>LaunchCheck Year 1 SOM: If LaunchCheck captures 0.05%\u20130.1% of the SAM in Year 1: - Conservative: 500\u20131,000 paying customers by Month 12 - Optimistic: 1,500\u20132,500 paying customers with Product Hunt tailwinds</p> <p>At $49/month ($588/year annualized), Year 1 ARR exit: - Conservative: $294K\u2013$588K ARR - Base case: $588K\u2013$1.18M ARR - Optimistic: $882K\u2013$1.47M ARR</p>"},{"location":"launchcheck/launchcheck-business-proposal/#44-market-timing","title":"4.4 Market Timing","text":"<p>Five structural tailwinds make now the right moment:</p> <ol> <li>Record business formation: 5.5M new applications in 2023 is 50%+ above pre-pandemic levels. The \"great entrepreneurship boom\" is not slowing.</li> <li>AI validation is a recognized category: Founders now expect AI-powered tools for competitive research. The category has been validated by IdeaProof, ValidatorAI, and WorthBuild.</li> <li>YC is harder than ever: 0.65% acceptance rate means founders need every edge. A competitive landscape report improves the \"What do you know about your market?\" section of the application.</li> <li>\"Build in public\" culture: Indie hackers publicly share their journey. LaunchCheck reports become shareable content \u2014 \"Here's what LaunchCheck found about my idea space.\"</li> <li>Enterprise SaaS fatigue: Founders are rejecting $199+/month tools. There's a clear whitespace for professional-grade intelligence at indie-friendly pricing.</li> </ol>"},{"location":"launchcheck/launchcheck-business-proposal/#5-product-overview","title":"5. Product Overview","text":""},{"location":"launchcheck/launchcheck-business-proposal/#51-core-features","title":"5.1 Core Features","text":"<p>LaunchCheck is built on the Super Search v2 MCP server already operational on app1 \u2014 the same infrastructure powering IntelSight ($199\u2013$1,499/mo). The core differentiator: this is not an AI hallucinating about your market. It's 7 search providers feeding an LLM synthesis engine producing structured, verifiable competitive intelligence.</p> Feature Description Frequency Competitive Search Multi-provider search across 7 engines (SearXNG, Exa, DuckDuckGo, Firecrawl, Wikipedia, OpenCorporates, CourtListener) 25 searches/month Competitive Landscape Report \"Here's everyone in your space\" \u2014 identified competitors with URLs, descriptions, and market positioning On-demand Pricing Comparison \"What do they charge?\" \u2014 pricing tiers, free trials, freemium vs. paid comparison across all identified competitors Included in landscape report Feature Benchmarking \"What do they have that you don't?\" \u2014 feature matrix across competitors, gaps identified, differentiation opportunities flagged Included in landscape report OSINT Dossier Deep-dive on one key competitor: founder background, funding history, Glassdoor/employee signals, web presence, technology stack indicators 1 dossier/month Investor-Ready Summary PDF Professionally formatted PDF with executive summary, competitive matrix, market positioning, and differentiation thesis. Ready for pitch deck attachment. On-demand"},{"location":"launchcheck/launchcheck-business-proposal/#52-the-validate-your-startup-lead-gen-engine","title":"5.2 The \"Validate Your Startup\" Lead Gen Engine","text":"<p>The landing page at launchcheck.io will feature a free, instant competitive snapshot \u2014 enter a one-line description of your idea and get a mini-report as a lead generation tool:</p> <ol> <li>User enters: \"AI-powered contract review for small law firms\"</li> <li>LaunchCheck returns: Top 3\u20135 identified competitors, average pricing range, one key insight</li> <li>Call to action: \"Get the full report \u2014 15+ competitors mapped, pricing comparison, feature gaps, investor-ready PDF. $49/month.\"</li> </ol> <p>This lead gen engine converts 3\u20138% to paid (industry benchmark for freemium SaaS). At 10,000 free snapshots/month, that's 300\u2013800 new trials.</p>"},{"location":"launchcheck/launchcheck-business-proposal/#53-technology-stack","title":"5.3 Technology Stack","text":"Component Technology Status Search Engine Super Search v2 MCP server (7 providers) \u2705 Operational on app1 LLM Synthesis Admin-AI (DeepSeek, Claude, GPT-4.1, Gemini) \u2705 Operational via existing provider PDF Generation WeasyPrint or Puppeteer \ud83d\udfe1 Needs implementation Frontend React + TailwindCSS \ud83d\udd34 Needs build API Layer FastAPI wrapper around Super Search v2 \ud83d\udd34 Needs build Payments Stripe (single tier: $49/mo or $49/mo annual) \ud83d\udd34 Needs integration Database PostgreSQL (users, reports, search history) \ud83d\udd34 Needs schema + deployment Auth Clerk or Auth0 (social login: Google, GitHub) \ud83d\udd34 Needs integration Hosting app1 (existing infrastructure) \u2705 Available <p>Build estimate: ~80% of the engine exists. Remaining work is frontend + API wrapper + payments. This is a 4\u20136 week build for one senior React/FastAPI developer \u2014 not a 6-month greenfield project.</p>"},{"location":"launchcheck/launchcheck-business-proposal/#6-revenue-model","title":"6. Revenue Model","text":""},{"location":"launchcheck/launchcheck-business-proposal/#61-pricing","title":"6.1 Pricing","text":"Plan Price What You Get LaunchCheck Monthly $56/month 25 competitive searches, landscape reports, pricing comparison, feature benchmarking, 1 OSINT dossier, investor PDF LaunchCheck Annual $49/month (billed $588/year) Same as monthly, save $84/year <p>Single tier only. No confusing \"Starter / Pro / Enterprise\" upsells. Founders hate pricing page anxiety. One price, everything included. Clean.</p>"},{"location":"launchcheck/launchcheck-business-proposal/#62-why-49","title":"6.2 Why $49?","text":"<ul> <li>Psychological threshold: Below $50 is \"impulse buy\" territory for professionals. Above $50 triggers budget-decision anxiety.</li> <li>Competitor positioning: IdeaProof is \u20ac19.99\u2013\u20ac99.99 in credits, ValidateMySaaS is $19\u2013$29/month for lighter reports, DimeADozen is $129+ for a single report. LaunchCheck at $49/month for unlimited landscape + 1 dossier occupies the \"professional but affordable\" zone.</li> <li>LTV calculation: Average customer lifetime of 6 months = $294 LTV. At near-zero marginal cost, this is >90% gross margin.</li> <li>Anchor to IntelSight: $49 makes IntelSight's $199 Pro tier feel like a natural step up \u2014 4x the price for 4x the searches and multi-user features.</li> </ul>"},{"location":"launchcheck/launchcheck-business-proposal/#63-revenue-scenarios","title":"6.3 Revenue Scenarios","text":"Customers Monthly Revenue Annual Revenue (ARR) Monthly (if 50% monthly plan) 25 $1,225 $14,700 $1,312 50 $2,450 $29,400 $2,625 100 $4,900 $58,800 $5,250 250 $12,250 $147,000 $13,125 500 $24,500 $294,000 $26,250 1,000 $49,000 $588,000 $52,500 2,500 $122,500 $1,470,000 $131,250 5,000 $245,000 $2,940,000 $262,500 <p>Assumes 70% annual / 30% monthly mix. Monthly plan customers pay $56/month.</p>"},{"location":"launchcheck/launchcheck-business-proposal/#64-cost-structure-monthly-at-1000-customers","title":"6.4 Cost Structure (Monthly at 1,000 Customers)","text":"Cost Category Monthly Estimate Notes LLM API calls (Admin-AI) $800\u2013$1,500 25 searches \u00d7 1,000 customers = 25,000 queries/month. Heavily cached overlapping searches. Super Search v2 infra $0 (marginal) Already running for IntelSight. Shared infrastructure. Hosting (app1) $0 (marginal) Existing server. Incremental load is minimal. Stripe fees ~$1,470 2.9% + $0.30 per transaction Domain + email $25 launchcheck.io + transactional email Total ~$2,300\u2013$3,000 <p>Gross margin at 1,000 customers: ~94%. This is a high-margin software business from Day 1.</p>"},{"location":"launchcheck/launchcheck-business-proposal/#7-competitive-advantages","title":"7. Competitive Advantages","text":""},{"location":"launchcheck/launchcheck-business-proposal/#71-the-competitive-landscape","title":"7.1 The Competitive Landscape","text":"Competitor Price Strengths Weaknesses vs. LaunchCheck ValidatorAI Free Fast, simple, unlimited Single-page AI summary; no real search data; hallucinations of market size IdeaProof \u20ac19.99\u2013\u20ac99.99 (credits) Multi-model AI, brand assets, business plans Per-report pricing adds up; still AI-only, no real-time search WorthBuild $5/report Customer discovery leads, cheap Limited competitive depth; consumer-grade reports ValidateMySaaS $19\u2013$29/month SEO + competitor focus Lighter reports; no OSINT; no investor PDF DimeADozen $129\u2013$179/report Deep investment-grade reports Expensive per use; overkill for ideation phase Crunchbase $99+/month Funding data, investor discovery Built for funded companies, not pre-revenue founders ChatGPT / Claude Free/$20 Quick, conversational Hallucinates competitor names and market data; no verifiable sources"},{"location":"launchcheck/launchcheck-business-proposal/#72-launchchecks-moat","title":"7.2 LaunchCheck's Moat","text":"<ol> <li> <p>Real search, not AI hallucination. Seven search providers feeding structured synthesis means LaunchCheck returns actual competitors with real URLs \u2014 not made-up company names. This is the single biggest differentiator: founders can click through and verify every finding. IdeaProof, ValidatorAI, and ChatGPT cannot do this.</p> </li> <li> <p>The IT Pro Partner credibility backstop. LaunchCheck is not a random startup built by a solo founder in a weekend. It's a product of IT Pro Partner, an established managed services provider with real revenue, existing infrastructure, and a track record. This matters when founders share reports with investors \u2014 the logo and company backing convey legitimacy.</p> </li> <li> <p>Same engine as IntelSight ($199\u2013$1,499/mo). Enterprise-grade search infrastructure at indie pricing. LaunchCheck customers are running the same search pipeline that powers competitive intelligence for funded companies.</p> </li> <li> <p>OSINT dossiers. No other validation tool offers deep competitor dossiers (founder background, funding history, employee signals, technology stack). This is normally a $500+ consulting engagement. LaunchCheck includes one per month.</p> </li> <li> <p>The upgrade path creates a compounding advantage. Every LaunchCheck customer who upgrades to IntelSight makes the IntelSight product better (more data, more search patterns, better synthesis). The funnel is self-reinforcing.</p> </li> <li> <p>Single tier, simple pricing. No credit systems, no \"you've run out of reports,\" no confusing feature matrices. One price, everything included. Founders are exhausted by pricing page dark patterns.</p> </li> </ol>"},{"location":"launchcheck/launchcheck-business-proposal/#8-go-to-market-strategy","title":"8. Go-to-Market Strategy","text":""},{"location":"launchcheck/launchcheck-business-proposal/#81-launch-sequence","title":"8.1 Launch Sequence","text":"<p>Phase 1: Soft Launch (Weeks 1\u20132) - Deploy to a small waitlist of 50\u2013100 founders (recruited from IT Pro Partner network, Germaine's contacts) - Gather testimonials, fix bugs, refine the PDF output - Identify \"magic moments\" \u2014 what do users do right before they convert?</p> <p>Phase 2: Product Hunt Launch (Week 3) - Title: \"LaunchCheck: Know your competition before you write a line of code\" - Tagline: Validate your startup idea with real competitive intelligence. - Maker comment: Personal story about watching founders build things nobody wanted. LaunchCheck is the tool you wish you had before spending 6 months on the wrong idea. - Target: Top 5 of the day (requires 300+ upvotes). Product Hunt's top products average 1,079 upvotes. Top 5 typically requires 400\u2013600 upvotes with an engaged community. - Expected outcomes: - 500\u20132,000 signups during launch week (26.5% of PH launches attract 500\u20131,000 users) - 5\u201310% conversion to paid = 25\u2013200 new customers in Week 1 - Press coverage: Product Hunt feature \u2192 tech blogs pick up \u2192 founder Twitter amplification</p> <p>Phase 3: Community Flywheel (Weeks 4\u201312) - YC community: Free competitive landscape snapshots posted in YC forums, Bookface, and founder Slack groups. \"Applied to YC? Here's a competitive landscape for your space. DM me your one-liner and I'll run it through LaunchCheck.\" - Indie Hackers: Guest posts on Indie Hackers: \"I analyzed 100 startup ideas on LaunchCheck. Here's what founders consistently get wrong about their competition.\" Native content performs 10x better than ads on IH. - r/startups, r/SaaS, r/Entrepreneur: Answer \"how do I validate my idea?\" threads with specific, helpful responses. Include a LaunchCheck reference only when genuinely relevant. - Techstars applicant networks: Identical playbook to YC. 300,000+ accelerator applicants annually is a captive audience with a hard deadline and high motivation.</p> <p>Phase 4: Content + SEO (Months 3\u201312) - \"Validate your startup\" landing page (launchcheck.io): Free competitive snapshot for lead generation. SEO-optimized for \"validate startup idea,\" \"competitor analysis for startups,\" \"startup competitive landscape.\" - Blog content: \"How to research competitors before building,\" \"The competition slide investors actually want,\" \"What Y Combinator looks for in market analysis.\" - Founder spotlights: Interview LaunchCheck users who validated, pivoted, or killed an idea based on competitive intelligence. Real stories outperform marketing copy.</p>"},{"location":"launchcheck/launchcheck-business-proposal/#82-zero-ad-spend","title":"8.2 Zero Ad Spend","text":"<p>LaunchCheck will not spend on paid acquisition in Year 1. The customer acquisition channels are:</p> Channel Cost Expected Volume (Year 1) Conversion Rate Product Hunt launch $0 (organic) 500\u20132,000 signups 5\u201310% to paid Free lead gen landing page $0 (SEO) 5,000\u201320,000 snapshots/mo by M12 3\u20138% to trial Community posts (YC, IH, Reddit) $0 (time) 200\u2013500 visitors/post 2\u20135% to trial Word of mouth / viral sharing $0 Compounding 1\u20133% referral rate Founder Twitter/X (#buildinpublic) $0 (content) Steady inbound 2\u20134% to trial"},{"location":"launchcheck/launchcheck-business-proposal/#83-viral-loops","title":"8.3 Viral Loops","text":"<ol> <li>\"Share your competitive landscape\" \u2014 Every LaunchCheck report has a \"Share publicly\" button that generates a branded preview card. Founders sharing their competitive research is marketing for LaunchCheck.</li> <li>Investor PDFs carry branding \u2014 Every PDF sent to an investor includes \"Powered by LaunchCheck\" with a QR code. Investors evaluating multiple deals see the branding repeatedly.</li> <li>\"Validated by LaunchCheck\" badge \u2014 Founders can embed a badge on their landing page: \"Validated by LaunchCheck \u2014 competitive landscape analyzed.\" This is aspirational for pre-launch startups.</li> </ol>"},{"location":"launchcheck/launchcheck-business-proposal/#9-risk-analysis","title":"9. Risk Analysis","text":""},{"location":"launchcheck/launchcheck-business-proposal/#91-risk-matrix","title":"9.1 Risk Matrix","text":"Risk Likelihood Impact Mitigation Founders churn after validating one idea High Medium This is by design. One month of validation is the expected use case. Annual pricing reduces churn. Email \"Validate your next idea\" re-engagement campaigns. Price sensitivity \u2014 founders compare to free AI validators Medium High Differentiate on verifiable sources vs. AI hallucination. \"Free validators tell you your idea is great. LaunchCheck shows you the competitive reality.\" Competitor (IdeaProof, WorthBuild) adds real search Medium Medium First-mover advantage with Super Search v2. IntelSight's enterprise revenue funds continuous infrastructure investment. Competitors would need to build a 7-provider search pipeline \u2014 significant engineering investment. AI search becomes commoditized Medium-High High Shift to value-add: OSINT dossiers, investor PDFs, upgrade path to IntelSight. The search engine is the moat; if search becomes free, the moat becomes depth + synthesis + trust. Low upgrade rate to IntelSight Medium Medium Even at 5% upgrade rate on 1,000 LaunchCheck customers, that's 50 new IntelSight leads at $199+/month ($119K+ ARR). The standalone economics are strong enough that the upgrade path is upside, not necessity. Founders fail, stop paying High Medium Expected. Churn will be 8\u201315% monthly. Compensate with high top-of-funnel growth. The \"free snapshot\" lead gen engine needs to consistently feed new trials. GDPR / data privacy Low Medium Competitive intelligence is public information. Reports cite sources. Standard privacy policy + data processing agreement. IT Pro Partner brand risk Low High LaunchCheck is a separate brand (launchcheck.io). If it fails, it doesn't damage the MSP brand. If it succeeds, IT Pro Partner gets credit as the parent company."},{"location":"launchcheck/launchcheck-business-proposal/#92-churn-analysis","title":"9.2 Churn Analysis","text":"<p>LaunchCheck will have higher churn than typical B2B SaaS (which averages 3\u20137% monthly). Reasons:</p> <ul> <li>Founders validate one idea and leave (expected, not a failure)</li> <li>Founders run out of money (pre-revenue, pre-funding)</li> <li>Founders succeed and upgrade to IntelSight (desired outcome)</li> <li>Founders fail and stop all spending (sad but inevitable)</li> </ul> <p>Projected churn rates:</p> Month Monthly Churn Rate Cumulative Retention 1 25% 75% 2 20% 60% 3 15% 51% 4 12% 45% 5 12% 40% 6 10% 36% <p>At these rates, average customer lifetime is ~4.2 months, LTV = ~$206. This is acceptable because: - Gross margin is 94% (near-zero marginal cost) - CAC is near-zero (community-driven, no ad spend) - LTV:CAC ratio is effectively infinite (or at minimum >10:1)</p> <p>The upgrade path to IntelSight dramatically increases effective LTV. A LaunchCheck customer who upgrades to IntelSight Pro at $199/month for 12+ months has an LTV of $2,500+.</p>"},{"location":"launchcheck/launchcheck-business-proposal/#93-what-happens-if-nobody-upgrades","title":"9.3 What Happens If Nobody Upgrades?","text":"<p>If LaunchCheck-to-IntelSight upgrades are negligible, the business still works:</p> <ul> <li>At 500 customers: $24,500/month ($294K ARR) at ~$1,500/month operating cost</li> <li>At 1,000 customers: $49,000/month ($588K ARR) at ~$3,000/month operating cost</li> </ul> <p>These are profitable outcomes that require no IntelSight dependency. The upgrade path is upside, not the core thesis.</p>"},{"location":"launchcheck/launchcheck-business-proposal/#10-financial-projections","title":"10. Financial Projections","text":""},{"location":"launchcheck/launchcheck-business-proposal/#101-12-month-revenue-forecast-base-case","title":"10.1 12-Month Revenue Forecast (Base Case)","text":"Month New Customers Churned Net Total Active MRR Cumulative Revenue 1 50 0 +50 50 $2,450 $2,450 2 80 5 +75 125 $6,125 $8,575 3 150 15 +135 260 $12,740 $21,315 4 200 30 +170 430 $21,070 $42,385 5 150 50 +100 530 $25,970 $68,355 6 120 65 +55 585 $28,665 $97,020 7 100 70 +30 615 $30,135 $127,155 8 90 75 +15 630 $30,870 $158,025 9 80 75 +5 635 $31,115 $189,140 10 70 75 -5 630 $30,870 $220,010 11 60 70 -10 620 $30,380 $250,390 12 50 65 -15 605 $29,645 $280,035 <p>Key metrics at Month 12: - Active customers: 605 - MRR: $29,645 - ARR run rate: $355,740 - Cumulative Year 1 revenue: $280,035 - Total customers acquired: 1,200 - Average monthly churn: ~11% - Customer acquisition cost: ~$0 (organic)</p>"},{"location":"launchcheck/launchcheck-business-proposal/#102-three-scenarios","title":"10.2 Three Scenarios","text":"Scenario Month 12 Customers Month 12 MRR Year 1 Revenue Assumptions Conservative 300 $14,700 $120,000 Slow community growth, low PH launch (200 upvotes), 30% monthly churn Base Case 605 $29,645 $280,000 Healthy PH launch (400+ upvotes), steady community growth, 11% avg monthly churn Optimistic 1,200 $58,800 $520,000 PH #1\u20133 of the day, viral founder sharing, YC community embrace, 8% avg monthly churn"},{"location":"launchcheck/launchcheck-business-proposal/#103-breakeven-analysis","title":"10.3 Breakeven Analysis","text":"<p>LaunchCheck is profitable from Day 1, Customer 1. The only upfront costs are the build:</p> Build Component Estimated Cost React frontend $8,000\u2013$12,000 (one senior dev, 3\u20134 weeks) FastAPI wrapper $4,000\u2013$6,000 (one dev, 1\u20132 weeks) Stripe integration $2,000\u2013$3,000 PostgreSQL + schema $1,000\u2013$2,000 PDF generation $2,000\u2013$3,000 Auth (Clerk/Auth0) $1,000\u2013$2,000 Design + branding $3,000\u2013$5,000 Total Build $21,000\u2013$33,000 <p>Breakeven on build cost: At 50 customers, Monthly 1 (~$2,450 MRR), the build cost is recovered in 9\u201314 months. At 200 customers (Month 4 base case), the build cost is recovered in 2\u20133 months.</p>"},{"location":"launchcheck/launchcheck-business-proposal/#104-year-2-projection","title":"10.4 Year 2 Projection","text":"<p>At Month 12 with 600+ customers and organic growth compounding:</p> <ul> <li>Monthly new customers: 80\u2013120 (compounding from SEO, referrals, founder word-of-mouth)</li> <li>Monthly churn stabilizing at 8\u201310%</li> <li>Month 24 customers: 1,000\u20131,500</li> <li>Month 24 MRR: $49,000\u2013$73,500</li> <li>Year 2 cumulative revenue: $470,000\u2013$750,000</li> </ul>"},{"location":"launchcheck/launchcheck-business-proposal/#11-the-upgrade-path-launchcheck-intelsight","title":"11. The Upgrade Path: LaunchCheck \u2192 IntelSight","text":""},{"location":"launchcheck/launchcheck-business-proposal/#111-the-funnel","title":"11.1 The Funnel","text":"<pre><code>LaunchCheck ($49/mo)\n \u2502\n \u251c\u2500\u2500 Founder validates, builds, raises funding \u2500\u2500\u2500\u2500\u25ba IntelSight Pro ($199/mo)\n \u2502 \u2022 Multi-user dashboard\n \u2502 \u2022 100 searches/month\n \u2502 \u2022 Competitor monitoring alerts\n \u2502\n \u251c\u2500\u2500 Founder grows, hires team \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u25ba IntelSight Growth ($499/mo)\n \u2502 \u2022 Team seats\n \u2502 \u2022 Custom report scheduling\n \u2502 \u2022 API access\n \u2502\n \u2514\u2500\u2500 Founder's company scales, needs enterprise \u2500\u2500\u25ba IntelSight Enterprise ($1,499+/mo)\n \u2022 Dedicated analyst\n \u2022 White-label reports\n \u2022 SSO / compliance\n</code></pre>"},{"location":"launchcheck/launchcheck-business-proposal/#112-what-triggers-an-upgrade","title":"11.2 What Triggers an Upgrade?","text":"Trigger Signal Upgrade Path Funding closed Founder mentions in-app or in support email IntelSight Pro \u2014 \"Now that you're funded, here's what you need\" Exceeded search limits 3+ months in a row 25 searches/mo consistently maxed out IntelSight Growth \u2014 \"You need more firepower\" Team member added Second user tries to access account IntelSight Growth \u2014 \"Add your team\" 6+ months active Sustained usage beyond validation phase IntelSight Pro \u2014 \"You're clearly past validation. Upgrade for monitoring.\""},{"location":"launchcheck/launchcheck-business-proposal/#113-upgrade-economics","title":"11.3 Upgrade Economics","text":"Metric Conservative Base Case Optimistic LaunchCheck \u2192 IntelSight conversion 3% 5% 8% At 600 LaunchCheck customers 18 IntelSight upgrades 30 IntelSight upgrades 48 IntelSight upgrades Incremental ARR from upgrades $42,984 $71,640 $114,624 Combined ARR (LaunchCheck + upgrades) $398,724 $427,380 $469,344 <p>The upgrade path effectively doubles ARR per LaunchCheck cohort when factored over 24 months.</p>"},{"location":"launchcheck/launchcheck-business-proposal/#12-the-ask","title":"12. The Ask","text":""},{"location":"launchcheck/launchcheck-business-proposal/#121-whats-needed","title":"12.1 What's Needed","text":"<p>LaunchCheck is not a 6-month greenfield build. ~80% of the engine exists. The ask is minimal:</p> Resource What Cost Frontend developer React + TailwindCSS build for launchcheck.io $8,000\u2013$12,000 (contract, 3\u20134 weeks) Backend developer FastAPI wrapper + Stripe + Postgres + PDF $7,000\u2013$10,000 (contract, 2\u20133 weeks) Design/branding Logo, color system, landing page, report templates $3,000\u2013$5,000 Domain + infrastructure launchcheck.io, deployment on app1 $200/year Legal Terms of service, privacy policy, data processing agreement $2,000\u2013$3,000 (if not using template) Total Ask $20,000\u2013$30,000"},{"location":"launchcheck/launchcheck-business-proposal/#122-whats-already-in-place-no-additional-cost","title":"12.2 What's Already In Place (No Additional Cost)","text":"<ul> <li>Super Search v2 MCP server (7 providers) \u2014 operational on app1</li> <li>LLM access via Admin-AI (DeepSeek, Claude, GPT-4.1, Gemini)</li> <li>Hosting infrastructure on app1</li> <li>IT Pro Partner operational backbone (support, billing, compliance awareness)</li> <li>Germaine's founder network for initial distribution</li> <li>IntelSight as the upgrade destination</li> </ul>"},{"location":"launchcheck/launchcheck-business-proposal/#123-timeline","title":"12.3 Timeline","text":"Phase Duration Deliverable Build Weeks 1\u20136 Functional product on launchcheck.io Internal QA Week 7 Bug fixes, PDF polish, report quality review Soft launch Week 8 50\u2013100 founder waitlist, gather testimonials Product Hunt launch Week 9 Public launch, community push Growth Weeks 10\u201352 Community, SEO, content, iteration"},{"location":"launchcheck/launchcheck-business-proposal/#124-decision-required","title":"12.4 Decision Required","text":"<p>The advisory team is asked to:</p> <ol> <li>Approve the $20,000\u2013$30,000 development budget</li> <li>Validate the single-tier $49/month pricing strategy</li> <li>Confirm the Product Hunt + community GTM approach (zero ad spend)</li> <li>Authorize the use of app1 infrastructure for LaunchCheck deployment</li> <li>Decide whether LaunchCheck operates as an IT Pro Partner product line or a separate entity</li> </ol>"},{"location":"launchcheck/launchcheck-business-proposal/#appendix-a-source-citations","title":"Appendix A: Source Citations","text":"Claim Source 5.5M new business applications (US, 2023) US Census Bureau, Business Formation Statistics 531,423 new business applications (June 2026) US Census Bureau, BFS Current Report 22.1% of businesses fail in first year Bureau of Labor Statistics, via LendingTree analysis 48.6% fail within 5 years; 65.3% within 10 years Bureau of Labor Statistics, Business Employment Dynamics 42% of startups fail due to \"no market need\" CB Insights, \"Top 20 Reasons Startups Fail\" (analysis of 431 failures) 63% of tech startups fail within 5 years DemandSage research analysis Global SaaS market: $322B in 2024, 19.3% CAGR SkyQuest, Precedence Research, Fortune Business Insights YC: 27,000+ applications for Winter 2024 batch, 96,000+ for 2025 GrowthList, LinkedIn (Ayush Sharma), Y Combinator public data 0.7% YC acceptance rate (2025) LinkedIn (Ayush Sharma): 620 accepted from 96,000+ Techstars <1% acceptance rate Techstars 2.0 announcement, multiple sources 68,342+ IdeaProof users ideaproof.io public homepage Average Product Hunt top product: 1,079 upvotes Medium: \"What 76,822 Product Hunt Launches Reveal\" 26.5% of PH launches attract 500\u20131,000 users MySignature.io survey $15K Product Hunt launch \u2192 $6\u201320K in customer value LinkedIn (Thomas Mazimann) r/indiehackers: 100K+ members waveup.com blog 10% of SaaS startups fail in first year Failory / Exploding Topics"},{"location":"launchcheck/launchcheck-business-proposal/#appendix-b-competitive-pricing-comparison","title":"Appendix B: Competitive Pricing Comparison","text":"Tool Low-End Pricing High-End Pricing Model LaunchCheck Advantage ValidatorAI Free Free (public) Perpetual free No real search; hallucinations IdeaProof Free (90 credits) \u20ac99.99 (1,500 credits) Credit-based Per-report costs add up; AI-only WorthBuild Free (1/mo) $20 (5 reports) Pay-per-report Consumer-grade depth; no OSINT ValidateMySaaS $19/mo $29/mo Monthly sub Lighter reports; no investor PDF Trend Seeker Free (daily limit) $9.99/mo Monthly sub Demand signals, not competitive intel DimeADozen Free (Solo) $179 (3-pack) Pay-per-report Expensive; overkill for ideation Crunchbase $99/mo (Pro) Custom enterprise Annual contract Built for funded companies LaunchCheck $49/mo annual $56/mo monthly Simple monthly Verifiable search + OSINT + investor PDF <p>This proposal was prepared with publicly available market data and reflects the best available information as of July 2026. Revenue projections are forward-looking estimates and actual results may vary. All competitive pricing was verified against public pricing pages as of the date of this document.</p>"},{"location":"osint-tool/","title":"osint-tool","text":"<p>Owner: Germaine | Status: PLANNED Last Updated: 2026-08-09</p> <p>An open-source intelligence (OSINT) toolchain for people search, skip tracing, and data aggregation. Integrates multiple web scraping and search APIs to build comprehensive person profiles from public data sources \u2014 supporting debt recovery, asset location, and investigative workflows.</p>"},{"location":"osint-tool/#whats-inside","title":"What's Inside","text":"<ul> <li><code>research/</code> \u2014 API evaluations and tool comparisons for web scraping, search, and browser automation</li> <li><code>web-scraping-api-comparison.md</code> \u2014 Detailed comparison of 10 APIs (Firecrawl, ScrapingAnt, SerpAPI, Browserbase, etc.) for scraping government sites, court records, and people-search platforms</li> </ul>"},{"location":"osint-tool/#tech-stack","title":"Tech Stack","text":"<ul> <li>Scraping Pipeline: Firecrawl, ScrapingAnt, Browserbase (evaluated, pending selection)</li> <li>Search: Brave Search API, Serper, Tavily (evaluated)</li> <li>Backend: TBD \u2014 likely Python/FastAPI</li> <li>Frontend: TBD</li> </ul>"},{"location":"osint-tool/#quick-start","title":"Quick Start","text":"<pre><code>git clone https://git.itpropartner.com/ippadmin/osint-tool.git\ncd osint-tool\n# Review research/ for API evaluation and selection\n</code></pre>"},{"location":"osint-tool/#related","title":"Related","text":"<ul> <li>itpp-infrastructure \u2014 server inventory, DNS</li> <li>itpp-standards \u2014 docs standards and templates</li> <li>FleetTracker360 \u2014 GPS fleet tracking</li> </ul>"},{"location":"osint-tool/CHANGELOG/","title":"OSINT People Search \u2014 CHANGELOG","text":""},{"location":"osint-tool/CHANGELOG/#2026-07-10-documentation","title":"2026-07-10 \u2014 Documentation","text":"<ul> <li>Migrated web scraping API comparison and tool evaluations into the repo.</li> </ul>"},{"location":"osint-tool/CHANGELOG/#2026-07-02-research","title":"2026-07-02 \u2014 Research","text":"<ul> <li>Completed comparison of web scraping APIs for OSINT data collection.</li> </ul>"},{"location":"osint-tool/CHANGELOG/#2026-06-20-api-planning","title":"2026-06-20 \u2014 API Planning","text":"<ul> <li>Drafted initial frontend UI and API integration plans.</li> </ul>"},{"location":"scripts/","title":"scripts","text":"<p>Generated: 2026-07-21 19:53 Total scripts: 78 (44 shell, 34 Python) Cron-attached: 30 of 78 Location: <code>/root/.hermes/scripts/</code> Backup: Live sync (every 15m) + Full daily backup \u2192 Wasabi S3</p>"},{"location":"scripts/#backup-dr","title":"Backup & DR","text":"Script Purpose Type Size Schedule Cron Job <code>unms-backup-sync.sh</code> unms-backup-sync.sh -- Daily UISP/UNMS backup sync to Wasabi S3. shell 2.6KB {'kind': 'cron', 'expr': '0 6 * * ', 'display': '0 6 * * '} unms-backup-sync \u2705 <code>gitea-backup.sh</code> gitea-backup.sh \u2014 Daily Gitea backup to Wasabi S3. shell 2.5KB {'kind': 'cron', 'expr': '0 8 * * ', 'display': '0 8 * * '} gitea-backup \u2705 <code>snapshot-hetzner.py</code> Create a snapshot of ALL running servers in the Hetzner account. python 1.8KB {'kind': 'cron', 'expr': '0 5 * * 1', 'display': '0 5 * * 1'} hetzner-weekly-snapshots \u2705 <code>hudu-backup.sh</code> hudu-backup.sh \u2014 Daily Hudu PostgreSQL backup to Wasabi S3. shell 1.6KB {'kind': 'cron', 'expr': '0 7 * * ', 'display': '0 7 * * '} hudu-backup \u2705 <code>hermes-live-sync.sh</code> hermes-live-sync.sh \u2014 Full Hermes sync to S3 every 15 min shell 1.1KB {'kind': 'interval', 'minutes': 15, 'display': 'every 15m'} hermes-live-sync \u2705 <code>run-wisp-backup.sh</code> run-wisp-backup.sh \u2014 Wrapper for cron: sets up env and runs CCR backup via VPN shell 776B {'kind': 'cron', 'expr': '0 6 * * ', 'display': '0 6 * * '} home-router-daily-backup \u2705 <code>sync_ringlogix.py</code> Sync RingLogix subscriber data to local cache python 27.0KB Manual \u2014 <code>backup_portal.py</code> Backup portal data for web hosting services python 17.1KB Manual \u2014 <code>wisp-backup.py</code> Call home-router-vpn.sh up/down/status. python 13.1KB Manual \u2014 <code>hermes-backup.sh</code> hermes-backup.sh \u2014 Full Hermes backup to Wasabi S3 shell 7.9KB Manual \u2014 <code>core-services-backup.sh</code> Supplemental Core service backups (services not covered by existing Core backups) shell 3.8KB Manual \u2014 <code>hermes-standby-restore.sh</code> hermes-standby-restore.sh \u2014 Warm standby restore from S3 shell 2.7KB Manual \u2014 <code>app1-backup.sh</code> Backup app1 AI stack services to S3 shell 2.6KB Manual \u2014 <code>hermes-system-config-sync.sh</code> hermes-system-config-sync.sh \u2014 Sync system-level configs to Wasabi shell 2.4KB Manual \u2014 <code>backup-uisp.sh</code> Backup UISP/UNMS network management system shell 2.3KB Manual \u2014 <code>app3-backup.sh</code> Backup app3 web hosting services to S3 shell 2.1KB Manual \u2014 <code>root-essentials-backup.sh</code> root-essentials-backup.sh \u2014 Daily backup of Hermes config/core to S3 shell 1.8KB Manual \u2014 <code>hermes-docker-sync.sh</code> hermes-docker-sync.sh \u2014 Sync Docker volumes to Wasabi shell 1.7KB Manual \u2014 <code>unifi-backup-sync.sh</code> unifi-backup-sync.sh Daily UniFi backup sync from app2 Docker volume to Wasabi S3. shell 1.7KB Manual \u2014 <code>home-router-backup.sh</code> Backup home MikroTik router config to S3 shell 1.7KB Manual \u2014 <code>app2-backup.sh</code> Backup app2 services to S3 shell 1.7KB Manual \u2014 <code>backup-audit-check.sh</code> backup-audit-check.sh \u2014 Daily check: was yesterday's full backup successful? shell 1.3KB Manual \u2014 <code>send-backup-email.py</code> Send home router backup archive via SMTP. python 1.1KB Manual \u2014 <code>send-backup-readme.py</code> Send home router backup README via SMTP. python 1.1KB Manual \u2014 <code>run-portal-backup.sh</code> Portal backup cron wrapper \u2014 runs backup_portal.py, silent on success shell 782B Manual \u2014 <code>system-config-sync.sh</code> Sync system config files to S3 shell 669B Manual \u2014 <code>docker-volume-sync.sh</code> Sync Docker volumes to S3 shell 597B Manual \u2014"},{"location":"scripts/#monitoring","title":"Monitoring","text":"Script Purpose Type Size Schedule Cron Job <code>vps-threshold-check.sh</code> VPS Resource Threshold Alert Checker shell 6.1KB {'kind': 'interval', 'minutes': 15, 'display': 'every 15m'} vps-threshold-check \u2705 <code>bounce-check.py</code> Check email bounce rates and flag delivery issues python 3.3KB {'kind': 'interval', 'minutes': 60, 'display': 'every 60m'} bounce-check \u2705 <code>service-health-check.sh</code> service-health-check.sh \u2014 Check all critical services and report failures shell 2.3KB {'kind': 'interval', 'minutes': 5, 'display': 'every 5m'} service-health-check \u2705 <code>imap_triage_watchdog.sh</code> Watchdog for the email triage cron job (5929c5f1deff). shell 2.1KB {'kind': 'interval', 'minutes': 10, 'display': 'every 10m'} IMAP-triage-watchdog \u2705 <code>spend-monitor-collect.sh</code> spend-monitor-collect.sh \u2014 Collect LLM spend data for daily monitor shell 1.9KB {'kind': 'cron', 'expr': '0 7 * * ', 'display': '0 7 * * '} daily-spend-monitor \u2705 <code>apex-mail-watchdog.sh</code> apex-mail-watchdog.sh \u2014 Check Apex WPForms email delivery every 5 min shell 1.9KB {'kind': 'cron', 'expr': '/5 * * * ', 'display': '/5 * * * '} apex-mail-watchdog \u2705 <code>home-router-watchdog.sh</code> home-router-watchdog.sh \u2014 Check home router via WireGuard tunnel shell 553B {'kind': 'interval', 'minutes': 5, 'display': 'every 5m'} Home-Router-Watchdog \u2705 <code>home-router-watchdog.sh</code> home-router-watchdog.sh \u2014 Check home router via WireGuard tunnel shell 553B {'kind': 'interval', 'minutes': 5, 'display': 'every 5m'} Home-Router-Watchdog \u2705 <code>boys-mail-monitor.py</code> Monitor Tony's email inbox for important messages python 18.5KB Manual \u2014 <code>hermes-standby-watchdog.sh</code> hermes-standby-watchdog.sh \u2014 Periodic health check for warm standby shell 4.2KB Manual \u2014 <code>apex-mail-watchdog.py</code> Try sending a test email to the admin address. python 2.9KB Manual \u2014 <code>reboot-with-check.sh</code> reboot-with-check.sh \u2014 Reboot a server and wait for it + key services to come back. shell 2.7KB Manual \u2014"},{"location":"scripts/#email","title":"Email","text":"Script Purpose Type Size Schedule Cron Job <code>shonuff-email-responder.py</code> Collect new emails from the Master python 9.7KB {'kind': 'interval', 'minutes': 5, 'display': 'every 5m'} shonuff-email-reply \u2705 <code>dre-mail-poller.py</code> \u2500\u2500 Configuration \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 python 9.6KB {'kind': 'interval', 'minutes': 1, 'display': 'every 1m'} dre-mail-poller \u2705 <code>boxpilot-triage.py</code> Free/personal email domains \u2014 if sender is from these AND claims another company, it's sus python 5.8KB {'kind': 'interval', 'minutes': 10, 'display': 'every 10m'} boxpilot-triage \u2705 <code>shonuff-inbox-collect.py</code> Extract plain text from email, favoring text/plain. python 3.3KB {'kind': 'interval', 'minutes': 15, 'display': 'every 15m'} shonuff-inbox-agent \u2705 <code>imap_triage_autorun.py</code> User-blocked marketing/loan domains are spam/promotional. python 2.9KB {'kind': 'interval', 'minutes': 60, 'display': 'every 60m'} IMAP-email-triage \u2705 <code>imap_triage.py</code> Core IMAP email triage and classification engine python 14.6KB Manual \u2014 <code>send-dr-audit-email.py</code> Send DR Backup Audit email to Germaine. python 5.5KB Manual \u2014 <code>send-shonuff.py</code> Send email from Sho'Nuff Brown with signature + BCC to Germaine + IMAP Sent copy. python 2.3KB Manual \u2014 <code>watch-shonuff-inbox.py</code> Monitor Sho'Nuff inbox for new messages python 2.2KB Manual \u2014 <code>send-recovery.py</code> Email the recovery bundle to g@germainebrown.com. python 1.5KB Manual \u2014 <code>_fetch_body.py</code> Fetch body of email sequence number 2 from shonuff inbox. python 1.1KB Manual \u2014 <code>send-reset-notifications.sh</code> Called BEFORE suggesting the user type /reset shell 914B Manual \u2014 <code>send-back-online.sh</code> Called by the NEW session after /reset to notify Germaine and Anita shell 832B Manual \u2014"},{"location":"scripts/#ops-portal","title":"Ops Portal","text":"Script Purpose Type Size Schedule Cron Job <code>ops-data-collector.py</code> \u2500\u2500\u2500 Configuration \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 python 47.6KB {'kind': 'cron', 'expr': '/5 * * * ', 'display': '/5 * * * '} ops-data-collector \u2705 <code>status-page-refresh.sh</code> Status page heartbeat JSON generator shell 762B {'kind': 'interval', 'minutes': 1, 'display': 'every 1m'} status-page-refresh \u2705"},{"location":"scripts/#network","title":"Network","text":"Script Purpose Type Size Schedule Cron Job <code>home-router-vpn.sh</code> wisp-vpn.sh \u2014 Connect/disconnect L2TP/IPsec VPN to MicroTik gateway shell 8.1KB Manual \u2014 <code>home-router-keepalive.sh</code> wisp-vpn-keepalive.sh \u2014 Check VPN status and reconnect if down shell 877B Manual \u2014"},{"location":"scripts/#fleettracker","title":"FleetTracker","text":"Script Purpose Type Size Schedule Cron Job <code>ft360-export.py</code> Cron runs scripts with system Python. The FT360 MCP uses the shared python 5.2KB {'kind': 'interval', 'minutes': 1, 'display': 'every 1m'} ft360-dashboard-export \u2705 <code>ft360-route-export.py</code> Export today's FT360 device positions as GeoJSON for the dashboard map overlay. python 3.8KB Manual \u2014 <code>ft360-daily-stats.py</code> Compute daily stats from the Traccar H2 DB for the FT360 dashboard export. python 3.2KB Manual \u2014"},{"location":"scripts/#ai-models","title":"AI & Models","text":"Script Purpose Type Size Schedule Cron Job <code>track-firecrawl.py</code> Track Firecrawl API credit usage for portal dashboard. python 2.7KB {'kind': 'cron', 'expr': '0 9 * * ', 'display': '0 9 * * '} firecrawl-usage-check \u2705 <code>model-usage-tracker.sh</code> Model health check -- test all 5 fallback chain providers shell 2.2KB {'kind': 'cron', 'expr': '0 8 * * ', 'display': '0 8 * * '} model-usage-check \u2705"},{"location":"scripts/#security","title":"Security","text":"Script Purpose Type Size Schedule Cron Job <code>lynis-scan.sh</code> Nightly security audit via Lynis shell 723B {'kind': 'cron', 'expr': '0 3 * * ', 'display': '0 3 * * '} lynis-scan \u2705 <code>audit-server.sh</code> Comprehensive server audit script shell 3.1KB Manual \u2014"},{"location":"scripts/#dre","title":"DRE","text":"Script Purpose Type Size Schedule Cron Job <code>dre-approval-reminder.sh</code> dre-approval-reminder.sh \u2014 Check for pending claim approvals shell 854B {'kind': 'cron', 'expr': '0 * * * ', 'display': '0 * * * '} dre-pending-approval-reminder \u2705"},{"location":"scripts/#shark-game","title":"Shark Game","text":"Script Purpose Type Size Schedule Cron Job <code>shark-scraper.sh</code> Shark scraper wrapper \u2014 silent on success, only outputs on failure shell 307B {'kind': 'interval', 'minutes': 60, 'display': 'every 60m'} shark-scraper \u2705 <code>shark-draft-reminder.sh</code> shark-draft-reminder.sh \u2014 Send 24h and 1h draft reminder emails to league members shell 13.1KB Manual \u2014"},{"location":"scripts/#hermes-internal","title":"Hermes Internal","text":"Script Purpose Type Size Schedule Cron Job <code>hermes-consolidate.sh</code> hermes-consolidate.sh \u2014 Auto-consolidate Hermes memory every 10 min. shell 2.8KB {'kind': 'interval', 'minutes': 10, 'display': 'every 10m'} hermes-memory-consolidate \u2705 <code>hermes-consolidate.py</code> Consolidate and archive Hermes backup files python 4.6KB Manual \u2014 <code>mcp-mysql.py</code> Simple MySQL MCP server for Hermes - with async stdin handling. python 3.0KB Manual \u2014"},{"location":"scripts/#infrastructure","title":"Infrastructure","text":"Script Purpose Type Size Schedule Cron Job <code>snmp-collect.sh</code> Collect SNMP metrics from MikroTik network devices shell 926B Manual \u2014 <code>snmp-http-server.py</code> Serve SNMP textfile metrics via HTTP for Prometheus python 620B Manual \u2014 <code>list-hetzner-servers.py</code> List Hetzner servers via API. python 500B Manual \u2014"},{"location":"scripts/#utilities","title":"Utilities","text":"Script Purpose Type Size Schedule Cron Job <code>build-recovery.py</code> Build the full Hermes recovery bundle markdown file. python 6.9KB Manual \u2014 <code>generate-script-contents.py</code> Find a script file by name in known script directories. python 2.4KB Manual \u2014 <code>changelog.sh</code> changelog.sh \u2014 Append an entry to the Hermes changelog shell 877B Manual \u2014"},{"location":"scripts/#personal","title":"Personal","text":"Script Purpose Type Size Schedule Cron Job <code>daily-feed-summary.py</code> Collect RSS feeds and generate daily digest summary python 9.3KB {'kind': 'cron', 'expr': '0 11 * * ', 'display': '0 11 * * '} daily-tech-digest \u2705 <code>unsubscribe-scanner.py</code> \u2500\u2500 Config \u2500\u2500 python 4.8KB {'kind': 'cron', 'expr': '0 7 * * ', 'display': '0 7 * * '} Unsubscribe Daily Digest \u2705 <code>icloud_bills_calendar.py</code> Sync iCloud calendar with billing reminders python 12.0KB Manual \u2014"},{"location":"scripts/CHANGELOG/","title":"scripts \u2014 CHANGELOG","text":""},{"location":"scripts/CHANGELOG/#2026-07-21-purpose-descriptions","title":"2026-07-21 \u2014 Purpose Descriptions","text":"<ul> <li>Added one-line purpose descriptions for all 78 scripts in README.md</li> <li>Backup scope documented in README header</li> </ul>"},{"location":"scripts/CHANGELOG/#2026-07-16-audit-remediation","title":"2026-07-16 \u2014 Audit Remediation","text":"<ul> <li>Recategorized scripts and removed Garrison Code Watch from cron</li> <li><code>_fetch_body.py</code> moved to Email (internal utility)</li> <li><code>mcp-mysql.py</code> moved to Hermes Internal (MCP server)</li> <li><code>unsubscribe-scanner.py</code> and <code>daily-feed-summary.py</code> moved to Personal</li> <li><code>garrison-code-watch.py</code> cron removed, script archived</li> </ul>"},{"location":"scripts/CHANGELOG/#2026-07-15-initial-inventory","title":"2026-07-15 \u2014 Initial Inventory","text":"<ul> <li>Initial commit: 79 scripts across 16 categories catalogued in README.md</li> <li>31 cron-attached scripts, 48 manual/indirect</li> </ul>"},{"location":"shark-game/","title":"shark-game","text":"<p>A fantasy league game where players draft coastal regions and earn points based on real-world shark sightings, bites, and fatalities.</p>"},{"location":"shark-game/#project-info","title":"Project Info","text":"<ul> <li>Owner: Germaine</li> <li>Ideation Team: Germaine, Ryan, Garrison (age 11)</li> <li>Status: IN DEVELOPMENT</li> <li>Deployed: https://shark.iamgmb.com (Core Server)</li> <li>Changelog: CHANGELOG.md</li> <li>Note: Game may evolve into real-time multiplayer</li> </ul>"},{"location":"shark-game/#access","title":"Access","text":"<ul> <li>Game: https://shark.iamgmb.com</li> <li>Discord: #shark-game channel (Hermes connected for 2-way chat)</li> <li>Draft reminders: cron-scheduled via shark-draft-reminder.sh</li> </ul>"},{"location":"shark-game/CHANGELOG/","title":"Changelog - Shark Attack Fantasy League","text":""},{"location":"shark-game/CHANGELOG/#2026-07-10","title":"2026-07-10","text":"<ul> <li>Backend & Infrastructure: Backend server deployed (Python/FastAPI on Core), push notifications, Discord-Hermes bridge.</li> </ul>"},{"location":"shark-game/CHANGELOG/#2026-07-10_1","title":"2026-07-10","text":"<ul> <li>Game Logic: Player registration, league creation, season start locked to Aug 1.</li> </ul>"},{"location":"shark-game/CHANGELOG/#2026-07-10_2","title":"2026-07-10","text":"<ul> <li>Frontend: Bottom navigation, PWA manifest, draft room, settings page.</li> </ul>"},{"location":"shark-game/CHANGELOG/#2026-07-09","title":"2026-07-09","text":"<ul> <li>Backend: Shark sighting scraper deployed, Caddy reverse proxy configured.</li> </ul>"},{"location":"shark-game/CHANGELOG/#2026-07-09_1","title":"2026-07-09","text":"<ul> <li>Game Logic: Scoring system designed (1pt sighting, 3pt bite, 10pt fatality).</li> </ul>"},{"location":"shark-game/CHANGELOG/#2026-07-08","title":"2026-07-08","text":"<ul> <li>Design: Game concept finalized, coastal regions defined, database schema.</li> </ul>"},{"location":"shark-game/CHANGELOG/#2026-07-08_1","title":"2026-07-08","text":"<ul> <li>Frontend & Backend: Initial frontend scaffold, API endpoints created.</li> </ul>"},{"location":"transitpin/","title":"transitpin","text":"<p>Owner: Germaine | Status: LIVE (dev) Last Updated: 2026-08-09</p> <p>TransitPin is a real-time student transportation tracking SaaS built for the private contractor market \u2014 the companies school districts hire to move students. It replaces paper route sheets, manual parent texts, and clipboards with a live GPS platform: driver PWA, parent ETA portal, bell-schedule intelligence, and an admin dashboard for owners.</p> <p>Built from a direct client engagement with Village Express Transportation (Savannah, GA).</p>"},{"location":"transitpin/#access","title":"Access","text":"Resource URL Location Notes Parent Portal https://villageexpress.transitpin.com/ Core (152.53.192.33) Caddy reverse proxy Driver PWA https://villageexpress.transitpin.com/driver.html Core WebSocket at /ws/driver* Admin Dashboard https://villageexpress.transitpin.com/admin.html Core Dispatch map, driver tracking WebSocket Relay port 8210 (localhost) Core systemd: village-express.service"},{"location":"transitpin/#tech-stack","title":"Tech Stack","text":"<ul> <li>Frontend: Vanilla HTML/CSS/JS, Leaflet maps, TomTom traffic tiles</li> <li>Backend: WebSocket relay (Node.js), systemd service</li> <li>Reverse Proxy: Caddy (TLS auto-provision)</li> <li>GPS: Browser <code>watchPosition</code> API, Wake Lock API</li> <li>Data: driver-manifest.json (static routes), PWA manifest</li> </ul>"},{"location":"transitpin/#quick-start","title":"Quick Start","text":"<pre><code>git clone https://git.itpropartner.com/ippadmin/transitpin.git\ncd transitpin/\n# Start WebSocket relay\nsudo systemctl start village-express\n# Caddy serves static files + proxies /ws/* to WebSocket relay\n</code></pre>"},{"location":"transitpin/#related","title":"Related","text":"<ul> <li>itpp-infrastructure \u2014 server inventory, DNS</li> <li>itpp-standards \u2014 docs standards and templates</li> <li>transitpin-white-label \u2014 white-label portal builder</li> </ul>"},{"location":"transitpin/CHANGELOG/","title":"TransitPin \u2014 CHANGELOG","text":""},{"location":"transitpin/CHANGELOG/#2026-08-09-initial-migrate-to-git","title":"2026-08-09 \u2014 Initial: migrate to Git","text":"<ul> <li>Migrated project to Git with ITPP standards (.gitignore, README template, docs-check CI).</li> </ul>"},{"location":"transitpin/CHANGELOG/#2026-07-29","title":"2026-07-29","text":""},{"location":"transitpin/CHANGELOG/#added","title":"Added","text":"<ul> <li>Follow Driver \u2014 each driver card in Dispatch tab has a \ud83d\udccd button. Clicking centers the map on that driver and pans to follow their position updates every 3s. Dragging the map or clicking again unfollows. Blue glow on active follow. (JS: <code>window.followedDriverId</code>, <code>dispatchMap.panTo</code> in position handler)</li> <li>Wake Lock API \u2014 driver page requests <code>navigator.wakeLock.request('screen')</code> when GPS tracking starts, preventing screen dim/lock. Released on stop. Re-acquired automatically on visibility change. \"\ud83d\udd12 Screen awake\" / \"\u26a0\ufe0f Screen may dim\" indicator below GPS grid.</li> <li>TomTom traffic overlay \u2014 \ud83d\udea6 toggle button on Dispatch tab. Toggles real-time traffic flow tiles (green/yellow/red overlay) on the Leaflet map.</li> </ul>"},{"location":"transitpin/CHANGELOG/#fixed","title":"Fixed","text":"<ul> <li>Permission 600\u2192644 \u2014 driver.html and manifest were root-only, blocked Caddy from serving them.</li> <li>Caddy WebSocket route \u2014 changed from <code>handle_path /ws/driver/*</code> to <code>handle_path /ws/driver*</code> to match bare <code>/ws/driver</code> path.</li> <li>Position ID field mismatch \u2014 server broadcasts <code>position</code> with <code>driverId</code> field, but admin JS was looking for <code>d.id</code>. Fixed <code>updateDriverPosition</code>, <code>updateDriverCard</code>, <code>updateDriverStatus</code>, and <code>driver-offline</code> handler to accept both <code>id</code> and <code>driverId</code>.</li> <li>TomTom tile URL \u2014 was missing <code>/absolute/</code> in the path, causing 400 errors on all traffic tiles. Fixed from <code>/tile/flow/{z}/{x}/{y}.png</code> to <code>/tile/flow/absolute/{z}/{x}/{y}.png</code>.</li> <li>JS scope on toggleTraffic \u2014 function was local inside <code>initDispatch()</code>, invisible to onclick. Changed to <code>window.toggleTraffic</code>.</li> <li>Parent portal dashboard crash after login \u2014 <code>escapeHtml()</code> was called in 10 places throughout <code>renderDashboard()</code> and <code>renderEmergencyContacts()</code>, but the function was defined as <code>escHTML()</code> (abbreviated). This threw <code>ReferenceError</code> immediately after login, leaving a blank dashboard. Fix: added <code>const escapeHtml = escHTML;</code> alias at line 1121. Root cause: function was named one way during message rendering code (<code>escHTML</code>) and inconsistently named in dashboard/emergency contacts code (<code>escapeHtml</code>).</li> </ul>"},{"location":"transitpin/CHANGELOG/#architecture","title":"Architecture","text":"<ul> <li>WebSocket relay running as <code>village-express.service</code> (systemd, port 8210)</li> <li>Caddy reverse-proxies <code>/ws/driver*</code> \u2192 <code>127.0.0.1:8210</code> for TLS</li> <li>Driver PWA streams GPS every 3s via <code>watchPosition</code></li> <li>Dispatchers receive real-time position broadcasts</li> </ul>"},{"location":"transitpin/CHANGELOG/#future-projects","title":"Future Projects","text":""},{"location":"transitpin/CHANGELOG/#native-background-tracking-capacitor-wrapper","title":"Native Background Tracking (Capacitor Wrapper)","text":"<p>The PWA approach cannot keep GPS running when the phone screen locks. No browser-based solution supports this.</p> <p>Next step: Wrap the driver PWA with Capacitor to produce real iOS/Android apps with native background geolocation permissions (<code>CLLocationManager</code> on iOS, <code>FusedLocationProviderClient</code> on Android). The existing HTML/JS frontend stays \u2014 Capacitor wraps it with native APIs.</p> <p>Requirements: - Capacitor CLI + native iOS/Android project scaffolding - <code>cordova-plugin-background-geolocation</code> or Capacitor's built-in geolocation plugin with background mode - App store deployment for iOS (Apple Developer account needed) - Play Store or direct APK for Android</p> <p>Estimated effort: 1-2 days for Capacitor setup + background plugin integration. App store submission adds 1-2 weeks for review.</p> <p>No rewrite needed \u2014 the web code stays; Capacitor adds the native shell.</p>"},{"location":"verdicttank/","title":"verdicttank","text":"<p>AI-powered business proposal review platform. Five specialized agents, three independent judges, majority-rules verdict.</p> <p>Status: PRE-LAUNCH (rebranded from SharkTank) Owner: Germaine Brown Built by: Sho'Nuff (Hermes Agent) Pipeline Verdict: 3/3 Unanimous Conditional Go (Aug 7, 2026)</p>"},{"location":"verdicttank/#access","title":"Access","text":"Resource URL Access Mockup (landing page) https://mockup.iamgmb.com/verdicttank/ Public Critical Review https://mockup.iamgmb.com/verdicttank/critical-review.html Public Proposal (updated) https://proposals.iamgmb.com/verdicttank Public Proposal (original, archived) https://proposals.iamgmb.com/sharktank Public Domain verdicttank.com Available, not registered AI Costs admin-ai key: <code>verdicttank-prod</code> TBD"},{"location":"verdicttank/#pipeline","title":"Pipeline","text":"<pre><code>Phase 1 \u2192 Research Agent \u2014 Live web verification with citations\nPhase 2 \u2192 Critic Agent \u2014 10-dimension brutal review, scored 1-10\nPhase 3 \u2192 Three judges in parallel (majority rules):\n Judge A \u2014 Independent architecture\n Judge B \u2014 Independent architecture\n Judge C \u2014 Independent architecture\n \u2192 PDF verdict delivered by email\n</code></pre> <p>Cost per review: $0.55 fully loaded Turnaround: ~5-9 minutes Degraded mode: Runs with 2 judges if 1 is down. Free re-run if only 1 available.</p>"},{"location":"verdicttank/#pricing-revised-post-review","title":"Pricing (Revised \u2014 Post-Review)","text":"Tier Price Reviews/Month Free $0 1 Starter $19/mo 5 ($3 overage) Pro $49/mo 20 ($4 overage) Scale $99/mo 50 ($5 overage) Enterprise $299/mo 150 (custom) <p>Pay-per-review: $14.99. Annual: 20% discount.</p>"},{"location":"verdicttank/#current-state","title":"Current State","text":"<ul> <li>Pipeline skill (<code>shark-tank-review</code>) fully built and tested</li> <li>Pipeline self-reviewed: 3/3 unanimous Conditional Go (Aug 7, 2026)</li> <li>Proposal page live (updated VerdictTank + archived SharkTank)</li> <li>Mockup landing page live at mockup.iamgmb.com/verdicttank</li> <li>Critical review addendum live</li> <li>Backend API (FastAPI) \u2014 to build</li> <li>PDF generation (WeasyPrint) \u2014 to build</li> <li>Email delivery (MXroute) \u2014 to build</li> <li>Domain: verdicttank.com \u2014 to register</li> <li>Trademark: USPTO Class 42 \u2014 to file</li> </ul>"},{"location":"verdicttank/#key-risks-from-pipeline-review","title":"Key Risks (From Pipeline Review)","text":"<ul> <li>Pricing suicide (fixed: tiered usage-based)</li> <li>Sony trademark conflict (fixed: rebranded)</li> <li>Training-data recursion (Year 3+ \u2014 acknowledged, cap plan in place)</li> <li>Liability asymmetry (GO verdicts > NO-GO exposure)</li> <li>Alignment drift (models becoming less critical over time)</li> <li>SEO desert from rebrand (mitigation: 301 redirects, content marketing)</li> </ul>"},{"location":"verdicttank/CHANGELOG/","title":"VerdictTank \u2014 Changelog","text":""},{"location":"verdicttank/CHANGELOG/#2026-08-07","title":"2026-08-07","text":""},{"location":"verdicttank/CHANGELOG/#rebrand-sharktank-verdicttank","title":"Rebrand (SharkTank \u2192 VerdictTank)","text":"<ul> <li>Project renamed: /root/projects/sharktank \u2192 /root/projects/verdicttank</li> <li>Mockup moved: mockup.iamgmb.com/sharktank \u2192 mockup.iamgmb.com/verdicttank</li> <li>New proposal: proposals.iamgmb.com/verdicttank (incorporates all pipeline review feedback)</li> <li>Original SharkTank proposal archived with \"superseded\" banner</li> <li>Mockup landing page: removed all model names, added file upload (doc/docx/pdf), purged all em dashes</li> <li>Proposals index: VerdictTank (primary) + SharkTank (archived, grayed out)</li> <li>Critical review page: rebranded, em dashes purged</li> </ul>"},{"location":"verdicttank/CHANGELOG/#pipeline-review-results","title":"Pipeline Review Results","text":"<ul> <li>First dogfood: ran proposal through full VerdictTank pipeline</li> <li>Verdict: 3/3 Unanimous Conditional Go</li> <li>Phase 1 (Research Agent): No direct competitor found \u2014 cross-vendor architecture is novel</li> <li>Phase 2 (Critic Agent): 4/10 average \u2014 4 fatal flaws: trademark, pricing, financial model, no validation</li> <li>Phase 3a (Judge A): Ratified 85% of critic \u2014 pricing > name in priority, rejected co-founder as condition</li> <li>Phase 3b (Judge B): Caught overage incentive flaw, compound reliability risk (97.5% = 18hr/mo downtime)</li> <li>Phase 3c (Judge C): Meta-layer insight, training-data recursion (Year 3), liability asymmetry, SEO desert</li> <li>Critical review addendum: https://mockup.iamgmb.com/verdicttank/critical-review.html</li> <li>Priority-ranked 11-item action plan with reconciled timeline (Apr 2027 paid launch)</li> <li>Novel insights: product IS content, verdict confidence scoring, degraded-mode fallback needed</li> </ul>"},{"location":"verdicttank/CHANGELOG/#updated-proposal-post-review","title":"Updated Proposal (Post-Review)","text":"<ul> <li>Full rebrand to VerdictTank throughout</li> <li>Tiered usage-based pricing (no \"unlimited\"): $19/$49/$99/$299 + $14.99 pay-per-review</li> <li>Financial model with churn (5-7%), CAC ($15-25), LTV ($210-290), LTV:CAC (~10:1)</li> <li>Real break-even estimate: 25-35 users (not 6)</li> <li>Timeline pushed to Mar-Apr 2027 paid launch</li> <li>New risks: training-data recursion, liability asymmetry, alignment drift, SEO desert</li> <li>Pipeline described by roles only (no model names)</li> <li>Pipeline self-review section with verdict banner</li> <li>Added: degraded-mode fallback, benchmark accuracy report, advisory board plan</li> <li>Product origin: dogfooding at IT Pro Partner</li> </ul>"},{"location":"verdicttank/CHANGELOG/#pending","title":"Pending","text":"<ul> <li>Register verdicttank.com domain</li> <li>File VerdictTank trademark (USPTO Class 42)</li> <li>Landing page + waitlist at verdicttank.com</li> <li>Interview 20 target ICP users</li> <li>Publish benchmark accuracy report (20 proposals, known outcomes)</li> <li>Recruit 3+ named advisors</li> <li>FastAPI backend with job queue</li> <li>WeasyPrint PDF generation</li> <li>Email delivery via MXroute</li> <li>LiteLLM virtual key: verdicttank-prod</li> </ul>"}]} |