Product Requirements Document (PRD)
Order Management System — Title Search Company
Timeline: June 26 – August 10, 2026 (30 working days)
Current System (Partial)
| Feature | Status |
|---|
| Email order intake (Gmail polling) | Partial |
| Order CRUD + status tracking | Partial |
| Employee management (CRUD, auth) | Partial |
| Round-robin order assignment | Partial |
| County credentials storage | Partial |
| Playwright county website login | Partial |
| Google Sheets sync | Partial |
| Auto-hold for stale orders | Partial |
| Admin dashboard (React) | Partial |
| Analytics (by employee, county, daily) | Partial |
| Daily email reports to senders | Partial |
| Push notifications (FCM) | Partial |
| Password reset flow | Partial |
| MariaDB migration | Partial |
Day-by-Day Roadmap
June 26 (Thu) — Dev Environment Setup
- Install deps, configure .env, verify MariaDB connection
- Run migrations + seed data
- Verify frontend builds, test basic API endpoints
June 27 (Fri) — Notifications
- Wire FCM push to order events
- Email notifications on status change
- SMS notifications via Twilio
- Test full notification flow
June 30 (Mon) — PDF Reports
- Set up PDFKit/Puppeteer, create branded template
- Generate PDF from order data
- Attach PDF to completion email
- Set up Tesseract.js, build attachment parser
- Integrate llama.cpp for field extraction
- OpenAI API fallback for complex docs
- Test: email → OCR → order fields
July 2 (Wed) — County Record Scraping
- Harden Playwright login (error handling, retries)
- Build scrape result parser (deed/mortgage/lien)
- Store scraped data in orders table
July 3 (Thu) — Chain of Title + Priority Queue
- Build ownership timeline from scraped data
- Add rush order flag + priority queue view
- Employee workload view
July 4 (Fri) — Audit Log + Search
- Create audit_logs table, log all CRUD ops
- Build audit log viewer in admin UI
- Add order search + filters (ID, county, date, status)
July 7 (Mon) — Multi-Tenant Setup
- Add tenant_id to all tables
- Create tenants table, scope all queries
- Tenant-based config (SMTP, senders)
July 8 (Tue) — Multi-Tenant Auth + SOC2 Start
- Tenant role-based access, JWT scoping
- Encrypt credentials at rest (AES-256)
- Data retention policies
July 9 (Wed) — SOC2 Continued
- Access control matrix, session timeout
- Rate limiting, IP restrictions
- Security audit
July 10 (Thu) — Dashboard Polish
- Redesign overview cards with trends
- County breakdown chart, daily trend chart
- Employee performance table with bar charts
July 11 (Fri) — API Hardening
- Input validation (Zod/Joi)
- Rate limiting middleware, request logging
- Health check endpoints
July 14 (Mon) — Sheets + Testing
- Retry logic for Google Sheets API
- API integration tests (auth, orders, config)
- Frontend component tests
- Fix test failures, handle edge cases
- Add database indexes, optimize queries
- Connection pooling tuning
July 16 (Wed) — Backup System
- Daily MariaDB backup cron with rotation
- Backup verification + offsite copy
- Restore procedure docs
July 17 (Thu) — Production Setup
- Ubuntu VPS, Node.js, MariaDB, nginx
- SSL (Let's Encrypt), PM2 process manager
- nginx reverse proxy config
July 18 (Fri) — Production Deployment
- Deploy backend + frontend to production
- Test all endpoints, verify email/SMS
- PM2 monitoring, error alerting
July 21 (Mon) — Monitoring + Docs
- Uptime monitoring (UptimeRobot)
- API documentation, deployment guide
- User guide, README update
July 22 (Tue) — Final Testing
- Full regression testing
- Load + security testing
- UAT with real order data
July 23 (Wed) — Fixes + Polish
- Address test/blocker issues
- UI polish, mobile responsiveness
- Accessibility check
July 24 (Thu) — Soft Launch
- Deploy to production
- Invite first tenant, monitor closely
- Gather feedback
July 25 (Fri) — Client Onboarding Flow
- Build tenant onboarding wizard
- Client-specific branding (logo, colors)
- Test multi-tenant data isolation
July 28 (Mon) — Report Delivery Improvements
- Report download button in admin UI
- Daily report PDF attachment per sender
- Report history / archive view
July 29 (Tue) — Advanced Search + Filters
- Full-text search across orders
- Advanced filter panel (date range, county, employee, status)
- Saved filter presets
July 30 (Wed) — Employee Dashboard
- Employee-specific dashboard (my orders, my stats)
- Personal performance metrics
- Order claim/Release flow
July 31 (Thu) — Notification Preferences
- Per-user notification settings (push, email, SMS)
- Notification history/log viewer
- Quiet hours config
Aug 1 (Fri) — Data Export
- CSV/Excel export for orders
- Analytics export (charts as images)
- Audit log export
Aug 4 (Mon) — UI/UX Polish
- Loading states, skeleton screens
- Empty state illustrations
- Toast notifications for actions
- Keyboard shortcuts
Aug 5 (Tue) — Mobile Responsive
- Admin dashboard mobile layout
- Employee dashboard mobile layout
- Touch-friendly action buttons
Aug 6 (Wed) — Error Handling + Resilience
- Global error boundaries (React)
- API error response standardization
- Retry logic for failed operations
- Offline detection
Aug 7 (Thu) — Final Testing Round
- Full regression test
- Cross-browser testing (Chrome, Firefox, Edge)
- Load testing with concurrent users
- Security scan (OWASP)
Aug 8 (Fri) — Bug Fixes + Buffer
- Fix issues from testing
- Performance tuning based on real usage
- Edge case handling
Aug 10 (Mon) — Project Handoff
- Final documentation
- Knowledge transfer session
- Backup verification
- Production monitoring setup
- Project closeout
Tech Stack
| Layer | Technology |
|---|
| Backend | Node.js + Express |
| Frontend | React 18 + Vite + Tailwind + shadcn/ui |
| Database | MariaDB |
| Auth | JWT (admin), session (employee) |
| Email | Gmail API + Nodemailer |
| SMS | Twilio |
| Push | Firebase Cloud Messaging |
| OCR | Tesseract.js / Google Vision |
| AI | llama.cpp (local) + OpenAI API |
| Sheets | Google Sheets API |
| Automation | Playwright (Chromium) |
| PDF | PDFKit / Puppeteer |
| Process | PM2 |
In Scope
- AI-powered document extraction (OCR)
- Title search automation (county record scraping)
- SMS notifications (Twilio)
- Multi-tenant support
- SOC2 compliance (audit logs, encryption, access controls)