healthcheck ⏻ Logout

Eagle Ridge AI-OPS · Project Roadmap

Overall: 0% ✅ 0 Complete 🚀 1 In Progress 📋 9 Not Started
📥 Export as Cursor Context

Phase 10 — Invoice & Payments

not_started NORMAL 🏗️ feature 0%
  • ⬜ Invoice generation — formal invoice PDF/print after order completion
  • ⬜ Deposit / partial payment — collect 50% upfront on large orders via Stripe
  • ⬜ Invoice email to customer with payment link
  • ⬜ Payment history per customer/order
Formal invoicing and deposit collection.

Phase 11 — Inbound Lead Capture

not_started NORMAL 🏗️ feature 0%
  • ⬜ Public intake form at /contact or /get-a-quote — no login required
  • ⬜ Form submission auto-creates Lead in CRM
  • ⬜ Auto-triggers lead enrichment on submission
  • ⬜ Telegram notify on new inbound lead
  • ⬜ Spam protection (honeypot field + rate limiting)
Public form → Lead → enrichment → notify.

Phase 12 — Store Enhancements

not_started NORMAL 🏗️ feature 0%
  • ⬜ Fundraising mode — store earns % per sale for group/team, configurable per store
  • ⬜ Store analytics — page views, conversion rate, top products per store
  • ⬜ Abandoned cart recovery — email sent 24hrs after cart abandoned without checkout
  • ⬜ Store order confirmation email to store admin when new order placed
Add to existing team stores.

Phase 15 — Apollo + Instantly API Integration

not_started NORMAL 🏗️ feature 0%
  • ⬜ Apollo API wrapper — search prospects by niche/state/company size, pull into outreach campaign
  • ⬜ Instantly API wrapper — push prospects to Instantly campaign, sync reply status back
  • ⬜ One-click "Find Prospects" button on outreach campaign page
  • ⬜ Auto-sync replies from Instantly back to OutreachProspect status
  • ⬜ /outreach Telegram command — "outreach find [niche] [state]" triggers Apollo search
B2B outreach + Apollo/Instantly.

Phase 16 — Referral & Review Tracking

not_started NORMAL 🏗️ feature 0%
  • ⬜ Referral source field on leads — track who referred each lead
  • ⬜ Referral leaderboard — which customers/sources send the most leads
  • ⬜ Google review campaign follow-up tracking — log who responded to review requests
  • ⬜ Review response rate dashboard widget

Phase 17 — Employee Scheduling

not_started NORMAL 🏗️ feature 0%
  • ⬜ Weekly schedule view — assign employees to shifts
  • ⬜ Schedule editor — drag-and-drop or form-based shift creation
  • ⬜ Telegram notify to employee when scheduled
  • ⬜ Schedule integrates with time clock (Phase 7)
Shifts + time clock.

Phase 18 — System Health & Audit

not_started NORMAL 🏗️ feature 0%
  • ⬜ API health dashboard — status of Sanmar, SSActivewear, Stripe, Claude, Telegram APIs
  • ⬜ Audit log — who changed what and when across the whole system
  • ⬜ User activity log — last login, pages visited per user
  • ⬜ Error log viewer — see recent 500 errors without SSHing into server

Phase 19 — Production Hosting & Deployment

not_started NORMAL 🏗️ feature 0%
  • ⬜ 19.1 — Provision Hetzner VPS (CX22, Ubuntu 24, SSH key, UFW, fail2ban, non-root user)
  • ⬜ 19.2 — Push code to GitHub (private repo, .gitignore .env uploads *.db venv)
  • ⬜ 19.3 — Install app on Hetzner VPS (Python, clone, venv, requirements, .env, test uvicorn)
  • ⬜ 19.4 — Set up Cloudflare R2 for all file storage (bucket eagleridge-files, API token, .env)
  • ⬜ 19.5 — Wire R2 into app file storage (r2_storage_service.py, boto3, replace uploads/)
  • ⬜ 19.6 — Migrate existing local uploads to R2 (scripts/migrate_uploads_to_r2.py)
  • ⬜ 19.7 — Configure Cloudflare DNS (@ + os → VPS, files → R2, SSL Full strict)
  • ⬜ 19.8 — Set up Nginx reverse proxy (os.eagleridgeapparel.com → 127.0.0.1:8000)
  • ⬜ 19.9 — Set up systemd service (eagleridge.service, enable, start)
  • ⬜ 19.10 — Create deploy script (git pull, pip install, systemctl restart)
  • ⬜ 19.11 — Update all external webhooks and URLs (Stripe, APIs, SMTP)
  • ⬜ 19.12 — Set up automated SQLite backups to R2 (cron, backup_db.sh)
  • ⬜ 19.13 — Add /health endpoint to app
  • ⬜ 19.14 — Set up UptimeRobot monitoring (HTTPS /health, 5 min)
  • ⬜ 19.15 — Fix intranet dashboard routing: mount Eagle Ridge public site at /eagleridge so / shows dashboard (logged-in) or login (anonymous)
Hetzner CX22 (~$6/mo) for app; Cloudflare R2 for ALL file storage (OneDrive, uploads, art, attachments); zero egress. 14-step checklist.

Codebase Audit & Cleanup

not_started NORMAL 🏗️ feature 0%
  • ⬜ Full codebase audit — remove duplicate systems, fix DB paths, consolidate routes
  • ⬜ Single source of truth for DB path (data/aiops.sqlite)
  • ⬜ Remove legacy purchasing session system
  • ⬜ Startup diagnostic log
Developer/Infrastructure: DB path, legacy purchasing redirect, diagnostics.

Phase 21 — ShipStation Integration — Full Order Sync + Shipping Module

in_progress NORMAL 🏗️ feature 0%
  • ⬜ Full order sync from ShipStation (excl. ClickFunnels and Prime Mover stores)
  • ⬜ Order history UI with search and filters
  • ⬜ Shipment tracking UI
  • ⬜ Rate shopping via EasyPost (USPS + UPS cheapest rates)
  • ⬜ Ship directly from intranet — label generation and purchase
  • ⬜ Connect to purchasing/fulfillment workflow (fulfillment link by email)
Phase 1: ShipStation tables, API service with rate limiting, EasyPost get_rates/buy_label, Shipping nav, sync trigger, fulfillment link stub.

Recent Cursor Tasks

  • ⏳ #6 In the code ninja chat text input field, we c…
    Mar 13 17:43
  • ⏳ #5 In the ninja app, I need to be able to attach…
    Mar 13 14:05
  • ⏳ #4 Make sure that the ninja chat tool has an up-…
    Mar 13 14:00
  • ⏳ #3 I don’t need the pot updates in since of the …
    Mar 13 13:58
  • ⏳ #2 Update the default sample text in the mobile …
    Mar 13 13:57

🟡 Open Decisions Needed

  • None.

✅ Decisions Locked

  • qbo_approach: Use Stripe native QuickBooks app — no custom qbo_service.py …
  • time_clock_scope: Pending — login-based vs PIN kiosk TBD
  • coupon_codes: Hide toggle until StoreCoupon table is built