Skip to main content

Team Capacity & Load Model

Execution-layer artifact. Companion to ROADMAP.md. Defines team composition, critical-path teams, and parallelization per milestone.

1. Starting Assumptions

  • Sprint length: 2 weeks
  • Sprints per milestone: 6 (3 months)
  • Velocity baseline: 8–13 story points per developer per sprint (varies by seniority)
  • Overhead: 20% (code review, meetings, incident response, documentation)
  • Hiring ramp: New hires reach full velocity after 1 sprint ramp-up
  • Team topology: Stream-aligned teams + platform team + enabling teams (SRE, security, AI)

2. Team Definitions

TeamFocusCore Skills
Platformiam, tenant, hierarchy, licensing, access-policy, audit, config-resolver, fhir-gateway, platform-admin, terminologyNestJS, TypeORM, PostgreSQL, NATS, Keycloak, FHIR R4
Clinicalregistration, scheduling, provider-directory, facility-management, patient-chart, clinical-notes, vitals, problem-list, allergies, medication-managementNestJS, FHIR R4, clinical domain expertise
Diagnosticsorders-cpoe, results, laboratory-lis, radiology-pacsNestJS, HL7, DICOM, LIS/PACS domain
Financebilling, insurance, claimsNestJS, financial domain, multi-currency
Engagementpatient-portal-api, digital-communicationNestJS, React, real-time messaging, Jitsi
Pharmacypharmacy, ghasi-e-prescribing-gatewayNestJS, FHIR R4, pharmacy domain
PopHealthhealth-population, immunizations, care-plansNestJS, epidemiology, HMIS
Desktopdesktop-electron (all DESK-EPICs)Electron, SQLite, React, sync engine
AIai-orchestratorNestJS, LLM APIs, ONNX, ML ops
Interopfhir-gateway (depth), hl7v2-interop, SMART on FHIR, Bulk DataFHIR R4, HL7v2, SMART, IHE
MobileExpo React Native appReact Native, OIDC/PKCE, offline
DevOps/SREKong, Keycloak, infrastructure, CI/CD, observabilityDocker, K8s, Prometheus, Grafana, NATS ops
SecurityAudit, pen-testing, compliance, encryptionSecurity engineering, HIPAA/GDPR
QATesting strategy, E2E, load testing, clinical validationPlaywright, k6, clinical testing
Clinical SMEDomain validation, workflow review, FHIR profilesClinical informatics, EHR workflows

3. Headcount Table

TeamM0M1M2M3M4M5
Platform643223
Clinical286432
Diagnostics4463
Finance3342
Engagement432
Pharmacy321
PopHealth43
Desktop443332
AI222233
Interop233
Mobile3
DevOps/SRE333334
Security222222
QA233343
Clinical SME122221
Total222831374437

4. Critical-Path Teams Per Milestone

MilestoneCritical-path teamsBlocking deliverable
M0Platform, Desktop, DevOpsTenant isolation, sync engine, Kong/Keycloak
M1Clinical, DesktopCore EHR workflows, offline patient intake
M2Diagnostics, Finance, ClinicalOrders/CPOE, billing, results
M3Diagnostics (LIS), Pharmacy, EngagementLIS integration, e-prescribing, patient portal
M4Diagnostics (PACS), Finance, PopHealthRadiology, claims, population health
M5Interop, Mobile, DevOpsSMART on FHIR, mobile app, multi-region

5. Parallel Workstreams

StreamTeamsStartPeakDescription
A — Platform FoundationPlatform, DevOps, SecurityM0M0iam, tenant, hierarchy, licensing, audit, kong, keycloak
B — Desktop FoundationDesktopM0M0–M1Electron shell, SQLite, sync engine
C — AI FoundationAIM0M1–M2AI orchestrator, prompt registry, safety
D — Clinical CoreClinical, Clinical SMEM1M1Registration through medication management
E — Orders & ResultsDiagnostics, ClinicalM2M2CPOE, results, terminology depth
F — FinancialFinanceM2M2–M4Billing → insurance → claims
G — LaboratoryDiagnosticsM3M3LIS: specimens, worklists, instruments
H — Pharmacy & E-RxPharmacyM3M3Dispensing, e-prescribing gateway
I — EngagementEngagementM3M3Patient portal, digital communication
J — ImagingDiagnosticsM4M4PACS, DICOM, viewer
K — Population HealthPopHealthM4M4Cohorts, registries, HMIS
L — Mobile & InteropMobile, InteropM5M5Expo app, SMART on FHIR, bulk data

6. Hiring Plan

PeriodHiresFocus
M0 start22 (founding team)Platform (6), Desktop (4), AI (2), DevOps (3), Security (2), QA (2), Clinical (2), Clinical SME (1)
M1 start (+6)+6 → 28Clinical (+6 for core EHR), QA (+1)
M2 start (+3)+3 → 31Diagnostics (+4 new), Finance (+3 new), Clinical (-4 rebalanced)
M3 start (+6)+6 → 37Engagement (+4 new), Pharmacy (+3 new), Interop (+2 new), Clinical SME (+0), rebalance from Platform (-2)
M4 start (+7)+7 → 44Diagnostics (+2 PACS), Finance (+1), PopHealth (+4 new), QA (+1), AI (+1)
M5 start (-7)-7 → 37Mobile (+3 new), Interop (+1), DevOps (+1); Pharmacy (-1), Clinical (-1), Diagnostics (-3), Finance (-2), Engagement (-1), Desktop (-1), rebalance

7. Load Heatmap

Team │ M0 M1 M2 M3 M4 M5
────────────────┼─────────────────────────────────────────────
Platform │ ██████ ████ ███ ██ ██ ███
Clinical │ ██ ████████ ██████ ████ ███ ██
Diagnostics │ ░ ████ ████ ██████ ███
Finance │ ░ ███ ███ ████ ██
Engagement │ ░ ░ ████ ███ ██
Pharmacy │ ░ ░ ███ ██ █
PopHealth │ ░ ░ ░ ████ ███
Desktop │ ████ ████ ███ ███ ███ ██
AI │ ██ ██ ██ ██ ███ ███
Interop │ ░ ░ ██ ███ ███
Mobile │ ░ ░ ░ ░ ███
DevOps/SRE │ ███ ███ ███ ███ ███ ████
Security │ ██ ██ ██ ██ ██ ██
QA │ ██ ███ ███ ███ ████ ███
Clinical SME │ █ ██ ██ ██ ██ █
────────────────┼─────────────────────────────────────────────
Legend: █ = high load ██ = medium ███ = peak ░ = idle/not started

8. Velocity Assumptions

MetricValue
Sprint length2 weeks
Story points per dev per sprint8–13 (avg 10)
Overhead factor20% (effective: 8 pts/dev/sprint)
New hire ramp-up1 sprint at 50% velocity
Bug fix allocation15% of sprint capacity after M1
Tech debt allocation10% of sprint capacity after M2

9. Allocation Priority Rules

When staffing is constrained:

  1. Critical-path blocker — highest priority; redirect from non-critical stream
  2. Security/compliance issue — second priority; never defer
  3. Offline/sync bug — third priority (moat feature)
  4. AI feature — fourth priority (differentiator but medium priority)
  5. Enhancement/polish — lowest priority; defer to next milestone

10. Governance

  • Quarterly review: Headcount and allocation reviewed at each milestone gate.
  • Owner of record: VP Engineering owns the capacity model.
  • On-call rotation: After M1, each stream-aligned team provides 1 on-call engineer (rotated weekly).
  • Cross-team dependencies: Escalated via weekly architecture sync; blocked items get 48h response SLA.