Synthesized from Merritt's product brief (5 pp), two recorded calls (6 min + 56 min, transcribed), the codebase audit, and the founder review of the live deployment. Each requirement below is traceable to its source.
Already exist — the brief calls them toggles: nested, color-coded groups (Instagram → Week 1 → Post 1). Select photos → Group. The real gap is discoverability (you didn't find it — neither did Merritt's first users).
in the requirement ✓ shipped — needs a visible "New album" buttonNo explicit search bar in the brief. But Phase 4 demands smart grouping by event, location, subject, date + face/object auto-tagging — tags without search is pointless. Geotags come free from photo EXIF on import.
implied by P4 — promoted to explicit requirement (F-13)Not in the brief, not in either call. The product's identity is organize → curate → publish. A light "quick fix" layer (crop / rotate / brightness, client-side) fits creators' workflow but is genuinely new scope.
NOT in requirement — proposed as P5, needs Merritt's yesDirect posting is Phase 3 (Meta Business API, LinkedIn, TikTok/X + scheduler + queue). Today: native share sheet (→ Instagram et al on phones) + zip download — shipped during the founder review. Engagement tracking is NOT in the brief — proposed as P3.5 (F-22), riding on the same platform tokens and reusing AdPilot's adapters/poller.
share/download shipped ✓ · publishing = P3 · analytics = P3.5 proposalStatus: LIVE-HERS shipped in her build · BUILT-BY-US added on our branch · NEXT committed roadmap · LATER roadmap, not started · NEW added this review · OUT not in scope yet
| ID | Requirement | Source | Status |
|---|---|---|---|
| F-01 | Drag-drop import of photos & videos (Finder + mobile) | Brief | LIVE-HERS |
| F-02 | Nested color-coded albums ("toggles"), 2 levels | Brief | LIVE-HERS |
| F-03 | Notes & captions on photos and albums | Brief | LIVE-HERS |
| F-04 | Filename / caption export per album | Brief | LIVE-HERS |
| F-05 | Code-based workspaces, sync, offline PWA | Brief | LIVE-HERS |
| F-06 | Touch drag that actually works (long-press + drag) | Call 1 | BUILT-BY-US |
| F-07 | Move photos/groups between groups (incl. center-drop) | Call 1 | BUILT-BY-US |
| F-08 | Easy inline titles + notes on mobile | Call 1 | BUILT-BY-US |
| F-09 | Duplicate & near-duplicate detection (no upload) | Call 1 + Brief P4 | BUILT-BY-US |
| F-10 | Real server-side auth (argon2 + tokens; closes 4 audit holes) | Brief P2 + audit | BUILT-BY-US |
| F-11 | Select all (⌘A) · download zip · native share sheet | Founder review | BUILT-BY-US |
| F-12 | Persistent cloud photo storage (R2 presigned, CDN, renditions) | Brief P1 | NEXT |
| F-13 | Search bar + filters (name, notes, tags, date, location) | Founder + P4 implied | NEW |
| F-14 | EXIF capture at import (date, camera, GPS → geotags) | Founder + P4 implied | NEW |
| F-15 | Album discoverability: "New album" button + empty-state hints | Founder review | NEW |
| F-16 | OAuth accounts (Google/Apple), private-by-default, GDPR | Brief P2 | LATER |
| F-17 | Direct publishing: IG / LinkedIn / TikTok / X + scheduler + queue | Brief P3 | LATER |
| F-18 | AI: quality scoring, best-of-batch, smart grouping, auto-captions, auto-tags | Brief P4 | LATER |
| F-19 | Apple/Google Photos & iCloud album import, thousands of files | Brief (Import perf) | LATER |
| F-20 | App Store release (TestFlight → review), category Photos | Call 2 | NEXT |
| F-21 | Quick edits: crop / rotate / brightness (client-side) | Founder (new idea) | OUT — P5 proposal |
| F-22 | Engagement analytics post-publish (reach, likes, saves, comments per post/album) — same Meta/LinkedIn tokens as F-17; reuse AdPilot's Rust platform adapters + metrics poller | Founder (new idea) | OUT — P3.5 proposal |
traceability rule: nothing ships unless it has a row here — Andrew's advice to Merritt, now enforced ✦
P4 overlaps devpilot/crates/photos-engine (CLIP, embeddings, albums) — our differentiator, on-device-first ✦
her FE, kept — Vite + dnd-kit + Tailwind, offline service worker
static, this theme — doubles as App Store "public website"
moorephotos.devpilot.co.in · TLS wildcard · /api proxy
argon2 auth, rotating tokens, tree JSONB, dedup endpoint, presign
workspaces · photos (dhash, EXIF cols next) · pgvector for P4
presigned direct uploads · originals + renditions · zero egress
| # | Decision / risk | Owner | Default |
|---|---|---|---|
| D-1 | Photo editing (P5) — in or out of product identity? | Merritt | out for v1 |
| D-2 | DNS A record moorephotos → 40.192.31.95 (GoDaddy) to light up the subdomain | Founder (2 min) | — |
| D-3 | R2 bucket + keys to enable real photo storage (P1) | Founder | R2, ~$5/mo |
| D-4 | Engagement model before P2+ (favor → equity / build-&-own) | Founder + Merritt | revisit at P1 done |
| D-5 | Migrating her Vercel/Upstash users (T7 import) + telling her about the reload-wipe bug in her prod | Founder | tell her now |
| D-6 | Engagement analytics (P3.5) — in MoorePhotos, or stays AdPilot territory? Reuse path: shared social-connectors crate both products consume | Founder + Merritt | yes, at P3 |
| R-1 | RISK her prod app still wipes workspaces on reload (bug fixed only on our branch) | — | ship fix via PR |
| R-2 | RISK P3 needs Meta Business API review — longest external dependency, start early | — | file at P2 |