Practice OS
a modern practice management platform.
A solo-founder cost & timeline study, plus an enterprise-grade Product Requirements Document covering the sixteen core modules of a modern accounting practice — from AI Agents to Workflow Automation.
The numbers, up front.
Cost compression comes from collapsing eng + design + QA into a single founder loop. Build velocity is 3–4× a traditional team.
Accountants are risk-averse. SOC2, audit logs, and white-glove onboarding matter more than a perfect feature list.
Automators + email-as-work are the depth incumbents miss. Plan to spend ~20% of the build there.
Where the money goes.
Nine phases spanning 30 weeks. Core MVP, Workflows + Portal, and AI Agents together consume about 55% of the AI-build cost.
| Phase | Weeks | AI Build | Traditional | Focus |
|---|---|---|---|---|
| Discovery & PRD | 2 | $400 | $45,000 | Personas, jobs-to-be-done, competitive teardown. |
| UX & Design System | 2 | $600 | $70,000 | v0 + Figma component library, brand. |
| Foundation (Auth, Org, Billing infra) | 3 | $2,400 | $110,000 | Multi-tenant auth, RBAC, audit log, Stripe. |
| Core MVP (CRM, PM, Time, Email) | 6 | $7,500 | $240,000 | P0 modules end-to-end. |
| Workflow + Automation + Portal | 5 | $5,800 | $180,000 | The true moat — flows + portal. |
| AI Agents + Integrations | 4 | $6,800 | $140,000 | Email triage, bookkeeping copilot, Xero/QBO. |
| Reporting, Billing, eSign | 3 | $2,800 | $90,000 | Revenue-critical surface. |
| Private Beta + Hardening | 3 | $1,800 | $70,000 | Security review, SOC2 prep, load test. |
| Launch + Post-launch | 2 | $900 | $35,000 | Marketing site, onboarding, support. |
A 30-week build, week by week.
Optimistic-but-realistic schedule assuming the founder is full-time, AI-tools fluent, and defers SOC2 Type II + on-prem to Year 2.
All sixteen modules.
From AI Agents to Workflow Automation. Each module estimated independently.
AI Agents
Autonomous task bots: bookkeeper triage, email replies, follow-ups, reconciliation prep.
Billing & Payments
Invoices, recurring billing, payment links, time-to-bill reconciliation, Stripe/ACH.
Client Engagements
Proposals, engagement letters, scope management, pricing → handoff into workflows.
Client Management (CRM)
Client + contact records, relationships, communication timeline, custom fields.
Client Portal
Branded client app: requests, document upload, esign, payments, status.
Document Management
Versioned files, folders, Google Drive/OneDrive/Sharepoint sync, OCR.
Ecosystem Integrations
QuickBooks, Xero, Gmail, Outlook, Zapier, calendars, tax software.
Email Management (Triage)
Shared team inbox tied to clients/jobs, comments, assignment, conversion to tasks.
eSignature & Approvals
In-product signing, signing order, audit trail, branded experience.
Period Close Automation
Month-end close checklists, transaction review, exception flagging.
Project Management
Jobs, Kanban + list + timeline views, statuses, priorities, custom workflows.
Reporting & Analysis
Capacity, utilization, WIP, AR, realization, partner dashboards.
Tax Organizers & Binders
Intake checklists, tax doc collection, organizer flow, prior-year carryforward.
Team Collaboration
Comments, @mentions, notes on every record, internal threads vs. client-visible.
Time & Budgets
Timers, timesheets, budgets per job, role-based billing rates.
Workflow Automation
Templated workflows, automators (reminders, status changes), recurrence.
The founder's toolbelt.
Total monthly run-rate: $655/mo — less than a senior engineer's morning coffee budget.
| Tool | Purpose | Category | Monthly |
|---|---|---|---|
| Emergent E1 | Full-stack AI agent: scaffolding, features, fixes | Build | $200 |
| Cursor (Pro) | IDE-level pair programming | Build | $20 |
| Claude Sonnet 4.5 | Architecture, long-context reasoning, PRD drafting | Reasoning | $100 |
| GPT-5.2 | Code review, tricky algorithms, agent tool-use | Reasoning | $80 |
| v0 by Vercel | Rapid UI prototyping, component generation | Design | $20 |
| Figma + AI plugins | Polish, branding, marketing site | Design | $15 |
| Linear | Roadmap, issue tracking | Ops | $10 |
| Vercel + Render/Fly | Hosting frontend + backend | Infra | $60 |
| MongoDB Atlas | Primary datastore | Infra | $60 |
| Stripe | Billing + invoicing (2.9% + 30¢) | Infra | Usage-based |
| Sentry + PostHog | Observability + product analytics | Ops | $40 |
| Domain, email, misc | Resend, Cloudflare, S3 | Infra | $50 |
| Total | $655/mo | ||
- Build
- Design
- Infra
- Ops
- Reasoning
An opinionated architecture.
Chosen for AI-tool friendliness, deploy velocity, and a credible enterprise story.
Who we're building for.
Core jobs-to-be-done.
As a partner, I can see firmwide WIP, AR and capacity on one dashboard.
As a manager, I can spin up a job from a template and assign it to a team in 1 click.
As a staff accountant, I can convert an inbound client email into a task linked to a job.
As an admin, I can send an engagement letter for esign and have it convert into a job and recurring invoice when signed.
As a client, I can upload requested docs and pay an invoice from one branded portal.
As an AI Bookkeeper agent, I can review new transactions and prepare a categorization summary for human approval.
Schema, at a glance.
| Entity | Fields |
|---|---|
| Organization | id, name, plan, region, billing_customer_id, created_at |
| User | id, org_id, email, role, mfa_enabled, last_seen_at |
| Client | id, org_id, type (business/individual), name, primary_contact_id, custom_fields |
| Contact | id, client_id, name, email, phone, role |
| Job (Work Item) | id, org_id, client_id, template_id, status, due_at, budget_minutes, assignees[] |
| Task | id, job_id, title, assignee_id, status, due_at, dependencies[] |
| WorkflowTemplate | id, org_id, name, stages[], automators[] |
| Automator | id, trigger, conditions[], actions[] (state-machine driven) |
| EmailThread | id, org_id, subject, participants[], client_id?, job_id? |
| Document | id, org_id, name, version, parent_id, source (s3/drive) |
| TimeEntry | id, user_id, job_id, minutes, billable, rate_cents |
| Invoice | id, org_id, client_id, line_items[], total_cents, status, stripe_id |
| Engagement | id, client_id, scope, recurring_schedule, signed_at |
| Agent | id, org_id, kind (bookkeeper/triage/follow_up), config, last_run_at |
| AuditLog | id, actor_id, action, target, before/after, ip, ts |