Compare commits
16
Commits
master
..
538876ac16
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
538876ac16 | ||
|
|
7f31eb0f98 | ||
|
|
7cbef9bd8f | ||
|
|
100e65c296 | ||
|
|
5330a9b1b3 | ||
|
|
0b56cfc23f | ||
|
|
fcc9863232 | ||
|
|
6e0d793696 | ||
|
|
1056e386f7 | ||
|
|
b81d3882e2 | ||
|
|
6ea1200a9d | ||
|
|
4cb95b5df2 | ||
|
|
b6a8a31bfb | ||
|
|
cfceae14e4 | ||
|
|
661be04b22 | ||
|
|
79a383a3b5 |
@@ -20,7 +20,7 @@
|
||||
- Ops Portal (FastAPI, port 8090)
|
||||
- Prometheus (native, port 9090) + Grafana (native, port 3002)
|
||||
- Uptime Kuma (Docker, port 3001) — 9+ monitors
|
||||
- Vaultwarden (Docker, port 8080) — vault.iamgmb.com
|
||||
- Vaultwarden (migrated to app1, port 8081) — vault.iamgmb.com
|
||||
- Twenty CRM (Docker) — crm.debtrecoveryexperts.com
|
||||
- DocuSeal (Docker, port 3000) — sign.core.itpropartner.com
|
||||
- SearXNG (Docker, port 8888)
|
||||
@@ -93,17 +93,17 @@
|
||||
|
||||
## Model Fallback Chain
|
||||
|
||||
All providers use direct API keys. GPT-5.5 quality survives through admin-ai → OpenRouter, then degrades through DeepSeek → Gemini → Grok.
|
||||
Direct API keys for all providers. Claude Sonnet 5 for primary quality, then direct fallbacks through DeepSeek → GPT → Grok → Gemini.
|
||||
|
||||
| # | 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 |
|
||||
| Primary | Claude Sonnet 5 | admin-ai | Self-hosted LiteLLM (app1) |
|
||||
| Fallback 1 | DeepSeek v4 Pro | DeepSeek (direct) | api.deepseek.com |
|
||||
| Fallback 2 | GPT-5.6 Terra | admin-ai | Self-hosted LiteLLM (app1) |
|
||||
| Fallback 3 | Grok 2 1212 | xAI (direct) | api.x.ai |
|
||||
| Fallback 4 | Gemini 3.6 Flash | Google (direct) | generativelanguage.googleapis.com |
|
||||
|
||||
**Credits (Jul 17):** DeepSeek $58, OpenRouter ~$30 remaining, OpenAI/xAI/Google on pay-as-you-go
|
||||
**Credits (Jul 24):** DeepSeek $~58 remaining, OpenAI/xAI/Google on pay-as-you-go
|
||||
**Health check:** Daily 8 AM cron (`model-usage-check`)
|
||||
|
||||
---
|
||||
@@ -139,7 +139,7 @@ All providers use direct API keys. GPT-5.5 quality survives through admin-ai →
|
||||
| my.voipsimplicity.com | Cloudflare | app3 | VoIP customer portal |
|
||||
| portal.debtrecoveryexperts.com | 152.53.192.33 | Core | DRE portal |
|
||||
| crm.debtrecoveryexperts.com | Cloudflare Access | — | DRE CRM |
|
||||
| vault.iamgmb.com | 152.53.192.33 | Core | Vaultwarden |
|
||||
| vault.iamgmb.com | 152.53.36.131 | app1 | Vaultwarden |
|
||||
| sign.iamgmb.com | 152.53.192.33 | Core | Document signing |
|
||||
| shark.iamgmb.com | 152.53.192.33 | Core | Shark game |
|
||||
|
||||
@@ -158,7 +158,7 @@ All providers use direct API keys. GPT-5.5 quality survives through admin-ai →
|
||||
|---|---|---|---|
|
||||
| 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 |
|
||||
| run-wisp-backup | Daily 6 AM | s3://mikrotik-ccr-backups/ | CCR config (via wisp-backup.py) |
|
||||
| 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 |
|
||||
@@ -220,7 +220,7 @@ unifi.itpropartner.com → :8443 (UniFi)
|
||||
| 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 |
|
||||
| Vaultwarden | https://vault.iamgmb.com | app1 | 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 |
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
# API Master List - IT Pro Partner
|
||||
|
||||
**Owner:** Sho'Nuff (Hermes) | **Last updated:** 2026-07-31
|
||||
**Purpose:** Single inventory of every API used across ITPP projects. Categories: Internal (self-hosted/our own), External (free or no key), Paid External (subscription/usage-based). No keys stored here - credentials live in `/root/.hermes/.env`, `.aws/credentials`, or Vaultwarden.
|
||||
|
||||
---
|
||||
|
||||
## 1. Internal APIs (self-hosted, our own services)
|
||||
|
||||
| API | Vendor/Source | Host:Port | Used In |
|
||||
|---|---|---|---|
|
||||
| Super Search MCP | ITPP (in-house) | Core :8899 | Hermes MCP, DRE skip tracing, research tasks |
|
||||
| DRE MCP | ITPP (in-house) | Core :8900 | Debt Recovery Experts letters, approval workflow |
|
||||
| Twilio MCP | ITPP wrapper on Twilio | Core :8901 | Hermes voice calls, call logs |
|
||||
| OSINT Person MCP | ITPP (in-house) | Core :8902 | DRE skip tracing, background research |
|
||||
| FT360 MCP | ITPP (FleetTracker360) | Core :8903 | Traccar GPS positions, travel stats |
|
||||
| PRY | ITPP (in-house) | Core :8905 | Internal agent service |
|
||||
| Ops Portal | ITPP (in-house) | Core :8090 | Ops dashboard, backup-restore UI, service health |
|
||||
| IntelSight API | ITPP (intelsight.io) | Core :8099 | IntelSight product backend |
|
||||
| Diglocate API | ITPP (in-house) | Core :8000 | Diglocate product backend |
|
||||
| Rally backend | ITPP (in-house) | Core :8105 | rally.iamgmb.com family calendar |
|
||||
| Village Express | ITPP (in-house) | Core :8210 | Village Express parent portal |
|
||||
| Voice Agent (STT) | ITPP (Deepgram-based) | Core :9000 | Voice agent stack |
|
||||
| Voice Agent (agent) | ITPP | Core :9101 | Voice agent stack |
|
||||
| Shopping Cart | ITPP (in-house) | Core :8101 | Email-order shopping cart builder |
|
||||
| OSINT API | ITPP (in-house) | Core :8100 | OSINT research tool |
|
||||
| hermes-assistant | ITPP (in-house) | Core :8082 | Internal assistant service |
|
||||
| Shark Game | ITPP (in-house) | Core :8083 | Shark Attack Fantasy League |
|
||||
| SearXNG | SearXNG (self-hosted) | Core :8888 | Super Search primary provider, all web searches |
|
||||
| Camofox Browser | Camofox (self-hosted) | Core :9377 | Browser automation backend |
|
||||
| Twenty CRM | Twenty (self-hosted) | Core :3003 | CRM |
|
||||
| Uptime Kuma | Uptime Kuma (self-hosted) | Core :3001 | Service monitoring, status pages |
|
||||
| Grafana | Grafana (self-hosted) | Core :3000 | Dashboards |
|
||||
| Prometheus | Prometheus (self-hosted) | Core | Metrics collection |
|
||||
| Telegraf | Telegraf (self-hosted) | Core | Metrics agent |
|
||||
| MikroTik Exporter | swoga (self-hosted) | Core :9436 | MikroTik router metrics |
|
||||
| SNMP HTTP Server | ITPP script | Core :9274 | SNMP device data |
|
||||
| LiteLLM | LiteLLM (self-hosted) | app1 :4000 | AI model gateway (admin-ai.itpropartner.com) |
|
||||
| Open WebUI | Open WebUI (self-hosted) | app1 | Chat UI |
|
||||
| Wazuh | Wazuh (self-hosted) | app1 :5601/:9200 | SIEM/XDR, security monitoring |
|
||||
| Vaultwarden | Vaultwarden (self-hosted) | app1 :8081 | Password vault |
|
||||
| Komodo | Komodo (self-hosted) | app1 :9120 | Server/container management |
|
||||
| DocuSeal | DocuSeal (self-hosted) | app1 :3000 | E-signature, contracts |
|
||||
| Kokoro TTS | Kokoro (self-hosted) | app1 :8880 | Text-to-speech |
|
||||
| Hudu | Hudu (self-hosted) | app2 :3000 | IT documentation, assets, credentials |
|
||||
| Traccar | Traccar (self-hosted) | app2 :8082 | GPS tracking (FleetTracker360) |
|
||||
| Gitea | Gitea (self-hosted) | app2 :3001 | git.itpropartner.com repos |
|
||||
| UNMS / UISP | Ubiquiti (self-hosted) | app2 :8444 | WISP network management |
|
||||
| UniFi Controller | Ubiquiti (self-hosted) | app2 :8443 | UniFi network management |
|
||||
| Dawarich | Dawarich (self-hosted) | app2 :3002 | Location history |
|
||||
| Technitium DNS | Technitium (self-hosted) | app2 :5380 | DNS server |
|
||||
| CloudPanel | CloudPanel (self-hosted) | app3 | WordPress hosting panel |
|
||||
| Backup-Restore App | ITPP (in-house) | app3 :8090 | my.itpropartner.com/bacrestore |
|
||||
| Splynx API | Splynx (self-hosted) | portal.forefrontwireless.com/admin/api | Forefront Wireless ISP billing, WISP ops |
|
||||
| Mealie | Mealie (self-hosted) | 10.1.1.14:9925 (recipe.iamgmb.com) | Recipe manager |
|
||||
| Hermes MCP servers (aggregate) | ITPP | Core | Super Search, DRE, Twilio, OSINT, FT360 |
|
||||
|
||||
## 2. External APIs (free / no key)
|
||||
|
||||
| API | Vendor | Used In |
|
||||
|---|---|---|
|
||||
| NWS API (api.weather.gov) | NOAA | Weather forecasts, alerts (Red Oak check, product weather blocks) |
|
||||
| Open-Meteo | Open-Meteo | Quick forecasts for products, weather data |
|
||||
| DuckDuckGo Instant Answers | DuckDuckGo | Super Search fallback, lookups |
|
||||
| Wikipedia | Wikimedia | Super Search lookups, research |
|
||||
| OpenStreetMap / OSRM | OSM | Maps, geocoding, routes |
|
||||
| CourtListener | Free Law Project | OSINT court records search |
|
||||
| OpenCorporates | OpenCorporates | OSINT business records |
|
||||
| Telegram Bot API | Telegram | Hermes gateway, bot messaging |
|
||||
| Tailscale API | Tailscale | Tailnet management, device auth |
|
||||
| iCloud CalDAV | Apple | Calendar sync (Anita's calendar) |
|
||||
| IMAP/SMTP | MXroute | All email (shonuff@germainebrown.com, g@) |
|
||||
| VirusTotal | VirusTotal (free tier) | File/URL scanning |
|
||||
|
||||
## 3. Paid External APIs
|
||||
|
||||
| API | Vendor | Used In |
|
||||
|---|---|---|
|
||||
| Claude | Anthropic | AI model (critical client tasks, code review) |
|
||||
| GPT | OpenAI | AI model (fallback, tools) |
|
||||
| DeepSeek | DeepSeek | Primary AI model (conductor/workhorse) |
|
||||
| Gemini | Google (AI Studio) | AI model fallback |
|
||||
| Grok / xAI | xAI | AI model fallback, X search |
|
||||
| OpenRouter | OpenRouter | AI model routing (fallback) |
|
||||
| Groq | Groq | AI model (fast inference) |
|
||||
| Mistral | Mistral AI | AI model |
|
||||
| Cohere | Cohere | AI model |
|
||||
| Perplexity | Perplexity | AI model, research |
|
||||
| Fireworks | Fireworks AI | AI model |
|
||||
| NVIDIA | NVIDIA | AI model |
|
||||
| Qwen / Alibaba | Alibaba Cloud | AI model |
|
||||
| AI21 | AI21 Labs | AI model |
|
||||
| ZAI | Z.ai | AI model |
|
||||
| MiniMax | MiniMax | AI model, TTS |
|
||||
| FLUX / FAL | FAL.ai | Image generation (FLUX 2 Klein) |
|
||||
| Deepgram | Deepgram | Voice agent STT |
|
||||
| ElevenLabs | ElevenLabs | Sho'Nuff voice, outbound calls |
|
||||
| Twilio | Twilio | Voice calls, SMS (SMS pending), 10DLC |
|
||||
| RingLogix | RingLogix | CPaaS phone system (VoIP Simplicity) |
|
||||
| SyncroMSP | SyncroMSP | RMM/PSA, client asset management |
|
||||
| Bitdefender GravityZone | Bitdefender | Endpoint security, client AV |
|
||||
| Cloudflare | Cloudflare | DNS zones, domains, records |
|
||||
| Hetzner Cloud | Hetzner | app1-bu standby server, wphost02 |
|
||||
| netcup | netcup | Core/app1/app2/app3 servers |
|
||||
| Wasabi S3 | Wasabi | All backups (hermes-vps-backups bucket, app backups) |
|
||||
| Firecrawl | Firecrawl | Web extraction (Super Search fallback) |
|
||||
| Exa | Exa | Super Search premium backend, OSINT research (20k free/mo, paid beyond) |
|
||||
| UISP API | Ubiquiti | WISP device data (backup-uisp.sh) |
|
||||
|
||||
---
|
||||
|
||||
## Quick counts
|
||||
- Internal: ~40 endpoints
|
||||
- External free: 15
|
||||
- Paid external: ~32
|
||||
|
||||
## Health monitoring
|
||||
- Script: `/root/.hermes/scripts/api-health-check.py` (probes all 41 internal endpoints)
|
||||
- Watchdog: cron job `35f99c362658` runs every 30 min, alerts Telegram only when something is down
|
||||
- JSON state: `/var/log/api-health/api-health.json`
|
||||
- Ops Portal: `GET /api/api-health` (auth required) serves the JSON snapshot; Servers page shows "API Health" card with per-endpoint up/down + latency, auto-refreshes every 60s with the page
|
||||
- Coverage: 41 endpoints across Core, app1, app2, app3 (verified 41/41 up on 2026
|
||||
7: 31)
|
||||
- Note: localhost-bound services on remote hosts are probed via SSH (`ssh root@host curl 127.0.0.1:PORT`); Grafana is on :3002 not :3000; Wazuh dashboard is HTTPS-only.
|
||||
+178
-122
@@ -1,159 +1,215 @@
|
||||
# Backup Plan — All Servers
|
||||
# ITPP Backup Plan
|
||||
|
||||
**Last Updated:** July 16, 2026
|
||||
**S3 Provider:** Wasabi (s3.us-east-1.wasabisys.com)
|
||||
**Buckets:** hermes-vps-backups, itpropartner-backups, mikrotik-ccr-backups
|
||||
**Versioning:** ON (all buckets)
|
||||
> **Last updated:** 2026-07-28
|
||||
> **Scope:** All ITPP infrastructure backups — Hermes core, application servers, routers, and external services.
|
||||
> **Storage:** Wasabi S3 (us-east-1) via `--endpoint-url https://s3.us-east-1.wasabisys.com`
|
||||
> **Cron backend:** Hybrid — system crontab + Hermes cron jobs
|
||||
|
||||
---
|
||||
|
||||
## Schedule (ET timezone)
|
||||
## Backup Inventory (26 targets)
|
||||
|
||||
| Time | Server | Script | What |
|
||||
|---|---|---|---|
|
||||
| Every 15 min | Core | hermes-live-sync | Hermes session state → S3 live/ |
|
||||
| 1:00 AM | Core | hermes-backup.sh | Full Hermes backup |
|
||||
| 1:30 AM | Core | core-services-backup.sh | Vaultwarden, Twenty CRM, SearXNG, Komodo, Prometheus, Grafana, Uptime Kuma |
|
||||
| 2:00 AM | Core | backup-audit-check.sh | Verify all backups |
|
||||
| 2:00 AM | app1 | /root/.hermes/scripts/app1-backup.sh | LiteLLM, Open WebUI, n8n, MCP configs, Mattermost |
|
||||
| 2:30 AM | app2 | /root/.hermes/scripts/app2-backup.sh | Traccar, Gitea, Hudu, UNMS, UniFi |
|
||||
| 3:00 AM | Core | root-essentials-backup.sh | /root essentials |
|
||||
| 3:00 AM | app3 | /root/.hermes/scripts/app3-backup.sh | CloudPanel, MySQL, WordPress, Nginx configs |
|
||||
| 5:00 AM | Core | wphost02-backup (cron) | wphost02 webapps + databases → S3 |
|
||||
| 1:00 AM + 1:00 PM | app3 | /opt/backup-restore/snapshot.sh | Per-site WordPress snapshots (files + DB), 60-day retention |
|
||||
| 3:00 AM | Core | docker-volume-sync.sh | Docker volumes |
|
||||
| 4:00 AM | Core | system-config-sync.sh | System configs |
|
||||
| 6:00 AM | Core | home-router-backup.sh | MikroTik CCR config |
|
||||
| Every 10 min | core-bu | warm-standby-sync | Pull from S3 live/ → standby readiness |
|
||||
### Core (152.53.192.33) — RS 2000
|
||||
|
||||
| Service | Method | Destination | Schedule | Last Verified |
|
||||
|---------|--------|-------------|----------|---------------|
|
||||
| Hermes Agent (full) | `hermes-backup.sh` — tar.gz of config, skills, profiles, sessions | `s3://hermes-vps-backups/hermes-full-backup/` | 1:00 AM | 2026-07-28 |
|
||||
| Hermes Live Sync | `hermes-live-sync` cron — session state + profiles DB | `s3://hermes-vps-backups/live/` | Every 15 min | 2026-07-28 20:42 |
|
||||
| /root Essentials | `root-essentials-backup.sh` — dotfiles, keys, scripts | `s3://hermes-vps-backups/root-backup/` | 3:00 AM | 2026-07-28 |
|
||||
| Grafana | `core-services-backup.sh` — SQLite DB dump | `s3://hermes-vps-backups/core/grafana/` | 1:30 AM | 2026-07-28 |
|
||||
| Uptime Kuma | `core-services-backup.sh` — SQLite DB dump | `s3://hermes-vps-backups/core/uptime-kuma/` | 1:30 AM | 2026-07-28 |
|
||||
| Docker Volumes | `core-services-backup.sh` — tar of key compose volumes | `s3://hermes-vps-backups/volumes/` | 1:30 AM | 2026-07-28 |
|
||||
| Prometheus | `core-services-backup.sh` — TSDB snapshot | `s3://hermes-vps-backups/core/prometheus/` | 1:30 AM | 2026-07-28 |
|
||||
|
||||
### App1 (152.53.36.131) — RS 4000
|
||||
|
||||
| Service | Method | Destination | Schedule | Last Verified |
|
||||
|---------|--------|-------------|----------|---------------|
|
||||
| Open WebUI | `app1-backup.sh` — data dir tar.gz | `s3://hermes-vps-backups/app1/openwebui/` | 2:00 AM | 2026-07-28 |
|
||||
| LiteLLM | `litellm-backup.sh` — Postgres DB dump + .env | `s3://hermes-vps-backups/app1/litellm/` | 3:30 AM | 2026-07-28 |
|
||||
| n8n | `app1-backup.sh` — Postgres DB dump | `s3://hermes-vps-backups/app1/n8n/` | 2:00 AM | 2026-07-28 |
|
||||
| MCP Server Configs | `app1-backup.sh` — MCP settings files | `s3://hermes-vps-backups/app1/mcp/` | 2:00 AM | 2026-07-28 |
|
||||
| Vaultwarden | `vaultwarden-backup.sh` — SQLite DB dump | `s3://hermes-vps-backups/app1/vaultwarden/` | 2:30 AM | 2026-07-28 |
|
||||
| Komodo | `komodo-backup.sh` — MongoDB dump + compose + keys | `s3://hermes-vps-backups/app1/komodo/` | 3:45 AM | 2026-07-28 |
|
||||
| DocuSeal | `docuseal-backup.sh` — SQLite DB + attachments | `s3://hermes-vps-backups/app1/docuseal/` | 4:00 AM | 2026-07-28 |
|
||||
| Twenty CRM | `twenty-backup.sh` — Postgres dump + .env + compose | `s3://hermes-vps-backups/app1/twenty/` | 4:15 AM | 2026-07-28 |
|
||||
| Kokoro TTS | *(stateless — no backup needed)* | — | — | — |
|
||||
|
||||
### App2 (152.53.39.202) — RS 4000
|
||||
|
||||
| Service | Method | Destination | Schedule | Last Verified |
|
||||
|---------|--------|-------------|----------|---------------|
|
||||
| Hudu | `hudu-backup.sh` — Postgres dump | `s3://hermes-vps-backups/hudu/backups/` | 7:00 AM | 2026-07-28 |
|
||||
| Gitea | `gitea-backup.sh` — repos + DB dump | `s3://hermes-vps-backups/gitea/daily/` | 8:00 AM | 2026-07-28 |
|
||||
| UNMS | `unms-backup-sync.sh` — auto-backup .unms | `s3://hermes-vps-backups/unms-backups/live/backups/` | 6:00 AM | 2026-07-28 |
|
||||
| UniFi | `unifi-backup-sync.sh` — auto-backup .unf | `s3://hermes-vps-backups/unifi-backups/` | 2:00 AM | 2026-07-18 |
|
||||
| Traccar | `app2-backup.sh` — H2 DB + config | `s3://hermes-vps-backups/app2/traccar/` | 2:30 AM | 2026-07-28 |
|
||||
|
||||
### App3 (152.53.241.111) — RS 4000
|
||||
|
||||
| Service | Method | Destination | Schedule | Last Verified |
|
||||
|---------|--------|-------------|----------|---------------|
|
||||
| CloudPanel DB | `app3-backup.sh` — SQLite DB | `s3://hermes-vps-backups/app3/cloudpanel/` | 3:00 AM | 2026-07-28 |
|
||||
| MySQL (all DBs) | `app3-backup.sh` — mysqldump | `s3://hermes-vps-backups/app3/mysql/` | 3:00 AM | 2026-07-28 |
|
||||
| WordPress Files | `app3-backup.sh` — wp-content tar.gz | `s3://hermes-vps-backups/app3/wordpress/` | 3:00 AM | 2026-07-28 |
|
||||
| Nginx Configs | `app3-backup.sh` — sites-enabled + config | `s3://hermes-vps-backups/app3/config/` | 3:00 AM | 2026-07-28 |
|
||||
| WordPress Snapshots | `/opt/backup-restore/snapshot.sh` — per-site tar.gz | `/opt/backup-restore/snapshots/` (local, 30-day retention) | 6 AM / 6 PM | 2026-07-28 13:00 |
|
||||
|
||||
### wphost02 (5.161.62.38) — Hetzner CPX21
|
||||
|
||||
| Service | Method | Destination | Schedule | Last Verified |
|
||||
|---------|--------|-------------|----------|---------------|
|
||||
| WordPress (7 sites) | `ssh → /root/backup.sh` — per-site tar.gz + all DBs | `s3://hermes-vps-backups/wphost02-backup/` | 5:00 AM | 2026-07-28 |
|
||||
|
||||
### Home Router
|
||||
|
||||
| Service | Method | Destination | Schedule | Last Verified |
|
||||
|---------|--------|-------------|----------|---------------|
|
||||
| MikroTik CCR2004 | `run-wisp-backup.sh` — export .rsc via SSH | `s3://mikrotik-ccr-backups/wisp-backups/configs/home/` | 6:00 AM | 2026-07-28 |
|
||||
|
||||
### External
|
||||
|
||||
| Service | Method | Destination | Schedule | Last Verified |
|
||||
|---------|--------|-------------|----------|---------------|
|
||||
| Hetzner Snapshots | `snapshot-hetzner.py` — API-driven disk snapshots | Hetzner Cloud (weekly) | Mon 5:00 AM | — |
|
||||
|
||||
---
|
||||
|
||||
## Coverage by Server
|
||||
## Schedules Summary (ET)
|
||||
|
||||
### Core (152.53.192.33)
|
||||
| Time | What | Runner | Script |
|
||||
|------|------|--------|--------|
|
||||
| Every 15 min | Hermes session state | Hermes cron | `hermes-live-sync` |
|
||||
| 1:00 AM | Full Hermes backup | crontab | `hermes-backup.sh` |
|
||||
| 1:30 AM | Grafana, Uptime Kuma, Docker volumes, Prometheus | crontab | `core-services-backup.sh` |
|
||||
| 2:00 AM | Open WebUI, n8n, MCP configs (App1) | crontab | `app1-backup.sh` |
|
||||
| 2:30 AM | Vaultwarden (App1) + Traccar (App2) | Hermes cron / crontab | `vaultwarden-backup.sh`, `app2-backup.sh` |
|
||||
| 3:00 AM | /root essentials + App3 (CloudPanel, MySQL, WP, Nginx) | crontab | `root-essentials-backup.sh`, `app3-backup.sh` |
|
||||
| 3:30 AM | LiteLLM (App1) | Hermes cron | `litellm-backup.sh` |
|
||||
| 3:45 AM | Komodo (App1) | Hermes cron | `komodo-backup.sh` |
|
||||
| 4:00 AM | DocuSeal (App1) | Hermes cron | `docuseal-backup.sh` |
|
||||
| 4:15 AM | Twenty CRM (App1) | Hermes cron | `twenty-backup.sh` |
|
||||
| 5:00 AM | wphost02 WordPress (SSH) | crontab | `wphost02-backup` |
|
||||
| 6:00 AM | MikroTik CCR + UNMS sync | Hermes cron | `run-wisp-backup.sh`, `unms-backup-sync.sh` |
|
||||
| 6 AM / 6 PM | WordPress per-site snapshots (App3, local) | App3 crontab | `/opt/backup-restore/snapshot.sh` |
|
||||
| 7:00 AM | Hudu (App2) | Hermes cron | `hudu-backup.sh` |
|
||||
| 8:00 AM | Gitea (App2) | Hermes cron | `gitea-backup.sh` |
|
||||
| Mon 5:00 AM | Hetzner weekly snapshots | Hermes cron | `snapshot-hetzner.py` |
|
||||
|
||||
| Service | Method | RPO |
|
||||
|---|---|---|
|
||||
| Hermes Agent | tar.gz → S3 (daily) + live sync (15 min) | 15 min |
|
||||
| Vaultwarden | SQLite dump → S3 (daily) | 24 hr |
|
||||
| Twenty CRM | Postgres pg_dump → S3 (daily) | 24 hr |
|
||||
| SearXNG | settings.yml → S3 (daily) | 24 hr |
|
||||
| Komodo | config dir → S3 (daily) | 24 hr |
|
||||
| Prometheus | TSDB snapshot → S3 (daily) | 24 hr |
|
||||
| Grafana | SQLite DB → S3 (daily) | 24 hr |
|
||||
| Uptime Kuma | SQLite DB → S3 (daily) | 24 hr |
|
||||
| DocuSeal | Covered by docker-volume-sync | 24 hr |
|
||||
| Caddy config | system-config-sync (daily) | 24 hr |
|
||||
| /root essentials | root-essentials-backup (daily) | 24 hr |
|
||||
---
|
||||
|
||||
### app1 (152.53.36.131)
|
||||
## Script Inventory
|
||||
|
||||
| Service | Method | RPO |
|
||||
|---|---|---|
|
||||
| LiteLLM | Postgres pg_dump + config.yaml → S3 (daily) | 24 hr |
|
||||
| Open WebUI | /app/backend/data → S3 (daily) | 24 hr |
|
||||
| n8n | Postgres pg_dump → S3 (daily) | 24 hr |
|
||||
| MCP servers | Configs in Git + Docker volumes | 24 hr |
|
||||
| Mattermost | Postgres DB + data volume → S3 (daily) | 24 hr |
|
||||
### On Core (`/root/.hermes/scripts/`)
|
||||
|
||||
### app2 (152.53.39.202)
|
||||
| Script | Purpose | Runs |
|
||||
|--------|---------|------|
|
||||
| `hermes-backup.sh` | Full Hermes tar.gz to S3 | crontab 1:00 AM |
|
||||
| `core-services-backup.sh` | Grafana, Uptime Kuma, volumes, Prometheus | crontab 1:30 AM |
|
||||
| `root-essentials-backup.sh` | /root keys, configs, scripts | crontab 3:00 AM |
|
||||
| `backup-audit-check.sh` | Verify recent backup timestamps | crontab 2:00 AM |
|
||||
| `vaultwarden-backup.sh` | Vaultwarden SQLite dump (SSH to App1) | Hermes cron 2:30 AM |
|
||||
| `litellm-backup.sh` | LiteLLM Postgres dump + config (SSH to App1) | Hermes cron 3:30 AM |
|
||||
| `komodo-backup.sh` | Komodo MongoDB dump (SSH to App1) | Hermes cron 3:45 AM |
|
||||
| `docuseal-backup.sh` | DocuSeal SQLite + attachments (SSH to App1) | Hermes cron 4:00 AM |
|
||||
| `twenty-backup.sh` | Twenty CRM Postgres dump (SSH to App1) | Hermes cron 4:15 AM |
|
||||
| `app1-backup.sh` | Open WebUI, n8n, MCP configs (SSH to App1) | App1 crontab 2:00 AM |
|
||||
| `app2-backup.sh` | Traccar backup (SSH to App2) | App2 crontab 2:30 AM |
|
||||
| `app3-backup.sh` | CloudPanel, MySQL, WP, Nginx (SSH to App3) | crontab 3:00 AM |
|
||||
| `wphost02-backup.sh` | SSH to wphost02, backup all sites | crontab 5:00 AM |
|
||||
| `run-wisp-backup.sh` | MikroTik CCR config export | Hermes cron 6:00 AM |
|
||||
| `unms-backup-sync.sh` | UNMS auto-backup sync to S3 | Hermes cron 6:00 AM |
|
||||
| `unifi-backup-sync.sh` | UniFi auto-backup sync to S3 | Hermes cron 2:00 AM |
|
||||
| `hudu-backup.sh` | Hudu Postgres dump to S3 | Hermes cron 7:00 AM |
|
||||
| `gitea-backup.sh` | Gitea repos + DB dump to S3 | Hermes cron 8:00 AM |
|
||||
| `snapshot-hetzner.py` | Hetzner server disk snapshots via API | Hermes cron Mon 5:00 AM |
|
||||
|
||||
| Service | Method | RPO |
|
||||
|---|---|---|
|
||||
| Traccar | H2 database + conf → S3 (daily) | 24 hr |
|
||||
| Gitea | Repos + DB → S3 (daily) | 24 hr |
|
||||
| Hudu | Docker volume → S3 (daily, 30-day retention) | 24 hr |
|
||||
| UNMS | S3 sync (daily) | 24 hr |
|
||||
| UniFi | Autobackup → S3 (daily) | 24 hr |
|
||||
### On App3 (`/opt/backup-restore/`)
|
||||
|
||||
### app3 (152.53.241.111)
|
||||
| Script | Purpose | Runs |
|
||||
|--------|---------|------|
|
||||
| `snapshot.sh` | Per-site WordPress tarball + DB | App3 crontab 6 AM / 6 PM |
|
||||
|
||||
| Service | Method | RPO |
|
||||
|---|---|---|
|
||||
| CloudPanel CE | SQLite DB → S3 (daily) | 24 hr |
|
||||
| MySQL | All databases mysqldump → S3 (daily) | 24 hr |
|
||||
| WordPress | Files + wp-config → S3 (daily) | 24 hr |
|
||||
| Nginx | /etc/nginx + /etc/cloudpanel → S3 (daily) | 24 hr |
|
||||
| **WordPress Snapshots** | **Per-site tarball + MySQL dump (2x daily, 60-day retention)** | **12 hr** |
|
||||
| **Backup Restore UI** | **Flask app port 8090 at my.itpropartner.com/backups** | **Instant** |
|
||||
| voipsimplicity.com | Covered by MySQL + WordPress file backup | 24 hr |
|
||||
| my.voipsimplicity.com | Covered by Git (static HTML) | N/A |
|
||||
### On wphost02 (`/root/`)
|
||||
|
||||
| Script | Purpose | Runs |
|
||||
|--------|---------|------|
|
||||
| `backup.sh` | All 7 WordPress sites + all MySQL DBs | Triggered via SSH from Core |
|
||||
|
||||
---
|
||||
|
||||
## S3 Bucket Structure
|
||||
|
||||
```
|
||||
s3://hermes-vps-backups/
|
||||
├── live/ # 15-min Hermes state sync
|
||||
├── live-sync/ # Live sync artifacts
|
||||
├── hermes-full-backup/ # Daily full Hermes backups
|
||||
├── snapshots/ # Hermes snapshots
|
||||
├── standby/ # Warm standby scripts
|
||||
├── root-backup/ # /root essentials
|
||||
hermes-vps-backups/
|
||||
├── hermes-full-backup/ — Full Hermes daily (tar.gz)
|
||||
├── live/ — Hermes live sync (every 15 min)
|
||||
├── live-sync/ — Old sync format (deprecated)
|
||||
├── root-backup/ — /root essentials
|
||||
├── standby/ — Standby configs + recovery bundle
|
||||
├── core/
|
||||
│ ├── vaultwarden/
|
||||
│ ├── twenty/
|
||||
│ ├── searxng/
|
||||
│ └── komodo/
|
||||
│ ├── grafana/ — Grafana SQLite DB
|
||||
│ ├── uptime-kuma/ — Uptime Kuma SQLite DB
|
||||
│ ├── prometheus/ — Prometheus TSDB snapshots
|
||||
│ ├── vaultwarden/ — [STALE — service migrated to App1]
|
||||
│ ├── twenty/ — [STALE — service migrated to App1]
|
||||
│ ├── searxng/ — [STALE — service removed]
|
||||
│ └── komodo/ — [STALE — service migrated to App1]
|
||||
├── app1/
|
||||
│ ├── litellm/
|
||||
│ ├── openwebui/
|
||||
│ ├── n8n/
|
||||
│ ├── mcp/
|
||||
│ └── ollama/
|
||||
│ ├── openwebui/ — Open WebUI data
|
||||
│ ├── litellm/ — LiteLLM Postgres dump + config
|
||||
│ ├── n8n/ — n8n Postgres dump
|
||||
│ ├── mcp/ — MCP server configs
|
||||
│ ├── vaultwarden/ — Vaultwarden SQLite dump
|
||||
│ ├── komodo/ — Komodo MongoDB dump
|
||||
│ ├── docuseal/ — DocuSeal SQLite + attachments
|
||||
│ └── twenty/ — Twenty CRM Postgres dump
|
||||
├── app2/
|
||||
│ ├── traccar/
|
||||
│ ├── gitea/
|
||||
│ ├── hudu/
|
||||
│ ├── unms-backups/
|
||||
│ └── unifi-backups/
|
||||
│ └── traccar/ — Traccar H2 DB + config
|
||||
├── app3/
|
||||
│ ├── cloudpanel/
|
||||
│ ├── mysql/
|
||||
│ ├── wordpress/
|
||||
│ └── config/
|
||||
├── volumes/ # Docker volume syncs
|
||||
├── caddy/ # Caddy configs
|
||||
├── env/ # Environment files
|
||||
└── assets/ # Static assets
|
||||
│ ├── cloudpanel/ — CloudPanel SQLite DB
|
||||
│ ├── mysql/ — All MySQL DBs
|
||||
│ ├── wordpress/ — wp-content tar.gz
|
||||
│ └── config/ — Nginx configs
|
||||
├── hudu/backups/ — Hudu Postgres dump
|
||||
├── gitea/daily/ — Gitea repos + DB
|
||||
├── unms-backups/live/ — UNMS auto-backups
|
||||
├── unifi-backups/ — UniFi controller backups
|
||||
├── wphost02-backup/ — wphost02 per-site + DB
|
||||
├── volumes/ — Docker volume dumps
|
||||
├── caddy/ — (unused)
|
||||
├── assets/ — Static assets
|
||||
├── snapshots/ — (unused)
|
||||
└── system-configs-*.tar.gz — Historical system config snapshots
|
||||
|
||||
s3://itpropartner-backups/
|
||||
├── home-router/ # MikroTik CCR configs
|
||||
└── shonuff/ # Personal backups
|
||||
|
||||
s3://mikrotik-ccr-backups/ # Home CCR2004 configs
|
||||
mikrotik-ccr-backups/
|
||||
└── wisp-backups/configs/
|
||||
└── home/ — CCR2004 export .rsc
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Restoration
|
||||
## Migration History (Jul 28, 2026)
|
||||
|
||||
### Single Service Restore
|
||||
```bash
|
||||
# Example: restore LiteLLM database
|
||||
SERVICE=litellm; DATE=2026-07-16
|
||||
aws s3 cp s3://hermes-vps-backups/app1/$SERVICE/$SERVICE-$DATE.sql.gz . \
|
||||
--endpoint-url https://s3.us-east-1.wasabisys.com
|
||||
gunzip $SERVICE-$DATE.sql.gz
|
||||
# Load into Postgres
|
||||
```
|
||||
All the following services were migrated from Core to App1 in a single session:
|
||||
|
||||
### Full Server Restore
|
||||
Each server's backup directory contains everything needed to rebuild that server from scratch.
|
||||
|
||||
### Warm Standby (Core only)
|
||||
core-bu (5.161.225.131) automatically syncs from S3 every 10 minutes. To activate:
|
||||
1. Power on via Hetzner Cloud API
|
||||
2. Hermes starts from latest S3 state
|
||||
| Service | Old Home | New Home | Backup Before | Backup After |
|
||||
|---------|----------|----------|--------------|-------------|
|
||||
| Vaultwarden | Core (:8080) | App1 (:8081) | `core/vaultwarden/` (stale) | `app1/vaultwarden/` ✅ |
|
||||
| SearXNG | Core (:8888) | Removed | `core/searxng/` (stale) | N/A (replaced by Super Search) |
|
||||
| Twenty CRM | Core (:3003) | App1 (:3003) | `core/twenty/` (stale) | `app1/twenty/` ✅ |
|
||||
| Komodo | Core (:9120) | App1 (:9120) | `core/komodo/` (stale) | `app1/komodo/` ✅ |
|
||||
| DocuSeal | Core (:3000) | App1 (:3002) | No backup existed | `app1/docuseal/` ✅ |
|
||||
| Kokoro TTS | Core (:8880) | App1 (:8880) | N/A (stateless) | N/A (stateless) |
|
||||
|
||||
---
|
||||
|
||||
## Known Gaps
|
||||
## Disaster Recovery
|
||||
|
||||
| Gap | Impact | Plan |
|
||||
|---|---|---|
|
||||
| No WAL archiving | RPO is 24 hours for most databases | Add WAL-G for Postgres services |
|
||||
| No restore testing | Don't know if backups actually restore | Schedule quarterly restore drill |
|
||||
| core-bu not tested since upgrade | Standby might not work | Schedule failover test |
|
||||
| wphost02 S3 upload in progress | First backup running now | Monitor completion |
|
||||
- **Live Hermes:** netcup VPS — `core.itpropartner.com` — `152.53.192.33`
|
||||
- **Standby Hermes:** Hetzner CPX21 — `app1-bu.itpropartner.com` — `5.161.225.131`
|
||||
- Cron checks live box every 10 min, takes over if down
|
||||
- Auto-restores from `s3://hermes-vps-backups/hermes-full-backup/`
|
||||
- Provider diversity: netcup outage won't kill both Core and standby
|
||||
- **Recovery priority:** Hermes first → infrastructure monitoring (Uptime Kuma, Grafana) → App1 services → App2 services
|
||||
- **24 backup scripts** on Core, 1 on App3, 1 on wphost02
|
||||
|
||||
@@ -0,0 +1,290 @@
|
||||
# ITPP Infrastructure Documentation Gap Assessment
|
||||
**Date:** 2026-08-04
|
||||
**Auditor:** Hermes Agent (subagent)
|
||||
**Scope:** All ITPP infrastructure — Core, app1, app2, app3, app1-bu, wphost02
|
||||
|
||||
---
|
||||
|
||||
## Executive Summary
|
||||
|
||||
**Total services discovered running:** 65+ (across 5 hosts)
|
||||
**Services with NO backup:** 12 (CRITICAL: 3 with production data at risk)
|
||||
**Services missing from API master list:** 14
|
||||
**Documentation staleness issues:** 7
|
||||
**Services with NO project documentation:** 22+
|
||||
**Duplicate services (unintended):** 2 (Twenty CRM, SearXNG running on both Core AND App1)
|
||||
**Sites missing local snapshots (App3):** 4
|
||||
|
||||
---
|
||||
|
||||
## (A) CRITICAL GAPS — Services with NO Backup
|
||||
|
||||
### 🔴 Priority 1 — Production data at immediate risk
|
||||
|
||||
| # | Service | Host | Risk | Data at stake |
|
||||
|---|---------|------|------|---------------|
|
||||
| 1 | **Ragflow** (full stack) | App2 | CRITICAL | MySQL DB, Minio objects, Infinity vector DB, Valkey cache — entire RAG/knowledge base platform. 6 Docker containers including mysql:8.0.39, minio, infinity vector DB |
|
||||
| 2 | **Mattermost** | App1 | CRITICAL | Team chat messages, channels, files, user accounts. postgres:16-alpine backend |
|
||||
| 3 | **Wazuh** (SIEM) | App1 | HIGH | Security events, alerts, agent data, compliance logs. 3 containers (dashboard, manager, indexer). Only the server itself is backed up via app1 general backup — Wazuh data is NOT |
|
||||
|
||||
### 🟡 Priority 2 — Important services without backups
|
||||
|
||||
| # | Service | Host | Risk | Data at stake |
|
||||
|---|---------|------|------|---------------|
|
||||
| 4 | **Dawarich** | App2 | MEDIUM | Location history data (PostGIS), Redis cache. NOT in app2-backup.sh |
|
||||
| 5 | **Technitium DNS** | App2 | MEDIUM | DNS zone configs, DHCP leases, blocklists. NOT in app2-backup.sh |
|
||||
| 6 | **SearXNG (App1)** | App1 | MEDIUM | Search engine config. Backup plan says "removed" but it's running on :8080 |
|
||||
| 7 | **MCP containers** (App1) | App1 | LOW | mcp-browser, mcp-email, mcp-git, mcp-filesystem, super-search — config/state not backed up individually |
|
||||
| 8 | **browserless** (App1) | App1 | LOW | Stateless Chrome, but no restart config backup |
|
||||
| 9 | **Timetrex** | Core | LOW | Time tracking data — Docker container, no compose file found |
|
||||
| 10 | **Microbin** | Core | LOW | Paste bin data — Docker container, compose exists at /opt/microbin/ |
|
||||
| 11 | **browserless** (Core) | Core | LOW | Stateless Chrome, :3000 (conflicts with Grafana's documented port) |
|
||||
| 12 | **crawl4ai** | Core | LOW | Python service :8910 — web crawling config. No compose, running from /root/docker/crawl4ai/ |
|
||||
|
||||
### 🟢 Services running natively (Core systemd/Python — minimal backup need)
|
||||
|
||||
These are stateless or backed up via hermes-backup.sh (skills/profiles/sessions) and root-essentials-backup.sh (scripts):
|
||||
- hotnow-api (:8001), auth-server (:8500), pipeline-server (:8200), hermes-voice (:4331), host-metrics-exporter (:9275), transitpin-mockup (:8912), http-server (:9876)
|
||||
|
||||
---
|
||||
|
||||
## (B) DOCUMENTATION GAPS — Services not in API Master List
|
||||
|
||||
### Missing from `/root/projects/itpp-infrastructure/api-master-list.md`
|
||||
|
||||
| # | Service | Host | Port | Notes |
|
||||
|---|---------|------|------|-------|
|
||||
| 1 | **Mattermost** | App1 | :8065 | Team chat — not listed anywhere |
|
||||
| 2 | **n8n** | App1 | :5678 | Workflow automation — not listed |
|
||||
| 3 | **Ragflow** | App2 | :9380-9384 | RAG platform — not listed |
|
||||
| 4 | **SearXNG (App1)** | App1 | :8080 | Listed only on Core :8888 |
|
||||
| 5 | **Timetrex** | Core | :8085 | Time tracking — not listed |
|
||||
| 6 | **Microbin** | Core | :8260 | Paste bin — not listed |
|
||||
| 7 | **browserless** (Core) | Core | :3000 | Chrome automation — not listed |
|
||||
| 8 | **browserless** (App1) | App1 | :3005 | Chrome automation — not listed |
|
||||
| 9 | **crawl4ai** | Core | :8910 | Web crawler — not listed |
|
||||
| 10 | **hermes-control-deck** | Core | systemd | Control deck API — not listed |
|
||||
| 11 | **MCP containers** (App1) | App1 | :8900-8903 | Litellm MCP gateway services — not listed individually |
|
||||
| 12 | **Super Search (App1)** | App1 | container | Duplicate of Core's — not listed |
|
||||
| 13 | **hotnow-api** | Core | :8001 | HotNow API (different from :8000 Diglocate) |
|
||||
| 14 | **auth-server** | Core | :8500 | Centralized auth project |
|
||||
|
||||
---
|
||||
|
||||
## (C) STALE DOCUMENTATION — Wrong/Outdated Information
|
||||
|
||||
### 🔴 API Master List errors
|
||||
|
||||
| # | Issue | Doc says | Actual | Severity |
|
||||
|---|-------|----------|--------|----------|
|
||||
| 1 | **Grafana port** | Core :3000 | Core :3002 (browserless/chrome occupies :3000) | MED — monitoring dashboards accessed at wrong port |
|
||||
| 2 | **DocuSeal port** | App1 :3000 | App1 :3002 (Open WebUI occupies :3000 on App1) | MED |
|
||||
| 3 | **Twenty CRM location** | Core :3003 (listed as Core) | Running on BOTH Core :3003 AND App1 :3003 | HIGH — duplicate service, unclear which is authoritative |
|
||||
| 4 | **SearXNG status** | Core :8888, backup plan says "removed" | Actually running on BOTH Core :8888 AND App1 :8080 | HIGH — backup plan says replaced by Super Search but still running on two hosts |
|
||||
| 5 | **Vaultwarden location** | Core :8080 (in old API list), App1 :8081 | Only on App1 :8081 (correct) but stale S3 paths remain | LOW |
|
||||
| 6 | **Komodo location** | Migrated to App1 :9120 | Correctly on App1 :9120 | OK |
|
||||
| 7 | **DocuSeal location** | Migrated to App1 :3002 | Correctly on App1 :3002 | OK |
|
||||
| 8 | **Twenty CRM migration** | Backup plan says migrated to App1 | Still running on Core too! The migration was partial or the Core instance was never shut down | HIGH |
|
||||
|
||||
### 🔴 Backup Plan errors
|
||||
|
||||
| # | Issue | Details |
|
||||
|---|-------|---------|
|
||||
| 9 | **S3 stale paths** | `core/vaultwarden/`, `core/twenty/`, `core/searxng/`, `core/komodo/` still in S3 hierarchy — services migrated but old paths not cleaned |
|
||||
| 10 | **Backup plan lists Core services that migrated** | Table shows Vaultwarden, SearXNG, Twenty CRM, Komodo, DocuSeal, Kokoro TTS under Core section — all migrated to App1 |
|
||||
| 11 | **app1-backup.sh (on App1) backs up MORE than documented** | Script backs up n8n (not in plan), Ollama (not in plan) but does NOT back up Mattermost, Wazuh, SearXNG (App1), browserless |
|
||||
| 12 | **app2-backup.sh (on App2) coverage gaps** | Script covers Traccar, Gitea, Hudu, UNMS, UniFi but misses Dawarich, Technitium DNS, Ragflow |
|
||||
|
||||
### 🔴 App3 Snapshot Coverage
|
||||
|
||||
| # | Site | Nginx config? | In backup-restore snapshots? | In S3 app3-backup.sh? |
|
||||
|---|------|--------------|------------------------------|----------------------|
|
||||
| 1 | intelsight.io | ✅ | ❌ | ✅ (via WordPress files backup) |
|
||||
| 2 | my.voipsimplicity.com | ✅ | ❌ | ✅ |
|
||||
| 3 | panel.itpropartner.com | ✅ | ❌ | N/A (CloudPanel itself) |
|
||||
| 4 | transitpin.com | ✅ | ❌ | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## (D) CREDENTIAL GAPS
|
||||
|
||||
### Credential Management Assessment
|
||||
|
||||
- **Vaultwarden:** Running on App1 :8081. Accessible via web UI. Not directly queryable via API without auth token.
|
||||
- **Standard credentials** (ippadmin/LoveMyBoys.1520!): Referenced in task context. Need to verify which services use these vs. unique credentials.
|
||||
- **Key credential files:** `/root/.hermes/.env`, `~/.aws/credentials`, Vaultwarden vault
|
||||
- **DR Issue Log** references `migration-creds.txt` and `dre-temp-passwords.txt` — both now `chmod 600` (DR-004, DR-005 fixed)
|
||||
|
||||
### Recommendations:
|
||||
1. Audit all services to confirm which use standard creds vs unique creds
|
||||
2. Each service should have a Hudu asset documenting its credentials
|
||||
3. Service-specific API keys (n8n, Mattermost, Ragflow internal admin) need to be inventoried
|
||||
|
||||
---
|
||||
|
||||
## (E) SERVICES WITH NO PROJECT DOCUMENTATION
|
||||
|
||||
The `/root/projects/itpp-infrastructure/` repo has documentation for only ~8 projects out of 30+ running services:
|
||||
|
||||
**Have docs:** ops-portal, backup-restore, hotnow, intelsight, schoolcart, tripflow, beachdirect, forefront-broadband-map, missed-call-lead-recovery
|
||||
|
||||
**NO docs (22+ services):**
|
||||
Mattermost, n8n, Ragflow, Wazuh, Dawarich, Technitium DNS, Timetrex, Microbin, browserless (both), crawl4ai, Vaultwarden, Komodo, DocuSeal, LiteLLM, Open WebUI, Twenty CRM, Kokoro TTS, PRY, TransitPin, Village Express, Shopping Cart, Voice Agent stack, Diglocate, Rally, Shark Game, hermes-assistant, hermes-control-deck, Camofox, Super Search, Gitea, Hudu, UNMS, UniFi
|
||||
|
||||
---
|
||||
|
||||
## (F) DUPLICATE SERVICES
|
||||
|
||||
Two services are running redundantly on both Core and App1:
|
||||
|
||||
| Service | Core | App1 | Notes |
|
||||
|---------|------|------|-------|
|
||||
| **Twenty CRM** | :3003 (Docker, 5 containers) | :3003 (Docker, 4 containers) | Migration doc says moved to App1. Core instance was never shut down. Which is authoritative? |
|
||||
| **SearXNG** | :8888 (Docker) | :8080 (Docker) | Backup plan says "removed, replaced by Super Search." Both still running. |
|
||||
|
||||
---
|
||||
|
||||
## (G) RECOMMENDED FIXES — Priority Order
|
||||
|
||||
### 🔴 Immediate (this week)
|
||||
|
||||
1. **Backup Ragflow** — Create ragflow-backup.sh on App2. Dump MySQL (mysql:8.0.39), backup Minio objects, backup Infinity DB. Add to cron. Risk: complete RAG platform data loss.
|
||||
|
||||
2. **Backup Mattermost** — Add to app1-backup.sh or create mattermost-backup.sh. Dump postgres:16-alpine DB, backup file uploads. Add to cron.
|
||||
|
||||
3. **Backup Wazuh** — Create wazuh-backup.sh on App1. Backup Elasticsearch indices and Wazuh manager config. Add to cron.
|
||||
|
||||
4. **Shut down duplicate Twenty CRM on Core** — The migration doc says it moved to App1. The Core instance (5 containers) is likely stale and consuming resources. Verify App1 instance is authoritative, then stop Core instance.
|
||||
|
||||
5. **Shut down duplicate SearXNG on both hosts OR document the dual deployment** — Backup plan says "removed, replaced by Super Search." If Super Search is sufficient, remove both SearXNG instances. If still needed, document why and add to backup plan.
|
||||
|
||||
### 🟡 This sprint (next 2 weeks)
|
||||
|
||||
6. **Update API Master List** — Add all 14 missing services. Fix stale port references (Grafana :3000→:3002, DocuSeal :3000→:3002).
|
||||
|
||||
7. **Update Backup Plan** — Remove stale Core entries (Vaultwarden, SearXNG, Twenty, Komodo, DocuSeal, Kokoro). Add Mattermost, n8n, Wazuh, Ragflow. Note that n8n IS backed up by app1-backup.sh but not documented.
|
||||
|
||||
8. **Backup Dawarich** — Add PostGIS dump to app2-backup.sh.
|
||||
|
||||
9. **Backup Technitium DNS** — Add DNS zone/config backup to app2-backup.sh.
|
||||
|
||||
10. **Add App3 sites to local snapshots** — Add intelsight.io, my.voipsimplicity.com, transitpin.com to `/opt/backup-restore/snapshot.sh` coverage.
|
||||
|
||||
### 🟢 Backlog (next month)
|
||||
|
||||
11. **Create project docs** for at minimum: Mattermost, n8n, Ragflow, Wazuh (the 4 services with no docs AND production data).
|
||||
|
||||
12. **Create `disaster-recovery-plan.md`** in itpp-infrastructure repo — it doesn't exist at the expected path. The DR issue log references it but the file is missing.
|
||||
|
||||
13. **Audit S3 bucket** — Clean stale paths (core/vaultwarden/, core/twenty/, core/searxng/, core/komodo/). Verify recent backups for all 26 documented targets.
|
||||
|
||||
14. **Credential audit** — Log into Vaultwarden, enumerate all entries, cross-reference with running services, identify gaps.
|
||||
|
||||
15. **Timetrex and Microbin** — Document purpose, add compose files to repo, add lightweight backup if they hold data.
|
||||
|
||||
16. **Create per-service README template** — Standardized format: purpose, host, ports, dependencies, backup method, restore procedure, credentials location.
|
||||
|
||||
---
|
||||
|
||||
## Methodology
|
||||
|
||||
- **Baseline docs read:** `/root/projects/itpp-infrastructure/backup-plan.md`, `api-master-list.md`, `/root/.hermes/references/dr-issue-log.md`
|
||||
- **Hosts audited via SSH:** Core (localhost), app1 (152.53.36.131), app2 (152.53.39.202), app3 (152.53.241.111), app1-bu (5.161.225.131), wphost02 (5.161.62.38)
|
||||
- **Enumeration:** `docker ps`, `ss -tlnp`, `systemctl list-units`, `crontab -l`, `ls /etc/nginx/sites-enabled/`
|
||||
- **Cross-reference:** Each running service checked against API master list, backup plan, and itpp-infrastructure project docs
|
||||
- **Key:** `/root/.ssh/itpp-infra` used for all remote SSH
|
||||
|
||||
---
|
||||
|
||||
## Appendix: Complete Service Inventory
|
||||
|
||||
### Core (152.53.192.33) — netcup RS 2000
|
||||
|
||||
| Service | Type | Port | In API List? | Backed Up? | Has Docs? |
|
||||
|---------|------|------|-------------|------------|-----------|
|
||||
| Twenty CRM | Docker (5ctr) | :3003 | ✅ (stale: says Core) | ⚠️ (S3: app1/twenty/, Core backup) | ❌ |
|
||||
| SearXNG | Docker | :8888 | ✅ (stale: says removed) | ⚠️ (stale S3 path) | ❌ |
|
||||
| Prometheus | Docker | :9090 | ✅ | ✅ (core-services-backup.sh) | ❌ |
|
||||
| Grafana | Docker | :3002 | ✅ (wrong port :3000) | ✅ | ❌ |
|
||||
| Telegraf | Docker | :9273 | ✅ | ✅ (system) | ❌ |
|
||||
| Uptime Kuma | Docker | :3001 | ✅ | ✅ | ❌ |
|
||||
| MikroTik Exporter | Docker | :9436 | ✅ | ✅ (system) | ❌ |
|
||||
| Camofox Browser | Docker | :9377 | ✅ | ⚠️ (hermes-backup.sh) | ❌ |
|
||||
| browserless | Docker | :3000 | ❌ | ❌ | ❌ |
|
||||
| Timetrex | Docker | :8085 | ❌ | ❌ | ❌ |
|
||||
| Microbin | Docker | :8260 | ❌ | ❌ | ❌ |
|
||||
| Super Search MCP | systemd | :8899 | ✅ | ✅ (hermes-backup.sh) | ⚠️ (partial) |
|
||||
| DRE MCP | systemd | :8900 | ✅ | ✅ | ❌ |
|
||||
| Twilio MCP | systemd | :8901 | ✅ | ✅ | ❌ |
|
||||
| OSINT Person MCP | systemd | :8902 | ✅ | ✅ | ❌ |
|
||||
| FT360 MCP | systemd | :8903 | ✅ | ✅ | ❌ |
|
||||
| PRY | systemd | :8905 | ✅ | ✅ | ❌ |
|
||||
| Ops Portal | systemd | :8090 | ✅ | ✅ | ✅ |
|
||||
| IntelSight API | systemd | :8099 | ✅ | ✅ | ✅ |
|
||||
| Diglocate API | systemd | :8000 | ✅ | ✅ | ❌ |
|
||||
| hotnow-api | systemd | :8001 | ❌ | ❌ | ⚠️ (project doc exists) |
|
||||
| Rally | systemd | :8105 | ✅ | ✅ | ❌ |
|
||||
| Village Express | systemd | :8210 | ✅ | ✅ | ❌ |
|
||||
| Voice Agent STT | systemd | :9000 | ✅ | ✅ | ❌ |
|
||||
| Voice Agent | systemd | :9101 | ✅ | ✅ | ❌ |
|
||||
| Shopping Cart | systemd | :8101 | ✅ | ✅ | ❌ |
|
||||
| OSINT API | systemd | :8100 | ✅ | ✅ | ❌ |
|
||||
| Shark Game | systemd | :8083 | ✅ | ✅ | ❌ |
|
||||
| hermes-assistant | systemd | :8082 | ✅ | ✅ | ❌ |
|
||||
| hermes-control-deck | systemd | n/a | ❌ | ✅ | ❌ |
|
||||
| hermes-voice | systemd | :4331 | ❌ | ✅ | ❌ |
|
||||
| auth-server | systemd | :8500 | ❌ | ❌ | ❌ |
|
||||
| pipeline-server | systemd | :8200 | ❌ | ❌ | ❌ |
|
||||
| crawl4ai | systemd | :8910 | ❌ | ❌ | ❌ |
|
||||
| host-metrics-exporter | systemd | :9275 | ❌ | ❌ | ❌ |
|
||||
| transitpin mockup | systemd | :8912 | ❌ | ❌ | ❌ |
|
||||
|
||||
### App1 (152.53.36.131) — netcup RS 4000
|
||||
|
||||
| Service | Type | Port | In API List? | Backed Up? | Has Docs? |
|
||||
|---------|------|------|-------------|------------|-----------|
|
||||
| Open WebUI | Docker | :3000 | ✅ | ✅ (app1-backup.sh) | ❌ |
|
||||
| LiteLLM | Docker | :4000 | ✅ | ✅ | ❌ |
|
||||
| Komodo | Docker | :9120 | ✅ | ✅ (komodo-backup.sh) | ❌ |
|
||||
| DocuSeal | Docker | :3002 | ✅ (port :3000) | ✅ (docuseal-backup.sh) | ❌ |
|
||||
| Twenty CRM | Docker (4ctr) | :3003 | ✅ (says Core) | ✅ (twenty-backup.sh) | ❌ |
|
||||
| Kokoro TTS | Docker | :8880 | ✅ | N/A (stateless) | ❌ |
|
||||
| SearXNG (App1) | Docker | :8080 | ❌ (only listed on Core) | ❌ | ❌ |
|
||||
| Wazuh | Docker (3ctr) | :5601/:9200 | ✅ | ❌ | ❌ |
|
||||
| Vaultwarden | Docker | :8081 | ✅ | ✅ (vaultwarden-backup.sh) | ❌ |
|
||||
| n8n | Docker | :5678 | ❌ | ✅ (in app1-backup.sh but not plan) | ❌ |
|
||||
| Mattermost | Docker | :8065 | ❌ | ❌ | ❌ |
|
||||
| MCP Gateway services | Docker (5ctr) | :8900-8903 | ❌ | ❌ | ❌ |
|
||||
| browserless (App1) | Docker | :3005 | ❌ | ❌ | ❌ |
|
||||
| Super Search (App1) | Docker | n/a | ❌ | ❌ | ❌ |
|
||||
|
||||
### App2 (152.53.39.202) — netcup RS 4000
|
||||
|
||||
| Service | Type | Port | In API List? | Backed Up? | Has Docs? |
|
||||
|---------|------|------|-------------|------------|-----------|
|
||||
| Hudu | Docker (4ctr) | :3000 (int) | ✅ | ✅ (hudu-backup.sh) | ❌ |
|
||||
| Gitea | Docker | :3001 (int) | ✅ | ✅ (gitea-backup.sh) | ❌ |
|
||||
| UNMS/UISP | Docker (full) | :8089 | ✅ | ✅ (unms-backup-sync.sh) | ❌ |
|
||||
| UniFi | Docker | :8443 | ✅ | ✅ (unifi-backup-sync.sh) | ❌ |
|
||||
| Traccar | Docker | :8082 | ✅ | ✅ (app2-backup.sh) | ❌ |
|
||||
| Dawarich | Docker (4ctr) | :3002 | ✅ | ❌ | ❌ |
|
||||
| Technitium DNS | Docker | :5380 | ✅ | ❌ | ❌ |
|
||||
| Ragflow | Docker (6ctr) | :9380-9384 | ❌ | ❌ | ❌ |
|
||||
|
||||
### App3 (152.53.241.111) — netcup RS 4000 (CloudPanel)
|
||||
|
||||
13 WordPress sites hosted. All backed up to S3 via app3-backup.sh (daily 3 AM). 4 of 13 sites NOT in local snapshot rotation (intelsight.io, my.voipsimplicity.com, panel.itpropartner.com, transitpin.com).
|
||||
|
||||
### App1-BU (5.161.225.131) — Hetzner CPX21
|
||||
|
||||
Warm standby Hermes. No Docker. Cron: standby watchdog (every 5 min) + sync (every 10 min). Correctly configured per DR plan.
|
||||
|
||||
### wphost02 (5.161.62.38) — Hetzner CPX21
|
||||
|
||||
RunCloud WordPress hosting. 2 users (ippadmin, runcloud). Backed up via SSH from Core at 5 AM daily. Verified functional (DR-018, Jul 19).
|
||||
|
||||
---
|
||||
|
||||
## Files Created
|
||||
|
||||
- `/root/projects/itpp-infrastructure/docs/infrastructure-gap-assessment-2026-08-04.md` — this report
|
||||
@@ -39,7 +39,7 @@ homelab.pub: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHT+727Cti4cZ2x6CiYDeDKZ9
|
||||
| **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 |
|
||||
| **app1-bu** | 5.161.225.131 | Hetzner CPX21 | itpp-infra SSH key | Warm standby (core-bu) |
|
||||
|
||||
### Admin Account (all servers)
|
||||
|
||||
|
||||
+53
-11
@@ -1,18 +1,60 @@
|
||||
# AI Model Chain — IT Pro Partner
|
||||
# AI Model Architecture — IT Pro Partner
|
||||
|
||||
**Updated:** July 24, 2026
|
||||
**Updated:** July 31, 2026
|
||||
|
||||
## Active Fallback Chain
|
||||
Two separate concepts that must not be conflated:
|
||||
|
||||
---
|
||||
|
||||
## Fallback Chain *(auto-failover — config.yaml)*
|
||||
|
||||
Survives admin-ai outage. Uses direct API keys for F1–F4.
|
||||
|
||||
| Tier | Model | Provider | Notes |
|
||||
|---|---|---|---|
|
||||
| **Primary** | `claude-sonnet-5` | `admin-ai` | Conductor via LiteLLM ($3.33/day cap) |
|
||||
| **Fallback 1 (F1)** | `deepseek-v4-pro` | `deepseek` | Direct DeepSeek API |
|
||||
| **Fallback 2 (F2)** | `gpt-5.6-terra` | `admin-ai` | Demoted from Primary via LiteLLM ($3.33/day cap) |
|
||||
| **Fallback 3 (F3)** | `grok-4.5` (`grok-2-1212`) | `xai` | Direct xAI API |
|
||||
| **Fallback 4 (F4)** | `gemini-3.6-flash` | `google` | Direct Google API |
|
||||
| **Primary** | `deepseek-v4-pro` | `admin-ai` | Conductor & workhorse via LiteLLM v5 key |
|
||||
| **F1** | `deepseek-v4-flash` | `deepseek` (direct) | Flash demoted -- fallback only, was hallucinating |
|
||||
| **F2** | `gemini-3.6-flash` | `google` (direct) | Fast, free-tier eligible |
|
||||
| **F3** | `grok-4.6` | `xai` (direct) | Verified working (NOT grok-4.5) |
|
||||
| **F4** | `claude-sonnet-5` | `anthropic` (direct) | Premium survival fallback |
|
||||
|
||||
**Only fires when the model above it is unreachable.**
|
||||
|
||||
---
|
||||
|
||||
## Operational Models *(daily toolbox -- admin-ai only)*
|
||||
|
||||
All route through admin-ai. Shared $20/day budget via hermes-agent-v3 key.
|
||||
|
||||
| Role | Model | When |
|
||||
|---|---|---|
|
||||
| **Conductor** | `deepseek-v4-pro` | ALL standard work -- orchestrating, delegating, infra, coding |
|
||||
| **Workhorse** | `deepseek-v4-pro` | Same model -- large context, big outputs, infra code |
|
||||
| **Workhorse** | `deepseek-reasoner` | Multi-step analysis, debugging, planning |
|
||||
| **Auditor** | `gemini-3.6-flash` | Sanity checks, every output (essentially free) |
|
||||
| **Auditor** | `claude-sonnet-5` | Architecture, security, auth -- sparingly ($15/M output) |
|
||||
|
||||
---
|
||||
|
||||
## Admin-AI Virtual Key
|
||||
- **Key Hash**: `0237186aaff1ed90295c00d73103103900d4bd07252ec1806af8a4358e45d37a`
|
||||
- **Allowed Models**: `claude-sonnet-5`, `gpt-5.6-terra`, `deepseek-v4-pro`, `deepseek-v4-flash`, `glm-5.2`, `MiniMax-M3`, `qwen3.7-plus`
|
||||
- **Daily Budget Cap**: $3.33 / day
|
||||
|
||||
- **Key Name:** `hermes-agent-v5` (regenerated Jul 31, 2026)
|
||||
- **Daily Budget Cap:** $20/day shared across all operational models
|
||||
- **Expiry:** Jul 31, 2027
|
||||
- **Master Key:** stored in Hudu
|
||||
- **Models:** deepseek-v4-pro, deepseek-v4-flash, deepseek-reasoner, gemini-3.6-flash, claude-sonnet-5, xai/grok-4.3, xai/grok-4-1-fast, grok-4.6
|
||||
|
||||
## Budget Targets
|
||||
|
||||
| Component | Daily est. |
|
||||
|---|---|
|
||||
| Conductor + Workhorse (ds-v4-pro) | ~$2.50 |
|
||||
| Workhorse (ds-reasoner) | ~$0.70 |
|
||||
| Auditors (gemini flash + claude sparingly) | ~$0.80 |
|
||||
| **Total** | **~$4/day** (well under $20 cap) |
|
||||
|
||||
## Key Decisions
|
||||
|
||||
- **Jul 29, 2026:** DeepSeek V4 Flash demoted from conductor to F1 fallback. Was hallucinating tool calls and producing inconsistent results. V4 Pro promoted to primary conductor and workhorse.
|
||||
- **Jul 30, 2026:** LiteLLM key regenerated — hermes-agent-v3 created in DB. However, the config.yaml was NOT updated with the new key (doc was written but config file not patched). Hermes silently fell back to DeepSeek direct since Jul 30 19:25 UTC.
|
||||
- **Jul 31, 2026:** Discovered config.yaml still had stale key (`sk-DuZ..._AMg`, dead since rotation). Generated `hermes-agent-v5` with same model list + xAI voice models. Verified chat OK. Cleaned up stale keys (v3, v4, v4b). Updated model-chain doc to reflect actual state. Daily digest cron updated with HTML email + clean prompt for Telegram delivery.
|
||||
|
||||
@@ -66,3 +66,15 @@
|
||||
|
||||
### Skills Updated
|
||||
- 10 skills patched: docker-service-deployment, home-lab-*, server-architecture-plan, twilio-10dlc, vaultwarden-management, voip-portal, hudu, syncromsp, recurring-information-scout
|
||||
|
||||
## 2026-07-29
|
||||
|
||||
### Village Express — Client Project
|
||||
- Direct client engagement: student transport platform for Savannah family
|
||||
- Built working mockups: client registration form + admin dashboard
|
||||
- Live at https://mockup.iamgmb.com/village-express/ and /admin.html
|
||||
- Deployed: registration form with SCCPSS school dropdown, e-signatures, SMS PIN
|
||||
- Deployed: admin dashboard with 5-page nav, approve/reject, route toggles, SMS broadcast modal, settings
|
||||
- Project proposal written: scope, pricing ($1,500 setup / $497/mo), timeline, Phases 1-3
|
||||
- Customer email drafted: benefit-focused, sells time savings and simplicity
|
||||
- Both documents in /root/projects/village-express/
|
||||
|
||||
@@ -0,0 +1,435 @@
|
||||
# BeachDirect.io — Business Proposal
|
||||
|
||||
## Table of Contents
|
||||
- 1. Executive Summary
|
||||
- 2. Elevator Pitch
|
||||
- 3. Problem Statement
|
||||
- 4. Market Analysis
|
||||
- 5. Product Overview
|
||||
- 6. Revenue Model
|
||||
- 7. Competitive Advantages
|
||||
- 8. Go-to-Market Strategy
|
||||
- 9. Risk Analysis
|
||||
- 10. Financial Projections
|
||||
- 11. The Ask
|
||||
|
||||
---
|
||||
|
||||
## 1. Executive Summary
|
||||
|
||||
**BeachDirect.io** is a done-for-you direct booking platform for vacation rental owners who want to escape platform fees without losing bookings. We build custom-designed, conversion-optimized websites with integrated Stripe booking, guest CRM, and an owner dashboard — targeting the 30A/Destin market as a beachhead, then expanding to all Gulf Coast vacation destinations.
|
||||
|
||||
The vacation rental software market is $1.2B and growing at 12% CAGR. Platforms like Lodgify, OwnerRez, and Guesty serve this space — but they're DIY tools. Owners still have to build their own sites, configure their own systems, and figure out marketing. BeachDirect is a service, not software: we build the site, configure Stripe, load their photos, write their copy, and hand them a working direct-booking business.
|
||||
|
||||
**Key numbers:**
|
||||
- Target customer: 1-3 property owners in beach vacation markets
|
||||
- Pricing: $997-$3,997 setup + $47-$197/mo (no per-booking fees)
|
||||
- Revenue potential: $57,910/year at 10 Pro-tier clients
|
||||
- Beachhead market: Destin/Miramar Beach/30A — 12,000+ vacation rentals
|
||||
- Reference implementation: MooreSunnyDaze.com (live mockup, admin dashboard built)
|
||||
|
||||
**What's already built:** Reference site (Moore Sunny Daze) with full admin dashboard (guest directory, messaging, revenue tracking, calendar), 5 policy pages, theme system. Stripe integration planned, FastAPI backend designed.
|
||||
|
||||
---
|
||||
|
||||
## 2. Elevator Pitch
|
||||
|
||||
**It's Shopify for vacation rentals — but we build it for you.**
|
||||
|
||||
Vacation rental owners hand 10-15% of every booking to VRBO and Airbnb. That's $3,000-$8,000/year for a typical beach condo. BeachDirect gives them a beautiful, custom direct-booking site that pays for itself in 2-3 bookings — and they keep 100% of every booking after that, plus own their guest relationships forever. We handle the build, they handle the hosting (with a smile).
|
||||
|
||||
---
|
||||
|
||||
## 3. Problem Statement
|
||||
|
||||
### 3.1 The Core Problem
|
||||
|
||||
Vacation rental owners are trapped. VRBO and Airbnb bring them bookings, but at a steep price:
|
||||
|
||||
| Fee Type | VRBO | Airbnb |
|
||||
|----------|------|--------|
|
||||
| Guest service fee | 6-15% of booking | 5-15% of booking |
|
||||
| Host commission | 5% per booking | 3% per booking |
|
||||
| **Total platform take** | **11-20%** | **8-18%** |
|
||||
|
||||
For a property booking $30,000/year, that's $3,000-$6,000 in platform fees — every year, forever.
|
||||
|
||||
### 3.2 How Owners Currently Solve This
|
||||
|
||||
| Method | Time Investment | Cost | Effectiveness |
|
||||
|--------|----------------|------|---------------|
|
||||
| Stay on VRBO/Airbnb only | None | 11-20% of revenue | Guaranteed bookings |
|
||||
| Build own WordPress site | 40-80 hours | $500-$2,000 | Poor — no booking integration |
|
||||
| Use Lodgify/OwnerRez template | 10-20 hours | $32-$88/mo | Moderate — DIY site with booking |
|
||||
| Hire a web agency | 5-10 hours | $5,000-$15,000 | Good — but 10-20x our price |
|
||||
| **BeachDirect** | **2-3 hours** | **$997-$3,997 setup** | **Best — custom site, done for you** |
|
||||
|
||||
### 3.3 The Gap
|
||||
|
||||
Existing solutions are either:
|
||||
- **DIY tools** (Lodgify, OwnerRez) — owners still have to build everything themselves
|
||||
- **Agency-priced** ($5K-$15K) — out of reach for single-property owners
|
||||
- **Platform-trapped** (VRBO/Airbnb) — high fees, no guest ownership
|
||||
|
||||
There is no "done for you" solution at a price point that makes sense for a 1-3 property owner. BeachDirect fills that gap.
|
||||
|
||||
### 3.4 Who Is This For? (And Who It's NOT For)
|
||||
|
||||
**Ideal customer:**
|
||||
- Owns 1-3 beach vacation properties
|
||||
- 70%+ annual occupancy (already has demand)
|
||||
- Has returning guests or social following
|
||||
- Frustrated with platform fees
|
||||
- Wants to own guest relationships
|
||||
- Located in a high-demand vacation market (beach, mountain, lake)
|
||||
|
||||
**NOT for:**
|
||||
- Owners struggling to fill their calendar (they NEED the marketplace)
|
||||
- 10+ property managers (they need a full PMS like Guesty)
|
||||
- Owners who want to DIY their site (they can use Lodgify)
|
||||
|
||||
This qualification is critical. BeachDirect is not a replacement for VRBO/Airbnb's marketplace — it's a tool for owners who already have demand and want to capture more of it directly.
|
||||
|
||||
---
|
||||
|
||||
## 4. Market Analysis
|
||||
|
||||
### 4.1 Market Size
|
||||
|
||||
| Metric | Value | Source |
|
||||
|--------|-------|--------|
|
||||
| Total Addressable Market (TAM) | $1.2B | Vacation rental software market, 12% CAGR |
|
||||
| US vacation rental properties | 2.4 million | AirDNA 2025 |
|
||||
| Properties in beach markets | ~600,000 | Estimate: 25% of US vacation rentals |
|
||||
| Serviceable Addressable Market (SAM) | 120,000 owners | 1-3 property owners, 70%+ occupancy, beach markets |
|
||||
| Serviceable Obtainable Market (SOM) | 50 clients Year 1 | Conservative: Destin/30A beachhead only |
|
||||
|
||||
### 4.2 Competitive Landscape
|
||||
|
||||
| Competitor | Monthly Price | DIY or Done-for-You | Key Strength | Key Weakness |
|
||||
|-----------|--------------|---------------------|--------------|--------------|
|
||||
| **Lodgify** | $32-$264/mo | DIY | Website builder + PMS, affordable | Generic templates, owner does all work |
|
||||
| **OwnerRez** | $88+/mo | DIY | US-focused, strong direct booking tools | Technical, steep learning curve |
|
||||
| **Hostfully** | $109+/mo | DIY | Digital guidebooks, guest experience | Expensive for small portfolios |
|
||||
| **Guesty** | $27+/listing/mo | DIY | Enterprise PMS, 60+ channels | Overkill for 1-3 properties |
|
||||
| **Hospitable** | $40/property/mo | DIY | AI messaging automation | No website builder, messaging only |
|
||||
| **Web agency** | $5K-$15K one-time | Done-for-you | Custom design | Too expensive for small owners |
|
||||
| **BeachDirect** | $47-$197/mo | **Done-for-you** | Custom design, white-glove setup | Brand new, no track record |
|
||||
|
||||
### 4.3 Why Existing Players Won't Just Copy Us
|
||||
|
||||
Lodgify and OwnerRez are software companies — they scale by selling subscriptions to self-serve users. Adding a done-for-you service layer fundamentally changes their unit economics (they'd need designers, copywriters, project managers). It's the difference between Shopify (DIY e-commerce) and an agency that builds Shopify stores — different business model entirely.
|
||||
|
||||
---
|
||||
|
||||
## 5. Product Overview
|
||||
|
||||
### 5.1 Architecture
|
||||
|
||||
```
|
||||
Owner Onboarding
|
||||
→ We build custom site (HTML/CSS themed to their property)
|
||||
→ Configure Stripe Connect (direct to owner's bank)
|
||||
→ Load property photos + write copy
|
||||
→ Set up admin dashboard
|
||||
→ Deploy on ITPP infrastructure
|
||||
→ Hand off keys → Owner manages via dashboard
|
||||
|
||||
Guest Experience
|
||||
→ Landing page (photo-heavy, mobile-optimized)
|
||||
→ Check availability → Select dates → Book
|
||||
→ Stripe checkout → Confirmation email
|
||||
→ Pre-arrival email (door code, WiFi, house rules)
|
||||
→ Post-stay thank you + review request
|
||||
```
|
||||
|
||||
### 5.2 Feature Tiers
|
||||
|
||||
| Feature | Starter ($47/mo) | Pro ($97/mo) | Full Service ($197/mo) |
|
||||
|---------|-----------------|--------------|------------------------|
|
||||
| Custom landing page | ✅ | ✅ | ✅ |
|
||||
| Direct booking (Stripe) | ✅ | ✅ | ✅ |
|
||||
| Admin dashboard | ✅ | ✅ | ✅ |
|
||||
| Guest directory + history | ✅ | ✅ | ✅ |
|
||||
| Calendar management | ✅ | ✅ | ✅ |
|
||||
| Email automation | — | ✅ | ✅ |
|
||||
| Smart pricing rules | — | ✅ | ✅ |
|
||||
| Guest messaging inbox | — | ✅ | ✅ |
|
||||
| iCal calendar sync | ✅ | ✅ | ✅ |
|
||||
| Revenue analytics | — | ✅ | ✅ |
|
||||
| Channel sync (API) | — | — | ✅ |
|
||||
| Multi-property (2-3) | — | — | ✅ |
|
||||
| Priority support | — | — | ✅ |
|
||||
| **Setup Fee** | **$997** | **$2,497** | **$3,997** |
|
||||
|
||||
### 5.3 What's Already Built (Reference Implementation)
|
||||
|
||||
| Component | Status | Detail |
|
||||
|-----------|--------|--------|
|
||||
| Moore Sunny Daze landing page | 🟢 Live | mockup.iamgmb.com/mooresunnydaze/ |
|
||||
| Theme system (3 variants) | 🟢 Live | Theme selector with A/B/C |
|
||||
| Admin dashboard | 🟢 Live | Guest directory, messaging, revenue, calendar, settings |
|
||||
| Policy pages (5) | 🟢 Live | Terms, privacy, cancellation, house rules, rental agreement |
|
||||
| Stripe integration | 🟡 Designed | Schema + API endpoints designed, not yet built |
|
||||
| FastAPI backend | 🟡 Designed | Endpoints defined, not yet built |
|
||||
| Email automation | 🔴 Not built | Templates exist in admin dashboard |
|
||||
| iCal sync | 🔴 Not built | Planned v1 feature |
|
||||
| BeachDirect landing page | 🔴 Not built | Domain available (beachdirect.io) |
|
||||
|
||||
### 5.4 Deployment Status Grid
|
||||
|
||||
| Site | Status | Detail |
|
||||
|------|--------|--------|
|
||||
| **beachdirect.io** | 🔴 Not created | Domain available, not yet registered |
|
||||
| **app.beachdirect.io** | 🔴 Not created | Customer dashboard (future) |
|
||||
| **Moore Sunny Daze** | 🟢 Live | Reference implementation at mockup.iamgmb.com/mooresunnydaze/ |
|
||||
| **mooresunnydaze.com** | 🔴 Not created | Tim's domain, pending GoDaddy auth code |
|
||||
|
||||
---
|
||||
|
||||
## 6. Revenue Model
|
||||
|
||||
### 6.1 Revenue Streams
|
||||
|
||||
| Stream | Type | Amount |
|
||||
|--------|------|--------|
|
||||
| Setup fees | One-time | $997-$3,997 per client |
|
||||
| Monthly subscriptions | Recurring | $47-$197/mo per client |
|
||||
| Add-on services | One-time | Photo editing ($200), copywriting ($300), SEO setup ($400) |
|
||||
|
||||
### 6.2 Pricing Rationale
|
||||
|
||||
- **No per-booking fees** — the key differentiator. Lodgify and OwnerRez also don't charge per-booking, but VRBO/Airbnb do. We're positioning against the platforms, not the PMS tools.
|
||||
- **Setup fee covers our time** — custom build takes 8-15 hours. At $997-$3,997, that's $66-$266/hr effective rate.
|
||||
- **Monthly covers hosting + support** — server costs are negligible ($5-10/client on existing ITPP infra). The rest is margin.
|
||||
|
||||
### 6.3 Revenue Projections by Customer Count
|
||||
|
||||
| Scenario | Clients | Setup Revenue | Monthly Run Rate | Annual Revenue |
|
||||
|----------|---------|--------------|------------------|----------------|
|
||||
| Conservative | 10 | $19,970 | $970/mo | $31,610 |
|
||||
| Realistic | 25 | $49,925 | $2,425/mo | $79,025 |
|
||||
| Aggressive | 50 | $99,850 | $4,850/mo | $158,050 |
|
||||
|
||||
### 6.4 12-Month Revenue Ramp
|
||||
|
||||
| Month | New Clients | Total Clients | Setup Revenue | Monthly Revenue | Cumulative |
|
||||
|-------|------------|---------------|---------------|-----------------|------------|
|
||||
| 1 | 2 | 2 | $3,994 | $154 | $4,148 |
|
||||
| 2 | 2 | 4 | $3,994 | $308 | $8,450 |
|
||||
| 3 | 3 | 7 | $5,991 | $539 | $14,980 |
|
||||
| 4 | 3 | 10 | $5,991 | $770 | $21,741 |
|
||||
| 5 | 2 | 12 | $3,994 | $924 | $26,659 |
|
||||
| 6 | 3 | 15 | $5,991 | $1,155 | $33,805 |
|
||||
| 7 | 2 | 17 | $3,994 | $1,309 | $39,108 |
|
||||
| 8 | 3 | 20 | $5,991 | $1,540 | $46,639 |
|
||||
| 9 | 2 | 22 | $3,994 | $1,694 | $52,327 |
|
||||
| 10 | 3 | 25 | $5,991 | $1,925 | $60,243 |
|
||||
| 11 | 2 | 27 | $3,994 | $2,079 | $66,316 |
|
||||
| 12 | 3 | 30 | $5,991 | $2,310 | $74,617 |
|
||||
|
||||
*Assumes average Pro tier ($97/mo), 50/50 split between Pro and Full Service setups.*
|
||||
|
||||
### 6.5 Cost Structure
|
||||
|
||||
| Cost | Monthly | Annual | Notes |
|
||||
|------|---------|--------|-------|
|
||||
| Infrastructure (servers) | $0 | $0 | Already running on ITPP infra |
|
||||
| Domain (beachdirect.io) | $3 | $36 | .io renewal ~$36/yr |
|
||||
| Stripe (our processing) | $0 | $0 | Stripe Connect — client pays their own fees |
|
||||
| Email delivery (Resend) | $20 | $240 | 10K emails/month free tier may cover early stage |
|
||||
| Marketing (ads, FB) | $200 | $2,400 | Facebook ads targeting Destin/30A owners |
|
||||
| **Total** | **$223/mo** | **$2,676/yr** | |
|
||||
|
||||
---
|
||||
|
||||
## 7. Competitive Advantages (Moat)
|
||||
|
||||
### 7.1 Unfair Advantages
|
||||
|
||||
| Advantage | Why It Matters | Defensibility |
|
||||
|-----------|---------------|---------------|
|
||||
| **Done-for-you, not DIY** | Competitors sell software; we sell a finished product | Hard to replicate — requires service team |
|
||||
| **Tim as case study** | Real property, real bookings, real savings | Competitors have testimonials; we have a reference implementation |
|
||||
| **Geographic focus** | Own Destin/30A first — become the known brand in one market | Network effects within a local market |
|
||||
| **ITPP infrastructure** | Zero marginal hosting cost per client | Competitors pay AWS; we own the metal |
|
||||
| **Custom design quality** | Every site is bespoke, not a Lodgify template | Template competitors can't match without changing business model |
|
||||
|
||||
### 7.2 Competitive Positioning Map
|
||||
|
||||
```
|
||||
HIGH PRICE
|
||||
|
|
||||
Web Agencies ($5-15K) |
|
||||
| Guesty (enterprise)
|
||||
|
|
||||
---------------------+--------------------
|
||||
|
|
||||
Lodgify ($32-264/mo) | BeachDirect ($47-197/mo)
|
||||
DIY templates | Done-for-you custom
|
||||
|
|
||||
VRBO/Airbnb |
|
||||
(10-20% per booking) |
|
||||
|
|
||||
LOW PRICE
|
||||
```
|
||||
|
||||
*X-axis: Self-serve ← → Done-for-you | Y-axis: Price*
|
||||
|
||||
---
|
||||
|
||||
## 8. Go-to-Market Strategy
|
||||
|
||||
### 8.1 Phases
|
||||
|
||||
| Phase | Timeline | Goal |
|
||||
|-------|----------|------|
|
||||
| **Foundation** | Month 1-2 | Complete Tim's reference site, build BeachDirect landing page, register domain |
|
||||
| **Soft Launch** | Month 3-4 | 5 beta clients at 50% setup fee (testimonials in exchange) |
|
||||
| **Growth** | Month 5-8 | Direct outreach to Destin/30A owners, Facebook ads, referral program |
|
||||
| **Scale** | Month 9-12 | Expand to Gulf Coast (Panama City, Gulf Shores, Galveston), hire first contractor |
|
||||
|
||||
### 8.2 First 100 Customers — Where They Come From
|
||||
|
||||
1. **Tim's referrals** (10-15) — Other Maravilla owners, Destin rental owner friends
|
||||
2. **Facebook groups** (20-30) — "Destin Vacation Rental Owners", "30A Rental Owners", "Vacation Rental Hosts"
|
||||
3. **Cold email/DM to VRBO listings** (15-20) — "I noticed you're on VRBO. Here's what you paid them last year."
|
||||
4. **Local property managers** (10-15) — Small managers with 1-3 properties who want to look bigger
|
||||
5. **Google Ads** (5-10) — "direct booking website vacation rental" + Destin geo-targeted
|
||||
6. **Referral program** (10-15) — $200 referral credit for each signed client
|
||||
7. **Content marketing** (5-10) — "How I saved $4,200 in VRBO fees" case study blog post
|
||||
8. **VRBO/Airbnb host meetups** (5) — Destin/30A host meetup groups, sponsor or attend
|
||||
|
||||
### 8.3 Channel Economics
|
||||
|
||||
| Channel | Cost/Lead | Conversion Rate | CAC | Monthly Volume |
|
||||
|---------|-----------|----------------|-----|----------------|
|
||||
| Tim's referrals | $0 | 40% | $0 | 2-3 |
|
||||
| Facebook groups | $0 | 10% | $0 | 3-5 |
|
||||
| Cold outreach | $0 (labor) | 5% | $0 | 10-15 |
|
||||
| Facebook ads | $15 | 3% | $500 | 20-30 leads |
|
||||
| Google Ads | $25 | 4% | $625 | 10-15 leads |
|
||||
| Referral program | $200 | 25% | $200 | 1-2 |
|
||||
|
||||
---
|
||||
|
||||
## 9. Risk Analysis
|
||||
|
||||
### 9.1 The Critical Strategy Risk: The Marketplace Problem
|
||||
|
||||
**This is the biggest risk to the entire business.**
|
||||
|
||||
VRBO and Airbnb's core value is not their booking software — it's their marketplace of millions of searching travelers. When an owner leaves the platforms, they lose access to that marketplace. Our product only works for owners who can drive their own traffic (returning guests, social following, SEO, paid ads).
|
||||
|
||||
**Mitigation:**
|
||||
- Qualify ruthlessly. Only sell to owners with 70%+ occupancy and existing demand.
|
||||
- iCal sync (v1) lets owners stay on VRBO/Airbnb while building their direct channel — they don't have to go all-in on day one.
|
||||
- Our value prop shifts from "leave the platforms" to "capture more direct bookings alongside the platforms."
|
||||
|
||||
### 9.2 Risk Matrix
|
||||
|
||||
| Risk | Probability | Impact | Mitigation |
|
||||
|------|-----------|--------|------------|
|
||||
| Owners can't fill calendar without marketplace | High | Critical | iCal sync, qualify for 70%+ occupancy, position as "add direct bookings" not "leave platforms" |
|
||||
| Established competitors (Lodgify, OwnerRez) | Medium | High | Compete on service (done-for-you), not software features |
|
||||
| Low conversion from free beta to paid | Medium | Medium | Charge from day 1 — no free tier. Beta = discounted setup, full monthly. |
|
||||
| Seasonal demand (beach markets) | Medium | Low | Diversify to mountain/lake markets in Year 2 |
|
||||
| Stripe Connect compliance/risk | Low | Medium | Standard KYC; Stripe handles most compliance |
|
||||
| Name limits market ("Beach" Direct) | Medium | Medium | Register alternative domain for non-beach markets, or position "Beach" as a vibe brand |
|
||||
|
||||
### 9.3 Pre-mortem: What Kills This Within 6 Months
|
||||
|
||||
1. **We sell to the wrong customers.** An owner with 40% occupancy buys BeachDirect, pulls their VRBO listing, bookings drop to zero, they blame us. One bad review in a Facebook group and we're done in that market.
|
||||
|
||||
2. **We underestimate the build time.** If each custom site takes 25 hours instead of 10, our setup fee covers $40/hr — unsustainable. Need to template aggressively while keeping the "custom" feel.
|
||||
|
||||
3. **No one refers anyone.** If Tim doesn't become a genuine evangelist (not just a paid case study), the referral flywheel never spins up. The first 5 clients must be raving fans.
|
||||
|
||||
---
|
||||
|
||||
## 10. Financial Projections
|
||||
|
||||
### 10.1 12-Month P&L (Realistic Scenario)
|
||||
|
||||
| Month | Revenue | Costs | Net Income |
|
||||
|-------|---------|-------|------------|
|
||||
| 1 | $4,148 | $223 | $3,925 |
|
||||
| 2 | $4,302 | $223 | $4,079 |
|
||||
| 3 | $6,530 | $223 | $6,307 |
|
||||
| 4 | $6,761 | $223 | $6,538 |
|
||||
| 5 | $4,918 | $223 | $4,695 |
|
||||
| 6 | $7,146 | $223 | $6,923 |
|
||||
| 7 | $5,303 | $223 | $5,080 |
|
||||
| 8 | $7,531 | $223 | $7,308 |
|
||||
| 9 | $5,688 | $223 | $5,465 |
|
||||
| 10 | $7,916 | $223 | $7,693 |
|
||||
| 11 | $6,073 | $223 | $5,850 |
|
||||
| 12 | $8,301 | $223 | $8,078 |
|
||||
| **Total** | **$74,617** | **$2,676** | **$71,941** |
|
||||
|
||||
*Costs reflect existing ITPP infrastructure — no server costs until we need dedicated capacity.*
|
||||
|
||||
### 10.2 Unit Economics
|
||||
|
||||
| Metric | Value |
|
||||
|--------|-------|
|
||||
| Average Revenue Per Client (ARPU) | $116/mo |
|
||||
| Customer Lifetime (est.) | 24 months |
|
||||
| LTV | $2,784 |
|
||||
| CAC (blended) | $200-$500 |
|
||||
| LTV:CAC | 5.5:1 to 14:1 |
|
||||
| Gross Margin | ~95% (no marginal hosting cost) |
|
||||
|
||||
### 10.3 Break-Even
|
||||
|
||||
At $223/mo in costs and average $116/mo per client:
|
||||
- **Break-even at 2 clients** on monthly alone
|
||||
- Setup fees make us profitable from client #1
|
||||
|
||||
---
|
||||
|
||||
## 11. The Ask
|
||||
|
||||
### 11.1 Resources Needed
|
||||
|
||||
| Item | Detail | Timeline | Cost |
|
||||
|------|--------|----------|------|
|
||||
| Domain | beachdirect.io | Week 1 | $36/yr |
|
||||
| BeachDirect landing page | Sales site, pricing, case study | Week 1-2 | 8 hours |
|
||||
| Complete Tim's reference site | Stripe integration, live at mooresunnydaze.com | Week 2-4 | 12 hours |
|
||||
| BeachDirect proposal HTML | This document, published | Today | 2 hours |
|
||||
| First ad campaign | Facebook ads targeting Destin owners | Month 2 | $200/mo |
|
||||
|
||||
### 11.2 Immediate Decisions Required
|
||||
|
||||
**Domain name:**
|
||||
|
||||
| Domain | Available | Verdict |
|
||||
|--------|-----------|---------|
|
||||
| **beachdirect.io** | ✅ | Top pick — matches strategy doc name, memorable, .io fits tech product |
|
||||
| directhost.io | ✅ | Generic fallback, works for any vacation rental type |
|
||||
| ownyourguests.com | ✅ | .com advantage, strong value prop in name, but long |
|
||||
|
||||
Recommendation: **beachdirect.io**. The "beach" name limits non-beach markets, but we're starting with Destin/30A deliberately — own the beach first, expand later. Register a second domain (e.g., directhost.io) as a redirect for non-beach markets in Year 2.
|
||||
|
||||
**Pricing:** Does the tier structure ($997/$2,497/$3,997 setup, $47/$97/$197 monthly) feel right? This undercuts agencies by 3-10x while being premium to Lodgify's DIY pricing.
|
||||
|
||||
**Beta program:** 50% off setup for first 5 clients in exchange for testimonials. Approved?
|
||||
|
||||
**iCal sync placement:** Recommend moving from Full Service to Starter tier — it's table stakes, not a premium feature. Without it, owners risk double-booking while building their direct channel.
|
||||
|
||||
**Tim's domain:** Need GoDaddy auth code for mooresunnydaze.com to point DNS to our server. Ready to request?
|
||||
|
||||
### 11.3 What Success Looks Like (Month 12)
|
||||
|
||||
- 30 paying clients, $2,310/mo MRR
|
||||
- Tim's site generating 40%+ of his bookings direct
|
||||
- 3-5 raving testimonials from Destin/30A owners
|
||||
- BeachDirect is the known brand for "beach rental direct booking" on 30A
|
||||
- One contractor hired for site builds
|
||||
|
||||
### 11.4 The Bigger Picture
|
||||
|
||||
BeachDirect is product #7 in the ITPP micro-SaaS portfolio (IntelSight, SchoolCart, Gift-a-Roast, DRE, DigLocate, HotNow). It's the first that's purely a service business with a software backbone — high-touch, premium-priced, geographically focused. If it works for beaches, the playbook replicates to mountains (MountainDirect), lakes (LakeDirect), and cities (StayDirect). Each market gets its own landing page, its own case studies, its own local Facebook groups — but the same backend, same admin dashboard, same Stripe integration.
|
||||
|
||||
The vacation rental market is massive and the "escape platform fees" narrative is only getting louder. We're building the escape hatch.
|
||||
@@ -0,0 +1,985 @@
|
||||
# HotNow.io — Phase 1: Architecture + Competitive Intel
|
||||
|
||||
> **Phase 1 of 4 — $50 Premium Build**
|
||||
> **Date:** August 2, 2026
|
||||
> **Status:** ✅ Complete — Awaiting Germaine Review
|
||||
|
||||
---
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Competitive Landscape](#1-competitive-landscape)
|
||||
2. [Opportunity Analysis & HotNow's Edge](#2-opportunity-analysis--hotnows-edge)
|
||||
3. [Product Architecture](#3-product-architecture)
|
||||
4. [Data Model](#4-data-model)
|
||||
5. [API Surface](#5-api-surface)
|
||||
6. [Real-Time Ranking Algorithm](#6-real-time-ranking-algorithm)
|
||||
7. [Component Tree & PWA Shell](#7-component-tree--pwa-shell)
|
||||
8. [Infrastructure & Deployment](#8-infrastructure--deployment)
|
||||
9. [Build Plan Preview (Phases 2-4)](#9-build-plan-preview-phases-2-4)
|
||||
10. [Follow-Up Questions for Germaine](#10-follow-up-questions-for-germaine)
|
||||
|
||||
---
|
||||
|
||||
## 1. Competitive Landscape
|
||||
|
||||
### Market Segmentation
|
||||
|
||||
The local discovery space is fragmented across four segments — nobody owns all of them:
|
||||
|
||||
| Segment | What It Covers | Key Players |
|
||||
|---------|---------------|-------------|
|
||||
| **Restaurant/Business Discovery** | Finding places to eat, drink, shop | Yelp, Google Maps, Beli, Corner, TripAdvisor |
|
||||
| **Event/Ticketing Platforms** | Buying tickets, browsing events | Eventbrite, DICE/Fever, Songkick, Bandsintown |
|
||||
| **Neighborhood Social** | Hyperlocal community chatter | Nextdoor, Facebook Groups, Ring Neighbors |
|
||||
| **Curated Experiences** | Immersive, premium, one-off events | Fever (Candlelight), Secret Cinema, Airbnb Experiences |
|
||||
|
||||
### Competitor Deep Dives
|
||||
|
||||
---
|
||||
|
||||
#### 2. Yelp — The Incumbent Giant
|
||||
|
||||
- **What it is:** 20-year-old local business discovery platform. 21-22M reviews/year. Massive community-generated content moat.
|
||||
- **What's new (2025 Fall Release):** Massive AI push — Yelp Assistant (AI chatbot on every business page), Menu Vision (AR menu scanning), natural language/voice search, Popular Offerings (LLM-extracted crowd favorites), Yelp Host/Receptionist (AI call answering for businesses). Partnered with DoorDash for delivery.
|
||||
- **Pricing:** Free for consumers. Business advertising: $150-$5,000+/mo. Yelp Host: $99/mo.
|
||||
- **UX Pattern:** List-first with map secondary. Search-driven discovery.
|
||||
- **Weaknesses:**
|
||||
- Not real-time — Yelp ranks on accumulated review history, not "what's hot right now"
|
||||
- Weak on events — events are an afterthought, not core UX
|
||||
- Gen Z exodus — Beli and Corner are eating its lunch with younger demographics
|
||||
- No social buzz integration — no TikTok/Instagram trend signals
|
||||
- **🔴 HotNow opportunity:** Real-time trending that Yelp's batch-oriented ranking can't match. Social buzz as a ranking signal. Event-first UX.
|
||||
|
||||
---
|
||||
|
||||
#### 3. Fever — The Experience Curator
|
||||
|
||||
- **What it is:** Global ticketing platform for curated experiences. 30+ cities worldwide. Known for Candlelight Concerts, immersive Van Gogh exhibits, themed pop-ups.
|
||||
- **Big news:** **Acquired DICE in 2025** — combined entity now dominates curated event ticketing
|
||||
- **Pricing:** Free to browse. Fever takes a commission on ticket sales (service fees added). No consumer subscription.
|
||||
- **UX Pattern:** Feed-first (curated hero cards). List + grid browse. Map only for venue lookup.
|
||||
- **Weaknesses:**
|
||||
- Curated, not comprehensive — Fever only shows its own catalog (events they ticket)
|
||||
- Not real-time — no trending algorithm, fixed listings
|
||||
- Not local-discovery — it's a ticketing platform, not a "what's happening around me" tool
|
||||
- B2C curation model — doesn't surface grassroots/pop-up/unlisted happenings
|
||||
- **🔴 HotNow opportunity:** Comprehensive vs. curated. Real-time vs. scheduled. Discovery vs. ticketing.
|
||||
|
||||
---
|
||||
|
||||
#### 4. DICE — Transparent Ticketing
|
||||
|
||||
- **What it is:** Music-first ticketing platform with transparent pricing (no hidden fees). Strong in UK/Europe, expanding in US. Acquired by Fever.
|
||||
- **Pricing:** No consumer fees — built into ticket price. Artist/venue revenue share.
|
||||
- **UX Pattern:** Feed-first with personalized recommendations based on listening history (Spotify/Apple Music integration).
|
||||
- **Weaknesses:**
|
||||
- Music-only — no restaurant/bar/pop-up discovery
|
||||
- Ticketing-centric — useless if you just want to know what's happening without buying a ticket
|
||||
- Post-acquisition uncertainty — Fever integration may shift focus
|
||||
- **🔴 HotNow opportunity:** Cross-category discovery (not just music). Free-form exploration without ticket purchase obligation.
|
||||
|
||||
---
|
||||
|
||||
#### 5. Eventbrite — The Event Marketplace
|
||||
|
||||
- **What it is:** Largest self-service event platform. 5M+ events/year. 2025 rebrand from utility to "cultural hub."
|
||||
- **New initiatives:** AI personalization, Listener.com partnership for audience reach, AI-powered event recommendations.
|
||||
- **Pricing:** Free to browse. Organizers pay: free tier (up to 25 tickets), then 2% + $0.79 per paid ticket, or subscription plans.
|
||||
- **UX Pattern:** Search-first with category browse. List results. Map secondary.
|
||||
- **Weaknesses:**
|
||||
- Quantity over quality — lots of spam, online webinars, low-quality listings
|
||||
- No real-time signal — static listings sorted by date/relevance
|
||||
- Brand perception: "event Craigslist" — utilitarian, not aspirational
|
||||
- Not Gen Z cool — zero social features
|
||||
- **🔴 HotNow opportunity:** Quality-filtered, social-buzz ranked. Cool brand. Map-first UX.
|
||||
|
||||
---
|
||||
|
||||
#### 6. Nextdoor — Neighborhood Social
|
||||
|
||||
- **What it is:** Hyperlocal social network for neighborhoods. 15 years old. User-generated content: recommendations, alerts, events.
|
||||
- **2025 redesign:** AI-powered "Faves" for local business discovery, real-time emergency alerts (weather/traffic/power), local news from 3,500+ publisher partners, LLM per neighborhood trained on 15 years of conversations.
|
||||
- **Pricing:** Free. Ad-supported + promoted business posts.
|
||||
- **UX Pattern:** Feed-first (social). Map for alerts. List for businesses.
|
||||
- **Weaknesses:**
|
||||
- Brand damage — associated with racism, misinformation, "Karen" culture
|
||||
- Demographic skew — older homeowners, not Gen Z/Millennials going out
|
||||
- Events are buried — not a discovery tool, it's a neighborhood bulletin board
|
||||
- Reactive, not proactive — "lost cat" dominates over "cool thing happening"
|
||||
- **🔴 HotNow opportunity:** Aspirational, cool brand. Discovery-first. Young demographic. No neighborhood baggage.
|
||||
|
||||
---
|
||||
|
||||
#### 7. Beli — Gen Z Restaurant Ranking
|
||||
|
||||
- **What it is:** Restaurant ranking + social app. Goodreads/Letterboxd for food. 80% of users under 35. 30M reviews in 2024 (surpassing Yelp's 21M).
|
||||
- **How it works:** Log restaurants, compare them head-to-head (pairwise ranking algorithm assigns scores /10), follow friends, browse feeds. No star ratings.
|
||||
- **Growth engine:** College campus ambassador program. Leaderboards by school. Dating app integration (sharing rankings to vet dates). TikTok/Instagram virality.
|
||||
- **Pricing:** Free (currently). No ads. No monetization yet.
|
||||
- **UX Pattern:** Feed-first (social). Profile-centric. No map.
|
||||
- **Weaknesses:**
|
||||
- Restaurant-only — no events, bars (as venues), pop-ups, activities
|
||||
- Past-tense — about where you've been, not what's happening right now
|
||||
- No map — poor for real-time exploration
|
||||
- No monetization path yet — unclear business model
|
||||
- **🔴 HotNow opportunity:** Real-time + events + map. Broader than restaurants. Clear revenue model from day one.
|
||||
|
||||
---
|
||||
|
||||
#### 8. Corner — Gen Z Social Map
|
||||
|
||||
- **What it is:** Map-first social app for Gen Z. User-curated map of places (restaurants, bars, shops, sunset spots). No star ratings. Mood-board style lists. $3.75M raised.
|
||||
- **Key features:** AI semantic search ("sexy wine bar" → results), Instagram/TikTok bookmark import, user-generated descriptions (Gen Z voice: "performative male wine bar to break someone's heart"), Mapbox-powered.
|
||||
- **Stats:** 55,000 users, 275,000+ places, 450 cities. Hubs: NYC, SF, Tokyo, LA, Seoul.
|
||||
- **Pricing:** Free. Considering premium trip-planning tier. No sponsored placements (stated philosophy).
|
||||
- **UX Pattern:** Map-first. Feed of friend activity. Profile + lists.
|
||||
- **Weaknesses:**
|
||||
- Tiny scale — 55K users vs. Yelp's millions
|
||||
- User-generated only — no data if nobody has added a place yet
|
||||
- No events — purely place discovery (static)
|
||||
- Gen Z monoculture — alienates 30+ demographic
|
||||
- No monetization — pre-revenue, burning VC
|
||||
- **🔴 HotNow opportunity:** Events + real-time + broader demographic. Data-rich from day one (Super Search v2). Revenue from launch.
|
||||
|
||||
---
|
||||
|
||||
#### 9. Google Maps — The 800-Pound Gorilla
|
||||
|
||||
- **What it is:** Default map for 1B+ users. 20 years old. "Explore" tab surfaces nearby restaurants, attractions, activities.
|
||||
- **Recent AI:** Gemini-powered conversational search, AR Live View, "Popular Times" (historical foot traffic data), AI-summarized place descriptions.
|
||||
- **Pricing:** Free for consumers. Google Ads for businesses.
|
||||
- **UX Pattern:** Map-first. Everything is on the map. Unbeatable directions + navigation.
|
||||
- **Weaknesses:**
|
||||
- Not events-first — events are buried, inconsistent, often missing
|
||||
- Static data — "Popular Times" is historical, not real-time
|
||||
- No social — no friend activity, no trending rankings
|
||||
- Generic UX — one-size-fits-all, no personality
|
||||
- **🔴 HotNow opportunity:** Events-first UX. Real-time trending. Social layer. Brand personality.
|
||||
|
||||
---
|
||||
|
||||
#### 10. Songkick / Bandsintown — Live Music Trackers
|
||||
|
||||
- **What it is:** Track artists you follow → get notified when they're playing near you. Songkick acquired by Suno (AI music company). Bandsintown is independent.
|
||||
- **Pricing:** Free for fans. Bandsintown: artist promo packages ($25-$100+/mo).
|
||||
- **UX Pattern:** List-first (concerts by date). Artist-centric.
|
||||
- **Weaknesses:**
|
||||
- Music-only — no other event categories
|
||||
- Artist-dependent — you must follow artists to get value
|
||||
- No real-time trending — chronological, not ranked by buzz
|
||||
- **🔴 HotNow opportunity:** All categories. Buzz-ranked. No following required — discover without pre-configuring.
|
||||
|
||||
---
|
||||
|
||||
#### 11. Resident Advisor (RA) — Electronic Music Authority
|
||||
|
||||
- **What it is:** The definitive electronic music events platform. Global listings, reviews, news, ticket sales.
|
||||
- **Pricing:** Free to browse. Ticket commission + promoted event listings.
|
||||
- **UX Pattern:** List-first. Deep filtering by genre/city/date.
|
||||
- **Weaknesses:**
|
||||
- Niche (electronic music only) — tiny addressable market
|
||||
- Community-specific — not for general audience
|
||||
- **🔴 HotNow opportunity:** Mass-market appeal. All genres + all categories.
|
||||
|
||||
---
|
||||
|
||||
#### 12. Seeker.io — B2B AI Event Aggregation
|
||||
|
||||
- **What it is:** AI-native event discovery for tourism boards, CVBs, local media. Crawls any website to extract events. Used by SF Peninsula (500+ sources, 16 cities), Tennessee Tourism (statewide), Calgary Co-op (4 orgs, 1 feed).
|
||||
- **Pricing:** Enterprise B2B SaaS (not publicly listed — likely $500-$5K+/mo depending on scale).
|
||||
- **UX Pattern:** Embeddable calendar widget for partner websites. REST API for custom integrations.
|
||||
- **Weaknesses:**
|
||||
- B2B, not consumer-facing — no social, no map UX, no mobile app
|
||||
- No real-time trending — chronological curation
|
||||
- Expensive — not for small businesses
|
||||
- **🔴 HotNow opportunity:** Consumer experience. Real-time social ranking. Affordable business tiers.
|
||||
|
||||
---
|
||||
|
||||
## 2. Opportunity Analysis & HotNow's Edge
|
||||
|
||||
### The White Space
|
||||
|
||||
After analyzing 12 competitors, **nobody is doing all of these together:**
|
||||
|
||||
| Capability | Yelp | Fever/DICE | Eventbrite | Nextdoor | Beli | Corner | Google Maps | **HotNow** |
|
||||
|------------|------|-----------|------------|----------|------|--------|-------------|-------------|
|
||||
| Real-time trending | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
|
||||
| Social buzz signals | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
|
||||
| Map-first UX | 🔶 | ❌ | ❌ | 🔶 | ❌ | ✅ | ✅ | ✅ |
|
||||
| Events + Places | ❌ | 🔶 | ✅ | 🔶 | ❌ | ❌ | 🔶 | ✅ |
|
||||
| AI ranking | 🔶 | ❌ | 🔶 | ✅ | ✅ | ✅ | 🔶 | ✅ |
|
||||
| Gen Z cool factor | ❌ | 🔶 | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ |
|
||||
| Business monetization | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ |
|
||||
| Offline mode (PWA) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ |
|
||||
| PWA (no app store) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
|
||||
|
||||
**🔶 = partially / second-class feature**
|
||||
|
||||
### HotNow's Core Differentiators
|
||||
|
||||
1. **Real-Time Trending Ranking** — The single biggest gap. Everyone ranks by reviews, dates, or manual curation. HotNow ranks by what's buzzing *right now* — social signals, check-in velocity, search volume, AI sentiment.
|
||||
|
||||
2. **Super Search v2 Integration** — Already live on Core server with 7 providers. This is HotNow's data engine — aggregates events, venues, reviews, and social signals from multiple sources without needing to build every scraper from scratch.
|
||||
|
||||
3. **Map-First PWA** — No app store friction. Instant onboarding. Works offline. Lower CAC than native app competitors.
|
||||
|
||||
4. **Three-Tier Consumer Monetization** — Explorer (free), Pro ($4.99/mo), Concierge ($19.99/mo). Competitors are either free/ad-supported or ticket-commission-only. Recurring subscription revenue from day one.
|
||||
|
||||
5. **Business Revenue from Launch** — Featured Placement ($97/mo) + Event Boost ($47/event). Affordable for small businesses (unlike Yelp's $500+ minimums).
|
||||
|
||||
6. **Brand Identity** — Dark theme, warm gradient accent. "What's good, right now, near you." Gen Z/Millennial voice without alienating 30+.
|
||||
|
||||
---
|
||||
|
||||
## 3. Product Architecture
|
||||
|
||||
### System Overview
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ USERS (PWA) │
|
||||
│ app.hotnow.io ─── Map View ─── Discovery Feed ─── etc. │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ CLOUDFLARE CDN │
|
||||
│ Static assets (JS/CSS/icons) │ API proxy │ DDoS protection │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ CADDY REVERSE PROXY │
|
||||
│ SSL termination │ Rate limiting │ Route by subdomain │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
│
|
||||
┌───────────────────┼───────────────────┐
|
||||
▼ ▼ ▼
|
||||
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
|
||||
│ app.hotnow.io │ │ api.hotnow.io │ │ dashboard.hotnow │
|
||||
│ (Static PWA) │ │ (FastAPI) │ │ (Business Dash) │
|
||||
│ SvelteKit SPA │ │ Port 8001 │ │ Static + API │
|
||||
└──────────────────┘ └──────────────────┘ └──────────────────┘
|
||||
│
|
||||
┌───────────────────┼───────────────────┐
|
||||
▼ ▼ ▼
|
||||
┌──────────────┐ ┌──────────────┐ ┌──────────────────┐
|
||||
│ PostgreSQL │ │ Redis │ │ Super Search v2 │
|
||||
│ + PostGIS │ │ Cache + Queue│ │ (7 providers) │
|
||||
│ │ │ + Real-time │ │ Existing on Core │
|
||||
└──────────────┘ └──────────────┘ └──────────────────┘
|
||||
```
|
||||
|
||||
### Tech Stack
|
||||
|
||||
| Layer | Technology | Why |
|
||||
|-------|-----------|-----|
|
||||
| **PWA Frontend** | SvelteKit (static adapter) | Fast, small bundles, great PWA support |
|
||||
| **Map** | Leaflet.js + OpenStreetMap tiles | Free, no API keys, works offline with cached tiles |
|
||||
| **Backend API** | FastAPI (Python 3.11) | Async, auto-docs, Python matches existing Core stack |
|
||||
| **Database** | PostgreSQL 16 + PostGIS | Geospatial queries (proximity, radius, bounding box) |
|
||||
| **Cache** | Redis | Trending scores, session cache, rate limit counters, real-time pub/sub |
|
||||
| **Task Queue** | Redis + ARQ (or Celery) | Background: Super Search ingestion, trend recalculation, notifications |
|
||||
| **Auth** | JWT tokens + refresh | Stateless, PWA-friendly, no cookies needed |
|
||||
| **Payments** | Stripe | Consumer subs + business placements, Webhook integration |
|
||||
| **Search** | PostgreSQL full-text search + Super Search v2 | Hybrid: own DB for quick lookups, Super Search for deep aggregation |
|
||||
| **Offline** | Service Worker + IndexedDB | Cache map tiles, event data, user preferences |
|
||||
| **Push Notifications** | Web Push API + VAPID | PWA native, no app store needed |
|
||||
| **Email** | Postmark or SendGrid | Transactional + marketing |
|
||||
|
||||
### Subdomain Architecture
|
||||
|
||||
| Subdomain | Purpose | Technology |
|
||||
|-----------|---------|------------|
|
||||
| `hotnow.io` | Marketing/SEO landing page | Static HTML (existing `/var/www/hotnow/index.html`) |
|
||||
| `app.hotnow.io` | PWA shell | SvelteKit SPA, static export, served by Caddy |
|
||||
| `api.hotnow.io` | REST API backend | FastAPI on Core server (`152.53.192.33`), port 8001 |
|
||||
| `dashboard.hotnow.io` | Business dashboard | SvelteKit SPA (shared component library with app) |
|
||||
| `cdn.hotnow.io` | Static assets (optional) | Cloudflare CDN caching |
|
||||
| `admin.hotnow.io` | Internal admin panel | Protected by Tailscale, minimal FastAPI admin |
|
||||
|
||||
---
|
||||
|
||||
## 4. Data Model
|
||||
|
||||
### Core Entities
|
||||
|
||||
#### Events
|
||||
|
||||
```sql
|
||||
CREATE TABLE events (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
title VARCHAR(255) NOT NULL,
|
||||
description TEXT,
|
||||
category event_category NOT NULL, -- enum: music, food_drink, arts_culture, nightlife, sports, family, pop_up, other
|
||||
start_time TIMESTAMPTZ NOT NULL,
|
||||
end_time TIMESTAMPTZ,
|
||||
timezone VARCHAR(50) DEFAULT 'America/Chicago',
|
||||
is_recurring BOOLEAN DEFAULT false,
|
||||
recurrence_rule VARCHAR(255), -- RRULE format
|
||||
is_featured BOOLEAN DEFAULT false,
|
||||
|
||||
-- Venue relationship
|
||||
venue_id UUID REFERENCES venues(id) ON DELETE CASCADE,
|
||||
|
||||
-- Media
|
||||
cover_image_url VARCHAR(500),
|
||||
media_urls JSONB DEFAULT '[]', -- [{url, type, order}]
|
||||
|
||||
-- Pricing
|
||||
price_info JSONB DEFAULT NULL, -- {type: free|paid|varies, range: {min, max}, currency}
|
||||
ticket_url VARCHAR(500),
|
||||
|
||||
-- Source attribution
|
||||
source VARCHAR(100) NOT NULL, -- 'manual', 'super_search', 'user_submitted', 'api_partner'
|
||||
source_event_id VARCHAR(255), -- external ID for dedup
|
||||
source_url VARCHAR(500),
|
||||
|
||||
-- Real-time signals (updated by background worker)
|
||||
trending_score FLOAT DEFAULT 0.0,
|
||||
popularity_pulse INTEGER DEFAULT 0, -- short-term velocity (last 2 hours)
|
||||
social_mention_count INTEGER DEFAULT 0,
|
||||
search_volume_24h INTEGER DEFAULT 0,
|
||||
check_in_count INTEGER DEFAULT 0,
|
||||
ai_sentiment_score FLOAT DEFAULT 0.0, -- -1.0 to 1.0
|
||||
|
||||
-- Metadata
|
||||
tags TEXT[] DEFAULT '{}',
|
||||
is_active BOOLEAN DEFAULT true,
|
||||
reviewed_by_admin BOOLEAN DEFAULT false,
|
||||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- Geospatial: events inherit location from venue, but can override
|
||||
-- Indexes
|
||||
CREATE INDEX idx_events_trending ON events (trending_score DESC) WHERE is_active = true;
|
||||
CREATE INDEX idx_events_time_range ON events (start_time, end_time) WHERE is_active = true;
|
||||
CREATE INDEX idx_events_category ON events (category) WHERE is_active = true;
|
||||
CREATE INDEX idx_events_venue ON events (venue_id);
|
||||
CREATE INDEX idx_events_source_dedup ON events (source, source_event_id);
|
||||
```
|
||||
|
||||
#### Venues
|
||||
|
||||
```sql
|
||||
CREATE TABLE venues (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
name VARCHAR(255) NOT NULL,
|
||||
description TEXT,
|
||||
venue_type venue_type NOT NULL, -- enum: bar, restaurant, club, theater, park, gallery, pop_up, other
|
||||
|
||||
-- Contact
|
||||
address VARCHAR(500),
|
||||
city VARCHAR(100) NOT NULL,
|
||||
state VARCHAR(50),
|
||||
postal_code VARCHAR(20),
|
||||
country VARCHAR(2) DEFAULT 'US',
|
||||
|
||||
-- Geospatial (PostGIS)
|
||||
location GEOGRAPHY(POINT, 4326), -- lat/lng for proximity queries
|
||||
geo_json JSONB DEFAULT NULL, -- polygon for venues with boundaries
|
||||
|
||||
-- Contact
|
||||
phone VARCHAR(20),
|
||||
website VARCHAR(500),
|
||||
social_links JSONB DEFAULT '{}', -- {instagram, facebook, twitter, tiktok}
|
||||
|
||||
-- Hours
|
||||
hours JSONB DEFAULT NULL, -- [{day, open, close}]
|
||||
is_permanently_closed BOOLEAN DEFAULT false,
|
||||
|
||||
-- Media
|
||||
cover_image_url VARCHAR(500),
|
||||
media_urls JSONB DEFAULT '[]',
|
||||
|
||||
-- Real-time signals
|
||||
trending_score FLOAT DEFAULT 0.0,
|
||||
current_busy_level busy_level DEFAULT 'unknown', -- enum: quiet, moderate, busy, packed
|
||||
|
||||
-- Business owner (links to Stripe customer)
|
||||
owner_user_id UUID REFERENCES users(id),
|
||||
|
||||
-- Metadata
|
||||
source VARCHAR(100) DEFAULT 'manual',
|
||||
source_venue_id VARCHAR(255),
|
||||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_venues_location ON venues USING GIST (location);
|
||||
CREATE INDEX idx_venues_city ON venues (city, state);
|
||||
CREATE INDEX idx_venues_type ON venues (venue_type);
|
||||
```
|
||||
|
||||
#### Users
|
||||
|
||||
```sql
|
||||
CREATE TABLE users (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
email VARCHAR(255) UNIQUE,
|
||||
display_name VARCHAR(100),
|
||||
avatar_url VARCHAR(500),
|
||||
|
||||
-- Auth
|
||||
password_hash VARCHAR(255),
|
||||
auth_provider auth_provider DEFAULT 'email', -- enum: email, google, apple
|
||||
auth_provider_id VARCHAR(255),
|
||||
email_verified BOOLEAN DEFAULT false,
|
||||
|
||||
-- Subscription
|
||||
tier subscription_tier DEFAULT 'explorer', -- explorer, pro, concierge
|
||||
stripe_customer_id VARCHAR(100),
|
||||
subscription_status subscription_status DEFAULT 'inactive', -- active, past_due, canceled, inactive
|
||||
subscription_expires_at TIMESTAMPTZ,
|
||||
|
||||
-- Preferences
|
||||
home_city VARCHAR(100),
|
||||
home_location GEOGRAPHY(POINT, 4326),
|
||||
preferred_categories TEXT[] DEFAULT '{}',
|
||||
preferred_radius_km INTEGER DEFAULT 10,
|
||||
notification_prefs JSONB DEFAULT '{}', -- {push, email, sms, categories}
|
||||
|
||||
-- PWA
|
||||
push_subscription JSONB DEFAULT NULL, -- Web Push subscription object
|
||||
|
||||
-- Metadata
|
||||
is_business BOOLEAN DEFAULT false,
|
||||
is_admin BOOLEAN DEFAULT false,
|
||||
last_active_at TIMESTAMPTZ,
|
||||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_users_email ON users (email);
|
||||
CREATE INDEX idx_users_stripe ON users (stripe_customer_id);
|
||||
```
|
||||
|
||||
#### Search/Discover Events (Lightweight for feed)
|
||||
|
||||
```sql
|
||||
CREATE TABLE discover_events (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
event_id UUID REFERENCES events(id) ON DELETE CASCADE,
|
||||
user_id UUID NOT NULL, -- anonymized session UUID for anonymous users
|
||||
action discover_action NOT NULL, -- enum: view, click, save, share, check_in
|
||||
source_context VARCHAR(50), -- 'map', 'feed', 'search', 'detail'
|
||||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_discover_events_user_time ON discover_events (user_id, created_at DESC);
|
||||
CREATE INDEX idx_discover_events_event ON discover_events (event_id, created_at);
|
||||
```
|
||||
|
||||
#### Business Features
|
||||
|
||||
```sql
|
||||
CREATE TABLE business_features (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
venue_id UUID REFERENCES venues(id) ON DELETE CASCADE,
|
||||
feature_type feature_type NOT NULL, -- featured_placement, event_boost, promoted_listing
|
||||
status feature_status DEFAULT 'active',
|
||||
starts_at TIMESTAMPTZ NOT NULL,
|
||||
ends_at TIMESTAMPTZ NOT NULL,
|
||||
stripe_payment_id VARCHAR(100),
|
||||
amount_paid_cents INTEGER,
|
||||
metadata JSONB DEFAULT '{}',
|
||||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
#### Cached/Search Index (Redis)
|
||||
|
||||
```redis
|
||||
# Trending events by city (sorted set, scored by trending_score)
|
||||
trending:{city}:{category} → Sorted Set {event_id: score}
|
||||
|
||||
# Real-time pulse (current activity, 15-min TTL)
|
||||
pulse:{event_id} → {view_count, click_count, save_count, last_updated}
|
||||
|
||||
# User sessions (JWT refresh tokens)
|
||||
session:{user_id}:{device_id} → {refresh_token, expires_at, device_info}
|
||||
|
||||
# Rate limiting
|
||||
ratelimit:{ip}:{endpoint} → counter with TTL
|
||||
|
||||
# Geo-index cache (pre-computed bounding boxes)
|
||||
geo:{lat}:{lng}:{radius_km} → Set of event_ids (TTL: 5 min)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. API Surface
|
||||
|
||||
### REST API (api.hotnow.io/v1)
|
||||
|
||||
#### Events
|
||||
|
||||
| Method | Endpoint | Auth | Description |
|
||||
|--------|----------|------|-------------|
|
||||
| `GET` | `/events/trending` | Optional | Trending events (paginated, filtered by location/category) |
|
||||
| `GET` | `/events/nearby` | Optional | Events within radius of lat/lng |
|
||||
| `GET` | `/events/:id` | Optional | Full event detail with venue info |
|
||||
| `GET` | `/events/search` | Optional | Full-text search + Super Search v2 aggregation |
|
||||
| `POST` | `/events/submit` | User | User-submitted event (goes to review queue) |
|
||||
| `POST` | `/events/:id/save` | User | Save/bookmark event |
|
||||
| `POST` | `/events/:id/check-in` | User | Check in (anonymized, feeds trending) |
|
||||
| `GET` | `/events/:id/pulse` | Optional | Real-time activity data for this event |
|
||||
|
||||
#### Venues
|
||||
|
||||
| Method | Endpoint | Auth | Description |
|
||||
|--------|----------|------|-------------|
|
||||
| `GET` | `/venues/nearby` | Optional | Venues within radius |
|
||||
| `GET` | `/venues/:id` | Optional | Venue detail + upcoming events |
|
||||
| `GET` | `/venues/:id/busy` | Optional | Current busy level estimate |
|
||||
|
||||
#### Discovery
|
||||
|
||||
| Method | Endpoint | Auth | Description |
|
||||
|--------|----------|------|-------------|
|
||||
| `GET` | `/discover/feed` | Optional | Personalized feed (AI if Pro tier, trending if free) |
|
||||
| `GET` | `/discover/recommendations` | Pro | AI-powered recommendations |
|
||||
| `POST` | `/discover/action` | Optional | Log view/click/save for trending signals |
|
||||
|
||||
#### Auth
|
||||
|
||||
| Method | Endpoint | Auth | Description |
|
||||
|--------|----------|------|-------------|
|
||||
| `POST` | `/auth/register` | None | Create account (email + password) |
|
||||
| `POST` | `/auth/login` | None | Login → JWT access + refresh token |
|
||||
| `POST` | `/auth/refresh` | Refresh | Get new access token |
|
||||
| `POST` | `/auth/logout` | Access | Revoke refresh token |
|
||||
| `POST` | `/auth/oauth/google` | None | Google OAuth login |
|
||||
| `GET` | `/auth/me` | Access | Current user profile |
|
||||
|
||||
#### Subscriptions
|
||||
|
||||
| Method | Endpoint | Auth | Description |
|
||||
|--------|----------|------|-------------|
|
||||
| `GET` | `/billing/plans` | None | Available subscription tiers |
|
||||
| `POST` | `/billing/subscribe` | User | Create Stripe checkout session |
|
||||
| `GET` | `/billing/portal` | User | Redirect to Stripe Customer Portal |
|
||||
| `POST` | `/billing/webhook` | Stripe | Stripe webhook receiver |
|
||||
|
||||
#### Business
|
||||
|
||||
| Method | Endpoint | Auth | Description |
|
||||
|--------|----------|------|-------------|
|
||||
| `GET` | `/business/dashboard` | Business | Business metrics and active features |
|
||||
| `POST` | `/business/featured` | Business | Purchase Featured Placement |
|
||||
| `POST` | `/business/boost` | Business | Purchase Event Boost |
|
||||
| `GET` | `/business/analytics` | Business | Impressions, clicks, conversions |
|
||||
|
||||
#### Admin (internal)
|
||||
|
||||
| Method | Endpoint | Auth | Description |
|
||||
|--------|----------|------|-------------|
|
||||
| `GET` | `/admin/review-queue` | Admin | Events/venues pending review |
|
||||
| `POST` | `/admin/review/:id` | Admin | Approve/reject submission |
|
||||
| `POST` | `/admin/recalculate-trending` | Admin | Force trend recalculation |
|
||||
| `GET` | `/admin/stats` | Admin | Platform metrics |
|
||||
|
||||
### Auth Flow
|
||||
|
||||
```
|
||||
1. User registers/logs in → receives:
|
||||
- access_token (JWT, 15 min expiry)
|
||||
- refresh_token (opaque, 30 day expiry, stored in Redis)
|
||||
|
||||
2. Every API call: Authorization: Bearer <access_token>
|
||||
|
||||
3. Access token expires → POST /auth/refresh → new access_token
|
||||
|
||||
4. Logout → revoke refresh_token in Redis
|
||||
|
||||
5. Anonymous users: session_id (UUID v4, stored in localStorage)
|
||||
- Limited rate: 100 requests/hour
|
||||
- Cannot save/bookmark (no persistence without account)
|
||||
```
|
||||
|
||||
### Rate Limits
|
||||
|
||||
| Tier | Requests/Hour | Special Limits |
|
||||
|------|--------------|----------------|
|
||||
| Anonymous | 100 | Search: 10/hr |
|
||||
| Explorer (Free) | 300 | AI recs: none, Save: 50 |
|
||||
| Pro ($4.99/mo) | 1000 | AI recs: 100/hr, Offline: full |
|
||||
| Concierge ($19.99/mo) | 5000 | AI recs: unlimited, Concierge chat: 50/day |
|
||||
| Business | 500 | Dashboard + analytics |
|
||||
| Admin | Unlimited | All endpoints |
|
||||
|
||||
---
|
||||
|
||||
## 6. Real-Time Ranking Algorithm
|
||||
|
||||
### The HotNow Score
|
||||
|
||||
The core innovation. Every event has a `trending_score` recalculated every 5 minutes by a background worker.
|
||||
|
||||
```
|
||||
HOT_SCORE = (
|
||||
SOCIAL_BUZZ × 0.30 +
|
||||
ENGAGEMENT_VELOCITY × 0.25 +
|
||||
RECENCY_DECAY × 0.20 +
|
||||
AI_SENTIMENT × 0.15 +
|
||||
MANUAL_BOOST × 0.10
|
||||
) × CITY_NORMALIZATION
|
||||
```
|
||||
|
||||
#### Signal Components
|
||||
|
||||
| Signal | Weight | Sources | Decay |
|
||||
|--------|--------|---------|-------|
|
||||
| **SOCIAL_BUZZ** | 30% | Instagram geotag mentions, X/Twitter mentions, TikTok location tags (via Super Search) | Half-life: 4 hours |
|
||||
| **ENGAGEMENT_VELOCITY** | 25% | HotNow own telemetry: views/min, clicks/min, saves/min, check-ins/min | Half-life: 2 hours |
|
||||
| **RECENCY_DECAY** | 20% | Time until event start. Events starting soon get boost. | Linear ramp: peaks 2h before, decays after start |
|
||||
| **AI_SENTIMENT** | 15% | Super Search v2 NLP sentiment on social mentions about the venue/event | 24h rolling window |
|
||||
| **MANUAL_BOOST** | 10% | Featured Placement ($97/mo), Event Boost ($47/event) | Fixed duration |
|
||||
|
||||
#### City Normalization
|
||||
|
||||
```
|
||||
CITY_NORMALIZATION = log10(active_users_in_city + 1) / log10(total_events_in_city + 1)
|
||||
```
|
||||
|
||||
Prevents NYC/London from dominating. Small cities can compete.
|
||||
|
||||
#### Anti-Gaming Measures
|
||||
|
||||
- Velocity caps: engagement increase >300% in 15 min → throttled
|
||||
- Bot detection: suspicious patterns (same IP, rapid fire) → excluded
|
||||
- Review queue: user-submitted events require admin approval before trending
|
||||
- Manual boost transparency: clearly labeled in UI ("Promoted")
|
||||
|
||||
### Data Pipeline
|
||||
|
||||
```
|
||||
┌─────────────────┐
|
||||
│ Super Search v2 │ ← 7 providers, already live on Core
|
||||
│ (aggregator) │
|
||||
└────────┬────────┘
|
||||
│ Every 15 min
|
||||
▼
|
||||
┌─────────────────┐
|
||||
│ Ingestion Worker │ ← Redis queue (ARQ), dedup by source_event_id
|
||||
│ │ enrich with geocoding, AI sentiment
|
||||
└────────┬────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────┐
|
||||
│ PostgreSQL │ ← Events + Venues tables
|
||||
└────────┬────────┘
|
||||
│ Every 5 min
|
||||
▼
|
||||
┌─────────────────┐
|
||||
│ Trend Calculator │ ← Compute HOT_SCORE for all active events
|
||||
│ (ARQ cron job) │ Update trending_score, write to Redis sorted sets
|
||||
└────────┬────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────┐
|
||||
│ Redis │ ← Sorted sets: trending:{city}:{category}
|
||||
│ │ API reads directly from Redis (sub-millisecond)
|
||||
└─────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Component Tree & PWA Shell
|
||||
|
||||
### PWA Architecture
|
||||
|
||||
```
|
||||
app.hotnow.io (SvelteKit SPA, static export)
|
||||
│
|
||||
├── src/
|
||||
│ ├── routes/
|
||||
│ │ ├── +layout.svelte # Shell (nav, bottom tabs, auth state)
|
||||
│ │ ├── +page.svelte # Map view (default/home)
|
||||
│ │ ├── discover/
|
||||
│ │ │ └── +page.svelte # Discovery feed (list)
|
||||
│ │ ├── event/
|
||||
│ │ │ └── [id]/
|
||||
│ │ │ └── +page.svelte # Event detail
|
||||
│ │ ├── venue/
|
||||
│ │ │ └── [id]/
|
||||
│ │ │ └── +page.svelte # Venue detail
|
||||
│ │ ├── search/
|
||||
│ │ │ └── +page.svelte # Search + filters
|
||||
│ │ ├── profile/
|
||||
│ │ │ └── +page.svelte # User profile, saved events
|
||||
│ │ ├── settings/
|
||||
│ │ │ └── +page.svelte # Preferences, notifications
|
||||
│ │ ├── auth/
|
||||
│ │ │ ├── login/+page.svelte
|
||||
│ │ │ └── register/+page.svelte
|
||||
│ │ └── concierge/
|
||||
│ │ └── +page.svelte # Concierge chat (Pro tier)
|
||||
│ │
|
||||
│ ├── lib/
|
||||
│ │ ├── components/
|
||||
│ │ │ ├── Map.svelte # Leaflet wrapper
|
||||
│ │ │ ├── EventCard.svelte # Horizontal/vertical card variant
|
||||
│ │ │ ├── EventDetail.svelte # Full modal/page detail
|
||||
│ │ │ ├── VenueCard.svelte
|
||||
│ │ │ ├── TrendPulse.svelte # Live activity indicator
|
||||
│ │ │ ├── CategoryFilter.svelte
|
||||
│ │ │ ├── SearchBar.svelte
|
||||
│ │ │ ├── BottomNav.svelte # Mobile bottom tab bar
|
||||
│ │ │ ├── ConciergeChat.svelte # AI chat interface
|
||||
│ │ │ └── PwaInstall.svelte # Install prompt
|
||||
│ │ ├── stores/
|
||||
│ │ │ ├── auth.ts # JWT + refresh logic
|
||||
│ │ │ ├── location.ts # Geolocation watcher
|
||||
│ │ │ ├── events.ts # Event cache + trending
|
||||
│ │ │ └── settings.ts # User preferences
|
||||
│ │ ├── api/
|
||||
│ │ │ ├── client.ts # Fetch wrapper with auth
|
||||
│ │ │ ├── events.ts
|
||||
│ │ │ ├── venues.ts
|
||||
│ │ │ ├── discover.ts
|
||||
│ │ │ └── auth.ts
|
||||
│ │ └── utils/
|
||||
│ │ ├── geo.ts # Distance, bounding box calc
|
||||
│ │ ├── offline.ts # IndexedDB + SW helpers
|
||||
│ │ └── format.ts # Date, price, category formatting
|
||||
│ │
|
||||
│ ├── service-worker.ts # PWA offline cache
|
||||
│ └── app.css # Tailwind + brand colors
|
||||
│
|
||||
├── static/
|
||||
│ ├── manifest.json # PWA manifest
|
||||
│ ├── icons/ # PWA icons (192, 512)
|
||||
│ └── favicon.ico
|
||||
│
|
||||
├── svelte.config.js
|
||||
├── vite.config.ts
|
||||
├── tailwind.config.ts
|
||||
└── package.json
|
||||
```
|
||||
|
||||
### Key UI Patterns
|
||||
|
||||
#### Map View (Home Screen)
|
||||
- Full-screen Leaflet map (OpenStreetMap tiles pre-cached for offline)
|
||||
- Clustered markers colored by category
|
||||
- Pulsing markers for "hot right now" (pulse speed = trending_score)
|
||||
- Bottom sheet (swipeable): list of nearby trending events
|
||||
- Filter chip bar: All | Music | Food/Drink | Arts | Nightlife | Pop-ups
|
||||
- Location button: recenter, radius slider
|
||||
|
||||
#### Discovery Feed
|
||||
- Vertical scroll list of EventCards
|
||||
- Each card: cover image, title, venue, distance, trending badge, time
|
||||
- Pull-to-refresh (recalculates location + trending)
|
||||
- "Happening Now" horizontal carousel at top
|
||||
- Skeleton loading states
|
||||
|
||||
#### Event Detail
|
||||
- Hero image with gradient overlay
|
||||
- Title, venue name (tappable → venue detail), distance
|
||||
- "Hot right now" pulse indicator
|
||||
- Description, category badges, tags
|
||||
- Price info + ticket link
|
||||
- Actions: Save, Share, Check In, Get Directions
|
||||
- Map snippet showing location
|
||||
- "Nearby" section: other trending events nearby
|
||||
|
||||
#### Business Dashboard (dashboard.hotnow.io)
|
||||
- Auth-gated, only for users with `is_business = true`
|
||||
- Overview: impressions, clicks, saves for their venue/events
|
||||
- Purchase flow: Featured Placement, Event Boost
|
||||
- Analytics: 7-day, 30-day charts
|
||||
- Manage venue details, hours, photos
|
||||
|
||||
---
|
||||
|
||||
## 8. Infrastructure & Deployment
|
||||
|
||||
### Server: Netcup RS 2000 (Core — 152.53.192.33)
|
||||
|
||||
```yaml
|
||||
Services:
|
||||
PostgreSQL 16 + PostGIS:
|
||||
database: hotnow
|
||||
user: hotnow_app
|
||||
extensions: postgis, pg_trgm, uuid-ossp
|
||||
|
||||
Redis 7:
|
||||
instance: hotnow
|
||||
maxmemory: 256mb
|
||||
policy: allkeys-lru
|
||||
|
||||
FastAPI (api.hotnow.io):
|
||||
port: 8001
|
||||
workers: 4 (gunicorn + uvicorn)
|
||||
systemd service: hotnow-api
|
||||
|
||||
ARQ Workers:
|
||||
service: hotnow-worker
|
||||
queues: ingestion, trending, notifications, cleanup
|
||||
|
||||
Caddy:
|
||||
config: /etc/caddy/Caddyfile
|
||||
routes:
|
||||
hotnow.io → /var/www/hotnow/index.html (landing page)
|
||||
app.hotnow.io → /var/www/hotnow-app/ (SvelteKit build)
|
||||
api.hotnow.io → reverse_proxy localhost:8001
|
||||
dashboard.hotnow.io → /var/www/hotnow-dashboard/ (SvelteKit build)
|
||||
```
|
||||
|
||||
### Cloudflare DNS
|
||||
|
||||
```
|
||||
A hotnow.io → 152.53.192.33
|
||||
A app.hotnow.io → 152.53.192.33 (or CNAME → hotnow.io)
|
||||
A api.hotnow.io → 152.53.192.33 (or CNAME → hotnow.io)
|
||||
A dashboard.hotnow.io → 152.53.192.33 (or CNAME → hotnow.io)
|
||||
CNAME www.hotnow.io → hotnow.io
|
||||
```
|
||||
|
||||
### Environment Variables
|
||||
|
||||
```bash
|
||||
# /etc/hotnow/.env
|
||||
DATABASE_URL=postgresql://hotnow_app:${DB_PASSWORD}@localhost:5432/hotnow
|
||||
REDIS_URL=redis://localhost:6379/0
|
||||
JWT_SECRET=${JWT_SECRET}
|
||||
JWT_REFRESH_SECRET=${JWT_REFRESH_SECRET}
|
||||
STRIPE_SECRET_KEY=${STRIPE_SECRET_KEY}
|
||||
STRIPE_WEBHOOK_SECRET=${STRIPE_WEBHOOK_SECRET}
|
||||
SUPER_SEARCH_ENDPOINT=http://localhost:8000 # Super Search v2 MCP
|
||||
SUPER_SEARCH_API_KEY=${SUPER_SEARCH_API_KEY}
|
||||
ENVIRONMENT=production
|
||||
CORS_ORIGINS=https://app.hotnow.io,https://dashboard.hotnow.io
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Build Plan Preview (Phases 2-4)
|
||||
|
||||
### Phase 2: Core Build ($20-25 budget, premium models)
|
||||
|
||||
**What gets built:**
|
||||
|
||||
1. **Database setup** — PostgreSQL + PostGIS on Core server. Run migrations for all tables.
|
||||
2. **FastAPI backend** — All API endpoints listed above. Auth flow (JWT + refresh). Stripe integration (subscriptions + business payments).
|
||||
3. **Super Search v2 integration** — Event ingestion pipeline. Dedup logic. Geocoding enrichment.
|
||||
4. **Trending algorithm** — HOT_SCORE calculator. ARQ cron job. Redis sorted set population.
|
||||
5. **PWA shell** — SvelteKit SPA. Map view with Leaflet. Discovery feed. Event detail. Search. Auth. Bottom navigation.
|
||||
6. **Business dashboard** — Basic dashboard with analytics and purchase flow.
|
||||
7. **Caddy + Cloudflare** — Subdomain routing. SSL. Rate limiting.
|
||||
|
||||
**Models used:** `claude-sonnet-4-20250514` for complex backend logic, `gpt-4o` for frontend, `deepseek-v4-pro` for architecture decisions.
|
||||
|
||||
---
|
||||
|
||||
### Phase 3: Review + Hardening ($8-10 budget)
|
||||
|
||||
**What gets hardened:**
|
||||
|
||||
1. **Security audit** — JWT hardening, input validation, SQL injection check, CORS review.
|
||||
2. **Performance** — API response time optimization, database query tuning, Redis cache hit rate.
|
||||
3. **Error handling** — Graceful degradation, offline fallbacks, rate limit UX, payment failure flows.
|
||||
4. **PWA audit** — Lighthouse PWA score, offline functionality, install flow, push notifications.
|
||||
5. **Mobile testing** — iOS Safari, Chrome Android, Samsung Internet. Responsive breakpoints.
|
||||
6. **Seed data** — Populate with real events for launch city. Verify trending algorithm with live data.
|
||||
7. **Business onboarding flow** — Stripe Connect setup, venue claim flow, payment testing.
|
||||
|
||||
**Models used:** `claude-sonnet-4-20250514` for code review, `gpt-4o` for testing, `deepseek-v4-pro` for security analysis.
|
||||
|
||||
---
|
||||
|
||||
### Phase 4: Launch Package ($5-7 budget)
|
||||
|
||||
**What gets packaged:**
|
||||
|
||||
1. **Launch city campaign** — SEO landing page for target city. Social media post templates.
|
||||
2. **Email sequence** — Welcome email, weekly digest ("What's Hot This Weekend"), re-engagement.
|
||||
3. **Analytics dashboard** — Simple admin analytics: DAU/MAU, event engagement, revenue tracking.
|
||||
4. **Business outreach kit** — One-page pitch for venues to advertise. "Claim your venue" email template.
|
||||
5. **Documentation** — Deployment runbook, API docs (auto-generated by FastAPI), admin guide.
|
||||
6. **Monitoring** — Uptime Kuma check for api.hotnow.io health endpoint. Error alerting.
|
||||
7. **Launch checklist** — Pre-launch verification items. Go/no-go criteria.
|
||||
|
||||
---
|
||||
|
||||
## 10. Follow-Up Questions for Germaine
|
||||
|
||||
### Launch Strategy
|
||||
|
||||
1. **Launch city?** You mentioned Savannah in the doc. Is that the definite first market? Pros: manageable size, tourist economy, strong local culture, your home base. Cons: smaller user base, seasonal tourism. Alternatives to consider: Austin (tech-forward, young demo), Nashville (music + nightlife), Charleston (tourism + culture, close to Savannah).
|
||||
|
||||
2. **Savannah-specific considerations?** SCAD students are a natural early adopter demographic. Should we do a SCAD ambassador program (similar to Beli's campus model)? Are there local event organizers / venues we should partner with pre-launch?
|
||||
|
||||
3. **City-rollout strategy?** One city at a time (depth-first) or multi-city from launch (breadth-first)? Depth-first: build strong network effects in one market, then expand. Breadth-first: broader appeal but thinner data per city.
|
||||
|
||||
### Data Strategy
|
||||
|
||||
4. **Seed data sources?** Super Search v2 gives us web crawl + search aggregation. But for launch, should we also:
|
||||
- Manually curate 50-100 events/venues in the launch city to ensure quality?
|
||||
- Partner with local event organizers, venues, tourism boards?
|
||||
- Scrape existing platforms (Eventbrite, Facebook Events) as seed data?
|
||||
- User submissions from day one (UGC)?
|
||||
|
||||
5. **Data quality vs. quantity?** Fever/DICE has 100% quality (curated) but narrow scope. Eventbrite has massive scope but low quality. Where should HotNow start on this spectrum?
|
||||
|
||||
### Revenue Priority
|
||||
|
||||
6. **Consumer subscriptions vs. business placements — which is Priority A?**
|
||||
- Consumer-first: requires user acquisition → conversion to Pro/Concierge. Longer path to revenue.
|
||||
- Business-first: sell Featured Placement + Event Boost to venues immediately. Faster revenue, but need traffic to sell.
|
||||
- Hybrid: launch with free tier + business placements, add Pro/Concierge in month 2-3.
|
||||
|
||||
7. **Concierge tier ($19.99/mo) — what should it actually offer at launch?** Curated experiences require human or AI curation effort. Options:
|
||||
- AI-powered concierge chat (lower cost, always available)
|
||||
- Human-curated weekly picks (higher value, higher cost)
|
||||
- Hybrid: AI for instant answers, human for weekly curated lists
|
||||
|
||||
### Technical Choices
|
||||
|
||||
8. **Map provider — Leaflet (OpenStreetMap) free or splurge on Mapbox?**
|
||||
- Leaflet + OSM: free, no API keys, works offline. Less polished tiles.
|
||||
- Mapbox: beautiful tiles, better dark theme, 3D buildings. $0 for first 50K monthly loads, then ~$200+/mo at scale.
|
||||
- Recommendation: start with Leaflet, swap to Mapbox when revenue supports it.
|
||||
|
||||
9. **Hard constraints on tech stack?** You've already chosen FastAPI + SvelteKit + PostgreSQL. Any of these non-negotiable? Any you'd prefer to swap?
|
||||
|
||||
10. **Progressive Web App vs. native mobile?** PWA is the plan (no app store, instant updates, offline). When/if should we invest in native iOS/Android? Trigger points: 10K MAU? Revenue milestone?
|
||||
|
||||
### Timeline & Budget
|
||||
|
||||
11. **Phase 2 timeline expectations?** At $20-25 budget with premium models, I estimate Phase 2 takes about 8-12 hours of build time (subagent + human orchestration). Does that match your timeframe?
|
||||
|
||||
12. **MVP definition — what's the absolute minimum for "go live"?**
|
||||
- Must have: map, trending events, search, event detail, basic auth
|
||||
- Nice to have: AI recommendations, offline mode, Concierge chat, business dashboard
|
||||
- Your call on the cutoff for launch
|
||||
|
||||
---
|
||||
|
||||
## Appendix A: Existing Assets Snapshot
|
||||
|
||||
| Asset | Path | Status |
|
||||
|-------|------|--------|
|
||||
| Landing page | `/var/www/hotnow/index.html` | ✅ Live (1342 lines, 38KB) |
|
||||
| Mockup | `/var/www/mockup/hotnow/index.html` | ✅ Complete (432 lines, 14KB) |
|
||||
| Project doc | `/root/projects/itpp-infrastructure/projects/hotnow.md` | ✅ Comprehensive (827 lines) |
|
||||
| Domain | `hotnow.io` | ✅ Registered at Cloudflare |
|
||||
| Server | Core (152.53.192.33), Netcup RS 2000 | ✅ Operational |
|
||||
| Super Search v2 | MCP on Core | ✅ 7 providers, all healthy |
|
||||
| Caddy | Reverse proxy on Core | ✅ Configured |
|
||||
| PostgreSQL 16 | On Core | ✅ Running |
|
||||
| Redis | On Core | ✅ Running |
|
||||
|
||||
## Appendix B: Key Market Signals
|
||||
|
||||
- **Gen Z discovery:** 77% discover restaurants on social media (Eater/Vox 2025 survey)
|
||||
- **Beli growth:** 30M reviews in 2024 (surpassing Yelp's 21M) — demand for social-forward discovery
|
||||
- **Fever acquired DICE:** Consolidation in curated event space — leaves gap for comprehensive real-time
|
||||
- **Nextdoor AI pivot:** "LLM for every neighborhood" — validates AI + hyperlocal
|
||||
- **Corner's $3.75M raise:** VCs betting on map-first social discovery for Gen Z
|
||||
- **Yelp's AI transformation:** Incumbent feels threat from new discovery paradigms
|
||||
- **Eventbrite rebrand:** Moving from utility to cultural hub — validates shift toward experience economy
|
||||
@@ -0,0 +1,827 @@
|
||||
# HotNow Business Proposal
|
||||
|
||||
**Prepared for:** Germaine Brown & Advisory Team
|
||||
**Date:** August 1, 2026
|
||||
**Company:** IT Pro Partner -- Product Division
|
||||
**Product:** HotNow (hotnow.io)
|
||||
**Classification:** Confidential -- Advisory Review
|
||||
|
||||
---
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Executive Summary](#1-executive-summary)
|
||||
2. [Elevator Pitch](#2-elevator-pitch)
|
||||
3. [Problem Statement](#3-problem-statement)
|
||||
4. [Market Analysis](#4-market-analysis)
|
||||
5. [Product Overview](#5-product-overview)
|
||||
6. [Revenue Model](#6-revenue-model)
|
||||
7. [Competitive Advantages](#7-competitive-advantages)
|
||||
8. [Go-to-Market Strategy](#8-go-to-market-strategy)
|
||||
9. [Risk Analysis](#9-risk-analysis)
|
||||
10. [Financial Projections](#10-financial-projections)
|
||||
11. [The Ask](#11-the-ask)
|
||||
|
||||
---
|
||||
|
||||
## 1. Executive Summary
|
||||
|
||||
HotNow is a real-time local discovery engine that surfaces hidden gems, trending spots, and live events near you -- in real time. Unlike Yelp (review-focused, static), Eventbrite (event ticketing, not discovery), or editorial curation platforms (slow, limited cities), HotNow aggregates and ranks everything happening around you right now based on social signals, check-in data, freshness, and AI-powered curation.
|
||||
|
||||
The global local discovery and events market is massive. The online event ticketing market alone was valued at **$28.4 billion in 2024** and is projected to reach **$43.6 billion by 2032** (Allied Market Research, 2025). The broader "things to do" local discovery segment -- encompassing restaurants, nightlife, pop-ups, street festivals, live music, and art shows -- represents a **$100B+ annual consumer spend category** in the US alone (US Bureau of Labor Statistics, Consumer Expenditure Survey, 2024). Yet no single platform answers the question "what's good right now near me?" in real time.
|
||||
|
||||
HotNow fills this gap. Built on IT Pro Partner's existing Super Search v2 infrastructure -- a battle-tested multi-provider search engine with 7 providers, circuit breakers, and caching already running on netcup VPS -- HotNow adds a map-first mobile PWA, real-time ranking algorithm, user accounts, and location-based discovery. Approximately **70% of the core search and aggregation engine already exists and is production-hardened**.
|
||||
|
||||
With a freemium model anchored by Pro ($4.99/mo) and Concierge ($19.99/mo) tiers, plus business featured placements ($97/mo) and event promotion boosts ($47/event), HotNow monetizes both consumer willingness to pay for curation and business willingness to pay for visibility. At **1,000 Pro subscribers and 100 featured businesses**, HotNow projects **~$176K MRR** (~$2.1M ARR) with approximately **90%+ gross margins** -- a capital-efficient consumer platform with near-zero marginal delivery cost.
|
||||
|
||||
This proposal outlines the market opportunity, product architecture, revenue model, go-to-market plan, risk analysis, and the resources required to launch HotNow as a standalone product under the IT Pro Partner umbrella.
|
||||
|
||||
**TL;DR:** Everyone asks "what should we do tonight?" HotNow answers it -- in real time. Freemium consumer app ($4.99/mo Pro) plus business visibility revenue. ~70% of the engine already built on Super Search v2. Domain hotnow.io acquired. Ready to build and launch.
|
||||
|
||||
---
|
||||
|
||||
## 2. Elevator Pitch
|
||||
|
||||
HotNow tells you what's good, right now, near you. Open the app, see a live map of trending spots, pop-ups, live music, secret menus, and street festivals happening around you -- ranked in real time by social buzz, freshness, and AI curation. Free to browse. $4.99/month unlocks "Best Right Now" -- AI picks tailored to your tastes, the weather, the time of day, and real-time crowd signals. It's the answer to "what should we do tonight?" for every Gen Z and Millennial in every city.
|
||||
|
||||
---
|
||||
|
||||
## 3. Problem Statement
|
||||
|
||||
### 3.1 The Discovery Gap
|
||||
|
||||
Every day, millions of people ask some version of the same question: "what's good around here?" or "what should we do tonight?" The answers are scattered across a fragmented landscape of platforms, none of which solve the problem end-to-end in real time.
|
||||
|
||||
| Platform | What It Does | What It Misses |
|
||||
|----------|-------------|----------------|
|
||||
| Yelp / Google Maps | Restaurant reviews + ratings | Not real-time; doesn't surface pop-ups, events, live music, or trending spots |
|
||||
| Eventbrite / Ticketmaster | Event ticketing | Only ticketed events; misses free pop-ups, street festivals, hidden gems |
|
||||
| TikTok / Instagram | Social discovery | Unstructured, algorithmic feed; not map-based; no real-time ranking |
|
||||
| Thrillist / Infatuation | Editorial curation | Slow, static, limited to major cities; misses neighborhood-level gems |
|
||||
| Scoop Travel | Curated travel recommendations | Travel-focused, not local; editorial (slow), not real-time |
|
||||
| Google "Events near me" | Event listings | Generic, incomplete, no social signals, no curation |
|
||||
|
||||
The result: **people miss the best stuff happening around them**. The pop-up ramen shop that's only open tonight. The street festival three blocks away that didn't show up on Eventbrite. The bar with a secret live jazz set. By the time editorial coverage or Yelp reviews catch up, the moment is gone.
|
||||
|
||||
### 3.2 Who Feels This Pain
|
||||
|
||||
- **Gen Z and Millennials in urban areas** (18-40). They're spontaneous, social, and discovery-driven. They don't plan weekend activities days in advance -- they decide at 7pm what to do at 8pm.
|
||||
- **Tourists and visitors** who want to find what locals actually do, not the TripAdvisor top 10.
|
||||
- **Foodies and nightlife enthusiasts** who've exhausted the Yelp front page and want the hidden stuff.
|
||||
- **Event-goers** tired of missing pop-ups, secret shows, and limited-run experiences because they didn't follow the right Instagram account.
|
||||
|
||||
### 3.3 The Pain Points HotNow Solves
|
||||
|
||||
| Pain Point | HotNow Solution |
|
||||
|------------|----------------|
|
||||
| "I don't know what's happening around me right now" | Real-time map of trending spots, events, and pop-ups |
|
||||
| Yelp only shows established places, not what's hot tonight | Social signal + freshness ranking surfaces the new and trending |
|
||||
| Events scattered across 5+ platforms | Single aggregated feed of everything: food, music, art, nightlife |
|
||||
| Editorial coverage is slow and limited to big cities | AI-powered, automated, neighborhood-level precision everywhere |
|
||||
| No personalization without hours of research | Pro tier: AI picks tailored to your tastes, weather, and time |
|
||||
| "My friends and I can't decide" | Concierge tier: group coordination, itinerary builder |
|
||||
|
||||
---
|
||||
|
||||
## 4. Market Analysis
|
||||
|
||||
### 4.1 Total Addressable Market (TAM)
|
||||
|
||||
The local discovery and events market spans several overlapping segments:
|
||||
|
||||
| Segment | Market Size | Source / Methodology |
|
||||
|---------|------------|---------------------|
|
||||
| Online event ticketing (global) | $28.4B (2024) → $43.6B (2032) | Allied Market Research, 2025; CAGR 5.5% |
|
||||
| US restaurant + food service spend | $1.1T annually | National Restaurant Association, 2025 |
|
||||
| US live music + entertainment | $35B annually | IBISWorld, 2024 |
|
||||
| US nightlife + bars | $28B annually | IBISWorld, 2024 |
|
||||
| US "things to do" / experiences consumer spend | ~$150B annually | BLS Consumer Expenditure Survey, 2024; aggregate of food away from home, entertainment, recreation |
|
||||
| Global local search advertising | $14.8B (2024) → $25.3B (2030) | Grand View Research, 2025; CAGR 9.4% |
|
||||
|
||||
**TAM (Consumer Discovery Apps + Local Event Aggregation):** Conservative estimate of **$5B-$10B** in addressable consumer and business revenue globally, growing as mobile-first discovery replaces traditional search and editorial curation.
|
||||
|
||||
### 4.2 Serviceable Addressable Market (SAM)
|
||||
|
||||
HotNow's initial SAM is **US urban Gen Z and Millennials (18-40) in top 30 metro areas** who use smartphones for local discovery.
|
||||
|
||||
| Parameter | Value | Source / Methodology |
|
||||
|-----------|-------|---------------------|
|
||||
| US population 18-40 in top 30 metros | ~45 million | Census Bureau 2024; metro population × age bracket share |
|
||||
| Smartphone users who search for "things to do near me" at least weekly | ~35% | Google Trends + Pew Research mobile search behavior |
|
||||
| Addressable users | ~15.75 million | 45M × 35% |
|
||||
| Willingness to pay $5/mo for discovery app | ~5-10% of addressable | Comparable to subscription app conversion rates (Strava, AllTrails, Yelp) |
|
||||
| **SAM (consumer subscriptions)** | **~$47M-$94M MRR** | 15.75M × 5-10% × $4.99 |
|
||||
| **SAM (business featured placements)** | **~$500M-$1B annually** | US SMBs in food/entertainment/hospitality (~1M) × $97/mo × 5-10% adoption |
|
||||
|
||||
### 4.3 Serviceable Obtainable Market (SOM)
|
||||
|
||||
HotNow's SOM for the first 3 years focuses on **launch cities with high young-adult density and strong nightlife/event cultures**.
|
||||
|
||||
| Year | SOM Estimate | Methodology |
|
||||
|------|-------------|-------------|
|
||||
| Year 1 | 500-2,000 Pro subscribers + 20-50 featured businesses | Launch in 2-3 cities (Austin, Miami, Atlanta). Organic + community-driven growth. |
|
||||
| Year 2 | 5,000-15,000 Pro subscribers + 100-300 businesses | Expand to 8-10 cities. Referral flywheel + social media. |
|
||||
| Year 3 | 20,000-50,000 Pro subscribers + 500-1,000 businesses | 20+ cities. Brand establishment. Network effects from user density. |
|
||||
|
||||
### 4.4 Competitive Landscape
|
||||
|
||||
| Competitor | Price | Primary Strength | Primary Weakness | HotNow Advantage |
|
||||
|------------|-------|-----------------|-----------------|-----------------|
|
||||
| **Yelp** | Free (ads) | Massive review database, SEO dominance | Static, review-focused; no real-time ranking; no pop-up/event discovery | Real-time social signals + AI curation; surfaces what's hot NOW, not what has 200 reviews from last year |
|
||||
| **Google Maps "Explore"** | Free | Universal adoption, location data | Generic, no curation; misses pop-ups and trending spots; no social signals | AI-powered personalization; real-time ranking; dedicated to discovery, not navigation |
|
||||
| **Eventbrite** | Free (ticketing fees) | Event creation + ticketing infrastructure | Only ticketed events; misses free pop-ups, street festivals, nightlife | Aggregates everything: ticketed + free + pop-ups + trending spots; not a ticketing platform |
|
||||
| **TikTok "near me"** | Free | Massive engagement, trend-spotting | Unstructured; no map; no systematic ranking; algorithm-dependent | Map-first structured discovery; real-time ranking; save and plan capabilities |
|
||||
| **Scoop Travel** | $10/mo | Curated, high-quality travel recommendations | Travel-focused (not local); editorial (slow); limited cities; $10/mo for static content | Real-time; local-first; AI-driven; $4.99/mo; neighborhood precision |
|
||||
| **Thrillist / Infatuation** | Free (ads) | Editorial quality, brand trust | Slow publication cycle; limited city coverage; misses real-time pop-ups | Automated, real-time, scalable to any city; no editorial bottleneck |
|
||||
| **Dice / Bandsintown** | Free (ticketing fees) | Live music focus, artist following | Music-only; misses food, art, pop-ups, nightlife | Everything combined: food + music + art + nightlife + events |
|
||||
| **Instagram "nearby"** | Free | Social proof, visual discovery | Feed-based, not map-based; chronological, not ranked; no aggregation | Map-first; real-time ranking; AI curation; systematic aggregation |
|
||||
|
||||
**Key insight:** HotNow does not need to replace Yelp or Google Maps. It needs to answer the specific, high-intent question those platforms handle poorly: "what's good right now near me?" This is a new category -- real-time local discovery -- that combines elements of social media (freshness), maps (location), and AI curation (personalization) into a single experience.
|
||||
|
||||
---
|
||||
|
||||
## 5. Product Overview
|
||||
|
||||
### 5.1 Architecture
|
||||
|
||||
HotNow is built on a layered architecture that maximizes reuse of existing IT Pro Partner infrastructure:
|
||||
|
||||
```
|
||||
+-----------------------------------------------------------+
|
||||
| HotNow PWA (React + Mapbox) |
|
||||
| Map-first mobile experience, user accounts, tiers |
|
||||
+-----------------------------------------------------------+
|
||||
| API Layer (FastAPI + Auth) |
|
||||
| REST endpoints, geolocation, user profiles, billing |
|
||||
+-----------------------------------------------------------+
|
||||
| HotNow Engine (Python) |
|
||||
| Real-time ranking algorithm, AI curation, social signals |
|
||||
+---------------------------+-------------------------------+
|
||||
| Super Search v2 | Event Aggregators |
|
||||
| (7 providers, caching, | (Eventbrite, Ticketmaster, |
|
||||
| circuit breakers) | Meetup, Facebook Events, |
|
||||
| | scraping layer) |
|
||||
+---------------------------+-------------------------------+
|
||||
| PostgreSQL -- Places, users, events, reviews |
|
||||
+-----------------------------------------------------------+
|
||||
| Stripe -- Billing, subscriptions, payouts |
|
||||
+-----------------------------------------------------------+
|
||||
| Mapbox -- Maps, geocoding, location services |
|
||||
+-----------------------------------------------------------+
|
||||
```
|
||||
|
||||
**Infrastructure:**
|
||||
- **Hosting:** netcup VPS (IT Pro Partner existing infra) -- one production server + staging
|
||||
- **Super Search v2 MCP Server:** Already running on app1 -- provides search across 7 providers with circuit breakers, caching, and health monitoring
|
||||
- **API Layer (to build):** FastAPI with JWT auth, geolocation queries, user profiles
|
||||
- **PWA (to build):** React SPA with Mapbox GL JS, offline support, push notifications
|
||||
- **Database (to add):** PostgreSQL with PostGIS for geospatial queries on places, events, users
|
||||
- **Billing (to add):** Stripe for consumer subscriptions + business featured placement billing
|
||||
- **Ranking Engine (to build):** Real-time scoring algorithm combining social signals, freshness, check-in velocity, and review sentiment
|
||||
- **LLM:** deepseek-v4-pro for AI curation, personalized recommendations, itinerary building
|
||||
|
||||
**Existing vs. to-build breakdown:**
|
||||
|
||||
| Component | Status | Effort Estimate |
|
||||
|-----------|--------|----------------|
|
||||
| Super Search v2 engine | **Existing** | 0 hours |
|
||||
| Search provider orchestration | **Existing** | 0 hours |
|
||||
| Circuit breakers, caching, health checks | **Existing** | 0 hours |
|
||||
| Event aggregator connectors (Eventbrite, Ticketmaster, Meetup) | **To build** | ~30 hours |
|
||||
| Social signal ingestion (check-in data, review velocity) | **To build** | ~25 hours |
|
||||
| Real-time ranking algorithm | **To build** | ~40 hours |
|
||||
| AI curation / recommendation engine | **~40% existing** | ~35 hours |
|
||||
| FastAPI multi-tenant API layer | **To build** | ~30 hours |
|
||||
| React PWA (Mapbox, offline, push) | **To build** | ~100 hours |
|
||||
| PostgreSQL + PostGIS schema | **To build** | ~20 hours |
|
||||
| Stripe billing integration | **To build** | ~20 hours |
|
||||
| Auth (JWT + social login: Google, Apple) | **To build** | ~15 hours |
|
||||
| Business portal (claim listing, analytics, featured placement) | **To build** | ~40 hours |
|
||||
| Push notification engine | **To build** | ~15 hours |
|
||||
| Testing, DevOps, CI/CD, PWA compliance | **To build** | ~35 hours |
|
||||
| Documentation, moderation tools | **To build** | ~20 hours |
|
||||
| **Total remaining build** | | **~425 hours** |
|
||||
|
||||
### 5.2 Tier Structure
|
||||
|
||||
#### Explorer -- Free
|
||||
|
||||
**Target:** Everyone. The top of the funnel.
|
||||
|
||||
**Features:**
|
||||
- Real-time map of trending spots and events near you
|
||||
- Browse by category: food, music, nightlife, art, festivals, pop-ups
|
||||
- Event and place detail pages with photos, descriptions, social links
|
||||
- Basic search and filtering
|
||||
- "Trending Now" feed for your current location
|
||||
- Limited to 10 "Best Right Now" AI picks per month
|
||||
- Ad-supported
|
||||
|
||||
#### Pro -- $4.99/month (annual: $49.99/yr, save 17%)
|
||||
|
||||
**Target:** Power users who want curated, personalized discovery.
|
||||
|
||||
**Features (everything in Explorer, plus):**
|
||||
- Unlimited "Best Right Now" AI picks -- personalized to your tastes, weather, time of day, and real-time crowd data
|
||||
- Taste profile: teach HotNow what you like (cuisines, music genres, vibe preferences)
|
||||
- Saved places and collections ("Date Night Spots," "Best Rooftops")
|
||||
- Custom alerts: get notified when your favorite type of event pops up nearby
|
||||
- Ad-free experience
|
||||
- "Friends Are Going" social signals (opt-in)
|
||||
- Early access to limited-capacity events
|
||||
|
||||
#### Concierge -- $19.99/month (annual: $199.99/yr, save 17%)
|
||||
|
||||
**Target:** Power planners, group organizers, frequent entertainers.
|
||||
|
||||
**Features (everything in Pro, plus):**
|
||||
- Trip planner: build multi-stop itineraries with time/location optimization
|
||||
- Group coordination: share plans, vote on options, see where friends want to go
|
||||
- "Perfect Night Out" AI: give it a vibe ("romantic," "wild," "low-key") and it builds the night
|
||||
- Priority support (chat, 2-hour response)
|
||||
- Concierge badge (verified power user status)
|
||||
- Early access to new features
|
||||
- Export itineraries to calendar
|
||||
|
||||
### 5.3 Business Revenue Products
|
||||
|
||||
| Product | Price | What It Is |
|
||||
|---------|-------|------------|
|
||||
| **Featured Placement** | $97/mo per location | Priority placement in "Trending Now" feed + map highlight + "Featured" badge. Analytics dashboard showing impressions, clicks, direction requests. |
|
||||
| **Event Boost** | $47/event | One-time boost for a specific event (pop-up, special menu, guest DJ, etc.). Surfaces the event to users in a 5-mile radius for 48 hours. |
|
||||
| **Business Profile** | Free (claimed) | Claim and manage your listing with photos, hours, menus, event posts. Free for all businesses. |
|
||||
|
||||
### 5.4 Deployment Status Grid
|
||||
|
||||
| Site | Status | Detail |
|
||||
|------|--------|--------|
|
||||
| hotnow.io | 🔴 Not created | Domain registered at Cloudflare ($33/yr). DNS + Caddy needed. |
|
||||
| app.hotnow.io | 🔴 Not created | PWA dashboard |
|
||||
| api.hotnow.io | 🔴 Not created | Backend API (Super Search extended) |
|
||||
|
||||
---
|
||||
|
||||
## 6. Revenue Model
|
||||
|
||||
### 6.1 Pricing Rationale
|
||||
|
||||
HotNow's consumer pricing is anchored to impulse-buy psychology -- less than a single cocktail or a month of Netflix:
|
||||
|
||||
- **Explorer (Free):** "Try it. You'll wonder how you lived without it."
|
||||
- **Pro ($4.99/mo):** "Less than a latte. Unlimited AI-curated picks for the price of a single drink."
|
||||
- **Concierge ($19.99/mo):** "The cost of one mediocre appetizer. Your personal nightlife planner."
|
||||
|
||||
Business pricing is aggressive compared to Yelp Ads ($150-$500+/mo for basic placement) and Eventbrite promotion ($0.79-$2.50/ticket in fees):
|
||||
|
||||
- **Featured Placement ($97/mo):** "Less than Yelp Ads. More targeted. Real-time visibility when people are deciding where to go."
|
||||
- **Event Boost ($47/event):** "One-time. No revenue share. 48 hours of priority visibility to everyone nearby."
|
||||
|
||||
### 6.2 Cost Structure (Monthly Operating)
|
||||
|
||||
| Expense | Monthly Cost | Annual Cost | Notes |
|
||||
|---------|-------------|-------------|-------|
|
||||
| Super Search infrastructure | $0 | $0 | Already running on ITPP infra |
|
||||
| Netcup VPS (production + staging) | $50 | $600 | Incremental to existing; largely absorbed |
|
||||
| Mapbox (maps + geocoding) | $50-$200 | $600-$2,400 | Free tier: 50K monthly loads. Scales with MAUs |
|
||||
| Eventbrite / Ticketmaster API | $0-$100 | $0-$1,200 | Many have free tiers for discovery apps |
|
||||
| deepseek-v4-pro API calls | $100-$300 | $1,200-$3,600 | Variable; scales with Pro/Concierge user count |
|
||||
| Stripe fees | ~2.9% + $0.30/transaction | Variable | ~3% of revenue |
|
||||
| Domain + SSL | $3 | $36 | hotnow.io at Cloudflare ($33/yr) |
|
||||
| Email delivery (Resend/SendGrid) | $20 | $240 | Transactional + notification delivery |
|
||||
| Push notifications (OneSignal/FCM) | $0-$50 | $0-$600 | Free tier: 10K subscribers |
|
||||
| Monitoring + logging | $30 | $360 | Basic observability |
|
||||
| **Total baseline operating cost** | **~$253-$753/mo** | **~$3,036-$9,036/yr** | |
|
||||
|
||||
At scale (10K+ MAU), Mapbox and LLM costs become the primary variable costs. Mapbox pricing: ~$0.50 per 1,000 map loads beyond free tier. LLM: ~$0.01-$0.05 per AI recommendation query.
|
||||
|
||||
### 6.3 Revenue Projections by User Count
|
||||
|
||||
All consumer figures assume annual contract pricing for simplicity. Month-to-month Pro adds $1/mo (20% premium).
|
||||
|
||||
#### Scenario: Consumer Subscriptions Only
|
||||
|
||||
| Pro Subscribers | Concierge (10% of Pro) | Monthly Consumer Revenue | Annual Revenue |
|
||||
|-----------------|----------------------|-------------------------|----------------|
|
||||
| 100 | 10 | $617 | $7,404 |
|
||||
| 500 | 50 | $3,083 | $37,000 |
|
||||
| 1,000 | 100 | $6,166 | $73,992 |
|
||||
| 5,000 | 500 | $30,830 | $369,960 |
|
||||
| 10,000 | 1,000 | $61,660 | $739,920 |
|
||||
| 50,000 | 5,000 | $308,300 | $3,699,600 |
|
||||
|
||||
#### Scenario: Consumer + Business Revenue (Year 3 Target)
|
||||
|
||||
| Revenue Source | Volume/Month | Monthly Revenue | Annual Revenue |
|
||||
|---------------|-------------|----------------|---------------|
|
||||
| Pro Subscribers ($4.17/mo annual) | 10,000 | $41,700 | $500,400 |
|
||||
| Concierge ($16.67/mo annual) | 1,000 | $16,670 | $200,040 |
|
||||
| Featured Placements ($97/mo) | 500 | $48,500 | $582,000 |
|
||||
| Event Boosts ($47/event) | 200 | $9,400 | $112,800 |
|
||||
| **Total** | | **$116,270** | **$1,395,240** |
|
||||
|
||||
#### Gross Margin Analysis
|
||||
|
||||
At 1,000 Pro subscribers + 100 featured businesses (~$14.7K MRR), monthly costs of ~$500 vs. revenue of ~$14,700 yields a **gross margin of ~97%**. At scale (50K users + 1,000 businesses), margin remains above **90%** after Mapbox and LLM scaling costs.
|
||||
|
||||
### 6.4 12-Month Revenue Ramp (Realistic Case)
|
||||
|
||||
| Month | Pro Users | Businesses | MRR | Cumulative Revenue | Notes |
|
||||
|-------|-----------|-----------|-----|-------------------|-------|
|
||||
| 1 | 0 | 0 | $0 | $0 | Pre-launch: build completion, beta |
|
||||
| 2 | 0 | 0 | $0 | $0 | Beta testing, seed content, initial listings |
|
||||
| 3 | 20 | 2 | $278 | $278 | Soft launch in 1 city (Austin) |
|
||||
| 4 | 50 | 5 | $693 | $971 | First social media traction |
|
||||
| 5 | 80 | 8 | $1,109 | $2,080 | Word-of-mouth begins; second city (Miami) |
|
||||
| 6 | 120 | 12 | $1,664 | $3,744 | Community events + local influencer push |
|
||||
| 7 | 180 | 18 | $2,496 | $6,240 | Referral program launched |
|
||||
| 8 | 250 | 25 | $3,467 | $9,707 | Third city (Atlanta); TikTok content |
|
||||
| 9 | 350 | 35 | $4,854 | $14,561 | First press coverage; organic growth |
|
||||
| 10 | 500 | 50 | $6,935 | $21,496 | Business flywheel: placements attract users |
|
||||
| 11 | 700 | 70 | $9,709 | $31,205 | Network effects visible in launch cities |
|
||||
| 12 | 1,000 | 100 | $13,867 | $45,072 | **Year 1 exit ARR: ~$166K** |
|
||||
|
||||
**Key assumptions:**
|
||||
- Launch city strategy: dense urban area with high young-adult population
|
||||
- Zero paid acquisition in months 1-6 (organic, social, community only)
|
||||
- Monthly consumer churn: 4-6% (typical for consumer subscription apps; Netflix ~2%, niche apps 5-8%)
|
||||
- Monthly business churn: 3-5% (lower; business subscriptions are stickier)
|
||||
- Average revenue per Pro user: $4.17/mo (annual pricing)
|
||||
- All new cities seeded manually with initial listings and events before user launch
|
||||
|
||||
---
|
||||
|
||||
## 7. Competitive Advantages
|
||||
|
||||
### 7.1 Why HotNow Wins
|
||||
|
||||
#### 1. Real-Time, Not Static
|
||||
|
||||
Every major competitor is static or slow. Yelp shows you the top-rated restaurants from the last 5 years. Thrillist publishes a "Best New Restaurants" list twice a year. Eventbrite lists events, but doesn't rank or recommend them. HotNow is the only platform that answers "what's good RIGHT NOW" -- not "what was good last month" or "what's generally good in this city."
|
||||
|
||||
This is a fundamental architectural advantage. HotNow's ranking engine combines:
|
||||
- **Freshness signals:** how recently was this posted/updated/checked-into
|
||||
- **Velocity signals:** how fast are social mentions, check-ins, and reviews accelerating
|
||||
- **Social proof:** real-time Instagram/TikTok mentions, not just accumulated Yelp stars
|
||||
- **Contextual signals:** weather, time of day, day of week, proximity
|
||||
|
||||
No competitor combines all four in real time.
|
||||
|
||||
#### 2. Everything in One Place
|
||||
|
||||
Users currently need 5+ apps to cover what HotNow does in one:
|
||||
- Yelp for restaurants
|
||||
- Eventbrite for events
|
||||
- Instagram/TikTok for pop-ups and trending spots
|
||||
- Google Maps for navigation
|
||||
- Bandsintown/Dice for live music
|
||||
|
||||
HotNow unifies these into a single map-first experience. The aggregation is the product.
|
||||
|
||||
#### 3. ~70% Already Built on Super Search v2
|
||||
|
||||
Super Search v2 -- the multi-provider search engine with 7 providers, circuit breakers, intelligent caching, and health monitoring -- is already running on IT Pro Partner infrastructure. This is not a greenfield search engine build. Approximately 70% of the aggregation and search layer exists today. Competitors would need 6-12 months and $100K+ to replicate just this component.
|
||||
|
||||
#### 4. AI-Powered Personalization from Day One
|
||||
|
||||
HotNow's Pro tier uses LLM-powered AI curation to deliver personalized "Best Right Now" picks based on:
|
||||
- Your taste profile (cuisines, music genres, vibe preferences, dietary needs)
|
||||
- Current weather (patio weather? indoor jazz?)
|
||||
- Time of day (brunch spots at 11am, cocktail bars at 7pm, late-night at 11pm)
|
||||
- Real-time crowd signals (is it packed? is it dead?)
|
||||
- What's genuinely hot right now, not what was hot last season
|
||||
|
||||
This is a fundamentally different approach from collaborative filtering ("people who liked X also liked Y"), which requires massive user bases to work. HotNow's AI curation works from user #1.
|
||||
|
||||
#### 5. Capital Efficiency -- Near-Zero Marginal Delivery Cost
|
||||
|
||||
The Super Search infrastructure is fixed-cost. Each additional user, recommendation, or search costs fractions of a cent in API calls. At 90%+ gross margins at scale, HotNow is a capital-efficient consumer platform that doesn't require VC-scale burn to grow. This means:
|
||||
- No pressure to raise venture capital or hit unicorn growth metrics
|
||||
- Sustainable growth at modest user counts
|
||||
- Optionality: bootstrapped lifestyle business or venture-scale play -- whichever the market supports
|
||||
|
||||
#### 6. Business Monetization Without the Yelp Trap
|
||||
|
||||
Yelp's business monetization is adversarial: pay for visibility or risk bad reviews being surfaced. HotNow's business model is additive: featured placement boosts visibility, but the organic ranking is driven by real-time signals, not ad spend. Businesses pay to be seen, not to suppress negative content. This avoids the trust and reputation problems that plague Yelp.
|
||||
|
||||
### 7.2 Competitive Positioning Map
|
||||
|
||||
```
|
||||
HIGH PRICE / SLOW
|
||||
│
|
||||
Thrillist ● │
|
||||
(Free, but │
|
||||
editorial, │
|
||||
slow, limited)│
|
||||
│
|
||||
Scoop Travel ● │
|
||||
($10/mo, │
|
||||
travel-only, │
|
||||
editorial) │
|
||||
│
|
||||
────────────────────────┼────────────────────────
|
||||
STATIC / │ REAL-TIME /
|
||||
REVIEW-BASED │ SOCIAL-DRIVEN
|
||||
│
|
||||
Yelp ● │
|
||||
(Free, massive │ ★ HotNow
|
||||
review DB, │ (Free-$19.99/mo,
|
||||
but not real-time) │ real-time, AI,
|
||||
│ everything)
|
||||
Google Maps ● │
|
||||
(Free, universal, │
|
||||
but no curation) │
|
||||
│
|
||||
│
|
||||
LOW PRICE / REAL-TIME
|
||||
```
|
||||
|
||||
HotNow occupies the real-time, low-price quadrant -- a position with no current occupant. Every existing player is either static/slow (Yelp, Google Maps) or expensive/narrow (Scoop Travel, editorial platforms).
|
||||
|
||||
---
|
||||
|
||||
## 8. Go-to-Market Strategy
|
||||
|
||||
### 8.1 Phase 1: Foundation (Months 1-2)
|
||||
|
||||
**Objective:** Complete build, seed content, recruit beta users.
|
||||
|
||||
**Activities:**
|
||||
- Complete remaining ~425 hours of development (PWA, ranking algorithm, API, billing)
|
||||
- Seed launch city with 500+ manually curated places and events
|
||||
- Recruit 20-50 beta users in Austin for testing + feedback
|
||||
- Build social media presence: Instagram, TikTok, X accounts
|
||||
- Produce launch content: "HotNow is coming" teasers
|
||||
- Set up Stripe, email, push notification infrastructure
|
||||
- Submit PWA to Google Play and Apple App Store (PWA wrapper)
|
||||
|
||||
**KPIs:**
|
||||
- Beta users: 20-50
|
||||
- Seed listings: 500+
|
||||
- Social followers: 500+ combined
|
||||
|
||||
### 8.2 Phase 2: Soft Launch -- City by City (Months 3-6)
|
||||
|
||||
**Objective:** Prove product-market fit in 2-3 launch cities. Validate willingness to pay.
|
||||
|
||||
**Launch cities:** Austin, TX (Month 3), Miami, FL (Month 5), Atlanta, GA (Month 6)
|
||||
|
||||
**Rationale:** These cities have high young-adult density, vibrant nightlife/food/event scenes, warm weather (year-round outdoor events), and strong social media culture.
|
||||
|
||||
**Channels:**
|
||||
|
||||
| Channel | CAC Estimate | Time to Mature | Priority |
|
||||
|---------|-------------|----------------|----------|
|
||||
| Local Instagram/TikTok influencers | $50-$200 per post | Immediate | ★★★★★ |
|
||||
| College campus ambassadors | Free (swag) + commission | 1-2 months | ★★★★★ |
|
||||
| Cross-promotion with local venues/bars/restaurants | $0 (mutual benefit) | Immediate | ★★★★★ |
|
||||
| Reddit city subreddits (r/Austin, r/Miami, r/Atlanta) | $0 | Immediate | ★★★★ |
|
||||
| Organic TikTok/Reels content ("What's hot tonight in Austin") | $0 | 2-4 weeks | ★★★★ |
|
||||
| Event partnerships -- HotNow as "official discovery partner" | $0-$500 | 1-2 months | ★★★ |
|
||||
| Product Hunt launch | $0 | One-time | ★★★ |
|
||||
|
||||
**KPIs:**
|
||||
- Pro subscribers: 80-120
|
||||
- Featured businesses: 8-12
|
||||
- Monthly active users (MAU): 2,000-5,000
|
||||
- App store rating: 4.5+ stars
|
||||
|
||||
### 8.3 Phase 3: Growth (Months 7-9)
|
||||
|
||||
**Objective:** Activate referral flywheel, expand to 5+ cities, begin business sales.
|
||||
|
||||
**Activities:**
|
||||
- Launch referral program: "Give a month free, get a month free"
|
||||
- Expand to 3 additional cities (Nashville, Denver, Chicago)
|
||||
- Hire 1-2 part-time city launchers to seed new markets
|
||||
- Begin direct business outreach: "Get featured on HotNow before your competitors"
|
||||
- User-generated content campaigns: "Tag #HotNow for a chance to be featured"
|
||||
- Weekly "What's Hot" newsletter for each city
|
||||
|
||||
**KPIs:**
|
||||
- Pro subscribers: 250-350
|
||||
- Featured businesses: 25-35
|
||||
- MAU: 10,000-25,000
|
||||
- Cities live: 5-6
|
||||
|
||||
### 8.4 Phase 4: Scale (Months 10-12)
|
||||
|
||||
**Objective:** Establish predictable growth engine, expand to 10+ cities.
|
||||
|
||||
**Activities:**
|
||||
- Paid acquisition: Instagram/TikTok ads in new cities ($2,000-$5,000/mo budget)
|
||||
- Launch HotNow for Web (desktop experience for trip planning)
|
||||
- API partnerships: integrate with reservation platforms (OpenTable, Resy, Tock)
|
||||
- Press outreach: tech blogs, local news, lifestyle publications
|
||||
- Business sales: hire one part-time business development rep
|
||||
|
||||
**KPIs:**
|
||||
- Pro subscribers: 700-1,000
|
||||
- Featured businesses: 70-100
|
||||
- MAU: 50,000-100,000
|
||||
- Cities live: 10+
|
||||
- Annual exit ARR: ~$166K
|
||||
|
||||
### 8.5 Customer Acquisition Strategy Summary
|
||||
|
||||
| Channel | CAC Estimate | Time to Mature | Scalability | Priority |
|
||||
|---------|-------------|----------------|-------------|----------|
|
||||
| Local influencer partnerships | $50-$200/post | Immediate | High per city | ★★★★★ |
|
||||
| Venue/bar/restaurant cross-promotion | $0 | Immediate | High per city | ★★★★★ |
|
||||
| College ambassadors | $0-$100 | 1-2 months | Medium (seasonal) | ★★★★★ |
|
||||
| Organic TikTok/Reels | $0 | 2-4 weeks | Very High | ★★★★ |
|
||||
| Referral program | $0 | 3+ months | Very High | ★★★★ |
|
||||
| City subreddits / local forums | $0 | Immediate | Medium (one-time) | ★★★★ |
|
||||
| Event partnerships | $0-$500 | 1-3 months | Medium | ★★★ |
|
||||
| Product Hunt | $0 | One-time | Low (one-time) | ★★★ |
|
||||
| Paid social (Instagram/TikTok ads) | $5-$15/install | 1-2 weeks | Very High | ★★ (Phase 4) |
|
||||
| Press / PR | $0-$1,000 | 1-3 months | Medium | ★★ |
|
||||
|
||||
---
|
||||
|
||||
## 9. Risk Analysis
|
||||
|
||||
### 9.1 Market Risks
|
||||
|
||||
| Risk | Probability | Impact | Mitigation |
|
||||
|------|-----------|--------|------------|
|
||||
| **Consumer discovery apps have high churn / low willingness to pay** | Medium-High | High | Validate with beta before full investment. Free tier must be genuinely useful to drive habit formation. Freemium conversion rate in consumer apps averages 2-5% -- HotNow targets 3%. If consumer subscriptions underperform, shift to business-first monetization (featured placements as primary revenue). |
|
||||
| **"Winner-take-all" network effects favor incumbents (Yelp, Google)** | Medium | Medium | HotNow competes on a different axis (real-time, not review database). Network effects matter less for real-time discovery than for accumulated reviews. HotNow's value is in freshness, not depth of review history. |
|
||||
| **Recession reduces discretionary spending on entertainment** | Low-Medium | Medium | At $4.99/mo, Pro is a trivial expense. In downturns, free tier usage *increases* as people seek affordable local activities. Business featured placements may decline -- offset by consumer Pro upgrades from free users seeking better curation. |
|
||||
|
||||
### 9.2 Product Risks
|
||||
|
||||
| Risk | Probability | Impact | Mitigation |
|
||||
|------|-----------|--------|------------|
|
||||
| **"Cold start" problem: no content in new cities** | High | High | Manual seeding of 500+ places/events per city before launch. City launcher role: one person spends 2 weeks curating a city before it goes live. Event aggregator connectors (Eventbrite, Ticketmaster, Meetup, Facebook Events) provide automated baseline content. |
|
||||
| **Real-time ranking algorithm quality** | Medium | High | Start simple: freshness + social velocity as primary signals. Layer on AI curation complexity incrementally. Beta test ranking quality with real users in launch city. Allow user feedback ("not relevant" / "great pick") to train ranking. |
|
||||
| **Mapbox costs scale poorly with MAU growth** | Low-Medium | Medium | Mapbox free tier: 50K monthly loads. At 100K MAU, Mapbox costs ~$300-$500/mo -- manageable at our margins. Have OpenStreetMap + Leaflet as fallback if Mapbox costs become excessive. Negotiate volume pricing at 500K+ MAU. |
|
||||
| **PWA adoption friction (no native app store presence)** | Medium | Medium | PWA wrapper for App Store / Google Play submission gives native app store listing. Users can install directly from browser. Promote PWA install aggressively in onboarding. If PWA proves inadequate, native app build (~150 additional hours) is scoped but deferred. |
|
||||
|
||||
### 9.3 Competitive Risks
|
||||
|
||||
| Risk | Probability | Impact | Mitigation |
|
||||
|------|-----------|--------|------------|
|
||||
| **Yelp launches real-time "trending" feature** | Medium | Medium-High | Yelp's DNA is review-driven, not real-time. Adding trending requires a fundamentally different data pipeline. Even if launched, Yelp's business model (ads for established businesses) conflicts with surfacing new/pop-up spots. HotNow has 12-18 month head start. |
|
||||
| **Google builds better "Explore" with real-time signals** | Medium | High | Google has the data (Maps, search, location history) but historically underinvests in local discovery UX. Google's incentives favor search ads, not discovery feeds. If Google enters, HotNow competes on curation quality, community, and focus. |
|
||||
| **TikTok builds structured local discovery** | Medium | Medium | TikTok has user attention and trend data but no location infrastructure. Building maps + structured places data is a multi-year effort. HotNow competes by being purpose-built for discovery, not an add-on to a video feed. |
|
||||
| **VC-funded competitor clones HotNow concept** | Medium | Medium | Mitigation: move fast, lock in launch cities first, build brand loyalty. HotNow's capital efficiency means we don't need to match VC burn rates. Domain and brand in market first. |
|
||||
|
||||
### 9.4 Operational Risks
|
||||
|
||||
| Risk | Probability | Impact | Mitigation |
|
||||
|------|-----------|--------|------------|
|
||||
| **Germaine bandwidth -- only person who can build/support** | High | High | Single biggest risk. Mitigation: (1) aggressive documentation from day one, (2) city launcher contractors reduce operational burden, (3) self-serve business portal minimizes support, (4) consider part-time developer at $10K MRR. |
|
||||
| **Content moderation at scale (spam, fake events, inappropriate content)** | Medium | Medium | Manual review for featured/business listings. User reporting for free tier. Automated spam detection for event submissions. Moderation cost scales slowly -- community self-polices if user base is engaged. |
|
||||
| **deepseek-v4-pro API changes or price increases** | Low-Medium | Medium | LLM abstraction layer allows provider switching. OpenAI, Claude, and open-source models are fallbacks. AI curation quality is model-dependent but architecture is model-agnostic. |
|
||||
|
||||
### 9.5 Legal & Regulatory Risks
|
||||
|
||||
| Risk | Probability | Impact | Mitigation |
|
||||
|------|-----------|--------|------------|
|
||||
| **Scraping event data from third-party sites** | Low-Medium | Medium | Use official APIs where available (Eventbrite, Ticketmaster, Meetup). For sites without APIs, limit to publicly available factual information (event name, date, location, description). Do not scrape copyrighted content. Legal review of aggregation practices before launch. |
|
||||
| **User location privacy concerns** | Medium | Medium | Location only used while app is active. No background location tracking. Clear privacy policy. GDPR/CCPA compliant. Users can delete location history. "Opt-in only" for social features. |
|
||||
|
||||
### 9.6 90-Day Launch KPIs (Months 3-5)
|
||||
|
||||
| KPI | Target | Red Flag Threshold |
|
||||
|-----|--------|-------------------|
|
||||
| MAU (Austin only, Month 3) | 1,000+ | <300 |
|
||||
| Pro conversion rate | 3%+ | <1% |
|
||||
| App store rating | 4.5+ | <4.0 |
|
||||
| Weekly active user retention (Day 7) | 40%+ | <20% |
|
||||
| Places/events listed in Austin | 500+ | <200 |
|
||||
| User-reported accuracy ("Great pick" rate) | 70%+ | <50% |
|
||||
| Business outreach response rate | 25%+ | <10% |
|
||||
|
||||
**If red flags trigger on 3+ KPIs:** Pivot to business-first monetization. De-prioritize consumer subscriptions and focus on building the supply side (businesses, events, venues) as a data/API play sold to platforms that need real-time local data (delivery apps, travel platforms, mapping services).
|
||||
|
||||
### 9.7 Pre-Mortem: What Kills HotNow Within 6 Months?
|
||||
|
||||
1. **Cold start death spiral:** Users open the app, see nothing in their city, never come back. **Prevention:** no city goes live without 500+ manually seeded listings. City launchers are non-negotiable.
|
||||
|
||||
2. **Pro conversion rate below 1%:** Free tier is good enough that nobody upgrades. **Prevention:** free tier must be genuinely useful BUT with clear upgrade triggers (limited AI picks, ads, no saved places). The "Best Right Now" feature must feel like magic.
|
||||
|
||||
3. **Germaine burns out:** The build is significant (~425 hours). Launching in multiple cities is hands-on work. **Prevention:** hire city launchers (contractors, $15-25/hr) immediately. Do not try to do everything solo.
|
||||
|
||||
4. **No content flywheel:** Users consume but don't contribute. **Prevention:** make contribution easy (tap "this is happening" to submit a spot). Incentivize with Pro credits. Build community from day one.
|
||||
|
||||
5. **Yelp/Google ships "trending" before HotNow has brand awareness:** If an incumbent ships a "good enough" real-time feature before HotNow has user density, HotNow loses the first-mover window. **Prevention:** launch fast, launch ugly if necessary. Speed to market matters more than feature completeness.
|
||||
|
||||
---
|
||||
|
||||
## 10. Financial Projections
|
||||
|
||||
### 10.1 12-Month P&L Projection (Realistic Case)
|
||||
|
||||
| Line Item | Month 1-3 | Month 4-6 | Month 7-9 | Month 10-12 | Year 1 Total |
|
||||
|-----------|-----------|-----------|-----------|-------------|-------------|
|
||||
| **Revenue** | | | | | |
|
||||
| MRR (end of period) | $278 | $1,664 | $4,854 | $13,867 | -- |
|
||||
| Cumulative Revenue | $278 | $3,744 | $14,561 | $45,072 | **$45,072** |
|
||||
| **Cost of Revenue** | | | | | |
|
||||
| Infrastructure + Mapbox + APIs | $300 | $600 | $1,200 | $2,100 | $4,200 |
|
||||
| LLM API costs | $100 | $300 | $800 | $1,800 | $3,000 |
|
||||
| Stripe fees (~3%) | $8 | $112 | $437 | $1,352 | $1,909 |
|
||||
| **Total COGS** | **$408** | **$1,012** | **$2,437** | **$5,252** | **$9,109** |
|
||||
| **Gross Profit** | **-$130** | **$2,732** | **$12,124** | **$39,820** | **$35,963** |
|
||||
| *Gross Margin* | *-47%* | *73%* | *83%* | *88%* | *80%* |
|
||||
| **Operating Expenses** | | | | | |
|
||||
| Development (remaining build) | $20,000 | $10,000 | $5,000 | $2,500 | $37,500 |
|
||||
| City launchers (contractors) | $1,500 | $3,000 | $6,000 | $9,000 | $19,500 |
|
||||
| Content + social media | $1,000 | $2,000 | $2,000 | $3,000 | $8,000 |
|
||||
| Influencer / community | $500 | $1,500 | $2,000 | $3,000 | $7,000 |
|
||||
| Paid acquisition | $0 | $0 | $0 | $5,000 | $5,000 |
|
||||
| Tools + software | $200 | $300 | $400 | $500 | $1,400 |
|
||||
| Legal + compliance | $2,000 | $0 | $0 | $1,000 | $3,000 |
|
||||
| Miscellaneous | $300 | $500 | $750 | $1,000 | $2,550 |
|
||||
| **Total OpEx** | **$25,500** | **$17,300** | **$16,150** | **$25,000** | **$83,950** |
|
||||
| **Net Income** | **-$25,630** | **-$14,568** | **-$4,026** | **$14,820** | **-$47,987** |
|
||||
| *Net Margin* | *Negative* | *Negative* | *Negative* | *33%* | *Negative* |
|
||||
|
||||
**Key observations:**
|
||||
- Year 1 is investment-heavy: ~$48K net loss, funded by Germaine's sweat equity + minimal cash outlay
|
||||
- The business becomes cash-flow positive by Month 10-11 on current ramp
|
||||
- Gross margins exceed 80% by Month 4 -- the underlying unit economics are strong immediately
|
||||
- Exit run-rate in Month 12: ~$166K ARR with 88% gross margins
|
||||
- Total Year 1 cash outlay: approximately **$48K** (primarily development time, city launchers, legal)
|
||||
|
||||
### 10.2 3-Year Projection
|
||||
|
||||
| | Year 1 | Year 2 | Year 3 |
|
||||
|---|--------|--------|--------|
|
||||
| **Pro Subscribers (end of year)** | 800 | 5,000 | 10,000 |
|
||||
| **Concierge Subscribers** | 80 | 500 | 1,000 |
|
||||
| **Featured Businesses** | 80 | 300 | 500 |
|
||||
| **Event Boosts (per month)** | 30 | 100 | 200 |
|
||||
| **ARR (end of year)** | $166,000 | $620,000 | $1,395,000 |
|
||||
| **Total Revenue** | $45,072 | $450,000 | $1,100,000 |
|
||||
| **Gross Margin** | 80% (ramping) | 90% | 92% |
|
||||
| **OpEx** | $83,950 | $250,000 | $500,000 |
|
||||
| **Net Income** | -$47,987 | $155,000 | $512,000 |
|
||||
| **Net Margin** | Negative | 34% | 47% |
|
||||
|
||||
**Year 2 assumptions:**
|
||||
- Expand to 15-20 cities
|
||||
- 2-3 part-time city launchers ($40K-$60K combined)
|
||||
- First full-time hire: community/operations manager ($50K-$70K)
|
||||
- Paid acquisition: $3,000-$5,000/mo (validated CAC from Year 1)
|
||||
- Referral program generating 20%+ of new users
|
||||
- Pro conversion rate: 3.5% (improving from Year 1's 3%)
|
||||
|
||||
**Year 3 assumptions:**
|
||||
- 25+ cities live
|
||||
- Small team: 3-5 full-time (engineering, community, business development, support)
|
||||
- Brand recognition in launch cities drives organic growth
|
||||
- Business revenue becomes 45%+ of total (featured placements + event boosts)
|
||||
- First API/data licensing deals (sell real-time local trend data to platforms)
|
||||
- Potential acquisition interest from Yelp, Google, or travel platforms
|
||||
|
||||
### 10.3 Unit Economics (Steady State)
|
||||
|
||||
| Metric | Value | Industry Benchmark | Assessment |
|
||||
|--------|-------|-------------------|------------|
|
||||
| Average Pro subscriber LTV (annual) | ~$50 | $20-$100 (consumer subscription apps) | Strong |
|
||||
| Average Concierge subscriber LTV (annual) | ~$200 | $100-$300 (premium consumer) | Strong |
|
||||
| Average Featured Business LTV (annual) | ~$1,164 | $500-$2,000 (local SMB SaaS) | Healthy |
|
||||
| Consumer CAC (blended) | $2-$8 | $5-$20 (consumer apps) | Excellent |
|
||||
| Business CAC | $50-$150 | $100-$500 (local SMB sales) | Excellent |
|
||||
| LTV:CAC ratio (consumer) | 6:1 to 25:1 | >3:1 (good) | Exceptional |
|
||||
| LTV:CAC ratio (business) | 8:1 to 23:1 | >3:1 (good) | Exceptional |
|
||||
| Gross margin | 88-92% | 70-80% (good SaaS) | Excellent |
|
||||
| Monthly consumer churn | 4-5% | 3-8% (consumer apps) | Target zone |
|
||||
| Monthly business churn | 3-4% | 3-7% (SMB SaaS) | Good |
|
||||
|
||||
The unit economics are favorable because:
|
||||
1. **Near-zero marginal delivery cost** -- Super Search and LLM API calls cost fractions of a cent per user
|
||||
2. **Organic/viral acquisition** -- social media, word of mouth, and venue cross-promotion dominate early growth
|
||||
3. **Dual revenue streams** -- consumer subscriptions + business placements diversify and compound
|
||||
4. **Network effects at city density** -- each new user increases value for other users in that city (more check-ins, more social signals, better ranking)
|
||||
|
||||
### 10.4 Capital Requirements
|
||||
|
||||
HotNow is designed to be bootstrapped:
|
||||
|
||||
| Item | Cost | Notes |
|
||||
|------|------|-------|
|
||||
| Remaining development (~425 hours) | $0 | Built by Germaine / internal team |
|
||||
| Initial infrastructure setup | $500 | Domain ($33/yr), SSL, minor VPS adjustments |
|
||||
| Legal (terms, privacy policy, TOS) | $2,000-$4,000 | One-time |
|
||||
| Brand identity + design | $1,500-$3,000 | Logo, color system, PWA design |
|
||||
| City launchers (first 6 months) | $6,000-$12,000 | Contractors at $15-25/hr for city seeding |
|
||||
| Content + social media | $3,000-$6,000 | First 6 months |
|
||||
| Influencer seeding (first 3 cities) | $2,000-$5,000 | Micro-influencers with local audiences |
|
||||
| **Total initial outlay** | **$15,000-$30,500** | |
|
||||
|
||||
This is not a venture-scale capital requirement. The primary investment is Germaine's time -- approximately 425 hours of development, plus ongoing city expansion and community management. At 800 Pro subscribers and 80 businesses (exit Month 12), the business generates ~$166K ARR against a ~$30K initial outlay.
|
||||
|
||||
### 10.5 Break-Even Analysis
|
||||
|
||||
Monthly break-even occurs when monthly gross profit covers monthly OpEx:
|
||||
|
||||
| Scenario | Break-Even Point | Timeline (from launch) |
|
||||
|----------|-----------------|----------------------|
|
||||
| Consumer-only (Pro + Concierge) | ~350 subscribers | Month 7-8 |
|
||||
| Consumer + Business | ~200 Pro + 15 businesses | Month 5-6 |
|
||||
| With city launcher contractors | ~500 Pro + 30 businesses | Month 8-9 |
|
||||
|
||||
Cumulative break-even (recovering full ~$48K Year 1 investment) occurs in Month 3-5 of Year 2, assuming continued growth trajectory.
|
||||
|
||||
---
|
||||
|
||||
## 11. The Ask
|
||||
|
||||
### 11.1 What We Need to Launch
|
||||
|
||||
| Resource | Details | Timeline |
|
||||
|----------|---------|----------|
|
||||
| **Development capacity** | ~425 hours to build PWA, ranking algorithm, API, billing, business portal | Months 1-2 |
|
||||
| **City launcher contractors** | 1-2 part-time contractors to seed initial cities with listings (500+/city) | Month 3, ongoing |
|
||||
| **Legal review** | Terms of service, privacy policy, data aggregation compliance review | Month 1 |
|
||||
| **Brand identity** | Logo, color system, PWA design, app store assets | Month 1 |
|
||||
| **Domain setup** | DNS + Caddy configuration for hotnow.io, app.hotnow.io, api.hotnow.io | Month 1 |
|
||||
| **Beta testers** | 20-50 users in Austin willing to provide feedback | Month 2 |
|
||||
| **Go-to-market execution** | Germaine's time for city launches, influencer outreach, community management | Ongoing (10-15 hrs/week) |
|
||||
| **Initial operating capital** | ~$15,000-$30,500 for one-time setup + first 6 months of contractor costs | Month 1 |
|
||||
|
||||
### 11.2 Immediate Decisions Required
|
||||
|
||||
1. **Approval to brand HotNow as a standalone product** under IT Pro Partner ("HotNow is a product of IT Pro Partner") -- maintaining ITPP credibility while allowing HotNow to develop its own consumer-facing brand identity
|
||||
2. **Confirmation of pricing model** -- are $4.99/$19.99 the right consumer anchor points? Should annual discount be 17% (1 month free) or deeper (25%)?
|
||||
3. **Business pricing validation** -- is $97/mo for featured placement and $47/event for boosts the right level? Should we test higher (Yelp Ads are $150-$500+/mo)?
|
||||
4. **Launch city selection** -- confirm Austin as first city, then Miami and Atlanta. Are these the right priority?
|
||||
5. **Resource allocation** -- confirmation that Germaine can dedicate ~425 hours to the build, plus 10-15 hours/week ongoing GTM effort
|
||||
6. **Legal entity structure** -- does HotNow operate as a division of IT Pro Partner, or as a separate LLC with ITPP as parent?
|
||||
7. **Domain confirmation** -- hotnow.io is already purchased ($33/yr at Cloudflare). DNS setup and Caddy configuration needed immediately.
|
||||
|
||||
### 11.3 What Success Looks Like (Month 12)
|
||||
|
||||
- **1,000 Pro subscribers** across 10+ cities, paying $4.99/mo (or $49.99/yr)
|
||||
- **100 featured businesses** generating $97/mo each in placement revenue
|
||||
- **~$166,000 ARR** with 88% gross margins
|
||||
- **50,000-100,000 MAU** with 40%+ weekly active retention
|
||||
- **10+ cities live** with 500+ listings each
|
||||
- **4.5+ star app store rating** with 200+ reviews
|
||||
- **Referral program** generating 15-20% of new users
|
||||
- **TikTok/Instagram presence** with 50K+ combined followers
|
||||
- **Team:** Germaine + 1-2 part-time city launchers + 1 part-time community manager
|
||||
- **Option value:** At 5-8x ARR multiple (consumer marketplace), the business would be valued at ~$830K-$1.3M -- built for a ~$30K initial investment
|
||||
|
||||
### 11.4 The Bigger Picture
|
||||
|
||||
HotNow is more than a local discovery app -- it's a strategic diversification play for IT Pro Partner into the consumer space. Every ITPP product to date has been B2B: managed services, competitive intelligence, debt recovery, digital signage. HotNow tests whether the same infrastructure (Super Search v2, netcup hosting, deepseek-v4-pro LLM) can power a consumer-facing product with fundamentally different unit economics and growth dynamics.
|
||||
|
||||
The consumer space is harder to monetize per user but scales much faster when it works. A successful consumer product also provides leverage: optionality for acquisition (Yelp, Google, Eventbrite, travel platforms), data licensing revenue (real-time local trend data), and brand visibility that feeds back into IT Pro Partner's core B2B credibility.
|
||||
|
||||
In a market where the question "what should we do tonight?" is asked millions of times daily and answered poorly by every existing platform, HotNow's combination of real-time data, AI curation, and capital-efficient infrastructure is not merely competitive -- it's a category creator. The question is whether we build it fast enough and seed cities effectively enough to establish the network effects before someone else does.
|
||||
|
||||
---
|
||||
|
||||
## Appendix A: Competitor Pricing Deep Dive
|
||||
|
||||
| Platform | Consumer Price | Business Price | Real-Time? | Map-First? | AI Curation? |
|
||||
|----------|---------------|----------------|------------|------------|-------------|
|
||||
| **Yelp** | Free | $150-$500+/mo (ads) | No | Yes (secondary) | No |
|
||||
| **Google Maps** | Free | Free (Google Ads separate) | No | Yes | No |
|
||||
| **Eventbrite** | Free (ticketing fees) | 3.5% + $1.79/ticket | No | No | No |
|
||||
| **Scoop Travel** | $10/mo | N/A | No | Yes | No (editorial) |
|
||||
| **Thrillist** | Free | Sponsored content (custom) | No | No | No |
|
||||
| **Infatuation** | Free | Sponsored content (custom) | No | No | No |
|
||||
| **Dice** | Free (ticketing fees) | Revenue share | Partial (music only) | No | No |
|
||||
| **Bandsintown** | Free | Promoted events | Partial (music only) | No | No |
|
||||
| **TikTok** | Free | Ads | Partial (unstructured) | No | Algorithmic |
|
||||
| **HotNow** | **Free / $4.99 / $19.99** | **$97/mo + $47/event** | **Yes** | **Yes** | **Yes (LLM)** |
|
||||
|
||||
## Appendix B: API and Data Source Costs
|
||||
|
||||
| Service | Plan | Monthly Cost | Annual Cost | Limits |
|
||||
|---------|------|-------------|-------------|--------|
|
||||
| Mapbox | Pay-as-you-go | $50-$200 (est.) | $600-$2,400 | 50K free loads; ~$0.50/1K beyond |
|
||||
| Eventbrite API | Free tier | $0 | $0 | Rate-limited; sufficient for aggregation |
|
||||
| Ticketmaster API | Free tier | $0 | $0 | Rate-limited; sufficient for aggregation |
|
||||
| Meetup API | Free tier | $0 | $0 | Rate-limited |
|
||||
| Facebook Events API | Free tier | $0 | $0 | Limited availability post-Cambridge Analytica |
|
||||
| deepseek-v4-pro | Pay-per-token | $100-$300 (est.) | $1,200-$3,600 | Variable; scales with user count |
|
||||
| Super Search v2 | Internal | $0 | $0 | Already running on ITPP infrastructure |
|
||||
| Netcup VPS | Existing infra | $0 (absorbed) | $0 | Existing ITPP servers |
|
||||
| OneSignal (push) | Free tier | $0-$50 | $0-$600 | 10K free subscribers |
|
||||
| Resend (email) | Free tier | $20 | $240 | 3K emails/mo free; scales |
|
||||
|
||||
## Appendix C: Glossary
|
||||
|
||||
| Term | Definition |
|
||||
|------|-----------|
|
||||
| **ARR** | Annual Recurring Revenue -- the annualized value of subscription contracts |
|
||||
| **MRR** | Monthly Recurring Revenue |
|
||||
| **MAU** | Monthly Active Users |
|
||||
| **CAC** | Customer Acquisition Cost -- total sales & marketing spend / new customers acquired |
|
||||
| **LTV** | Lifetime Value -- average revenue per customer over their lifetime |
|
||||
| **PWA** | Progressive Web App -- a web application that behaves like a native mobile app |
|
||||
| **MCP** | Model Context Protocol -- the protocol used by Super Search v2 for AI integration |
|
||||
| **COGS** | Cost of Goods Sold -- direct costs attributable to delivering the service |
|
||||
|
||||
---
|
||||
|
||||
**Document prepared by:** HotNow Product Division, IT Pro Partner
|
||||
**Contact:** Germaine Brown
|
||||
**Classification:** Confidential -- For Advisory Team Review Only
|
||||
**Version:** 1.0 -- August 1, 2026
|
||||
@@ -0,0 +1,743 @@
|
||||
# IntelSight Business Proposal
|
||||
|
||||
**Prepared for:** Germaine Brown & Advisory Team
|
||||
**Date:** July 25, 2026
|
||||
**Company:** IT Pro Partner — Product Division
|
||||
**Product:** IntelSight (intelsight.io)
|
||||
**Classification:** Confidential — Advisory Review
|
||||
|
||||
---
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Executive Summary](#1-executive-summary)
|
||||
2. [Elevator Pitch](#2-elevator-pitch)
|
||||
3. [Problem Statement](#3-problem-statement)
|
||||
4. [Market Analysis](#4-market-analysis)
|
||||
5. [Product Overview](#5-product-overview)
|
||||
6. [Revenue Model](#6-revenue-model)
|
||||
7. [Competitive Advantages](#7-competitive-advantages)
|
||||
8. [Go-to-Market Strategy](#8-go-to-market-strategy)
|
||||
9. [Risk Analysis](#9-risk-analysis)
|
||||
10. [Financial Projections](#10-financial-projections)
|
||||
11. [The Ask](#11-the-ask)
|
||||
|
||||
---
|
||||
|
||||
## 1. Executive Summary
|
||||
|
||||
IntelSight is a multi-tenant competitive intelligence SaaS platform that delivers enterprise-grade competitor monitoring, market analysis, and OSINT capabilities at a price point accessible to established SMBs and mid-market companies — a segment the current market leaders have effectively abandoned.
|
||||
|
||||
The global competitive intelligence tools market was valued at **$0.56 billion in 2024** and is projected to reach **$1.62 billion by 2033**, growing at a CAGR of **12.5%** (SkyQuest, 2025). Yet the dominant players — Crayon ($15K–$100K+/year), Klue ($15K–$200K+/year), and Kompyte (custom enterprise) — exclusively target large enterprises with six-figure contracts and opaque, sales-led pricing. There is no credible, transparently priced CI platform for businesses with 10–500 employees who compete in crowded markets and need real intelligence, not just Google Alerts.
|
||||
|
||||
IntelSight fills this gap. Built on IT Pro Partner's existing Super Search v2 infrastructure — a battle-tested multi-provider search engine with 7 providers, circuit breakers, and caching already running on netcup VPS — IntelSight adds Crunchbase API integration ($49/mo), Hunter.io email intelligence ($34/mo), LLM-powered synthesis via deepseek-v4-pro, and a purpose-built multi-tenant SaaS layer. Approximately **80% of the core search and OSINT engine already exists and is production-hardened**.
|
||||
|
||||
With transparent annual pricing of **$199/mo (Pro)**, **$499/mo (Growth)**, and **$1,499+/mo (Enterprise)**, IntelSight costs **one-tenth to one-fiftieth** of the incumbent platforms while delivering comparable or superior capability in several dimensions. The economics are compelling: at **50 paying customers** across tiers, IntelSight projects ~**$375K–$500K ARR** with approximately **85% gross margins** — a capital-efficient software business with near-zero marginal cost of delivery.
|
||||
|
||||
This proposal outlines the market opportunity, product architecture, revenue model, go-to-market plan, risk analysis, and the resources required to launch IntelSight as a standalone product line under the IT Pro Partner umbrella.
|
||||
|
||||
---
|
||||
|
||||
## 2. Elevator Pitch
|
||||
|
||||
IntelSight gives established businesses the same competitive intelligence firepower that Fortune 500 companies pay $50,000 a year for — at less than $200 a month. By combining AI-powered search across seven providers, Crunchbase funding intelligence, Hunter.io email discovery, and LLM-driven synthesis into one multi-tenant platform, IntelSight turns the competitive intelligence market on its head: transparent pricing, instant onboarding, and no sales call required. It's Crayon for the other 99%.
|
||||
|
||||
---
|
||||
|
||||
## 3. Problem Statement
|
||||
|
||||
### 3.1 The Intelligence Gap
|
||||
|
||||
Competitive intelligence has become non-negotiable. In 2024, 68% of North American businesses invested in AI-based CI systems (SkyQuest). Companies that systematically track competitors win deals faster, price smarter, and pivot before disruption blindsides them.
|
||||
|
||||
Yet the CI software market has a structural problem: **it only serves the top of the market.**
|
||||
|
||||
| Platform | Entry Price (Annual) | Pricing Model | Target Segment |
|
||||
|----------|---------------------|---------------|----------------|
|
||||
| Crayon | ~$15,000–$16,000 | Custom, sales-led | Enterprise (500+ employees) |
|
||||
| Klue | ~$15,000–$20,000 | Quote-based, per-seat | Enterprise (200+ employees) |
|
||||
| Kompyte (Semrush) | Custom (budget option) | Sales-led, Semrush ecosystem | Marketing teams at mid-to-large |
|
||||
| Contify | Custom | Quote-based | Enterprise |
|
||||
| Parano.ai | €89/mo (~$97) | Transparent | Solo/small teams only |
|
||||
|
||||
Between Parano.ai at $97/month (good for solo operators, limited depth) and Crayon/Klue at $15,000+/year (great for enterprises, inaccessible to everyone else), there is a **yawning gap** that covers:
|
||||
|
||||
- **Established SMBs** (10–100 employees) competing in crowded verticals — SaaS, professional services, manufacturing, logistics, healthcare tech
|
||||
- **Mid-market companies** (100–500 employees) with a competitor tracking budget of $2,000–$18,000/year — not $50,000+
|
||||
- **Growth-stage startups** graduating from LaunchCheck who now need ongoing intelligence, not just launch research
|
||||
- **Boutique consulting, legal, and financial services firms** that need OSINT dossiers, funding alerts, and market signals but can't justify a full CI platform
|
||||
|
||||
### 3.2 What These Companies Do Today
|
||||
|
||||
Right now, they improvise. They stitch together:
|
||||
|
||||
- Google Alerts (free, noisy, incomplete)
|
||||
- Manual Crunchbase checks (time-consuming, inconsistent)
|
||||
- LinkedIn stalking (unstructured, non-systematic)
|
||||
- Occasional SEMrush/Ahrefs logins (focus on SEO, not holistic CI)
|
||||
- Spreadsheets maintained by an overworked marketing manager
|
||||
|
||||
The result: **delayed awareness, missed signals, and decisions made on intuition rather than intelligence**. By the time a competitor's funding round, product launch, or pricing change reaches the decision-maker through this ad-hoc pipeline, weeks or months have passed.
|
||||
|
||||
### 3.3 The Pain Points IntelSight Solves
|
||||
|
||||
| Pain Point | IntelSight Solution |
|
||||
|------------|-------------------|
|
||||
| Can't afford enterprise CI tools | $199/mo Pro tier — transparent, no negotiation |
|
||||
| Competitor moves discovered too late | Real-time monitoring across news, web, and funding sources |
|
||||
| No systematic competitor tracking | Multi-tenant dashboards with saved searches and alerts |
|
||||
| OSINT research takes days | Automated dossier generation — 5/mo on Pro, unlimited on Enterprise |
|
||||
| Pricing changes go undetected | Automated pricing monitoring (Growth+) |
|
||||
| Sales team lacks competitive ammo | AI-generated battle cards and SWOT reports (Growth+) |
|
||||
| Can't estimate competitor market share | Market share estimation engine (Enterprise) |
|
||||
| No early warning on new entrants | Crunchbase funding alerts flag new competitors before they launch |
|
||||
|
||||
---
|
||||
|
||||
## 4. Market Analysis
|
||||
|
||||
### 4.1 Total Addressable Market (TAM)
|
||||
|
||||
The global competitive intelligence tools market was valued at **$0.56 billion in 2024** and is forecast to reach **$1.62 billion by 2033**, growing at a CAGR of **12.5%** (SkyQuest Intelligence, 2025). A broader estimate from SendView places the total CI industry (software + services + data) at **$8.2 billion in 2023**, growing at 12.4% CAGR to **$16.8 billion by 2030**.
|
||||
|
||||
North America dominates with ~40% market share, driven by high digital adoption and competitive intensity — 68% of North American businesses invested in AI-based CI systems in 2024.
|
||||
|
||||
**TAM (CI Software Tools):** $560M (2024) → $1.62B (2033)
|
||||
**TAM (CI Industry Total):** $8.2B (2023) → $16.8B (2030)
|
||||
|
||||
### 4.2 Serviceable Addressable Market (SAM)
|
||||
|
||||
IntelSight's SAM is the subset of the CI software market consisting of **English-language, SMB and mid-market businesses in North America** that are underserved by enterprise CI platforms.
|
||||
|
||||
**Assumptions:**
|
||||
|
||||
| Parameter | Value | Source/Methodology |
|
||||
|-----------|-------|-------------------|
|
||||
| US businesses with 10–500 employees | ~2.1 million | SBA / Census data (2024) |
|
||||
| Businesses in competitive verticals (tech, services, finance, healthcare, manufacturing, logistics) | ~40% of total | Conservative estimate based on industry distribution |
|
||||
| Addressable businesses in competitive verticals | ~840,000 | 2.1M × 40% |
|
||||
| Penetration of CI tools in this segment today | <3% | Current tools priced out of reach |
|
||||
| Willingness to pay $200–$1,500/mo for CI | ~15% of addressable | Based on comparable SaaS spend (CRM, analytics) |
|
||||
| **SAM (total market value)** | **~$4.2B/year** | 840K × 15% × avg $3,300/yr contract |
|
||||
|
||||
This is a conservative SAM estimate. Even if we assume only 5% willingness to pay at our price point, the SAM exceeds **$1.4B/year**.
|
||||
|
||||
### 4.3 Serviceable Obtainable Market (SOM)
|
||||
|
||||
IntelSight's SOM for the first 3 years focuses on **directly reachable customers** through IT Pro Partner's existing network, digital marketing, and channel partnerships.
|
||||
|
||||
| Year | SOM Estimate | Methodology |
|
||||
|------|-------------|-------------|
|
||||
| Year 1 | $150K–$400K ARR | ITPP network + targeted digital + LaunchCheck pipeline |
|
||||
| Year 2 | $800K–$1.5M ARR | Referral flywheel + content inbound + channel partners |
|
||||
| Year 3 | $2M–$4M ARR | Brand establishment + outbound sales + API/Enterprise expansion |
|
||||
|
||||
### 4.4 Competitive Landscape
|
||||
|
||||
| Competitor | Annual Cost (Entry) | Primary Strength | Primary Weakness | IntelSight Advantage |
|
||||
|------------|--------------------|--------------------|--------------------|-------------|
|
||||
| **Crayon** | $15K–$16K+ | Broad coverage, enterprise depth | Opaque pricing, 6-figure total cost, sales-led | 50x cheaper, transparent, self-serve |
|
||||
| **Klue** | $15K–$20K+ | Sales enablement, battle cards | Quote-only, high onboarding fees, per-seat costs | Battle cards included at $499/mo, not $20K/yr |
|
||||
| **Kompyte (Semrush)** | Custom (budget option) | Marketing CI, Semrush ecosystem | Locked into Semrush, custom pricing | Standalone, not ecosystem-dependent |
|
||||
| **Contify** | Custom | Strategy + market intelligence | Enterprise-only, opaque | Multi-tenant for mid-market |
|
||||
| **Parano.ai** | ~$1,100/yr (€89/mo) | Transparent pricing, continuous monitoring | Limited depth — monitoring only, no dossiers, no Crunchbase, no Hunter.io | Full-stack CI, OSINT, and funding intelligence |
|
||||
| **DIY Stack** | $50–$400/mo (tools) | Flexible, low cost | No integration, no synthesis, manual labor | Everything integrated, LLM-synthesized |
|
||||
|
||||
**Key insight:** IntelSight does not need to beat Crayon/Klue on depth to win. It needs to be *good enough* at one-tenth the price for the 97% of businesses those platforms don't serve. This is the classic Clayton Christensen disruption play: serve the overshot market with a simpler, dramatically cheaper product.
|
||||
|
||||
---
|
||||
|
||||
## 5. Product Overview
|
||||
|
||||
### 5.1 Architecture
|
||||
|
||||
IntelSight is built on a layered architecture that maximizes reuse of existing IT Pro Partner infrastructure:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ IntelSight Portal (React) │
|
||||
│ Multi-tenant dashboards, reports, admin │
|
||||
├─────────────────────────────────────────────────────────┤
|
||||
│ API Layer (FastAPI + Auth) │
|
||||
│ REST endpoints, RBAC, rate limiting, billing │
|
||||
├─────────────────────────────────────────────────────────┤
|
||||
│ Intelligence Engine (Python) │
|
||||
│ LLM synthesis, report generation, alerting, dossiers │
|
||||
├──────────┬──────────┬──────────┬────────────────────────┤
|
||||
│ Super │ Crunch- │ Hunter. │ Additional Data │
|
||||
│ Search │ base │ io │ Sources & Plugins │
|
||||
│ v2 │ API │ API │ │
|
||||
├──────────┴──────────┴──────────┴────────────────────────┤
|
||||
│ PostgreSQL — Tenant data, user state, logs │
|
||||
├─────────────────────────────────────────────────────────┤
|
||||
│ Stripe — Billing, subscriptions, invoicing │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Infrastructure:**
|
||||
- **Hosting:** netcup VPS (IT Pro Partner existing infra) — one production server + staging
|
||||
- **Super Search v2 MCP Server:** Already running on app1 — provides search across 7 providers (SearXNG, Exa, DuckDuckGo, Firecrawl, Wikipedia, OpenCorporates, CourtListener) with circuit breakers, caching, and health monitoring
|
||||
- **API Layer (to build):** FastAPI with JWT auth, tenant isolation, rate limiting
|
||||
- **Portal (to build):** React SPA with multi-tenant dashboards
|
||||
- **Database (to add):** PostgreSQL for tenant data, user accounts, saved searches, report storage
|
||||
- **Billing (to add):** Stripe integration for subscriptions, invoicing, dunning
|
||||
- **LLM:** deepseek-v4-pro via API for synthesis, report generation, SWOT analysis
|
||||
|
||||
**Existing vs. to-build breakdown:**
|
||||
|
||||
| Component | Status | Effort Estimate |
|
||||
|-----------|--------|----------------|
|
||||
| Super Search v2 engine | **Existing** | 0 hours |
|
||||
| Search provider orchestration | **Existing** | 0 hours |
|
||||
| Circuit breakers, caching, health checks | **Existing** | 0 hours |
|
||||
| Crunchbase API integration | **To build** | ~20 hours |
|
||||
| Hunter.io API integration | **To build** | ~15 hours |
|
||||
| LLM synthesis pipeline | **~50% existing** | ~30 hours |
|
||||
| FastAPI multi-tenant API layer | **To build** | ~40 hours |
|
||||
| React portal / dashboards | **To build** | ~80 hours |
|
||||
| PostgreSQL schema + migrations | **To build** | ~15 hours |
|
||||
| Stripe billing integration | **To build** | ~25 hours |
|
||||
| Auth (JWT + RBAC + tenant isolation) | **To build** | ~20 hours |
|
||||
| Alerting / notification engine | **To build** | ~20 hours |
|
||||
| Report generation templates | **To build** | ~25 hours |
|
||||
| White-label framework (Growth+) | **To build** | ~15 hours |
|
||||
| API access gateway (Enterprise) | **To build** | ~20 hours |
|
||||
| Testing, DevOps, CI/CD | **To build** | ~40 hours |
|
||||
| Documentation, onboarding | **To build** | ~20 hours |
|
||||
| **Total remaining build** | | **~385 hours** |
|
||||
|
||||
### 5.2 Tier Structure
|
||||
|
||||
#### Pro — $199/month (annual) / $229/month (monthly)
|
||||
|
||||
**Target:** Established SMBs, professional services firms, boutique agencies
|
||||
|
||||
**Features:**
|
||||
- Unlimited searches across all 7 providers
|
||||
- Competitor news monitoring with daily/weekly digests
|
||||
- Review sentiment analysis (G2, Capterra, Trustpilot)
|
||||
- Google Trends integration with competitive comparison
|
||||
- 5 OSINT dossiers per month (automated person/company research)
|
||||
- Crunchbase funding alerts for tracked competitors
|
||||
- Hunter.io email discovery — 100 lookups/month
|
||||
- Weekly automated competitive reports (PDF + email)
|
||||
- 3 user seats
|
||||
- Standard support (email, 24-hour SLA)
|
||||
|
||||
#### Growth — $499/month (annual) / $574/month (monthly)
|
||||
|
||||
**Target:** Mid-market companies, growth-stage startups with dedicated marketing/sales teams
|
||||
|
||||
**Everything in Pro, plus:**
|
||||
- AI-generated competitive battle cards (auto-updating)
|
||||
- Competitor pricing change monitoring and alerts
|
||||
- Automated SWOT reports (regenerated weekly)
|
||||
- 25 saved searches with alerting
|
||||
- White-label reports (remove IntelSight branding)
|
||||
- 10 user seats
|
||||
- Priority support (email + chat, 4-hour SLA)
|
||||
- Custom report scheduling
|
||||
|
||||
#### Enterprise — $1,499+/month (annual) / $1,724+/month (monthly)
|
||||
|
||||
**Target:** Larger mid-market, PE/VC portfolio companies, multi-brand organizations
|
||||
|
||||
**Everything in Growth, plus:**
|
||||
- Unlimited everything — searches, dossiers, reports, lookups
|
||||
- War room dashboards (real-time competitive monitoring display)
|
||||
- REST API access for integration with internal systems
|
||||
- Dedicated analyst review (human-in-the-loop quality assurance on reports)
|
||||
- Market share estimation engine (statistical modeling from public signals)
|
||||
- Patent filing monitoring (USPTO + international)
|
||||
- SEC filing monitoring (10-K, 10-Q, 8-K for public competitors)
|
||||
- Unlimited user seats
|
||||
- SSO/SAML (Okta, Azure AD, Google Workspace)
|
||||
- Custom data source integration
|
||||
- Dedicated account manager
|
||||
- SLA-backed uptime guarantee (99.9%)
|
||||
|
||||
**Enterprise pricing scales with:**
|
||||
- Number of competitors tracked (base: 25, +$200/mo per additional 25)
|
||||
- Dossier volume (base: unlimited standard, premium OSINT at volume)
|
||||
- Custom integrations
|
||||
- White-glove onboarding and training
|
||||
|
||||
### 5.3 Sister Product: LaunchCheck ($49/month)
|
||||
|
||||
LaunchCheck serves pre-revenue founders conducting initial competitive landscape research. Features include one-time market landscape reports, competitor identification, and positioning analysis. Budget-conscious and founder-friendly.
|
||||
|
||||
**Strategic role:** LaunchCheck is the top of the IntelSight funnel. As LaunchCheck users raise funding, hire teams, and need ongoing competitive intelligence, they naturally upgrade to IntelSight Pro or Growth. This creates a built-in lead generation engine at near-zero customer acquisition cost.
|
||||
|
||||
---
|
||||
|
||||
## 6. Revenue Model
|
||||
|
||||
### 6.1 Pricing Rationale
|
||||
|
||||
IntelSight pricing is anchored to the gap between DIY tools ($50–$400/mo fragmented) and enterprise CI platforms ($1,250–$8,300+/mo, opaque). Our pricing communicates:
|
||||
|
||||
- **Pro ($199/mo):** "Less than your CRM subscription, but now you know what your competitors are doing."
|
||||
- **Growth ($499/mo):** "The cost of one junior analyst's day per month — but automated, 24/7, and AI-powered."
|
||||
- **Enterprise ($1,499/mo):** "Roughly 10% of a Crayon/Klue contract — with OSINT and API access they don't include."
|
||||
|
||||
Month-to-month pricing carries a 10–15% premium to incentivize annual commitments and improve cash flow predictability.
|
||||
|
||||
### 6.2 Cost Structure (Monthly Operating)
|
||||
|
||||
| Expense | Monthly Cost | Annual Cost | Notes |
|
||||
|---------|-------------|-------------|-------|
|
||||
| Super Search infrastructure | $0 | $0 | Already running on ITPP infra |
|
||||
| Netcup VPS (production + staging) | $50 | $600 | Incremental to existing; largely absorbed |
|
||||
| Crunchbase API | $49 | $588 | Base plan; scales with Enterprise volume |
|
||||
| Hunter.io API | $34 | $408 | Base plan; scales with usage |
|
||||
| deepseek-v4-pro API calls | $200–$500 | $2,400–$6,000 | Variable; scales with customer count |
|
||||
| Stripe fees | ~2.9% + $0.30/transaction | Variable | ~3% of revenue |
|
||||
| Domain + SSL | $5 | $60 | intelsight.io |
|
||||
| Email delivery (Resend/SendGrid) | $20 | $240 | Transactional + report delivery |
|
||||
| Monitoring + logging | $30 | $360 | Basic observability |
|
||||
| **Total baseline operating cost** | **~$388–$688/mo** | **~$4,656–$8,256/yr** | |
|
||||
|
||||
At scale (100+ customers), operating costs increase primarily with LLM API usage and Crunchbase/Hunter.io volume tiers, but remain substantially below revenue due to the high fixed-cost nature of the search infrastructure.
|
||||
|
||||
### 6.3 Revenue Projections by Customer Count
|
||||
|
||||
All figures assume annual contract pricing. Month-to-month customers add 10–15% to these numbers.
|
||||
|
||||
#### Scenario: Balanced Mix (60% Pro / 30% Growth / 10% Enterprise)
|
||||
|
||||
| Customers | Pro (60%) | Growth (30%) | Enterprise (10%) | Monthly Revenue | Annual Revenue (ARR) |
|
||||
|-----------|-----------|-------------|------------------|----------------|----------------------|
|
||||
| 10 | 6 × $199 | 3 × $499 | 1 × $1,499 | **$4,190** | **$50,280** |
|
||||
| 25 | 15 × $199 | 7.5 × $499 | 2.5 × $1,499 | **$10,475** | **$125,700** |
|
||||
| 50 | 30 × $199 | 15 × $499 | 5 × $1,499 | **$20,950** | **$251,400** |
|
||||
| 100 | 60 × $199 | 30 × $499 | 10 × $1,499 | **$41,900** | **$502,800** |
|
||||
| 200 | 120 × $199 | 60 × $499 | 20 × $1,499 | **$83,800** | **$1,005,600** |
|
||||
| 500 | 300 × $199 | 150 × $499 | 50 × $1,499 | **$209,500** | **$2,514,000** |
|
||||
|
||||
#### Scenario: Pro-Heavy (80% Pro / 15% Growth / 5% Enterprise)
|
||||
|
||||
This models early-stage reality before the brand commands Enterprise deals.
|
||||
|
||||
| Customers | Monthly Revenue | Annual Revenue (ARR) |
|
||||
|-----------|----------------|----------------------|
|
||||
| 10 | $3,100 | $37,200 |
|
||||
| 50 | $15,500 | $186,000 |
|
||||
| 100 | $31,000 | $372,000 |
|
||||
| 200 | $62,000 | $744,000 |
|
||||
| 500 | $155,000 | $1,860,000 |
|
||||
|
||||
#### Gross Margin Analysis
|
||||
|
||||
At 50 customers (balanced mix), monthly costs of ~$600 vs. revenue of ~$20,950 yields a **gross margin of ~97%**. Even accounting for scaling LLM costs at higher volumes, margins remain above **85%** at 500+ customers.
|
||||
|
||||
### 6.4 12-Month Revenue Ramp (Realistic Case)
|
||||
|
||||
| Month | Customers | MRR | Cumulative Revenue | Notes |
|
||||
|-------|-----------|-----|-------------------|-------|
|
||||
| 1 | 0 | $0 | $0 | Pre-launch: build completion, beta |
|
||||
| 2 | 3 | $900 | $900 | Soft launch to ITPP network |
|
||||
| 3 | 5 | $1,500 | $2,400 | Early adopters, referral from LaunchCheck |
|
||||
| 4 | 8 | $2,350 | $4,750 | First content marketing traction |
|
||||
| 5 | 12 | $3,520 | $8,270 | First Growth-tier upgrades |
|
||||
| 6 | 16 | $4,720 | $12,990 | Community + LinkedIn push |
|
||||
| 7 | 22 | $6,490 | $19,480 | Referral flywheel begins |
|
||||
| 8 | 28 | $8,260 | $27,740 | First channel partner onboarded |
|
||||
| 9 | 35 | $10,325 | $38,065 | SEO content begins ranking |
|
||||
| 10 | 44 | $12,980 | $51,045 | First Enterprise deal |
|
||||
| 11 | 52 | $15,340 | $66,385 | Paid ads turned on (validated CAC) |
|
||||
| 12 | 60 | $17,700 | $84,085 | **Year 1 exit ARR: ~$212K** |
|
||||
|
||||
**Key assumptions:**
|
||||
- Zero paid acquisition in months 1–6 (network + content + organic only)
|
||||
- Monthly churn rate: 3–5% (industry average for SMB SaaS is 3–7%)
|
||||
- Average revenue per customer: ~$295/mo (60/30/10 mix, shifting toward Growth over time)
|
||||
- Customer acquisition cost (CAC) after month 9: ~$250–$400
|
||||
|
||||
---
|
||||
|
||||
## 7. Competitive Advantages
|
||||
|
||||
### 7.1 Why IntelSight Wins
|
||||
|
||||
#### 1. Transparent, Accessible Pricing
|
||||
The incumbents' pricing is deliberately opaque — "book a demo," "contact sales." This is a feature of their business model (high-touch enterprise sales), not a bug. IntelSight flips this: public pricing, self-serve signup, credit card checkout. The psychological barrier of "contact sales" eliminates 90%+ of SMB buyers before they even evaluate.
|
||||
|
||||
#### 2. OSINT Capabilities None of Them Have
|
||||
Crayon, Klue, and Kompyte focus on digital channel monitoring — website changes, social media, reviews. IntelSight adds **person-level OSINT**: automated background dossiers on competitor executives, key hires, court records, business affiliations. This is capability typically found in law enforcement and investigative tools, not commercial CI platforms. For customers doing due diligence, partnership evaluation, or competitive hiring intelligence, this is a decisive differentiator.
|
||||
|
||||
#### 3. Crunchbase + Hunter.io Integration
|
||||
No competitor integrates real-time Crunchbase funding data and Hunter.io email discovery into a unified CI dashboard. Competitors track what's public on websites and social media; IntelSight tells you who just got funded, who their key people are, and how to reach them.
|
||||
|
||||
#### 4. Capital Efficiency — ~80% Already Built
|
||||
Super Search v2 is production-hardened. The multi-provider search layer with circuit breakers, intelligent caching, and health monitoring is running today on IT Pro Partner infrastructure. This is not a greenfield build — it's a SaaS layer on top of proven infrastructure. Startup competitors would need 6–12 months and $100K+ to replicate just the search engine.
|
||||
|
||||
#### 5. IT Pro Partner Credibility
|
||||
IntelSight is not a no-name startup asking businesses to trust it with strategic data. The "IntelSight is a product of IT Pro Partner" footer provides immediate credibility: an established MSP/IT services company with real infrastructure, real clients, and real operational maturity. This matters enormously in B2B SaaS, where vendor risk assessment is part of every purchase decision.
|
||||
|
||||
#### 6. Built-in Funnel via LaunchCheck
|
||||
LaunchCheck at $49/mo captures pre-revenue founders. As those founders succeed — raise funding, hire teams, need ongoing CI — they graduate to IntelSight. This is a customer acquisition flywheel that no competitor has: capture them at the idea stage, grow with them.
|
||||
|
||||
#### 7. LLM-Native, Not LLM-Bolted-On
|
||||
IntelSight's synthesis engine is built around LLM capabilities from the ground up — not a legacy rules engine with an AI chatbot glued on top. Reports, SWOT analyses, battle cards, and dossiers are generated directly from raw intelligence signals by the LLM, producing coherent, actionable output rather than keyword-matched alert spam.
|
||||
|
||||
### 7.2 Competitive Positioning Map
|
||||
|
||||
```
|
||||
HIGH PRICE
|
||||
│
|
||||
Crayon ● │ ● Klue
|
||||
($15K+) │ ($15K+)
|
||||
│
|
||||
Kompyte ● │ ● Contify
|
||||
(Custom) │ (Custom)
|
||||
│
|
||||
────────────────────────┼────────────────────────
|
||||
LOW CAPABILITY │ HIGH CAPABILITY
|
||||
│
|
||||
│
|
||||
DIY Stack ● │
|
||||
($600-4K) │ ★ IntelSight
|
||||
│ ($2.4K-18K)
|
||||
│
|
||||
Parano.ai ● │
|
||||
($1.1K) │
|
||||
│
|
||||
LOW PRICE
|
||||
```
|
||||
|
||||
IntelSight occupies the high-capability, low-price quadrant that is currently empty. It delivers enterprise-grade capability (OSINT, Crunchbase, Hunter.io, LLM synthesis) at SMB-accessible pricing.
|
||||
|
||||
---
|
||||
|
||||
## 8. Go-to-Market Strategy
|
||||
|
||||
### 8.1 Phase 1: Foundation (Months 1–2)
|
||||
|
||||
**Objective:** Complete build, onboard beta users, validate pricing.
|
||||
|
||||
**Activities:**
|
||||
- Complete remaining ~385 hours of development (API layer, portal, billing, auth)
|
||||
- Recruit 5–10 beta users from IT Pro Partner's existing client base (free/discounted in exchange for feedback)
|
||||
- Set up Stripe, email infrastructure, analytics (Plausible/PostHog)
|
||||
- Launch intelsight.io landing page with waitlist
|
||||
- Produce 3–5 high-quality content pieces (comparison posts: "Crayon vs. IntelSight," "Klue Alternatives for SMBs")
|
||||
- Set up Google Search Console, submit sitemap
|
||||
|
||||
**KPIs:**
|
||||
- Beta users: 5–10
|
||||
- Waitlist signups: 100+
|
||||
- Content pieces published: 5
|
||||
|
||||
### 8.2 Phase 2: Soft Launch (Months 3–6)
|
||||
|
||||
**Objective:** Convert early adopters, establish content flywheel, validate CAC.
|
||||
|
||||
**Channels:**
|
||||
- **IT Pro Partner network:** Direct outreach to existing clients who compete in crowded markets. Warm introductions to client networks.
|
||||
- **LaunchCheck pipeline:** Email LaunchCheck users about IntelSight upgrade path. Target: 15% conversion of LaunchCheck users within 6 months of their first funding round.
|
||||
- **Content marketing:** Weekly blog posts targeting "competitive intelligence for SMB," "competitor tracking tools," "Crayon alternatives," "Klue pricing" — high-intent SEO keywords with manageable competition.
|
||||
- **LinkedIn organic:** Germaine Brown's personal brand + IT Pro Partner company page. Regular posts on competitive strategy, market intelligence tips, product updates. Target: 2–3 posts/week.
|
||||
- **Communities:** Indie Hackers, Hacker News (Show HN launch), relevant Subreddits (r/SaaS, r/smallbusiness, r/startups), Product Hunt launch.
|
||||
|
||||
**KPIs:**
|
||||
- Paying customers: 12–16
|
||||
- MRR: $3,500–$4,700
|
||||
- Blog posts: 16–20 (4/month)
|
||||
- Organic traffic: 500–1,000 monthly visitors
|
||||
- CAC: Not yet measurable (mostly organic)
|
||||
|
||||
### 8.3 Phase 3: Growth (Months 7–9)
|
||||
|
||||
**Objective:** Activate referral flywheel, begin paid acquisition, close first Enterprise deal.
|
||||
|
||||
**Channels:**
|
||||
- **Referral program:** "Give 20% off, get 20% off" — simple, proven, low-friction. Each existing customer becomes a distribution channel.
|
||||
- **Paid search:** Google Ads on competitor brand terms ("Crayon alternative," "Klue pricing," "competitive intelligence software"). Initial budget: $1,000/mo.
|
||||
- **Comparison pages:** Dedicated landing pages for "IntelSight vs. [Competitor]" — these are the highest-converting pages in B2B SaaS.
|
||||
- **Webinars:** Monthly webinar on "Competitive Intelligence for [Industry]" — 30 minutes, practical, recorded for on-demand library.
|
||||
- **Channel partnerships:** Approach 3–5 marketing agencies, fractional CMO consultancies, and business coaches who serve SMBs. Offer 20% recurring commission on referred customers.
|
||||
|
||||
**KPIs:**
|
||||
- Paying customers: 28–35
|
||||
- MRR: $8,200–$10,300
|
||||
- Monthly organic traffic: 2,000–3,000
|
||||
- CAC (blended): $250–$350
|
||||
- First Enterprise customer
|
||||
|
||||
### 8.4 Phase 4: Scale (Months 10–12)
|
||||
|
||||
**Objective:** Establish predictable growth engine, expand channels, raise prices if validated.
|
||||
|
||||
**Channels:**
|
||||
- **Outbound sales light:** One part-time SDR targeting mid-market companies in competitive verticals. Target list: 500 companies, personalized outreach.
|
||||
- **Paid social:** LinkedIn Ads targeting marketing directors, product marketing managers, and strategy leads at SMB/mid-market.
|
||||
- **Content library expansion:** Templates, playbooks, industry benchmarks — gated content for lead capture.
|
||||
- **Integrations marketplace:** Native integrations with Slack, Microsoft Teams, HubSpot, Salesforce (prioritize by customer demand).
|
||||
- **Conference presence:** Attend 2–3 industry events as attendee or small sponsor (SaaStr, B2B Marketing Exchange, etc.).
|
||||
|
||||
**KPIs:**
|
||||
- Paying customers: 52–60
|
||||
- MRR: $15,300–$17,700
|
||||
- Annual exit ARR: ~$212,000
|
||||
- CAC (blended): $300–$400
|
||||
- LTV:CAC ratio: >5:1 (target)
|
||||
|
||||
### 8.5 Customer Acquisition Strategy Summary
|
||||
|
||||
| Channel | CAC Estimate | Time to Mature | Scalability | Priority |
|
||||
|---------|-------------|----------------|-------------|----------|
|
||||
| ITPP network referrals | $0–$50 | Immediate | Low (finite) | ★★★★★ |
|
||||
| LaunchCheck pipeline | $0–$25 | 3–6 months | Medium | ★★★★★ |
|
||||
| Content/SEO | $100–$300 | 6–12 months | High | ★★★★ |
|
||||
| LinkedIn organic | $0–$50 | 1–3 months | Medium | ★★★★ |
|
||||
| Referral program | $50–$150 | 6+ months | High | ★★★★ |
|
||||
| Product Hunt / HN / Reddit | $0–$50 | Immediate | Low (one-time) | ★★★ |
|
||||
| Webinars | $150–$400 | 3–6 months | Medium | ★★★ |
|
||||
| Paid search (Google) | $250–$500 | 1–2 months | High | ★★★ |
|
||||
| Channel partners | $200–$400 | 6–12 months | High | ★★ |
|
||||
| Outbound sales | $400–$800 | 1–3 months | High | ★★ |
|
||||
| Paid social (LinkedIn) | $300–$600 | 1–3 months | High | ★★ |
|
||||
|
||||
---
|
||||
|
||||
## 9. Risk Analysis
|
||||
|
||||
### 9.1 Market Risks
|
||||
|
||||
| Risk | Probability | Impact | Mitigation |
|
||||
|------|-----------|--------|------------|
|
||||
| **Market too small for meaningful returns** | Low | High | TAM of $560M growing at 12.5% CAGR. Even 0.1% market share = $560K ARR. The SMB/mid-market segment is demonstrably underserved. Revenue projections target 0.01–0.05% of TAM in Year 1 — conservative. |
|
||||
| **Enterprise incumbents move downmarket** | Medium | Medium | Crayon/Klue/Kompyte are structurally disincentivized to serve SMBs — their cost structure, sales model, and product complexity demand enterprise ACVs. If they launch "light" tiers, they risk cannibalizing their existing $50K+ deals. IntelSight has first-mover advantage in transparent SMB CI. |
|
||||
| **Economic downturn reduces SMB software spending** | Medium | Medium-High | CI becomes *more* valuable in downturns, not less — competitors get aggressive, pricing wars intensify. IntelSight's low price point is recession-resilient ($199/mo is rarely the line item cut). Multi-year contracts provide revenue stability. |
|
||||
|
||||
### 9.2 Product Risks
|
||||
|
||||
| Risk | Probability | Impact | Mitigation |
|
||||
|------|-----------|--------|------------|
|
||||
| **Search quality degrades (provider outages)** | Low | Low-Medium | Super Search v2 already has circuit breakers and 7-provider redundancy. If one provider fails, others take over automatically. This is production-proven. |
|
||||
| **LLM hallucinations in reports** | Medium | High | All LLM-generated content includes confidence indicators and source attribution. Enterprise tier includes human analyst review. Reports are clearly labeled as AI-generated. Hallucination detection pipeline planned for v1.1. |
|
||||
| **Multi-tenant data isolation failure** | Low | Critical | Row-level security at database layer. Tenant ID enforced at API middleware. Penetration testing before launch. Independent security audit at 100+ customers. |
|
||||
| **Feature creep slows launch** | High | Medium | Strict MVP scope enforcement. Build only the features needed to sell Pro tier first. Enterprise features in Phase 2. Launch with what works, iterate. |
|
||||
|
||||
### 9.3 Competitive Risks
|
||||
|
||||
| Risk | Probability | Impact | Mitigation |
|
||||
|------|-----------|--------|------------|
|
||||
| **Semrush/Kompyte launches $199 SMB tier** | Low-Medium | Medium | Semrush's DNA is SEO/marketing, not holistic CI + OSINT. They'd need to build search aggregation, Crunchbase integration, Hunter.io, and OSINT from scratch. IntelSight would have 12–18 months of market presence before a credible response. |
|
||||
| **Open-source CI tool emerges** | Medium | Low | Open-source tools lack the data integrations (Crunchbase, Hunter.io) and LLM synthesis. They require self-hosting and maintenance — the opposite of what SMBs want. IntelSight competes on convenience and integration, not just search. |
|
||||
| **AI-native startup raises VC and undercuts pricing** | Medium | Medium-High | Possible. Mitigation: move fast, lock in customers with annual contracts, build switching costs via saved searches/dossiers/historical data. First-mover advantage + ITPP credibility creates defensibility. If a VC-funded competitor emerges, IntelSight's capital-efficient model means we don't need to match their burn rate to compete. |
|
||||
|
||||
### 9.4 Operational Risks
|
||||
|
||||
| Risk | Probability | Impact | Mitigation |
|
||||
|------|-----------|--------|------------|
|
||||
| **Germaine bandwidth — only person who can build/support** | High | High | This is the single biggest risk. Mitigation: (1) aggressive documentation from day one, (2) identify a part-time contractor for support within 3 months of launch, (3) build self-serve onboarding that minimizes support burden, (4) consider a technical co-founder or first engineering hire at $10K MRR. |
|
||||
| **deepseek-v4-pro API changes or price increases** | Low-Medium | Medium | LLM abstraction layer in the architecture allows provider switching. Claude, GPT-4o, and open-source models (via Groq/Together) are fallbacks. Multi-model capability should be built into v1.1. |
|
||||
| **Crunchbase or Hunter.io API deprecation or price changes** | Low | Medium | Both have stable, long-standing APIs. Crunchbase has been API-first for years. Alternatives exist: PitchBook (pricier), Apollo.io (Hunter.io alternative). Monitor API changelogs and maintain abstraction layers. |
|
||||
| **Stripe account issues (holds, reserves, fraud disputes)** | Low | Medium | Standard SaaS risk. Maintain separate Stripe account from IT Pro Partner main account. Implement clear refund policy (30-day money-back guarantee). Fraud detection rules for signups from high-risk regions. |
|
||||
|
||||
### 9.5 Regulatory & Compliance Risks
|
||||
|
||||
| Risk | Probability | Impact | Mitigation |
|
||||
|------|-----------|--------|------------|
|
||||
| **OSINT data collection legality** | Low | High | All OSINT data is collected from publicly available sources. No scraping of login-protected content. Privacy policy clearly discloses data sources and usage. Compliance with GDPR/CCPA for data handling. Legal review of OSINT dossier templates before launch. |
|
||||
| **GDPR / data privacy regulations** | Low-Medium | Medium | Data minimization — only store what's needed. EU customer data stays on EU infrastructure. Privacy policy and data processing agreement (DPA) available. Cookie consent where required. |
|
||||
|
||||
---
|
||||
|
||||
## 10. Financial Projections
|
||||
|
||||
### 10.1 12-Month P&L Projection (Realistic Case)
|
||||
|
||||
| Line Item | Month 1–3 | Month 4–6 | Month 7–9 | Month 10–12 | Year 1 Total |
|
||||
|-----------|-----------|-----------|-----------|-------------|-------------|
|
||||
| **Revenue** | | | | | |
|
||||
| MRR (end of period) | $1,500 | $4,720 | $10,325 | $17,700 | — |
|
||||
| Cumulative Revenue | $2,400 | $12,990 | $38,065 | $84,085 | **$84,085** |
|
||||
| **Cost of Revenue** | | | | | |
|
||||
| Infrastructure + APIs | $1,200 | $1,800 | $2,400 | $3,000 | $8,400 |
|
||||
| LLM API costs | $600 | $1,500 | $3,000 | $4,500 | $9,600 |
|
||||
| Stripe fees (~3%) | $72 | $390 | $1,142 | $2,523 | $4,127 |
|
||||
| **Total COGS** | **$1,872** | **$3,690** | **$6,542** | **$10,023** | **$22,127** |
|
||||
| **Gross Profit** | **$528** | **$9,300** | **$31,523** | **$74,062** | **$61,958** |
|
||||
| _Gross Margin_ | _22%_ | _72%_ | _83%_ | _88%_ | _74%_ |
|
||||
| **Operating Expenses** | | | | | |
|
||||
| Development (remaining build) | $15,000 | $10,000 | $5,000 | $2,500 | $32,500 |
|
||||
| Content marketing | $1,500 | $3,000 | $3,000 | $3,000 | $10,500 |
|
||||
| Paid acquisition | $0 | $0 | $3,000 | $6,000 | $9,000 |
|
||||
| Tools + software | $300 | $300 | $500 | $500 | $1,600 |
|
||||
| Legal + compliance | $2,000 | $0 | $0 | $2,000 | $4,000 |
|
||||
| Miscellaneous | $500 | $500 | $750 | $1,000 | $2,750 |
|
||||
| **Total OpEx** | **$19,300** | **$13,800** | **$12,250** | **$15,000** | **$60,350** |
|
||||
| **Net Income** | **-$18,772** | **-$4,500** | **$19,273** | **$59,062** | **$1,608** |
|
||||
| _Net Margin_ | _Negative_ | _Negative_ | _51%_ | _70%_ | _2%_ |
|
||||
|
||||
**Key observations:**
|
||||
- Year 1 is effectively break-even on a cumulative basis
|
||||
- The business becomes meaningfully profitable by Month 7 (MRR covers all OpEx + COGS)
|
||||
- Exit run-rate in Month 12: ~$212K ARR with ~88% gross margins
|
||||
- Total Year 1 investment (net of revenue): approximately **-$22K in months 1–6**, fully recovered by month 9
|
||||
|
||||
### 10.2 3-Year Projection
|
||||
|
||||
| | Year 1 | Year 2 | Year 3 |
|
||||
|---|--------|--------|--------|
|
||||
| **Customers (end of year)** | 60 | 200 | 500 |
|
||||
| **ARR (end of year)** | $212,000 | $750,000 | $2,000,000 |
|
||||
| **Total Revenue** | $84,085 | $550,000 | $1,500,000 |
|
||||
| **Gross Margin** | 74% (ramping) | 87% | 89% |
|
||||
| **OpEx** | $60,350 | $180,000 | $400,000 |
|
||||
| **Net Income** | $1,608 | $298,500 | $935,000 |
|
||||
| **Net Margin** | 2% | 54% | 62% |
|
||||
|
||||
**Year 2 assumptions:**
|
||||
- 200 customers (3.3x growth)
|
||||
- First full-time hire: customer success / support ($60K–$80K)
|
||||
- Part-time SDR or agency outbound ($30K–$40K)
|
||||
- Content marketing investment increases
|
||||
- LLM costs optimized (caching, model routing)
|
||||
|
||||
**Year 3 assumptions:**
|
||||
- 500 customers (2.5x growth)
|
||||
- Small team: 2–3 full-time (engineering, support, sales)
|
||||
- Brand recognition drives organic inbound
|
||||
- API revenue from Enterprise tier becomes meaningful
|
||||
- Potential channel partnership revenue
|
||||
|
||||
### 10.3 Unit Economics (Steady State)
|
||||
|
||||
| Metric | Value | Industry Benchmark | Assessment |
|
||||
|--------|-------|-------------------|------------|
|
||||
| Average MRR per customer | ~$295 | $100–$500 (SMB SaaS) | Healthy |
|
||||
| Annual contract value (ACV) | ~$3,540 | $1,200–$6,000 | Strong for SMB |
|
||||
| Gross margin | 85–89% | 70–80% (good SaaS) | Excellent |
|
||||
| Monthly churn | 3–4% | 3–7% (SMB SaaS) | Target: <3% |
|
||||
| Customer lifetime (months) | 25–33 | 14–33 | Good |
|
||||
| LTV | ~$7,375–$9,735 | — | — |
|
||||
| CAC (blended) | $250–$400 | $200–$1,000 | Excellent |
|
||||
| LTV:CAC ratio | 18:1 to 39:1 | >3:1 (good) | Outstanding |
|
||||
| CAC payback period | ~1–2 months | <12 months (good) | Exceptional |
|
||||
|
||||
The unit economics are extraordinarily favorable because:
|
||||
1. **Near-zero marginal cost of delivery** — the search infrastructure is fixed-cost
|
||||
2. **Low CAC** — network effects (ITPP, LaunchCheck, referrals) dominate early acquisition
|
||||
3. **Annual contracts** — reduce churn, improve cash flow predictability
|
||||
|
||||
### 10.4 Capital Requirements
|
||||
|
||||
IntelSight is designed to be **capital-efficient from day one**:
|
||||
|
||||
| Item | Cost | Notes |
|
||||
|------|------|-------|
|
||||
| Remaining development (~385 hours) | $0 | Built by Germaine / internal team |
|
||||
| Initial infrastructure setup | $500 | Domain, SSL, minor VPS adjustments |
|
||||
| Legal (terms, privacy policy, incorporation review) | $3,000–$5,000 | One-time |
|
||||
| Content marketing (first 6 months) | $3,000–$5,000 | Writers, tools |
|
||||
| Design (logo, brand, landing page) | $2,000–$4,000 | One-time |
|
||||
| Stripe + tools (first 6 months) | $1,000–$2,000 | Ongoing, covered by early revenue |
|
||||
| **Total initial outlay** | **$9,500–$16,500** | |
|
||||
|
||||
This is not a venture-scale capital ask. The primary investment is **Germaine's time** — approximately 385 hours of development to complete the SaaS layer, plus ongoing content, sales, and support effort.
|
||||
|
||||
---
|
||||
|
||||
## 11. The Ask
|
||||
|
||||
### 11.1 What We Need to Launch
|
||||
|
||||
| Resource | Details | Timeline |
|
||||
|----------|---------|----------|
|
||||
| **Development capacity** | ~385 hours to build API layer, portal, billing, auth | Months 1–2 |
|
||||
| **Legal review** | Terms of service, privacy policy, data processing agreement, OSINT compliance review | Month 1 |
|
||||
| **Brand identity** | Logo, color system, landing page design, email templates | Month 1 |
|
||||
| **Content writer** | 4–8 blog posts for launch; ongoing 1–2/week | Month 1, ongoing |
|
||||
| **Beta testers** | 5–10 ITPP clients willing to provide feedback | Month 2 |
|
||||
| **Go-to-market execution** | Germaine's time for content, LinkedIn, community engagement, sales conversations | Ongoing (5–10 hrs/week) |
|
||||
| **Part-time support** | Customer support contractor (at $5K MRR) | Month 4–6 |
|
||||
| **Initial operating capital** | ~$10,000–$16,500 for one-time setup costs | Month 1 |
|
||||
|
||||
### 11.2 Immediate Decisions Required
|
||||
|
||||
1. **Approval to brand IntelSight as a standalone product** under IT Pro Partner ("IntelSight is a product of IT Pro Partner") — maintaining ITPP credibility while allowing IntelSight to develop its own market identity
|
||||
2. **Confirmation of pricing model** — are $199/$499/$1,499 the right anchor points? Should month-to-month premium be 10%, 15%, or 20%?
|
||||
3. **Resource allocation** — confirmation that Germaine can dedicate ~385 hours to the build, plus ongoing GTM effort
|
||||
4. **Launch timeline** — target soft launch in Month 3 (late October 2026)
|
||||
5. **Legal entity structure** — does IntelSight operate as a division of IT Pro Partner, or as a separate LLC with ITPP as parent? This affects liability, accounting, and eventual exit options
|
||||
|
||||
### 11.3 What Success Looks Like (Month 12)
|
||||
|
||||
- **60 paying customers** across Pro, Growth, and Enterprise tiers
|
||||
- **~$212,000 ARR** with 88% gross margins
|
||||
- **3–5 Enterprise customers** validating the high-end pricing
|
||||
- **Content library** of 50+ articles ranking for CI-related search terms
|
||||
- **Referral program** generating 15%+ of new customers
|
||||
- **LaunchCheck pipeline** converting at 10–15%
|
||||
- **Team:** Germaine + 1 part-time support contractor
|
||||
- **Option value:** At 10x ARR multiple (conservative for B2B SaaS), the business would be valued at ~$2.1M — built for a ~$15K initial investment
|
||||
|
||||
### 11.4 The Bigger Picture
|
||||
|
||||
IntelSight is not just a product — it's a strategic asset for IT Pro Partner. It demonstrates technical sophistication beyond traditional MSP services, creates a recurring revenue stream independent of services billing, and positions IT Pro Partner as a technology company, not just a services company.
|
||||
|
||||
In a market where established players charge $50,000/year for less capability, IntelSight's combination of transparent pricing, superior OSINT capability, and capital-efficient infrastructure is not merely competitive — it's disruptive. The question is not whether this market exists. It's whether we move fast enough to capture it.
|
||||
|
||||
---
|
||||
|
||||
## Appendix A: Competitor Pricing Deep Dive
|
||||
|
||||
| Platform | Pricing Model | Entry Annual Cost | Enterprise Annual Cost | Transparent? | Free Trial |
|
||||
|----------|--------------|-------------------|------------------------|-------------|------------|
|
||||
| **Crayon** | Custom, sales-led | ~$15,000–$16,000 | $50,000–$100,000+ | No | Demo only |
|
||||
| **Klue** | Quote-based, per-seat | ~$15,000–$20,000 | $100,000–$200,000+ | No | Demo only |
|
||||
| **Kompyte** | Custom (Semrush bundle) | ~$8,000–$12,000 (est.) | Custom | No | Demo only |
|
||||
| **Contify** | Custom, quote-based | ~$10,000–$15,000 (est.) | Custom | No | Demo only |
|
||||
| **Parano.ai** | Public, tiered | ~$1,068 (€89/mo) | €249/mo (~$3,200/yr) | Yes | 7-day trial |
|
||||
| **Semrush .Trends** | Add-on to Semrush | $3,468 ($289/mo add-on) | $3,468+ | Yes | 7-day trial |
|
||||
| **IntelSight** | Public, tiered | **$2,388 ($199/mo)** | **$17,988+ ($1,499/mo)** | **Yes** | **14-day trial** |
|
||||
|
||||
## Appendix B: API and Data Source Costs
|
||||
|
||||
| Service | Plan | Monthly Cost | Annual Cost | Limits |
|
||||
|---------|------|-------------|-------------|--------|
|
||||
| Crunchbase API | Basic | $49 | $588 | 50,000 API calls/mo, basic company/people data |
|
||||
| Hunter.io | Growth | $34 | $408 | 500 email lookups/mo (shared across tenants) |
|
||||
| deepseek-v4-pro | Pay-per-token | $200–$500 (est.) | $2,400–$6,000 | Variable; scales with customer count |
|
||||
| Super Search v2 | Internal | $0 | $0 | Already running on ITPP infrastructure |
|
||||
| Netcup VPS | Existing infra | $0 (absorbed) | $0 | Existing ITPP servers |
|
||||
|
||||
## Appendix C: Glossary
|
||||
|
||||
| Term | Definition |
|
||||
|------|-----------|
|
||||
| **ARR** | Annual Recurring Revenue — the annualized value of subscription contracts |
|
||||
| **MRR** | Monthly Recurring Revenue |
|
||||
| **CAC** | Customer Acquisition Cost — total sales & marketing spend / new customers acquired |
|
||||
| **LTV** | Lifetime Value — average revenue per customer over their lifetime |
|
||||
| **TAM** | Total Addressable Market — the total market demand for the product |
|
||||
| **SAM** | Serviceable Addressable Market — the portion of TAM reachable by the product |
|
||||
| **SOM** | Serviceable Obtainable Market — the portion of SAM realistically capturable |
|
||||
| **OSINT** | Open Source Intelligence — intelligence gathered from publicly available sources |
|
||||
| **CI** | Competitive Intelligence — the systematic collection and analysis of competitor information |
|
||||
| **MCP** | Model Context Protocol — the protocol used by Super Search v2 for AI integration |
|
||||
|
||||
---
|
||||
|
||||
**Document prepared by:** IntelSight Product Division, IT Pro Partner
|
||||
**Contact:** Germaine Brown
|
||||
**Classification:** Confidential — For Advisory Team Review Only
|
||||
**Version:** 1.0 — July 25, 2026
|
||||
|
||||
---
|
||||
|
||||
## Project Queue
|
||||
|
||||
*Queued Aug 4, 2026 — for external advisory team review preparation.*
|
||||
|
||||
| # | Task | Status |
|
||||
|---|---|---|
|
||||
| 1 | Tie `intelsight.io` login page to centralized auth (`auth.itpropartner.com`) | Queued |
|
||||
| 2 | Build out docs page at `intelsight.io/docs/` | Queued |
|
||||
| 3 | Build tier demo pages at `my.intelsight.io` (Starter, Pro, Enterprise) | Queued |
|
||||
| 4 | Deploy `$50 design team` to polish `intelsight.io` and `my.intelsight.io` | Queued |
|
||||
|
||||
**Dependencies:** Items 3 & 4 are for external advisory team review — keep in production if polished enough post-review, otherwise staging-only. Item 1 ties into existing centralized auth infrastructure (see `centralized-auth` skill).
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,372 @@
|
||||
# CartMyList PTA Marketing Blitz — Strategic Plan
|
||||
|
||||
**Date:** August 3, 2026
|
||||
**Product:** CartMyList (cartmylist.com)
|
||||
**Target:** Chatham County, GA — 55 SCCPSS schools, ~36,000+ students
|
||||
**Objective:** Get CartMyList in front of PTA leaders with maximum reach, minimum effort
|
||||
|
||||
---
|
||||
|
||||
## 1. PTA Contact Research — What We Found
|
||||
|
||||
### 1.1 SCCPSS School Count: ~55 Schools (8 Board Districts)
|
||||
|
||||
| District | Board Member | Email | Schools |
|
||||
|----------|-------------|-------|---------|
|
||||
| 1 | Denise Grabowski | denise.grabowski@sccpss.com | 8 schools (Ellis K-8, Heard, Hesse K-8, Isle of Hope K-8, J.G. Smith, Savannah Arts, STEM Bartlett, White Bluff) |
|
||||
| 2 | Vacant | — | 8 schools (A.B. Williams, Formey ELC, Hubert, J.G. Low, Jenkins HS, Myers, Savannah Classical, Susie King Taylor) |
|
||||
| 3 | Cornelia Hall | cornelia.hall@sccpss.com | 6 schools (Gadsden, Garrison K-8, Johnson HS, Oglethorpe, Savannah High, Savannah Early College) |
|
||||
| 4 | Shawn Kachmar | shawn.kachmar@sccpss.com | 5 schools (Coastal, Islands HS, Marshpoint, May Howard, Tybee Maritime) |
|
||||
| 5 | Paul Smith | paul.smith1@sccpss.com | 7 schools (Beach HS, Coastal Empire Montessori, DeRenne, Haven, Hodge, Largo-Tibet, Pulaski) |
|
||||
| 6 | David Bringman | david.bringman@sccpss.com | 5 schools (Georgetown K-8, Southwest ES, Southwest MS, Windsor Forest ES, Windsor Forest HS) |
|
||||
| 7 | Stephanie Campbell | stephanie.campbell@sccpss.com | 6 schools (Bloomingdale, Pooler, New Hampstead K-8, New Hampstead HS, West Chatham ES, West Chatham MS) |
|
||||
| 8 | Tonia Howard-Hall | tonia.howard-hall@sccpss.com | 9 schools (Brock, Butler, Garden City, Godley Station K-8, Gould, Groves HS, Mercer, Rice Creek K-8, Woodville-Tompkins) |
|
||||
|
||||
### 1.2 Confirmed PTA/PTO/PTSA Facebook Pages
|
||||
|
||||
| School | Type | Facebook |
|
||||
|--------|------|----------|
|
||||
| **Savannah Chatham Council of PTAs** | Council | facebook.com/SavannahChathamPTA |
|
||||
| Jacob G. Smith Elementary | PTA | facebook.com/jgsmithpta |
|
||||
| May Howard Elementary | PTA | facebook.com/mayhowardpta |
|
||||
| Marshpoint Elementary | PTA | facebook.com/MarshpointPTA |
|
||||
| White Bluff Elementary | PTA | facebook.com/WhiteBluffPTA |
|
||||
| Windsor Forest Elementary | PTA | facebook.com/WFESWildcatsPTA |
|
||||
| Herschel V. Jenkins High | PTSA | facebook.com/p/Herschel-V-Jenkins-High-School-PTSA-100085848390072 |
|
||||
| Savannah Early College HS | PTSA | facebook.com/SECHSPTSA |
|
||||
| Myers Middle School | PTA | facebook.com/p/Myers-Middle-School-PTA-Gators-100075861945142 |
|
||||
| New Hampstead K-8 | PTO | nhk8.sccpss.com/community-engagement/nhk8-parent-teacher-organization |
|
||||
|
||||
### 1.3 Key Distribution Channels
|
||||
|
||||
| Channel | Reach | Cost | Barrier |
|
||||
|---------|-------|------|---------|
|
||||
| **Peachjar e-flyer** | ALL SCCPSS parents via email + school webpages | ~$25/school (or free for free events) | District approval required; free tier limited to 1 flyer/30 days, up to 25 schools |
|
||||
| **Georgia PTA District 6** | All PTA units in region | $0 | Need intro to district leadership |
|
||||
| **SCCPSS Communications Dept** | District-wide announcements | $0 | Must pass Kurt Hetager's approval (communications@sccpss.com) |
|
||||
| **Parents of SCCPSS Facebook Group** | 4,000+ local parents | $0 | Group admin approval for promotional posts |
|
||||
| **Individual PTA Facebook pages** | School-specific parents | $0 (DM) | Labor-intensive, 1:1 outreach |
|
||||
| **SCCPSS board members** | Each represents 5-9 schools | $0 | Politically sensitive — don't cold-email without warm intro |
|
||||
|
||||
### 1.4 Contact Information Gaps
|
||||
|
||||
- **Council president:** Unknown (Sandra Cason was president 2011-2013, likely rotated out). Georgia PTA District 6 Facebook page is the best route to get current leadership.
|
||||
- **Individual PTA emails:** None found publicly. Facebook DMs or school website "Contact PTA" forms are the only path.
|
||||
- **Georgia PTA local unit directory:** Not publicly searchable — must go through state/district leadership.
|
||||
|
||||
---
|
||||
|
||||
## 2. Marketing Blitz Strategy — "Least Effort, Maximum Reach"
|
||||
|
||||
### The Core Insight
|
||||
|
||||
CartMyList's **School Plan is FREE** and pays the PTA **$1 per cart** — this is the entire pitch. PTAs spend all year begging for volunteers and money. CartMyList is a zero-effort fundraiser: no bake sales, no wrapping paper, no door-to-door. One email to parents, one Facebook post, and the PTA earns passive income during back-to-school season.
|
||||
|
||||
### 2.1 Strategy Pyramid (Highest ROI → Lowest)
|
||||
|
||||
```
|
||||
┌─────────────┐
|
||||
│ PEACHJAR │ ← 35,000+ parents in one shot
|
||||
│ (District) │
|
||||
├─────────────┤
|
||||
│ COUNCIL │ ← 1 meeting → all 50+ unit presidents
|
||||
│ MEETING │
|
||||
├─────────────┤
|
||||
│ FACEBOOK │ ← 4,000+ engaged parents
|
||||
│ GROUPS │
|
||||
├─────────────┤
|
||||
│ ROGER MOSS │ ← Board president endorsement
|
||||
│ (SCCPSS) │
|
||||
├─────────────┤
|
||||
│ 1:1 PTA │ ← Direct DMs to known units
|
||||
│ OUTREACH │
|
||||
└─────────────┘
|
||||
```
|
||||
|
||||
### 2.2 Phase 0: Foundation (This Week)
|
||||
|
||||
**Actions:**
|
||||
1. **Domain registration:** Register cartmylist.com immediately ($12/yr at Cloudflare). Set up Caddy routing and a simple landing page.
|
||||
2. **Landing page:** Single page at cartmylist.com — hero section ("Turn Any School Supply List Into a One-Click Amazon Cart"), upload demo (animated), "For PTAs" section highlighting the School Plan (free, $1/cart donation, branded portal), and a "Get Your School Started" form.
|
||||
3. **One-pager PDF:** A printable/sharable flyer for PTA presidents — problem, solution, how it works, the PTA deal (free + earn $1/cart), signup link.
|
||||
4. **Demo video:** 60-second screen recording of PDF upload → cart result. Host on landing page. This is the proof that silences skepticism.
|
||||
|
||||
**Cost:** $12 domain + time.
|
||||
|
||||
### 2.3 Phase 1: Peachjar — The Mass Distribution Play
|
||||
|
||||
**What:** Upload CartMyList as a district-wide Peachjar e-flyer.
|
||||
|
||||
**Why this is the #1 channel:**
|
||||
- Hits ALL SCCPSS parents via email (35,000+ households)
|
||||
- Embedded as image in email — no link to click, it's right there
|
||||
- Parents trust Peachjar (it's "from the school district")
|
||||
- $25/school × 55 schools = $1,375 for full district coverage, OR use the free tier (1 flyer/30 days, 25 schools max)
|
||||
|
||||
**Execution:**
|
||||
1. Register at Peachjar.com as "Community Organization"
|
||||
2. Create a professional flyer: "Turn Your Child's Supply List Into a One-Click Amazon Cart — Free Service for SCCPSS Families"
|
||||
3. Submit to district for approval (Kurt Hetager's office)
|
||||
4. Select target schools (all elementary + K-8 schools first — those are supply-list-heavy)
|
||||
5. Time it for late July 2027 (peak BTS shopping window)
|
||||
|
||||
**Estimated reach:** 25-55 schools × hundreds of parents each = 10,000-35,000 parents.
|
||||
|
||||
**Cost:** $0 (free tier, first 25 schools) to $1,375 (full district, paid tier).
|
||||
|
||||
### 2.4 Phase 2: Council Meeting — One Room, 50+ PTAs
|
||||
|
||||
**What:** Get on the Savannah Chatham Council of PTAs meeting agenda.
|
||||
|
||||
**Why this is the #2 channel:**
|
||||
- Council meetings gather PTA presidents from 50+ local units
|
||||
- One 10-minute presentation → every PTA president hears the pitch
|
||||
- Warm endorsement from council leadership cascades to every school
|
||||
- Presidents make the decision — if they say yes, it's done
|
||||
|
||||
**Execution:**
|
||||
1. Find current council president via Georgia PTA District 6 Facebook page
|
||||
2. Send a concise email: "Free fundraiser for all 50+ SCCPSS PTAs — 10 minutes on your next council meeting agenda"
|
||||
3. Prepare 5-slide deck: problem (supply list hell), solution (CartMyList), PTA deal (free + $1/cart), demo, signup
|
||||
4. Attend meeting, present, answer questions, collect emails
|
||||
|
||||
**Estimated reach:** 50+ PTA presidents × ~300 families each = 15,000 families.
|
||||
|
||||
**Cost:** $0 (gas money for the meeting).
|
||||
|
||||
### 2.5 Phase 3: Facebook Parent Groups — Direct to Parents
|
||||
|
||||
**What:** Post in SCCPSS parent Facebook groups.
|
||||
|
||||
**Known groups:**
|
||||
- Parents of SCCPSS (facebook.com/groups/623536371870003)
|
||||
- Individual school parent groups (every school has one)
|
||||
- Savannah Moms groups
|
||||
- Back-to-school Savannah groups
|
||||
|
||||
**Execution:**
|
||||
1. Join "Parents of SCCPSS" group
|
||||
2. Post: "Parent here — I built a free tool that turns school supply lists into Amazon carts. Upload the PDF, get a one-click cart. No more Walmart trips. Thought other SCCPSS parents might want it. [link]"
|
||||
3. This is Germaine posting as a parent, not a business — way more trusted
|
||||
4. Promote PTA angle: "If your school's PTA signs up, the school earns $1/cart — free fundraiser"
|
||||
|
||||
**Estimated reach:** 500-2,000 engaged parents per post cycle.
|
||||
|
||||
**Cost:** $0.
|
||||
|
||||
### 2.6 Phase 4: Board President Endorsement
|
||||
|
||||
**What:** Get Roger Moss (SCCPSS Board President, roger.moss@sccpss.com) to endorse or at least not block it.
|
||||
|
||||
**Why:** If the board president mentions CartMyList positively in a board meeting or newsletter, it's instant credibility. And Peachjar approval flows smoother with board awareness.
|
||||
|
||||
**Execution:**
|
||||
1. Germaine (as a SCCPSS parent of kids at STEM Bartlett) emails Roger Moss: "I built a free tool for SCCPSS parents that turns supply lists into Amazon carts. It's free for families and free for schools — PTAs actually earn money. Would love 5 minutes to show you."
|
||||
2. Parent-to-board-president framing, not vendor-to-district
|
||||
|
||||
**Cost:** $0.
|
||||
|
||||
---
|
||||
|
||||
## 3. Email Messaging — PTA Outreach Sequences
|
||||
|
||||
### 3.1 Cold Email to PTA Presidents (Template)
|
||||
|
||||
**Subject:** Free fundraiser for [School Name] PTA — zero effort, $1 per family
|
||||
|
||||
---
|
||||
|
||||
Hi [Name],
|
||||
|
||||
I'm a SCCPSS parent (kids at STEM Bartlett). I built something that I think could help your PTA raise money with zero volunteer hours.
|
||||
|
||||
**The problem:** Every summer, parents at [School Name] spend 2+ hours fighting Walmart crowds to buy school supplies from the teacher's list. It's miserable.
|
||||
|
||||
**What I built:** CartMyList — upload the supply list PDF, get a one-click Amazon cart in 20 seconds. All 45 items, correctly matched, ready to buy.
|
||||
|
||||
**The PTA deal (free):**
|
||||
- CartMyList is **completely free for schools and PTAs**
|
||||
- We donate **$1 per cart** back to your PTA — passive fundraiser
|
||||
- You get a **branded portal** ([schoolname].cartmylist.com) with all grade-level supply lists pre-loaded
|
||||
- You send **one email** to parents, post once on Facebook — that's it. No volunteers needed.
|
||||
|
||||
If 100 families use it during back-to-school season, that's **$100 for your PTA** with zero bake sales, zero wrapping paper, zero effort.
|
||||
|
||||
I'm rolling this out for the 2027 school year. Would you be open to a 10-minute call to see if this makes sense for [School Name]?
|
||||
|
||||
Best,
|
||||
Germaine Brown
|
||||
SCCPSS Parent, STEM Bartlett
|
||||
cartmylist.com
|
||||
|
||||
---
|
||||
|
||||
### 3.2 Council Meeting Pitch Request (Template)
|
||||
|
||||
**Subject:** 10 minutes at next council meeting — free fundraiser for all 50+ SCCPSS PTAs
|
||||
|
||||
---
|
||||
|
||||
Hi [Council President Name],
|
||||
|
||||
My name is Germaine Brown — I'm a SCCPSS parent and the founder of CartMyList, a tool that turns school supply lists into one-click Amazon carts.
|
||||
|
||||
I'd love 10 minutes at your next Savannah Chatham Council of PTAs meeting to share something that can put money in every PTA's pocket with zero volunteer hours.
|
||||
|
||||
**The short version:**
|
||||
- CartMyList is **free for PTAs** — no cost, no catch
|
||||
- PTAs earn **$1 per cart** parents create through their school portal
|
||||
- One email to parents, one Facebook post — done. Passive income.
|
||||
- A 500-student elementary school could earn $200-500 during back-to-school season without a single bake sale
|
||||
|
||||
I've got a quick demo and a one-pager. Happy to come to any meeting, any time.
|
||||
|
||||
Is there space on the agenda?
|
||||
|
||||
Best,
|
||||
Germaine Brown
|
||||
SCCPSS Parent, STEM Bartlett
|
||||
(912) [phone]
|
||||
cartmylist.com
|
||||
|
||||
---
|
||||
|
||||
### 3.3 Peachjar Flyer Text (Template)
|
||||
|
||||
**Headline:** Turn Your Child's Supply List Into a One-Click Amazon Cart — Free for SCCPSS Families
|
||||
|
||||
**Subhead:** Upload the PDF. Get a cart. Done in 20 seconds.
|
||||
|
||||
**Body:**
|
||||
|
||||
Stop fighting Walmart crowds. CartMyList reads your child's school supply list and builds a complete Amazon cart — all 45 items, correctly matched, ready to buy.
|
||||
|
||||
**How it works:**
|
||||
1. Go to cartmylist.com
|
||||
2. Upload your child's supply list PDF
|
||||
3. Get an Amazon cart with everything pre-loaded
|
||||
4. One click buys it all — delivered to your door
|
||||
|
||||
**Free for SCCPSS families.** No catch. No subscription.
|
||||
|
||||
**PTA Fundraiser:** When your school's PTA signs up (free), they earn $1 per cart — passive income during back-to-school season.
|
||||
|
||||
**Call to action:** cartmylist.com
|
||||
|
||||
---
|
||||
|
||||
## 4. Talking Points & Elevator Pitch
|
||||
|
||||
### 4.1 30-Second Elevator Pitch
|
||||
|
||||
"You know the back-to-school supply list nightmare — 45 items, specific brands, 2 hours at Walmart with screaming kids. I built CartMyList: upload the PDF, we build a one-click Amazon cart in 20 seconds. It's free for parents. And if the PTA signs up — also free — they earn a dollar per cart. Zero effort fundraiser."
|
||||
|
||||
### 4.2 Parent-Facing Talking Points
|
||||
|
||||
- "Your kid's teacher already picked the exact items. Why hunt for them?"
|
||||
- "The list has 45 items. We match 45 items. One click."
|
||||
- "No subscription, no upsell, no catch. Upload the PDF, get the cart."
|
||||
- "Amazon delivers. You keep your Saturday."
|
||||
- "It's free. The PTA actually earns money when you use it."
|
||||
|
||||
### 4.3 PTA-Facing Talking Points
|
||||
|
||||
- **"Free passive fundraiser."** No volunteers, no inventory, no shipping.
|
||||
- **"$1 per cart, straight to your PTA."** 100 families = $100. 500 = $500. During the 6-week BTS window.
|
||||
- **"Branded portal for your school."** [yourschool].cartmylist.com, all grade-level lists pre-loaded.
|
||||
- **"One email. One Facebook post."** That's the entire time commitment.
|
||||
- **"We handle everything."** PDF parsing, Amazon matching, cart building, email delivery. You don't touch it.
|
||||
- **"No risk."** It's free. If nobody uses it, you lose nothing. If they do, you earn.
|
||||
|
||||
### 4.4 Board/District Talking Points
|
||||
|
||||
- "This is a parent-built tool for SCCPSS parents."
|
||||
- "It reduces the back-to-school burden on families — especially working parents and single-parent households."
|
||||
- "It's free for families and free for schools. No cost to the district."
|
||||
- "PTAs earn passive income — this fills the fundraising gap without competing with existing programs."
|
||||
|
||||
---
|
||||
|
||||
## 5. Objection Handling
|
||||
|
||||
| Objection | Response |
|
||||
|-----------|----------|
|
||||
| "We already have a school supply kit program." | "Those kits are $60-90 and don't match the teacher's exact list. CartMyList is free for parents and matches the specific brands the teacher asked for — Ticonderoga pencils, not generic." |
|
||||
| "Is this really free?" | "Yes. Parents pay nothing. PTAs pay nothing. We earn a small Amazon commission on the cart — that's our business model." |
|
||||
| "What if items are out of stock?" | "Our Family Plan finds the closest alternative. Even the free tier handles 95%+ of items." |
|
||||
| "We don't have time to manage this." | "You don't manage it. We do. You send one email and one Facebook post. We handle everything else." |
|
||||
| "Is this approved by the district?" | "It's a free community resource, same as any other parent tool. We're working through Peachjar for official distribution." |
|
||||
| "What if Amazon changes how carts work?" | "The cart URL format has been stable for years. If it changes, we adapt — this is our only product, so we'd fix it fast." |
|
||||
|
||||
---
|
||||
|
||||
## 6. Timeline — 2027 Back-to-School Blitz
|
||||
|
||||
| Date | Action | Owner |
|
||||
|------|--------|-------|
|
||||
| **Aug 2026** | Soft launch — free tier live at cartmylist.com, collect parent emails | Germaine |
|
||||
| **Sep-Oct 2026** | Build Stripe payment, user accounts, cart preview page | Germaine |
|
||||
| **Jan 2027** | Identify council president, request council meeting slot | Germaine |
|
||||
| **Feb 2027** | Present at Savannah Chatham Council of PTAs meeting | Germaine |
|
||||
| **Mar 2027** | Follow up with interested PTAs, onboard 5-10 pilot schools | Germaine |
|
||||
| **Apr 2027** | Create Peachjar flyer, submit for district approval | Germaine |
|
||||
| **May 2027** | Facebook group posts, parent awareness campaign | Germaine |
|
||||
| **Jun 2027** | Onboard remaining PTAs, get supply lists from teachers | PTAs |
|
||||
| **Jul 2027** | Peachjar flyer goes live (peak BTS shopping), Facebook ad push | Germaine |
|
||||
| **Aug 2027** | Full BTS season — track carts, payout PTAs, collect testimonials | Germaine |
|
||||
|
||||
---
|
||||
|
||||
## 7. Metrics & Goals
|
||||
|
||||
| Metric | Conservative | Target | Aggressive |
|
||||
|--------|-------------|--------|------------|
|
||||
| PTAs signed up | 5 | 15 | 30 |
|
||||
| Schools with pre-loaded lists | 3 | 10 | 25 |
|
||||
| Carts generated (Jul-Aug 2027) | 200 | 1,000 | 3,000 |
|
||||
| PTA donations paid ($1/cart) | $200 | $1,000 | $3,000 |
|
||||
| Parent email list (for 2028) | 100 | 500 | 2,000 |
|
||||
| Revenue (service + commission) | $1,560 | $7,800 | $23,400 |
|
||||
|
||||
---
|
||||
|
||||
## 8. What Needs to Happen First (Priority Order)
|
||||
|
||||
1. **Register cartmylist.com** — $12, 10 minutes. Domain is the foundation.
|
||||
2. **Build simple landing page** — cartmylist.com with demo, PTA section, and email signup. 4-6 hours.
|
||||
3. **Identify council president** — DM Georgia District 6 PTA on Facebook, or ask J.G. Smith PTA (Germaine's kids' school) who runs the council.
|
||||
4. **Build the School Plan portal tech** — multi-school branded portals, PTA signup, tracking per-school cart counts. ~40 hours (biggest dev lift).
|
||||
5. **Create Peachjar flyer** — design, submit, get approved. 2-3 hours + $0-25/school.
|
||||
|
||||
---
|
||||
|
||||
## 9. Appendix: Every SCCPSS School by District
|
||||
|
||||
### District 1 (Denise Grabowski)
|
||||
Ellis K-8, Heard Elementary, Hesse K-8, Isle of Hope K-8, J.G. Smith Elementary, Savannah Arts Academy HS, STEM Academy at Bartlett Middle School, White Bluff Elementary
|
||||
|
||||
### District 2 (Vacant)
|
||||
A.B. Williams Elementary, ELC-Henderson E. Formey, Hubert Middle School, Juliette Gordon Low ES, Jenkins High School, Myers Middle School, Savannah Classical Academy, Susie King Taylor Community School
|
||||
|
||||
### District 3 (Cornelia Hall)
|
||||
Gadsden Elementary, Garrison K-8, Johnson High School, Oglethorpe Charter School, Liberal Studies at Savannah High, Savannah Early College High School
|
||||
|
||||
### District 4 (Shawn Kachmar)
|
||||
Coastal Middle School, Islands High School, Marshpoint Elementary, May Howard Elementary, Tybee Island Maritime Academy
|
||||
|
||||
### District 5 (Paul Smith)
|
||||
Beach High School, Coastal Empire Montessori Charter, DeRenne Middle School, Haven Elementary, Hodge Elementary, Largo-Tibet Elementary, Pulaski Elementary
|
||||
|
||||
### District 6 (David Bringman)
|
||||
Georgetown K-8, Southwest Elementary, Southwest Middle School, Windsor Forest Elementary, Windsor Forest High School
|
||||
|
||||
### District 7 (Stephanie Campbell)
|
||||
Bloomingdale Elementary, Pooler Elementary, New Hampstead K-8, New Hampstead High School, West Chatham Elementary, West Chatham Middle School
|
||||
|
||||
### District 8 (Tonia Howard-Hall)
|
||||
Brock Elementary, Butler Elementary, Garden City Elementary, Godley Station K-8, Gould Elementary, Groves High School, Mercer Middle School, Rice Creek K-8, Woodville-Tompkins High School
|
||||
|
||||
---
|
||||
|
||||
**Document prepared by:** Sho'Nuff Brown
|
||||
**Next step:** Register cartmylist.com, build landing page, identify council president
|
||||
@@ -0,0 +1,123 @@
|
||||
# Chatham County PTA Landscape — Savannah, GA
|
||||
# Compiled August 3, 2026 for CartMyList GTM
|
||||
|
||||
## OVERVIEW
|
||||
- **70+ PTA organizations** in the Savannah metro area (CauseIQ directory)
|
||||
- **24 PTAs** actively using JoinTotem for membership management
|
||||
- **49 SCCPSS schools** with school supply lists on sccpss.com
|
||||
- **Savannah-Chatham Council of PTAs** is the umbrella org (Georgia PTA District 6)
|
||||
- School year started **August 3, 2026**
|
||||
|
||||
## COUNCIL LEADERSHIP
|
||||
- **President (current):** Sandra Cason (per LinkedIn; also president in 2011-2012)
|
||||
- LinkedIn: linkedin.com/in/sandra-cason-7740913b
|
||||
- Also runs Farm to School program
|
||||
- **President (2021 PDF):** Tina Kelly — sccoftas@gmail.com
|
||||
- Georgia PTA account: SavannahChatham.D6@georgiapta.org
|
||||
- **Council Facebook:** facebook.com/SavannahChathamPTA (1,206 likes)
|
||||
- **Georgia PTA:** georgiapta.org, office@georgiapta.org, 404-659-0214
|
||||
|
||||
## ALL KNOWN PTAs ON JOINTOTEM (24 Total)
|
||||
Each has a JoinTotem page at jointotem.com/ga/savannah/{slug} with "Join Now" — the membership form goes to PTA officers.
|
||||
|
||||
### High Schools
|
||||
| School | Type | Notes |
|
||||
|--------|------|-------|
|
||||
| Beach HS PTA | PTA | Generic template |
|
||||
| Islands High School PTSA | PTSA | Generic template |
|
||||
| Windsor Forest HS PTA | PTA | Generic template |
|
||||
| Savannah Arts Academy PTSA | PTSA | Generic template |
|
||||
| Savannah Early College High PTSA | PTSA | Generic template |
|
||||
|
||||
### K-8 Schools
|
||||
| School | Type | Notes |
|
||||
|--------|------|-------|
|
||||
| E F Garrison K-8 PTA | PTA | Your kids' school! Arts-focused. Generic template |
|
||||
| Georgetown K-8 PTA | PTA | Has custom description |
|
||||
| Hesse K-8 PTA | PTA | Generic template |
|
||||
| CEMCS PTA (Coastal Empire Montessori) | PTA | Generic template |
|
||||
|
||||
### Middle Schools
|
||||
| School | Type | Notes |
|
||||
|--------|------|-------|
|
||||
| STEM Academy PTSA | PTSA | Your kids' school! "STEM based public Middle school, Choice program" |
|
||||
| Coastal Middle School PTSA, Inc. | PTSA | Generic template |
|
||||
| Southwest Middle PTSA | PTSA | Generic template |
|
||||
|
||||
### Elementary Schools
|
||||
| School | Type | Notes |
|
||||
|--------|------|-------|
|
||||
| **Jacob G Smith ES PTA** | PTA | Has **own website**: jacobgsmithpta.org (Squarespace). Your kids' former school |
|
||||
| **May Howard ES PTA** | PTA | Has **own website**: mayhowardpta.weebly.com. Detailed description — raises money for curriculum, tech, teacher training, equipment |
|
||||
| Butler ES PTA | PTA | Generic template |
|
||||
| Carrie E. Gould ES PTA | PTA | Generic template |
|
||||
| Ellis Montessori PTA | PTA | Has custom description |
|
||||
| Gadsden ES PTA | PTA | Custom description: "excited about 2026-2027 School Year" |
|
||||
| Garden City ES PTA | PTA | Generic template |
|
||||
| Haven ES PTA | PTA | Generic template |
|
||||
| Juliette Gordon Low ES PTA | PTA | Generic template |
|
||||
| Marshpoint Elementary School PTA | PTA | Generic template |
|
||||
| Virginia L Heard ES PTA | PTA | Custom description: "primary educational support organization providing resources" |
|
||||
| WBES PTA (White Bluff ES) | PTA | Custom description: "make every child's potential a reality" |
|
||||
| Windsor Forest ES PTA | PTA | Generic template |
|
||||
|
||||
## ADDITIONAL PTAs KNOWN FROM CAUSEIQ (not on JoinTotem)
|
||||
- Rice Creek PTSA (Port Wentworth)
|
||||
- Robert W Gadsden ES PTA
|
||||
- Mercer MS PTA
|
||||
- Shuman ES PTA
|
||||
- Jacob G Smith ES PTA
|
||||
- Woodville Tompkins High PTSA
|
||||
- Susie King Taylor Community PTA
|
||||
- Savannah Classical Academy PTSA
|
||||
|
||||
## SCCPSS SCHOOL SUPPLY LIST INFRASTRUCTURE
|
||||
Every SCCPSS school has its own supply list page at {school}.sccpss.com. The district also aggregates them at:
|
||||
- sccpss.com/families/back-to-school/supplies (2026-27 lists)
|
||||
|
||||
This is the integration surface — each school's PDF list links directly to the product.
|
||||
|
||||
## COMPETITION: TeacherLists.com
|
||||
- **1M+ school supply lists** on their platform
|
||||
- Partners: Amazon, Target, Walmart, Staples, Walgreens
|
||||
- Free for schools and teachers
|
||||
- Digitize supply lists and make them "shoppable" — but each item is individually shoppable, NOT one-click cart
|
||||
- **CartMyList differentiator:** One Amazon cart link from a PDF upload. CartMyList competes on convenience, not list management.
|
||||
|
||||
## GTM STRATEGY FOR PTA OUTREACH
|
||||
|
||||
### Play 1: Council-Level Pitch
|
||||
Go through Savannah-Chatham Council of PTAs (Sandra Cason). Position as a zero-effort fundraiser. Council endorses → cascades to all 24+ local PTAs.
|
||||
|
||||
### Play 2: School-by-School Direct
|
||||
Use each school's supply list page as proof of concept. "I saw your supply list for 2026-27. Here's what it looks like as a one-click Amazon cart. Want this for your parents? Free for you, $1/cart to your PTA."
|
||||
|
||||
### Play 3: Parent Ambassador
|
||||
Your kids are at STEM Academy (PTSA member) and Garrison (PTA member). Start there — dogfood it with your own school supply lists.
|
||||
|
||||
### Play 4: Back-to-School Timing
|
||||
School started TODAY (Aug 3). The window is NOW — parents are actively buying supplies. Even a late entry with a "last-minute shopping" angle works.
|
||||
|
||||
## DOMAIN AVAILABILITY (as of Aug 3, 2026)
|
||||
|
||||
### AVAILABLE ✅
|
||||
| Domain | Verdict |
|
||||
|--------|---------|
|
||||
| **cartmylist.com** | Short, verb-driven, memorable. Top pick from Round 1 |
|
||||
| **mylistcart.com** | Close variant, what-it-does naming |
|
||||
| **listcart.co** | Shortest, clean |
|
||||
| **quicklistcart.com** | Speed/value positioning |
|
||||
| **collecthq.co** | Broader rebrand (from Round 2) |
|
||||
| **submithub.co** | Broader rebrand (from Round 2) |
|
||||
| **ptafund.co / ptafund.us** | PTA-specific fundraising angle |
|
||||
| **fuelyourpta.com** | Bold, fundraising-focused |
|
||||
|
||||
### TAKEN ❌
|
||||
orderport.com, orderport.io, cartflow.io, gatherhq.co, list2go.com, schoolcart.com, listporter.com, supplyporter.com, listbridge.com, cartbridge.co, supplylist.co
|
||||
|
||||
## KEY CONTACT METHODS FOR PTAs
|
||||
1. **JoinTotem "Join Now" buttons** — these submit to the PTA officers directly. Could use the membership form as a demo/dogfooding channel.
|
||||
2. **Facebook pages** — Most schools have individual PTA Facebook pages. Search: "{School Name} PTA" on Facebook.
|
||||
3. **School websites** — Each SCCPSS school has a site at {slug}.sccpss.com. Contact forms there reach the front office → can forward to PTA.
|
||||
4. **Georgia PTA office** — office@georgiapta.org / 404-659-0214 for council-level introductions.
|
||||
5. **Council Facebook** — facebook.com/SavannahChathamPTA — 1,206 followers. Post or DM.
|
||||
@@ -0,0 +1,662 @@
|
||||
# SchoolCart Business Proposal
|
||||
|
||||
**Prepared for:** Germaine Brown & Advisory Team
|
||||
**Date:** July 27, 2026
|
||||
**Company:** IT Pro Partner — Product Division
|
||||
**Product:** SchoolCart (Working Title — formerly shopping.iamgmb.com)
|
||||
**Classification:** Confidential — Advisory Review
|
||||
|
||||
---
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Executive Summary](#1-executive-summary)
|
||||
2. [Elevator Pitch](#2-elevator-pitch)
|
||||
3. [Problem Statement](#3-problem-statement)
|
||||
4. [Market Analysis](#4-market-analysis)
|
||||
5. [Product Overview](#5-product-overview)
|
||||
6. [Revenue Model](#6-revenue-model)
|
||||
7. [Competitive Advantages](#7-competitive-advantages)
|
||||
8. [Go-to-Market Strategy](#8-go-to-market-strategy)
|
||||
9. [Risk Analysis](#9-risk-analysis)
|
||||
10. [Financial Projections](#10-financial-projections)
|
||||
11. [The Ask](#11-the-ask)
|
||||
|
||||
---
|
||||
|
||||
## 1. Executive Summary
|
||||
|
||||
SchoolCart turns any school supply list PDF into a one-click Amazon cart — saving parents 2–3 hours of manual shopping, stores, and frustration. The parent uploads the PDF, the system parses 45+ line items, matches each to an Amazon ASIN, and returns a pre-filled cart link. One click buys everything. SchoolCart earns Amazon Associates commission on every purchase plus optional service fees for premium features.
|
||||
|
||||
Every year, **54 million K-12 students** in the US receive supply lists. Their parents collectively spend **$3.8 billion** on school supplies. Most of this spend happens in the 6-week back-to-school window (July–August), fought in crowded Walmart and Target aisles or through tedious manual Amazon searches. The current alternatives — prepackaged kits ($60–$90, limited items), store-hopping, or item-by-item Amazon searching — all leave parents frustrated, overspent, or both.
|
||||
|
||||
SchoolCart already works. The core pipeline — PDF upload, item parsing, Amazon ASIN matching, cart URL generation, and email delivery — is built and tested on a live 45-item supply list. The system correctly parsed 45 items, matched all to Amazon ASINs, and generated a functional cart URL carrying the `itpropartner-20` Associate Tag. What's missing is the payment gating (Stripe to unlock the cart link), subscription tiers, and customer-facing branding.
|
||||
|
||||
The numbers are straightforward. At **$4.99 per cart** (impulse-buy price), converting just **0.1% of the 54 million students' parents** yields **$2.7M/year in service fees** plus **$50K–$150K in Amazon Associates commissions**. Even at 1,000 paid carts per back-to-school season, that's **$5K in service fees + $500–$1.5K in commissions** with near-zero marginal cost — a capital-efficient micro-SaaS that funds itself from day one.
|
||||
|
||||
This proposal outlines the market opportunity, product architecture, revenue model, go-to-market plan, and what's needed to ship before the 2027 back-to-school season.
|
||||
|
||||
---
|
||||
|
||||
## 2. Elevator Pitch
|
||||
|
||||
School supply season sucks. You get a list with 45 random items, fight Walmart crowds for 2 hours, and still forget the pink erasers. SchoolCart fixes it: upload your kid's supply list PDF, we turn it into a one-click Amazon cart in 20 seconds, and everything shows up at your door. No store trips, no missed items. Name your kid's cart, get the right brand every time. $4.99 gets you a link. $9.99 gets you a perfect cart with your kid's name on it. $19.99 covers the whole family all year.
|
||||
|
||||
---
|
||||
|
||||
## 3. Problem Statement
|
||||
|
||||
### 3.1 The Back-to-School Shopping Nightmare
|
||||
|
||||
The school supply ritual is broken. Every summer, 54 million K-12 parents receive a supply list — typically a PDF or paper handout listing 30–60 specific items: "4 packages Ticonderoga pencils only," "1 box Kleenex (Girls Only)," "1 roll of paper towels (Boys Only)," "Spray Sunscreen," "plastic spoons and forks," "Water Color Paints (Label with name)," "3 composition notebooks (wide-ruled)," and so on.
|
||||
|
||||
These lists are:
|
||||
- **Highly specific** — wrong brand/broken sharpeners/Ticonderoga pencils only
|
||||
- **Balkanized** — different lists for Boys vs. Girls, different items per teacher
|
||||
- **Time-sensitive** — must buy before school starts, often on a tight timeline
|
||||
- **Large** — 30–60 items, each requiring its own search and decision
|
||||
|
||||
### 3.2 How Parents Currently Solve It
|
||||
|
||||
| Method | Time Cost | Money Cost | Pain Level |
|
||||
|--------|-----------|------------|------------|
|
||||
| **Walmart/Target trip** | 2–3 hours + driving | Retail price + impulse buys | 🔴 High — crowds, out-of-stocks, multiple stores |
|
||||
| **Manual Amazon search** | 1–2 hours | Online price + Prime shipping | 🟡 Medium — tedious, 45 individual searches/orders |
|
||||
| **Prepackaged school kit** | 10 minutes | $60–$90 (50–100% markup) | 🟢 Low but expensive and often incomplete — "kit has generic pencils, teacher wants Ticonderoga" |
|
||||
| **Spreadsheet + store comparison** | 3–5 hours | Optimized but insane time cost | 🔴 High — only organized parents attempt this |
|
||||
| **Sibling hand-me-downs** | Varies | $0 but incomplete | 🟡 Medium — works for some items, not all |
|
||||
|
||||
### 3.3 The Gap SchoolCart Fills
|
||||
|
||||
**No tool exists** that takes a raw school supply list PDF and produces a complete, accurate, one-click Amazon cart. The existing services (TeacherLists, SchoolSupplyBox, etc.) sell prepackaged kits — you get what they decided to bundle, not what the teacher actually asked for. And no one solves the core friction: matching a 45-item PDF to Amazon ASINs automatically.
|
||||
|
||||
SchoolCart is the only service that:
|
||||
1. **Parses the actual PDF** — line items, quantities, notes, gendered items
|
||||
2. **Matches each item to the right Amazon ASIN** — "Ticonderoga pencils" not "any pencils"
|
||||
3. **Generates a complete cart** — one click buys everything
|
||||
4. **Earns commission** — Amazon Associates tag built into every cart
|
||||
5. **Delivers it** — email the link, done
|
||||
|
||||
---
|
||||
|
||||
## 4. Market Analysis
|
||||
|
||||
### 4.1 Total Addressable Market (TAM)
|
||||
|
||||
| Metric | Value | Source |
|
||||
|--------|-------|--------|
|
||||
| K-12 students in US | ~54 million | NCES (2024) |
|
||||
| Households with school-age children | ~36 million | Census (2024) |
|
||||
| Average annual school supply spend per student | ~$70 | Deloitte Back-to-School Survey 2024 |
|
||||
| **Total annual school supply spend** | **~$3.8 billion** | National Retail Federation 2024 |
|
||||
| Back-to-school retail season total | ~$41.5 billion (clothing + supplies + electronics) | NRF 2024 |
|
||||
| Online share of back-to-school shopping | ~57% (growing) | Deloitte 2024 |
|
||||
|
||||
**TAM (Service fees):** 36M households × potential $4.99–$9.99 per list = **$180M–$360M/year** if every household used a paid cart service.
|
||||
|
||||
**TAM (Commissions):** $3.8B supply spend × 4% average Amazon Associates commission = **$152M/year** addressable commission pool.
|
||||
|
||||
### 4.2 Serviceable Addressable Market (SAM)
|
||||
|
||||
SchoolCart targets English-speaking US households with school-age children who already shop online for school supplies.
|
||||
|
||||
| Parameter | Value | Methodology |
|
||||
|-----------|-------|-------------|
|
||||
| Online shoppers among school households | ~57% (20.5M households) | Deloitte 2024 |
|
||||
| Would use a list-to-cart service | ~15% of online shoppers (3.1M households) | Conservative — comparable to meal-kit adoption rates |
|
||||
| Average annual spend per household | ~$150 (1–2 students) | NRF 2024 |
|
||||
| **SAM (service fees)** | **3.1M × $4.99 = ~$15.5M/year** | If every household used paid once |
|
||||
| **SAM (commissions)** | 3.1M × $150 × 4% = **~$18.6M/year** | If all online spend captured |
|
||||
|
||||
### 4.3 Serviceable Obtainable Market (SOM)
|
||||
|
||||
| Year | SOM (Carts) | SOM (Revenue) | Methodology |
|
||||
|------|-------------|---------------|-------------|
|
||||
| Year 1 (2027 BTS) | 500–2,000 | $2,500–$10,000 (service) + $500–$4,000 (commission) | Facebook groups, organic, ITPP network. Beta in 2026, full launch for 2027 BTS season |
|
||||
| Year 2 (2028 BTS) | 5,000–15,000 | $25,000–$75,000 (service) + $5,000–$30,000 (commission) | Word-of-mouth, school/PTA plans, SEO |
|
||||
| Year 3 (2029 BTS) | 20,000–50,000 | $100,000–$250,000 (service) + $20,000–$100,000 (commission) | PTA partnerships, brand awareness, paid acquisition |
|
||||
|
||||
**Key reality:** This is a **seasonal business**. 80%+ of annual revenue happens in July–August. The rest of the year, the service sits idle unless we expand to other list types (holiday wish lists, team sports equipment lists, college dorm lists).
|
||||
|
||||
### 4.4 Competitive Landscape
|
||||
|
||||
| Competitor | What they do | Price | SchoolCart Advantage |
|
||||
|------------|-------------|-------|---------------------|
|
||||
| **TeacherLists.com** | Prepackaged school supply kits, teacher creates list, kits shipped to school | $60–$90/kit (marked up) | SchoolCart lets parents buy what's actually on the list, not a pre-bundled kit. Kits only include ~30 items; real lists have 45+. And you wait 2–3 weeks for kit delivery. |
|
||||
| **SchoolSupplyBox.com** | Same model as TeacherLists — prepackaged kits | $50–$80/kit | Same limitations. Parent has no control over brands or substitutions. |
|
||||
| **Amazon Back-to-School Store** | Curated category pages, not list-specific | Retail price + Prime | Manual — parent still has to search 45 items individually. No list auto-import. |
|
||||
| **Walmart + Target BTS aisles** | In-store shopping + pickup | Retail | Requires physical trip, out-of-stocks, 2–3 hours. SchoolCart is one click from home. |
|
||||
| **DIY Spreadsheet** | Parent creates their own shopping list, searches manually | $0 (time cost) | SchoolCart automates the entire matching process. 45 items in 20 seconds vs. 1–2 hours. |
|
||||
| **PTA/PTO kit programs** | Volunteers assemble kits, school fundraiser | $50–$90 + fundraiser margin | Limited. Kits are what the PTA decided to include, not your teacher's specific list. |
|
||||
|
||||
**No direct competitor exists** that takes an arbitrary school supply list PDF and produces a live Amazon cart. The prepackaged kit model (TeacherLists, SchoolSupplyBox) is the closest, but it's a fundamentally different product — you get what they bundled, not what the teacher asked for. SchoolCart is the first **list-to-cart** service for school supplies.
|
||||
|
||||
---
|
||||
|
||||
## 5. Product Overview
|
||||
|
||||
### 5.1 Architecture
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────────┐
|
||||
│ User Uploads PDF (shopping.iamgmb.com) │
|
||||
│ Upload page + Stripe checkout │
|
||||
├──────────────────────────────────────────────────┤
|
||||
│ FastAPI Backend (Python) │
|
||||
│ PDF parsing (PyMuPDF) → Item extraction │
|
||||
│ Amazon ASIN matching → Cart URL generation │
|
||||
│ Email delivery (SMTP via MXroute) │
|
||||
├──────────────────────────────────────────────────┤
|
||||
│ Already built ↓ │ To build ↓ │
|
||||
├──────────────────────────────────────────────────┤
|
||||
│ PDF parser (proven) │ Stripe payment gating │
|
||||
│ Amazon search (36/45 │ Family Plan tier logic │
|
||||
│ matched in test) │ School/PTA portal │
|
||||
│ Cart URL generator │ User accounts/auth │
|
||||
│ Email delivery (SMTP) │ Cart preview page │
|
||||
│ Associate tag wiring │ Order history / receipts │
|
||||
│ │ Analytics dashboard │
|
||||
└──────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Infrastructure:**
|
||||
| Component | Status | Location |
|
||||
|-----------|--------|----------|
|
||||
| Backend (FastAPI) | **Built** | netcup VPS — port 8101, systemd `shopping-cart` |
|
||||
| Frontend (static HTML) | **Built** | served by FastAPI at `/` |
|
||||
| PDF parser | **Built** | PyMuPDF, bullet normalization, 45-item test passed |
|
||||
| Amazon search | **Built** | 5-second delay, direct Amazon scraping |
|
||||
| Cart URL generator | **Built** | Amazon cart/add.html with AssociateTag |
|
||||
| Email delivery | **Built** | SMTP via MXroute, shonuff@germainebrown.com |
|
||||
| Caddy reverse proxy | **Built** | shopping.iamgmb.com → 127.0.0.1:8101 |
|
||||
| **Stripe payment** | **To build** | ~8 hours |
|
||||
| **User accounts** | **To build** | ~12 hours |
|
||||
| **Family Plan tiers** | **To build** | ~12 hours |
|
||||
| **School/PTA portal** | **To build** | ~40 hours |
|
||||
| **Cart preview** | **To build** | ~8 hours |
|
||||
| **Analytics** | **To build** | ~4 hours |
|
||||
|
||||
### 5.2 How It Works (Current Flow)
|
||||
|
||||
1. Parent visits **shopping.iamgmb.com**
|
||||
2. Uploads their child's school supply list PDF
|
||||
3. System parses the PDF — extracts line items, quantities, special notes
|
||||
4. Each item is searched on Amazon → best ASIN match found
|
||||
5. System generates a single Amazon cart URL with all matched items
|
||||
6. Cart URL is delivered to the parent's email
|
||||
7. Parent clicks → Amazon cart opens with all items pre-loaded
|
||||
8. Parent reviews, adjusts, checks out — **Amazon Associates commission earned**
|
||||
|
||||
### 5.3 Tier Structure
|
||||
|
||||
#### Quick Cart — $4.99 per order
|
||||
|
||||
**Target:** Parents who just want this one list done
|
||||
|
||||
**Features:**
|
||||
- Upload any school supply list PDF
|
||||
- Full item parsing + Amazon ASIN matching (single pass)
|
||||
- Complete cart URL delivered by email
|
||||
- All items on one Amazon cart
|
||||
- Amazon Associate tag tracking
|
||||
|
||||
#### Premium Cart — $9.99 per order
|
||||
|
||||
**Target:** Parents who want it done right — better matching, no second-guessing
|
||||
|
||||
**Features:**
|
||||
- Everything in Quick Cart
|
||||
- **Name your cart** — "Johnny's 6th Grade Cart," "Becky's 4th Grade Cart" — email arrives with your kid's name on it
|
||||
- **Multi-pass ASIN matching** — 3+ search variants per item, picks the best match
|
||||
- **Brand-specific matching** — "Ticonderoga pencils" matches to Ticonderoga, not generic
|
||||
- **Out-of-stock handling** — suggests the closest substitute if the exact item is unavailable
|
||||
- **Unmatched item alerts** — flags items that couldn't be matched with a suggested alternative
|
||||
- **Priority processing** — same-day delivery (vs. next-day on Quick Cart)
|
||||
- **Priority support** — SMS + email, not just email
|
||||
|
||||
#### Family Pass — $19.99/year
|
||||
|
||||
**Target:** Parents with multiple children, or parents who want it on autopilot year after year
|
||||
|
||||
**Features:**
|
||||
- All Premium features for every cart
|
||||
- **Unlimited lists for the entire household** — all kids, all grades, all schools
|
||||
- **Saved student profiles** — Johnny (6th grade, STEM Academy), Becky (4th grade, STEM Academy)
|
||||
- **Named carts** auto-saved to the dashboard — view, re-order, or share last year's list
|
||||
- **One-click reorder** for next school year — items changed? System flags the differences, same cart
|
||||
- **Price comparison** — see how much each item changed from last year
|
||||
- **Auto-reminder** — email when new school year lists are available
|
||||
- Pay for two kids' Quick Carts ($9.98) and the Family Pass already saves you money
|
||||
|
||||
#### School/PTA Plan — FREE (Distribution Channel)
|
||||
|
||||
**Target:** PTA/PTO organizations, school districts
|
||||
|
||||
**The model:** SchoolPlan is **not a revenue tier** — it's a **distribution channel**. The school doesn't pay. Instead, SchoolCart **donates $1 to the PTA** for every cart purchased through the school's portal.
|
||||
|
||||
**What the school/PTA gets (free):**
|
||||
- All class supply lists pre-loaded — teachers upload once, all parents get carts
|
||||
- Branded parent portal — `garrisonschool.schoolcart.com`
|
||||
- Bulk email tool — one click sends every parent their personalized cart link
|
||||
- Teacher portal — Mrs. Smith types her list, updates auto-push to parents
|
||||
- **$1 per cart donated to the PTA** — zero-effort fundraiser
|
||||
|
||||
**What SchoolCart gets:**
|
||||
- Warm endorsement — the school emails all parents, posts in the Facebook group
|
||||
- Trust — "from the school" beats "random website I found" every time
|
||||
- Distribution — the PTA does the marketing for free
|
||||
|
||||
**Comparison:**
|
||||
|
||||
| Model | School Says Yes? | Distribution | Revenue |
|
||||
|-------|-----------------|-------------|---------|
|
||||
| $199/yr subscription | 🤷 "Maybe — need board approval" | Weak — one portal link on school website | $199 |
|
||||
| **Free + $1 donation per cart** | ✅ "Yes, free money for us" | Strong — PTA emails all parents, posts in FB group | $0 upfront, $1–$500+ in donations |
|
||||
|
||||
---
|
||||
|
||||
## 6. Revenue Model
|
||||
|
||||
### 6.1 Revenue Streams
|
||||
|
||||
| Stream | Source | Margin |
|
||||
|--------|--------|--------|
|
||||
| **Service fees** | $4.99/$9.99 per cart, $19.99/yr family pass, $1/cart PTA donation (school plan) | ~95% (near-zero marginal cost) |
|
||||
| **Amazon Associates commission** | 1–10% of cart total | ~100% on top of service fees |
|
||||
| **School/PTA sponsorships** | Premium listing, featured placement | Negotiable |
|
||||
| **Affiliate upsells** | Recommended items (lunchboxes, backpacks, labeled items) | Commission-based |
|
||||
|
||||
### 6.2 Pricing Rationale
|
||||
|
||||
| Tier | Price | Why |
|
||||
|------|-------|-----|
|
||||
| **Quick Cart** | $4.99 | Impulse-buy threshold. A latte. Parents will pay $5 to skip a 2-hour Walmart trip without thinking. |
|
||||
| **Premium Cart** | $9.99 | Name the cart, multi-pass matching, brand-specific, OOS handling, priority support. For the parent who wants "done right." |
|
||||
| **Family Pass** | $19.99/yr | All kids, all year, every cart named and saved. Two kids' Quick Carts = $9.98. This is $10 more for unlimited all year. Yearly needs weight — $19.99 feels like a real membership, not a coupon. |
|
||||
| **School Plan** | FREE | Distribution channel, not a revenue tier. School gets a branded portal and $1/cart donated to the PTA. SchoolCart gets warm endorsement and free marketing. |
|
||||
|
||||
### 6.3 Cost Structure
|
||||
|
||||
| Expense | Monthly Cost | Notes |
|
||||
|---------|-------------|-------|
|
||||
| Netcup VPS (shopping-cart) | $0 (absorbed) | Running on existing ITPP infrastructure |
|
||||
| Amazon scraper bandwidth | $0 | 5-second delay, low volume at launch |
|
||||
| SMTP (MXroute) | $0 (existing) | Already paid for ITPP email |
|
||||
| Domain (shopping.iamgmb.com) | $0 (existing) | Owned by Germaine |
|
||||
| Stripe fees | 2.9% + $0.30/txn | ~$0.45 per $4.99 cart |
|
||||
| New domain (target .com) | ~$12/year | Cloudflare cost |
|
||||
| **Total baseline** | **~$0–$12/mo** | Near-zero operating cost |
|
||||
|
||||
### 6.4 Revenue Projections
|
||||
|
||||
#### Scenario: Back-to-School Season Only (80% of annual revenue in July–August)
|
||||
|
||||
| Carts Sold | Service Revenue | Est. Commission (avg $70 cart × 4%) | Total Revenue |
|
||||
|-----------|----------------|--------------------------------------|---------------|
|
||||
| 500 | $2,495 | $1,400 | **$3,895** |
|
||||
| 2,000 | $9,980 | $5,600 | **$15,580** |
|
||||
| 5,000 | $24,950 | $14,000 | **$38,950** |
|
||||
| 10,000 | $49,900 | $28,000 | **$77,900** |
|
||||
| 50,000 | $249,500 | $140,000 | **$389,500** |
|
||||
|
||||
#### Realistic 3-Year Ramp
|
||||
|
||||
| | Year 1 (2027) | Year 2 (2028) | Year 3 (2029) |
|
||||
|---|--------------|--------------|--------------|
|
||||
| **BTS season carts** | 500–2,000 | 5,000–15,000 | 20,000–50,000 |
|
||||
| **Service revenue** | $2.5K–$10K | $25K–$75K | $100K–$250K |
|
||||
| **Commission revenue** | $0.5K–$4K | $5K–$30K | $20K–$100K |
|
||||
| **School partners** | 0–2 | 10–25 | 30–100 |
|
||||
| **School cart donations ($1/cart)** | $0–$500 | $1K–$3K | $3K–$10K |
|
||||
| **Family Passes** | 0–50 | 500–2,000 | 2,500–10,000 |
|
||||
| **Family Pass revenue** | $0–$1K | $10K–$40K | $50K–$200K |
|
||||
| **Total Annual Revenue** | **$3K–$15.5K** | **$41K–$148K** | **$173K–$560K** |
|
||||
| **Gross Margin** | 90–95% | 92–95% | 93–97% |
|
||||
|
||||
---
|
||||
|
||||
## 7. Competitive Advantages
|
||||
|
||||
### 7.1 Why SchoolCart Wins
|
||||
|
||||
#### 1. First Mover in List-to-Cart for School Supplies
|
||||
TeacherLists and SchoolSupplyBox sell *prepackaged kits* — someone decides what goes in the box, not the teacher who wrote the list. SchoolCart is the only service that takes the actual PDF and says "this is exactly what your teacher wants, here's a cart." This is a fundamentally different product.
|
||||
|
||||
#### 2. Amazon Associates Pipeline
|
||||
Every cart carries an Associate Tag. Even if the parent only pays $4.99, SchoolCart earns commission on everything in the cart — potentially $2–$6 per cart on top of the service fee. Over 5,000 carts, that's $10K–$30K in passive commission revenue. No one else does this because no one else builds the cart.
|
||||
|
||||
#### 3. Zero-Marginal-Cost Infrastructure
|
||||
The entire service runs on existing ITPP infrastructure — the same VPS that already runs backup, monitoring, and other services. There is no Heroku bill, no AWS burn, no startup operating cost. SchoolCart can be profitable at 1 sale/day.
|
||||
|
||||
#### 4. Speed of Iteration
|
||||
Built and tested in a weekend. The full pipeline works — PDF → parse → match → cart → email. No other team can do this in the time we can. A startup would need 2–3 months and $10K+ to replicate what's already running.
|
||||
|
||||
#### 5. Seasonal Timing Advantage
|
||||
The 2026 back-to-school season is already upon us. A startup would miss this window. SchoolCart can soft-launch for 2026 and dominate 2027.
|
||||
|
||||
### 7.2 Competitive Positioning Map
|
||||
|
||||
```
|
||||
HIGH PRICE
|
||||
│
|
||||
Prepackaged ● │
|
||||
Kits ($60-90) │
|
||||
│
|
||||
│
|
||||
───────────────────────┼───────────────────────
|
||||
LOW CONVENIENCE │ HIGH CONVENIENCE
|
||||
│
|
||||
│
|
||||
Walmart/Target ● │
|
||||
(2-3 hours) │ ★ SchoolCart
|
||||
│ ($5-10 + commission)
|
||||
Manual Amazon ● │
|
||||
(1-2 hours) │
|
||||
LOW PRICE
|
||||
```
|
||||
|
||||
SchoolCart occupies the **high-convenience, low-price quadrant** that is currently empty. Prepackaged kits are more expensive and less flexible. Stores are cheaper but time-costly. SchoolCart is the only option that's both cheap and convenient.
|
||||
|
||||
---
|
||||
|
||||
## 8. Go-to-Market Strategy
|
||||
|
||||
### 8.1 Phase 0: Soft Launch (August 2026)
|
||||
|
||||
**Objective:** Validate pipeline with real parents during the current back-to-school season.
|
||||
|
||||
**Tactic:**
|
||||
- shopping.iamgmb.com stays as free tier (no payment yet)
|
||||
- Share link in Facebook parent groups, PTA Facebook groups
|
||||
- Goal: 20–50 real parents use the service, provide feedback on ASIN matching quality
|
||||
- Collect emails for 2027 BTS launch
|
||||
|
||||
### 8.2 Phase 1: Foundation (September 2026 – April 2027)
|
||||
|
||||
**Objective:** Build payment system, polish matching, prepare for 2027 BTS season.
|
||||
|
||||
**Activities:**
|
||||
- Build Stripe checkout for $4.99/$14.99 cart unlock
|
||||
- Improve ASIN matching — multiple search attempts, brand-specific matching
|
||||
- Build cart preview page (show matched items before asking for payment)
|
||||
- Set up branded domain and landing page (cartmylist.com or similar)
|
||||
- Write 5–10 SEO articles: "2027 School Supply List Guide," "Best School Supplies on Amazon," "How to Save Money on School Supplies"
|
||||
- Recruit 50 beta testers from ITPP client network (free service, feedback required)
|
||||
- Build school contact list — email PTA/PTO presidents, principals
|
||||
|
||||
### 8.3 Phase 2: Launch (May–August 2027)
|
||||
|
||||
**Objective:** Capture 80% of annual revenue in the 8-week BTS window.
|
||||
|
||||
**Channels:**
|
||||
|
||||
| Channel | Tactics | Cost | Expected Carts |
|
||||
|---------|---------|------|---------------|
|
||||
| **Facebook parent groups** | Every school, town, and grade-level parent group. Post "Upload your kid's supply list → get a one-click Amazon cart." DM group admins for permission. | $0 (time) | 200–500 |
|
||||
| **Facebook/Instagram ads** | Target: parents of K-12 kids, interest: "school," "PTA," "teacher," "Amazon Prime." Creative: 30-second video of PDF upload → cart in 10 seconds. | $500–$2,000 | 500–2,000 |
|
||||
| **Amazon Associate influencer** | Mom bloggers, teacher influencers, back-to-school YouTubers. Affiliate offer: 20% commission on cart fees from their referral. | 20% commission share | 200–1,000 |
|
||||
| **PTA partnership outreach** | Direct email to 500+ PTA presidents: "Offer SchoolCart to your parents as a free fundraiser — SchoolCart donates $1/cart to your PTA." Email list from PTA.org directory. | $0 | 500–2,000 |
|
||||
| **School email blasts** | Partner with 5–10 schools to include SchoolCart link in their BTS newsletter. Offer: free service for that school's parents in exchange for being the exclusive provider. | $0 (revenue share) | 200–1,000 |
|
||||
| **Google Ads** | "school supply list cart," "amazon school supply list," "upload supply list to amazon." Low-competition keywords. | $200–$500 | 100–300 |
|
||||
| **TikTok organic** | 15-second video: speed-run of PDF upload → cart result. Target: #backschool #schoolsupplies. | $0 | Varies |
|
||||
| **Reddit (r/Parenting, r/Teachers, r/school)** | Value-first posts: "Teacher here — turn your supply list PDF into a single Amazon cart." Don't spam. | $0 | 50–200 |
|
||||
|
||||
### 8.4 Phase 3: Scale (September 2027+)
|
||||
|
||||
**Objective:** Expand to adjacent list types and build year-round revenue.
|
||||
|
||||
**Expansion opportunities:**
|
||||
- **Holiday wish lists** — "Create your child's Amazon wish list from their handwritten list"
|
||||
- **Summer camp packing lists** — Camp sends a PDF, parents get a cart
|
||||
- **Team sports equipment** — Soccer, baseball, football: "Your coach's equipment list → Amazon cart"
|
||||
- **College dorm lists** — Target freshman move-in list
|
||||
- **Teacher classroom wish lists** — DonorsChoose-style: upload your classroom supply list, parents/funders buy it
|
||||
- **Lunchbox/meal prep lists** — School lunch menu → Amazon cart for groceries
|
||||
|
||||
### 8.5 First 100 Customers — How They Find Us
|
||||
|
||||
| # | Source | How |
|
||||
|---|--------|-----|
|
||||
| 1–10 | **Germaine's network** | Direct share in personal Facebook, LinkedIn, neighborhood group. "Hey, I built this thing..." |
|
||||
| 11–25 | **Local school PTAs** | Email Germaine's kids' school PTA. One post in the private Facebook group → 15 parents. |
|
||||
| 26–50 | **Facebook parent groups** | Join 5 "Back to School [City]" groups. Post the tool. Organic engagement. |
|
||||
| 51–75 | **Teacher word-of-mouth** | First batch of parents tell their teachers. Teachers share with other parents. |
|
||||
| 76–100 | **ITPP client network** | IT Pro Partner clients have kids in school. "Hey client, your kid have a supply list? Here's a free test." |
|
||||
|
||||
### 8.6 Key Metrics — First 90 Days
|
||||
|
||||
| Metric | Target | How Measured |
|
||||
|--------|--------|-------------|
|
||||
| Carts generated (total) | 20–50 | DB count |
|
||||
| Items parsed per cart | 30–50 avg | Logged in app |
|
||||
| ASIN match rate | >70% | Matched / total items |
|
||||
| Email delivery success rate | >95% | SMTP logs |
|
||||
| User time saved per cart | 1–2 hours (estimated) | Survey (optional) |
|
||||
| Revenue | ~$100–$250 | Stripe (post-launch) |
|
||||
|
||||
### 8.7 Bottlenecks That Could Delay Launch
|
||||
|
||||
| Bottleneck | Risk | Mitigation |
|
||||
|-----------|------|------------|
|
||||
| **ASIN matching accuracy** | Medium — wrong items erode trust | Build fallback: if top match looks wrong, try 3 more searches. Manual override in Premium tier. Let parent confirm/reject items. |
|
||||
| **PDF parsing edge cases** | Low — handwriting, scanned images, weird formatting | PyMuPDF handles most formats. Fallback: OCR for scanned PDFs (Tesseract — free, 1 second per page). |
|
||||
| **Amazon rate limiting** | Medium — aggressive scraping gets blocked | Current 5-second delay is conservative. Add rotating user-agents. Consider PA-API as fallback (limited but avoids scraping). |
|
||||
| **Seasonality** | High — 80% of annual volume in 6 weeks | Build in off-season. Expand to other list types. Use off-season for polish, SEO, partnerships. |
|
||||
| **Stripe account risk** | Low-Medium — high volume of small transactions may trigger hold | Use ITPP Stripe to launch. Spin out to separate entity if volume exceeds 10K carts. Keep chargeback rate <1%. |
|
||||
| **Legal — Associates compliance** | Low | Amazon Associates TOS are straightforward for cart URL generation. Don't misrepresent prices, don't scrape Amazon product pages for commercial data beyond matching. Standard affiliate marketing practice. |
|
||||
|
||||
---
|
||||
|
||||
## 9. Risk Analysis
|
||||
|
||||
### 9.1 Market Risks
|
||||
|
||||
| Risk | Probability | Impact | Mitigation |
|
||||
|------|-----------|--------|------------|
|
||||
| **Parents don't trust PDF upload** | Medium | High | Show a preview of parsed items before asking for payment. Host the service, don't require downloads. Share sample output on landing page. |
|
||||
| **BTS season too tight for 2026** | High | Low | 2026 is a soft launch — free tier only, collect feedback, build payment gating. 2027 is the real revenue year. |
|
||||
| **PTAs build their own tool** | Low | Medium | PTAs don't have technical resources. Even large PTAs can barely maintain their website. |
|
||||
| **Amazon changes cart URL format** | Low | High | Cart URL format has been stable for years. If deprecation is announced, we have 6+ months to adapt. |
|
||||
|
||||
### 9.2 Product Risks
|
||||
|
||||
| Risk | Probability | Impact | Mitigation |
|
||||
|------|-----------|--------|------------|
|
||||
| **ASIN matching fails on unusual items** | Medium | Medium-High | "Spray Sunscreen" and "plastic spoons and forks" are edge cases — matched in test but could fail on niche items. Build confidence thresholds: if match score is low, flag for manual review (Premium tier includes this). |
|
||||
| **Amazon blocks scraping** | Medium | High | Current approach works but is fragile. PA-API is more reliable but has restricted categories and rate limits. Build both paths — scrape for wide matching, PA-API as validation. |
|
||||
| **PDF parser fails on scanned/handwritten lists** | Medium | Low | Scanned PDFs are rare for school supply lists (they're usually typed/printed). Add OCR fallback for the edge cases. |
|
||||
| **Cart URL breaks for large carts (45+ items)** | Low | Medium | Amazon cart URL supports 50+ items via ASIN.1...ASIN.N pattern. Tested with 45 items and worked. Monitor Amazon's limits. |
|
||||
|
||||
### 9.3 Competitive Risks
|
||||
|
||||
| Risk | Probability | Impact | Mitigation |
|
||||
|------|-----------|--------|------------|
|
||||
| **TeacherLists adds PDF upload** | Low-Medium | Medium | They'd need to build Amazon matching from scratch (they don't do it now — they have inventory agreements with suppliers). Would take 6–12 months. SchoolCart has head start. |
|
||||
| **Amazon builds "upload your list" feature** | Low | High | Possible but unlikely — Amazon's BTS store is curated categories, not a PDF parser. If they do, SchoolCart pivots to school/PTA portal + family subscription model (value-added layer on top). |
|
||||
| **App stores flood with copycats** | Medium | Low | Mobile apps have lower trust — uploading a school supply list PDF to "some app" is sketchy. SchoolCart is a web service, no install required. First-mover + SEO + PTA relationships create defensibility. |
|
||||
|
||||
### 9.4 Operational Risks
|
||||
|
||||
| Risk | Probability | Impact | Mitigation |
|
||||
|------|-----------|--------|------------|
|
||||
| **BTS support volume overwhelms** | Medium | High | One person handling support for 5K+ carts in 6 weeks is a risk. Mitigation: self-serve (FAQ page, video demo, email auto-responders). Consider temp support contractor at $500–$1K for BTS peak. |
|
||||
| **Stripe payment holds on high volume** | Low-Medium | Medium | Small transactions ($4.99) hitting in waves look like micro-transaction fraud. Communicate with Stripe in advance. Maintain low dispute rate. Keep documentation ready. |
|
||||
| **Domain/brand not settled in time** | Medium | Low | shopping.iamgmb.com works for soft launch. Branded domain is important for Year 2, not Year 1. |
|
||||
|
||||
---
|
||||
|
||||
## 10. Financial Projections
|
||||
|
||||
### 10.1 12-Month P&L (Realistic Case — 2027 BTS)
|
||||
|
||||
| Line Item | Jan–Jun | Jul–Aug (BTS) | Sep–Dec | Year 1 Total |
|
||||
|-----------|---------|---------------|---------|-------------|
|
||||
| **Revenue** | | | | |
|
||||
| Carts sold | 0 (build) | 500–2,000 | 50–100 (off-season) | 550–2,100 |
|
||||
| Service fees ($4.99 avg) | $0 | $2,495–$9,980 | $250–$500 | **$2,745–$10,480** |
|
||||
| Amazon commissions (est. 4% × $70 avg cart) | $0 | $1,400–$5,600 | $140–$280 | **$1,540–$5,880** |
|
||||
| School plans | $0 | $0–$400 | $0 | **$0–$400** |
|
||||
| **Total Revenue** | **$0** | **$3,895–$15,980** | **$390–$780** | **$4,285–$16,760** |
|
||||
| **Costs** | | | | |
|
||||
| Stripe fees (~$0.45/cart) | $0 | $225–$900 | $22–$45 | $247–$945 |
|
||||
| Domain renewal | $12 | $0 | $0 | $12 |
|
||||
| **Total COGS** | **$12** | **$225–$900** | **$22–$45** | **$259–$957** |
|
||||
| **Gross Profit** | **-$12** | **$3,670–$15,080** | **$368–$735** | **$4,026–$15,803** |
|
||||
| _Gross Margin_ | _N/A_ | _94–94.5%_ | _94–94.5%_ | _94–94.5%_ |
|
||||
| **Operating Expenses** | | | | |
|
||||
| Development (Stripe, accounts, tiers) | 0 (Germaine time) | 0 | 0 | $0 |
|
||||
| Content/SEO (10 articles) | $500 | $0 | $500 | $1,000 |
|
||||
| Facebook ads (BTS season) | $0 | $500–$2,000 | $0 | $500–$2,000 |
|
||||
| Tools + misc | $100 | $100 | $100 | $300 |
|
||||
| **Total OpEx** | **$600** | **$600–$2,100** | **$600** | **$1,800–$3,300** |
|
||||
| **Net Income** | **-$612** | **$2,570–$13,980** | **-$232–$135** | **$2,226–$12,503** |
|
||||
|
||||
### 10.2 Unit Economics
|
||||
|
||||
| Metric | Value | Notes |
|
||||
|--------|-------|-------|
|
||||
| Average revenue per cart | ~$7.80 | $4.99 service + ~$2.80 commission |
|
||||
| Stripe fee per cart | ~$0.45 | 2.9% + $0.30 on $5 |
|
||||
| Gross margin per cart | ~94% | $0.45 cost on $7.80 revenue |
|
||||
| CAC (organic) | $0–$1 | Facebook groups, word-of-mouth |
|
||||
| CAC (paid) | $2–$5 | Facebook/Google ads — estimated |
|
||||
| LTV (single-use) | $7.80 | One cart only |
|
||||
| LTV (family pass) | $50+ | $19.99/yr × 3+ years of usage |
|
||||
| LTV (school plan) | $600+ | $199/yr × 3+ years |
|
||||
|
||||
### 10.3 Total Run Rate & Runway
|
||||
|
||||
**Current situation:**
|
||||
- Existing infrastructure: $0 incremental cost
|
||||
- Development time: Germaine's time (not billed)
|
||||
- Marketing budget: $500–$2,000 for BTS ads (discretionary)
|
||||
|
||||
**Runway:**
|
||||
- If zero revenue: SchoolCart costs $12/year in domain fees. It can sit indefinitely without any revenue pressure.
|
||||
- With 500 carts: ~$3,900 revenue on ~$1,050 total costs = **$2,850 profit**
|
||||
- This business can never lose money at meaningful scale — the cost structure is so low that 100 carts/year pays for everything.
|
||||
|
||||
### 10.4 If This Fails Within 6 Months — Most Likely Reason
|
||||
|
||||
**"Parents just go to Walmart."**
|
||||
|
||||
The biggest risk is that the pain of school supply shopping isn't painful enough to justify $5. If parents prefer the status quo — 2 hours at Walmart, impulse buys, out-of-stock frustration — over paying $5 for a one-click cart, the business doesn't work.
|
||||
|
||||
**Contingency signs (first 90 days):**
|
||||
- PDF upload rate: <10 uploads in first week = weak awareness, not weak need
|
||||
- Cart preview → pay conversion: <30% = price resistance
|
||||
- Repeat usage: <5% = weak retention, need better experience
|
||||
|
||||
**Mitigation if true:**
|
||||
- Drop price to $2.99 (impulse-buy threshold for "doubters")
|
||||
- Free tier (ads? No — free is free, earn on commission only)
|
||||
- Focus entirely on school plans (PTA subsidizes the cost, parents pay $0)
|
||||
- Pivot to teacher wish lists / DonorsChoose model (different pain point, same tech)
|
||||
|
||||
---
|
||||
|
||||
## 11. The Ask
|
||||
|
||||
### 11.1 What We Need to Launch (for 2027 BTS)
|
||||
|
||||
| Resource | Details | Timeline | Cost |
|
||||
|----------|---------|----------|------|
|
||||
| **Stripe integration** | Payment gating for cart unlock | September 2026 | ~8 hours (Germaine) |
|
||||
| **User accounts** | Email + password, order history | October 2026 | ~12 hours |
|
||||
| **Branded domain** | Register cartmylist.com or similar | Immediate | ~$12/year |
|
||||
| **Landing page** | Branded homepage with upload + explainer | November 2026 | ~8 hours |
|
||||
| **Content/SEO** | 10 BTS articles for 2027 search traffic | January–May 2027 | $500–$1,000 (writer) |
|
||||
| **Facebook ads budget** | BTS season paid acquisition | July–August 2027 | $500–$2,000 |
|
||||
| **PTA outreach list** | Directory of 200+ PTA contacts | May–June 2027 | $0 (manual) |
|
||||
| **Total investment** | | | **~$512–$1,012 cash + ~28 hours dev** |
|
||||
|
||||
### 11.2 Immediate Decisions Required
|
||||
|
||||
1. **Domain name** — which .com to register? All verified available as of Jul 27, 2026:
|
||||
|
||||
| Domain | Available | Verdict |
|
||||
|--------|-----------|---------|
|
||||
| **cartmylist.com** | ✅ | ⭐ **Top pick** — short, verb-driven ("cart my list"), memorable, easy to spell |
|
||||
| **quickorderlist.com** | ✅ | Good fallback — descriptive but longer |
|
||||
| **schoollistcart.com** | ✅ | Descriptive but 17 chars |
|
||||
| **ezcartlist.com** | ✅ | Short but "EZ" looks dated |
|
||||
| **schoolcartpro.com** | ✅ | Good for Year 2 when brand is established |
|
||||
| **schoolcart.io** | ✅ | Trendy but .io less trusted by parents |
|
||||
| list2cart.com | ❌ Registered | Taken
|
||||
2. **Stripe account** — use ITPP Stripe to launch, or create separate entity first?
|
||||
3. **Company structure** — operate under IT Pro Partner, or new LLC?
|
||||
4. **Pricing model** — 3-tier: Quick Cart $4.99, Family Plan $14.99/season (30 days), School Plan FREE ($1/cart donated to PTA). No subscriptions — Family Plan has no auto-renewal.
|
||||
5. **Timeline** — soft launch for August 2026 (free), or wait until 2027 BTS with full paid launch?
|
||||
|
||||
### 11.3 What Success Looks Like (Month 12 — August 2027)
|
||||
|
||||
- **500–2,000 paid carts processed** in the 8-week BTS window
|
||||
- **$3K–$16K revenue** (service fees + commissions) — not life-changing, but validated
|
||||
- **90%+ parent satisfaction** — "this saved me 2 hours"
|
||||
- **ASIN match rate >80%** — continuous improvement
|
||||
- **2–5 school/PTA plans** signed for 2028
|
||||
- **Content library** of 20+ BTS articles ranking on Google
|
||||
- **Clear path to $50K+ in Year 2**
|
||||
|
||||
### 11.4 The Bigger Picture
|
||||
|
||||
SchoolCart isn't just about school supplies. It's a **pattern** — list-to-cart as a service — that applies to:
|
||||
|
||||
- **Holiday wish lists** — November–December (another high-volume season)
|
||||
- **Summer camp packing** — May–June
|
||||
- **College dorm lists** — July–August (same season as BTS)
|
||||
- **Team sports equipment** — August–September
|
||||
- **Teacher classroom wish lists** — Year-round
|
||||
|
||||
The core tech — PDF parser → Amazon ASIN matcher → cart URL generator — is the engine. School supplies are the first market because the pain is acute, the lists are standardized, and the timing creates urgency. Once the engine works, every list type is a new revenue stream.
|
||||
|
||||
And the entire thing runs on existing infrastructure with near-zero operating cost. At 1,000 paid carts per year, it pays for itself. At 10,000, it's real income. At 100,000, it's a business worth selling.
|
||||
|
||||
The only question is whether school supply shopping hurts enough for parents to pay $5 to make it stop. The evidence — screaming kids, crowded stores, out-of-stock shelves, 2-hour ordeals — suggests yes.
|
||||
|
||||
---
|
||||
|
||||
## Appendix A: Technical Architecture (Current)
|
||||
|
||||
| Component | Technology | Status | Details |
|
||||
|-----------|-----------|--------|---------|
|
||||
| Backend | FastAPI (Python) | ✅ Live | port 8101, systemd service |
|
||||
| PDF Parser | PyMuPDF + custom bullet normalization | ✅ Live | Handles PDF text, bullet chars, line items |
|
||||
| Amazon Search | Direct Amazon HTML scrape | ✅ Live | 5-second delay per item |
|
||||
| Cart URL | Amazon cart/add.html + AssociateTag | ✅ Live | Tested with 45 items |
|
||||
| Email | SMTP via MXroute (shonuff@germainebrown.com) | ✅ Live | Cart URL delivery |
|
||||
| Caddy | Reverse proxy, LE auto-certs | ✅ Live | shopping.iamgmb.com |
|
||||
| Frontend | Static HTML (served by FastAPI) | ✅ Live | Upload form |
|
||||
|
||||
## Appendix B: Test Results (July 27, 2026)
|
||||
|
||||
| Metric | Result |
|
||||
|--------|--------|
|
||||
| Items in PDF | 45 |
|
||||
| Items parsed | 45 |
|
||||
| ASINs matched | 45 (36 unique, some duplicated across gendered items) |
|
||||
| Cart URL | Generated ✓ |
|
||||
| Email delivery | Sent ✓ |
|
||||
| Processing time | ~20 seconds (includes 5-second Amazon delay per item) |
|
||||
|
||||
## Appendix C: Known Improvement Backlog
|
||||
|
||||
| Improvement | Priority | Est. Effort |
|
||||
|-------------|----------|-------------|
|
||||
| Zero-width char stripping (merged words) | High | 30 min |
|
||||
| Quantity extraction from item text ("3 packages...") | High | 1 hour |
|
||||
| Section header filtering ("Walmart:", "Amazon:", etc.) | Medium | 30 min |
|
||||
| Brand-specific ASIN matching ("Ticonderoga" → specific model) | Medium | 2 hours |
|
||||
| Multiple search attempts per item (fallback chain) | Medium | 2 hours |
|
||||
| Cart preview page (show items before payment) | Medium | 4 hours |
|
||||
| OCR for scanned PDFs (Tesseract) | Low | 2 hours |
|
||||
| PA-API integration (backup to scraping) | Low | 4 hours |
|
||||
| Rotating user-agents for Amazon | Low | 30 min |
|
||||
| Sentiment scoring for matched ASINs (rating/price) | Low | 2 hours |
|
||||
|
||||
---
|
||||
|
||||
**Document prepared by:** Sho'Nuff Brown — AI Ops Engineer
|
||||
**Contact:** Germaine Brown — g@germainebrown.com
|
||||
**Classification:** Confidential — For Advisory Team Review Only
|
||||
**Version:** 1.0 — July 27, 2026
|
||||
@@ -0,0 +1,91 @@
|
||||
# IntelSight.io — Site Documentation
|
||||
|
||||
## Overview
|
||||
|
||||
| Detail | Value |
|
||||
|---|---|
|
||||
| Domain | intelsight.io |
|
||||
| Aliases | intelsight.co (redirect), www.intelsight.io |
|
||||
| Platform | WordPress (CloudPanel CE) |
|
||||
| Server | app3 (152.53.241.111) |
|
||||
| Panel | panel.itpropartner.com |
|
||||
| Created | July 26, 2026 |
|
||||
| SSL | Let's Encrypt via CloudPanel |
|
||||
|
||||
## Cloudflare DNS Records (Zone: `4c2ade01f77efc5a3821dc64f5cf3277`)
|
||||
|
||||
| Type | Name | Value | Proxy |
|
||||
|---|---|---|---|
|
||||
| A | intelsight.io | 152.53.241.111 | ✅ Orange |
|
||||
| A | my.intelsight.io | 152.53.241.111 | ✅ Orange |
|
||||
| CNAME | www.intelsight.io | intelsight.io | ✅ Orange |
|
||||
|
||||
SSL/TLS mode: Full (strict)
|
||||
|
||||
### intelsight.co (Zone: `f12f30677b754b39c51a8bd29527ca8f`)
|
||||
|
||||
| Type | Name | Value | Proxy |
|
||||
|---|---|---|---|
|
||||
| A | intelsight.co | 192.0.2.1 | ✅ Orange |
|
||||
|
||||
**Page Rule:** `intelsight.co/*` → `https://intelsight.io/$1` (301, active)
|
||||
|
||||
No origin server needed — Cloudflare edge handles the redirect. The dummy A record is required for DNS resolution; traffic never reaches the origin IP.
|
||||
|
||||
## CloudPanel Site Details
|
||||
|
||||
- **Site User (SSH):** `intelsight` / `LoveMyBoys.1520!`
|
||||
- **Home directory:** `/home/intelsight`
|
||||
|
||||
## Database
|
||||
|
||||
| Detail | Value |
|
||||
|---|---|
|
||||
| Host | 127.0.0.1 |
|
||||
| Port | 3306 |
|
||||
| Database | intelsight |
|
||||
| User | intelsight |
|
||||
| Password | lUO7FjpYRxdJyK7BadiW |
|
||||
|
||||
## WordPress Admin
|
||||
|
||||
- **URL:** https://intelsight.io/wp-admin/
|
||||
- **User:** ippadmin
|
||||
- **Password:** LoveMyBoys1520!
|
||||
- **Admin Email:** admin@intelsight.io ⚠️ **Needs changing** to `info@itpropartner.com` (CloudPanel ignores the form field and auto-generates `admin@domain`)
|
||||
|
||||
## Service Status
|
||||
|
||||
| Service | Status | Notes |
|
||||
|---|---|---|
|
||||
| intelsight.io | ✅ Live | WordPress default install |
|
||||
| intelsight.co → intelsight.io | ✅ Redirecting | 301 via Cloudflare page rule |
|
||||
| my.intelsight.io | ⏳ DNS ready | **No site created yet** — returns 525 |
|
||||
| SSL | ✅ Issued | Let's Encrypt via CloudPanel |
|
||||
|
||||
## SSL Issuance
|
||||
|
||||
Let's Encrypt via `clpctl lets-encrypt:install:certificate`. Must temporarily unproxy DNS records for HTTP-01 validation, then reproxy:
|
||||
|
||||
```bash
|
||||
# Unproxy
|
||||
curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
|
||||
-H "Authorization: Bearer $CF_TOKEN" \
|
||||
-d '{"proxied":false}'
|
||||
|
||||
# Issue cert (on app3)
|
||||
ssh root@152.53.241.111 "clpctl lets-encrypt:install:certificate --domainName=intelsight.io"
|
||||
|
||||
# Repoxy
|
||||
curl -s -X PATCH "..." -d '{"proxied":true}'
|
||||
```
|
||||
|
||||
## Backup
|
||||
|
||||
Covered by app3 daily backup at 3 AM ET → `s3://hermes-vps-backups/cloudpanel-backups/`
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. Change WordPress admin email from `admin@intelsight.io` to `info@itpropartner.com`
|
||||
2. Create WordPress site at `my.intelsight.io` for the customer portal
|
||||
3. Install WordPress theme and configure branding
|
||||
@@ -0,0 +1,87 @@
|
||||
# IntelSight — New WordPress Site on CloudPanel
|
||||
|
||||
**Status:** Live
|
||||
**Date created:** July 26, 2026
|
||||
**Server:** app3 (152.53.241.111, netcup RS 4000)
|
||||
**Panel:** https://panel.itpropartner.com
|
||||
**Site URL:** https://intelsight.io
|
||||
**Purpose:** Marketing site for IntelSight competitive intelligence SaaS product
|
||||
|
||||
---
|
||||
|
||||
## Domain
|
||||
|
||||
| Detail | Value |
|
||||
|---|---|
|
||||
| Domain | `intelsight.io` |
|
||||
| Registrar | Cloudflare Registrar |
|
||||
| Purchased | July 26, 2026 |
|
||||
| Cost | $50/year (.io) + $15/year (.co) |
|
||||
| Defensive domains | `intelsight.co` (redirect only) |
|
||||
|
||||
---
|
||||
|
||||
## DNS (Cloudflare)
|
||||
|
||||
| Type | Name | Value | Proxy |
|
||||
|---|---|---|---|
|
||||
| A | `intelsight.io` | `152.53.241.111` | Proxied (orange) |
|
||||
| CNAME | `www` | `intelsight.io` | Proxied (orange) |
|
||||
|
||||
SSL/TLS mode: **Flexible** — Cloudflare provides edge cert; origin uses CloudPanel self-signed cert.
|
||||
|
||||
---
|
||||
|
||||
## CloudPanel Site
|
||||
|
||||
| Detail | Value |
|
||||
|---|---|
|
||||
| Domain | `intelsight.io` |
|
||||
| Site User (SSH) | `intelsight` |
|
||||
| Site User Password | `LoveMyBoys.1520!` |
|
||||
| PHP Version | 8.x (CloudPanel default) |
|
||||
| Vhost | `/etc/nginx/sites-enabled/intelsight.io.conf` |
|
||||
| Docroot | `/home/intelsight/htdocs/intelsight.io` |
|
||||
|
||||
---
|
||||
|
||||
## WordPress
|
||||
|
||||
| Detail | Value |
|
||||
|---|---|
|
||||
| Admin URL | https://intelsight.io/wp-admin/ |
|
||||
| Admin Username | `ippadmin` |
|
||||
| Admin Password | `LoveMyBoys1520!` |
|
||||
| Admin Email | `admin@intelsight.io` → **CHANGE to `info@itpropartner.com`** |
|
||||
| DB Name | `intelsight` |
|
||||
| DB User | `intelsight` |
|
||||
| DB Password | `lUO7FjpYRxdJyK7BadiW` |
|
||||
| DB Host | `127.0.0.1:3306` |
|
||||
|
||||
---
|
||||
|
||||
## Quirks & Pitfalls
|
||||
|
||||
1. **CloudPanel overrides Admin Email.** The form field "Admin E-Mail" is ignored — CloudPanel auto-generates `admin@<domain>`. Fix in WordPress → Settings → General after first login.
|
||||
|
||||
2. **Let's Encrypt + Cloudflare proxy conflict.** CloudPanel's Nginx template redirects all HTTP to HTTPS before `.well-known` validation, so LE HTTP-01 challenges fail through Cloudflare proxy. Workaround: use Cloudflare "Flexible" SSL mode. Edge cert is Cloudflare's; origin cert is CloudPanel self-signed.
|
||||
|
||||
3. **CloudPanel CLI has no `site:list`.** Use `app:list` or check `/etc/nginx/sites-enabled/` directly.
|
||||
|
||||
---
|
||||
|
||||
## Post-Creation Checklist
|
||||
|
||||
- [ ] Change Admin Email to `info@itpropartner.com`
|
||||
- [ ] Install SSL certs if switching from Flexible to Full (strict) later
|
||||
- [ ] Run `clpctl lets-encrypt:install:certificate --domainName=intelsight.io` if graying out Cloudflare proxy
|
||||
- [ ] Add to backup schedule (app3 backups at 3 AM ET)
|
||||
- [ ] Add to Hudu — API asset / website documentation
|
||||
|
||||
---
|
||||
|
||||
## Related Docs
|
||||
|
||||
- `servers.md` — app3 server details
|
||||
- `backup-plan.md` — backup schedule
|
||||
- Hudu → IT Pro Partner → Websites / IntelSight
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user