173 lines
5.1 KiB
Markdown
173 lines
5.1 KiB
Markdown
# Product Roadmap
|
||
|
||
## Phase 0 — Foundation (complete)
|
||
|
||
**Status:** Done
|
||
|
||
- Barebone MVP: flat inbox pool, dispatcher, rescuer, AI, REST API
|
||
- Prisma 7 + SQLite
|
||
- OpenRouter AI integration
|
||
- Documentation scaffold (this folder)
|
||
|
||
---
|
||
|
||
## Phase 1 — Production warmup core (8–10 weeks) — **Done**
|
||
|
||
**Goal:** Reliable multi-primary warmup with recipes, roles, and stats. Self-hosted backend only.
|
||
|
||
### Sprint 1.1 — Domain model & roles (2 weeks) — **Done**
|
||
|
||
- Workspace, `WarmupCampaign`, satellite assignments, Grow recipe, AI validator
|
||
- Campaign API; legacy dispatcher gated when campaigns exist
|
||
|
||
**Deliverable:** API to create campaign with satellites; Grow schedule + preview.
|
||
|
||
### Sprint 1.2 + 1.3 — Recipes + live dispatcher (combined) — **Done**
|
||
|
||
- All 4 recipes: Grow, Flat, Randomized, Custom
|
||
- Campaign dispatcher (satellite → primary), send windows, jitter
|
||
- Day rollover, maintenance at 20%, campaign-aware rescuer
|
||
|
||
**Deliverable:** End-to-end warmup with any recipe; emails actually send.
|
||
|
||
### Sprint 1.2 — Recipe engine (original scope, absorbed)
|
||
|
||
- ~~Implement Grow, Flat, Randomized, Custom~~ → shipped in 1.2+1.3 combined sprint
|
||
- Grow + preview delivered in 1.1; remainder completed in 1.2+1.3
|
||
|
||
### Sprint 1.3 — Campaign dispatcher (original scope, absorbed)
|
||
|
||
- ~~Role-aware send, jitter, rollover~~ → shipped in 1.2+1.3 combined sprint
|
||
|
||
### Sprint 1.4 — Reply rate engine (1 week) — **Done**
|
||
|
||
- Probabilistic 30% default replies, `engaged_no_reply` status
|
||
- Daily reply budget tracking, spam counter increments
|
||
- See [`docs/sprints/sprint-1.4.md`](sprints/sprint-1.4.md)
|
||
|
||
**Deliverable:** Reply rate within ±5% of target over 7 days.
|
||
|
||
### Sprint 1.5 — Stats API (1 week) — **Done**
|
||
|
||
- `DailyStat` rollups, stats endpoints, workspace overview
|
||
- On-track calculation, compliance API (warn-only DNS)
|
||
- See [`docs/sprints/sprint-1.5.md`](sprints/sprint-1.5.md)
|
||
|
||
**Deliverable:** JSON stats matching manual log counts.
|
||
|
||
### Sprint 1.6 — AI content validator (1 week) — **Done (merged into 1.1)**
|
||
|
||
- Placeholder regex rejection, spam word tiers, regenerate loop
|
||
- Delivered with Sprint 1.1
|
||
|
||
---
|
||
|
||
## Phase 2 — Operator experience (6–8 weeks) — **Done**
|
||
|
||
**Goal:** Web UI + hardening for FillCare daily use.
|
||
|
||
### Sprint 2.0 — Monorepo foundation — **Done**
|
||
|
||
- npm workspaces (`apps/api`, `apps/web`, `packages/shared`)
|
||
- Dev CORS + production static SPA hosting
|
||
- See [`docs/sprints/sprint-2.0.md`](sprints/sprint-2.0.md)
|
||
|
||
### Sprint 2.1 — Web dashboard MVP (3 weeks) — **Done**
|
||
|
||
- Vite + React + shadcn operator dashboard
|
||
- Dashboard, campaign wizard, campaign detail, mailboxes, settings
|
||
- See [`docs/sprints/sprint-2.1.md`](sprints/sprint-2.1.md)
|
||
|
||
### Sprint 2.2 — Spam rescue hardening (2 weeks) — **Done**
|
||
|
||
- Per-UID log matching
|
||
- Placement tracking
|
||
- Folder auto-discovery
|
||
- Auto-pause on spam thresholds
|
||
- See [`docs/sprints/sprint-2.2.md`](sprints/sprint-2.2.md)
|
||
|
||
### Sprint 2.3 — DNS & health checks (1 week) — **Done**
|
||
|
||
- SPF/DKIM/DMARC preflight
|
||
- Provider presets (Gmail/Yahoo/Outlook)
|
||
- See [`docs/sprints/sprint-2.3.md`](sprints/sprint-2.3.md)
|
||
|
||
### Sprint 2.4 — Job queue (2 weeks) — **Done**
|
||
|
||
- SQLite-backed send queue with idempotency
|
||
- Job run log + manual triggers
|
||
- See [`docs/sprints/sprint-2.4.md`](sprints/sprint-2.4.md)
|
||
|
||
**FillCare QA:** [`docs/fillcare-qa-playbook.md`](fillcare-qa-playbook.md)
|
||
|
||
---
|
||
|
||
## Phase 3 — SaaS readiness (8–12 weeks)
|
||
|
||
**Goal:** Multi-tenant, billing, optional integrations.
|
||
|
||
- Postgres migration path
|
||
- Workspace + JWT auth
|
||
- Stripe billing per primary
|
||
- Webhooks (campaign events)
|
||
- Google Postmaster integration
|
||
- Session-based web auth
|
||
- Optional peer network (beta)
|
||
|
||
---
|
||
|
||
## Phase 4 — Scale & ecosystem (ongoing)
|
||
|
||
- Instantly / Smartlead sync
|
||
- Inbox placement tests
|
||
- Team roles
|
||
- White-label
|
||
- Mobile notifications
|
||
|
||
---
|
||
|
||
## Milestone timeline (visual)
|
||
|
||
```
|
||
2026 Q2 [Phase 1: Core backend ██████████]
|
||
2026 Q3 [Phase 2: Web UI + hardening ░░░░████████]
|
||
2026 Q4 [Phase 3: SaaS beta ░░░░░░░░████]
|
||
```
|
||
|
||
---
|
||
|
||
## FillCare-specific milestone
|
||
|
||
| Week | Milestone |
|
||
|------|-----------|
|
||
| 1 | hello@fillcareapp.com campaign created, 4 satellites assigned |
|
||
| 2 | Grow recipe running, stats visible via API |
|
||
| 4 | Web dashboard live |
|
||
| 6 | 30-day warmup complete, inbox rate ≥95% |
|
||
| 8 | Maintenance mode + cold email tool connected |
|
||
|
||
---
|
||
|
||
## Definition of done (per phase)
|
||
|
||
### Phase 1 done when
|
||
|
||
- [x] 2+ primaries warming concurrently
|
||
- [x] All 4 recipes pass integration tests
|
||
- [x] Stats API accurate
|
||
- [x] Reply rate configurable and honored
|
||
- [x] AI validator blocks placeholders
|
||
- [x] ESP compliance checklist passable (`GET /api/campaigns/:id/compliance`)
|
||
|
||
### Phase 2 done when
|
||
|
||
- [x] Operator never needs curl for daily use
|
||
- [x] Auto-pause tested on simulated spam spike (unit threshold tests + rescuer integration path)
|
||
- [ ] FillCare running 30-day campaign via UI (operator acceptance — see FillCare QA playbook)
|
||
- [x] Dashboard usable on phone (375px) for monitoring; setup flows work on tablet+
|
||
|
||
### Phase 3 done when
|
||
|
||
- [ ] Second customer onboarded in isolated workspace
|
||
- [ ] Billing active
|
||
- [ ] Security review complete
|