A complete, phased brief for an engineer (or "Engineer Claude") to build TeamPulse from the interactive demo into a production, sellable SaaS. The live demo at /teampulse is the design + UX source of truth for Phase 1.
TeamPulse is an all-in-one workforce visibility platform. It answers three questions for any business with employees or contractors: Who is working on what? How productively? And what do we owe them / bill for it?
| Module | What it does | Priority |
|---|---|---|
| Time tracking | Start/stop timer tied to project/task/client; manual entries; automatic & idle detection; desktop/web/mobile. | P0 |
| Activity & monitoring | Activity level (input), active app/URL, idle time, optional screenshots (interval + blur + opt-in). | P0 |
| Timesheets | Auto-built from tracked time; edit, submit, approve; weekly/period views. | P0 |
| Reports & insights | 20+ reports: hours by project/person, productivity trend, apps/URLs, utilization, anomalies. | P1 |
| Projects & budgets | Projects, tasks, budgets, bill/pay rates, cost-vs-budget, margins. | P1 |
| GPS / field | Geofenced job sites, auto clock-in/out, location trails, mobile-first. | P1 |
| Scheduling & attendance | Shifts, availability, PTO/time-off, attendance. | P2 |
| Payments & payroll | Hours→timesheets→invoices→multi-currency payouts; overtime rules; approvals. | P1 |
| Integrations | Slack, Jira, Asana, Trello, GitHub, QuickBooks, PayPal, Wise, Google Calendar + public API/webhooks. | P2 |
| Admin & billing | Workspace setup, roles/RBAC, SSO, seat management, subscription billing (Stripe). | P0 |
[ Desktop agent ] [ Mobile app ] [ Web timer ]
\ | /
\______ event ingestion API ______/
|
+---------------+----------------+
| |
API / services background workers
(REST + GraphQL) (aggregation, reports, alerts)
| |
+----+--------- data layer -----------+----+
| PostgreSQL (core) | TimescaleDB/ClickHouse (events) |
| Redis (cache/queue)| S3/R2 (screenshots, signed URLs)|
+---------------------------------------------------------+
| |
Payments rails (Stripe/Wise/PayPal) Integrations (OAuth)
|
Web dashboard SPA (React/Next) — realtime via WebSocket
| Phase | Deliverable | Est. |
|---|---|---|
| P0 · Foundation | Repo, CI/CD, auth, multi-tenant workspace, RBAC, DB schema, web timer, core time-tracking API, dashboard shell. Demo UI already done ✔ | 2–3 wk |
| P1 · Desktop agent | Electron agent: timer, activity level, active app/URL, idle, screenshot capture + upload (signed URLs); privacy controls. | 3–4 wk |
| P2 · Timesheets + reports | Auto timesheets, approval flow, event aggregation pipeline, core reports & charts, anomaly flags. | 2–3 wk |
| P3 · Projects + payments | Projects/tasks/rates, budget tracking, Stripe subscription billing, invoicing, multi-currency payouts, overtime engine. | 3–4 wk |
| P4 · Mobile + GPS | React Native app, geofenced job sites, auto clock-in/out, location trails, offline sync. | 3–4 wk |
| P5 · Integrations + launch | Slack/Jira/QuickBooks/etc, public API + webhooks, SSO, audit logs, security review, load testing, launch. | 3–4 wk |
MVP to sell = P0 + P1 + P2 + billing slice of P3 (≈ 8–10 weeks solo, faster with a small team). Field/GPS + mobile can follow as v2.
workspaces(id, name, plan, created_at) users(id, workspace_id, name, email, role, pay_rate, bill_rate, currency) projects(id, workspace_id, client, name, budget, status) tasks(id, project_id, name, assignee_id) time_entries(id, user_id, task_id, started_at, ended_at, source) activity_events(ts, user_id, activity_pct, app, url, idle) -- time-series screenshots(id, user_id, ts, s3_key, blurred) timesheets(id, user_id, period, total_hours, status) locations(ts, user_id, lat, lng, jobsite_id) -- time-series jobsites(id, workspace_id, name, lat, lng, radius_m) invoices(id, workspace_id, client, amount, currency, status) payouts(id, user_id, period, amount, currency, status) subscriptions(id, workspace_id, seats, stripe_id, status)
/docs with an API reference entry.