Moonlitic
Product Backlog — User Stories
Internal Only — Not for Investor Distribution

Cross-Cutting Concerns

Foundational stories spanning Security & Compliance, Infrastructure & DevOps, Legal & Contracts, and Integration Engineering. These stories establish platform-wide capabilities and integrations.

10
Epics
23
User Stories
105
Story Points
S

Security & Compliance

4 Epics · 12 User Stories · 52 SP
Epic: HIPAA Technical Safeguards — Encryption, Access Control, Audit
SEC-001 End-to-end encryption for data at rest and in transit
As a security engineer, I want all PHI encrypted with AES-256 at rest and TLS 1.3 in transit so that data is protected even if storage or network is compromised.
Acceptance Criteria
Given patient data is stored in Azure Health Data Services, When I inspect the storage configuration, Then Azure-managed keys (or customer-managed keys) are enforcing AES-256 encryption and no unencrypted blobs exist.
Given a buyer calls the data delivery API, When I inspect the connection, Then TLS 1.3 is enforced and TLS 1.0/1.1 connections are rejected.
SEC-002 Role-based access control via Azure Entra ID
As a security engineer, I want all system access governed by Entra ID roles (patient, clinician, buyer, operator, admin) with least-privilege defaults so that each user can only access resources appropriate to their role.
Acceptance Criteria
Given a user authenticates as a "buyer" role, When they attempt to access patient-level records, Then access is denied with a 403 and the attempt is logged to the security audit trail.
Given a new role is created, When permissions are assigned, Then the role starts with zero permissions and each resource must be explicitly granted.
SEC-003 Comprehensive security audit logging
As a compliance officer, I want every PHI access, authentication event, and system change logged immutably with timestamp, user, action, and resource so that we can respond to any HIPAA audit inquiry within 24 hours.
Acceptance Criteria
Given a clinician views a patient record, When the access occurs, Then an audit entry is written with: user ID, patient ID, resource type, action, timestamp, IP address, and consent status at time of access.
Given an auditor requests logs for the last 90 days, When the query runs, Then results are returned within 30 seconds and logs cannot be modified or deleted by any user including admins.
Epic: Zero Trust Architecture — Network Segmentation & Threat Detection
SEC-004 Network segmentation between portal tiers
As a security engineer, I want each portal tier (patient, clinician, marketplace, admin) running in isolated network segments with no lateral movement so that a breach in one portal cannot reach another.
Acceptance Criteria
Given the marketplace portal (Door 3) is compromised, When the attacker attempts to reach the patient data store, Then all traffic is blocked by NSG rules and the intrusion attempt triggers an Azure Sentinel alert.
SEC-005 Automated vulnerability scanning
As a security engineer, I want automated vulnerability scans running weekly against all deployed services so that known CVEs and misconfigurations are detected before they can be exploited.
Acceptance Criteria
Given a weekly scan runs, When a critical vulnerability is detected, Then a Sev-1 ticket is auto-created, the security team is paged, and a 48-hour SLA for remediation begins.
Given no new vulnerabilities are found, When the scan completes, Then a "Clean Scan" report is generated and archived for compliance records.
SEC-006 DDoS protection and rate limiting
As a platform operator, I want Azure DDoS Protection and API rate limiting on all public endpoints so that the platform remains available under attack and API abuse is throttled.
Acceptance Criteria
Given a buyer API key exceeds 100 requests/minute, When the rate limiter fires, Then subsequent requests receive 429 Too Many Requests and the event is logged.
Epic: HIPAA BAA Chain & Compliance Certification
SEC-007 Execute BAA with Microsoft Azure
As a compliance officer, I want a signed Business Associate Agreement with Microsoft covering Azure Health Data Services so that our cloud infrastructure vendor is contractually bound to HIPAA requirements.
Acceptance Criteria
Given we provision an Azure tenant, When we accept the Microsoft Online Services BAA, Then the signed BAA is archived in our compliance vault and covers all HIPAA-eligible Azure services we use.
Given an auditor asks for our BAA chain, When we produce documentation, Then the chain shows: Moonlitic ↔ Microsoft Azure, Moonlitic ↔ Data Aggregator, Moonlitic ↔ Velo, Moonlitic ↔ Clear.
SEC-008 BAA with health data aggregator
As a compliance officer, I want a signed BAA with our data aggregator (Data Aggregator / 1upHealth) so that PHI flowing through the aggregator is covered under HIPAA.
Acceptance Criteria
Given we select an aggregator vendor, When contract negotiation begins, Then BAA execution is a prerequisite before any patient data flows and the BAA specifies data categories, retention, and breach notification obligations.
SEC-009 SOC 2 Type II readiness assessment
As a compliance officer, I want a SOC 2 Type II readiness assessment completed within 6 months so that enterprise buyers and health systems trust Moonlitic's security posture.
Acceptance Criteria
Given the readiness assessment begins, When gaps are identified, Then each gap has an owner, remediation plan, and target date, tracked in a compliance dashboard.
Given all gaps are remediated, When the external auditor begins the Type II observation period, Then all controls are operating effectively for a minimum 3-month observation window.
Epic: Incident Response & Breach Notification
SEC-010 Incident response playbook
As a security engineer, I want a documented incident response playbook with roles, escalation paths, and runbooks for common scenarios (data breach, unauthorized access, ransomware) so that the team responds within HIPAA's required timelines.
Acceptance Criteria
Given a potential breach is detected, When the IR process begins, Then the playbook defines: who is notified within 1 hour, containment steps within 4 hours, and HHS notification within 60 days if 500+ records are affected.
Given a tabletop exercise is conducted quarterly, When the exercise completes, Then lessons learned are documented and the playbook is updated.
SEC-011 Breach notification to affected patients
As a patient, I want to be notified within 60 days if my data is involved in a breach, with clear information about what was exposed and what steps I should take so that I can protect myself.
Acceptance Criteria
Given a breach affecting my data is confirmed, When the notification period begins, Then I receive a letter (and email) describing: what data was exposed, when it happened, what Moonlitic is doing, and what I should do (credit monitoring, etc.).
SEC-012 Penetration testing program
As a security engineer, I want annual third-party penetration testing against all portals and APIs so that vulnerabilities are identified by external experts before malicious actors find them.
Acceptance Criteria
Given the annual pen test is scheduled, When the test completes, Then all critical and high findings have remediation plans within 7 days and are resolved within 30 days.
Given the pen test report is finalized, When an enterprise buyer requests security documentation, Then a redacted executive summary is available showing test scope, methodology, and finding counts by severity.
I

Infrastructure & DevOps

3 Epics · 10 User Stories · 42 SP
Epic: Azure Cloud Foundation — Tenant, Networking, FHIR Store
INF-001 Provision Azure tenant and subscription structure
As a platform operator, I want an Azure tenant provisioned with separate subscriptions for dev, staging, and production so that environments are isolated and cost-tracked independently.
Acceptance Criteria
Given the Azure tenant is created, When I inspect the subscription layout, Then I see: moonlitic-dev, moonlitic-staging, moonlitic-prod, each with budget alerts at 80% and 100% of monthly allocation.
Given a developer deploys to dev, When they attempt to access prod resources, Then access is denied by Entra ID role boundaries.
INF-002 Azure Health Data Services workspace setup
As a platform operator, I want Azure Health Data Services provisioned with FHIR R4 server, de-identification service, and DICOM service so that clinical data flows have a production-grade home.
Acceptance Criteria
Given the workspace is provisioned, When I send a test FHIR Patient resource via REST, Then it is stored successfully and retrievable via FHIR search with Entra ID bearer token auth.
Given I run the de-identification service on a Patient resource, When the output is returned, Then all 18 HIPAA Safe Harbor identifiers are removed or generalized.
INF-003 Virtual network and private endpoints
As a platform operator, I want all Azure services connected via private endpoints within a VNet with no public internet exposure for data services so that PHI never traverses the public internet inside our infrastructure.
Acceptance Criteria
Given the FHIR server is deployed, When I check its network settings, Then public access is disabled and only private endpoint connections from the Moonlitic VNet are accepted.
Epic: CI/CD Pipeline & Deployment Automation
INF-004 GitHub Actions CI pipeline
As a developer, I want every PR to trigger automated linting, unit tests, security scan, and build so that broken code never reaches the main branch.
Acceptance Criteria
Given I push a PR, When the CI pipeline runs, Then it executes: lint, unit tests (90%+ coverage gate), SAST scan, dependency vulnerability check, and build — all must pass before merge is allowed.
Given a security vulnerability is found in a dependency, When the scan reports it, Then the PR is blocked with a clear message showing the CVE and affected package.
INF-005 Infrastructure as Code with Terraform
As a platform operator, I want all Azure infrastructure defined in Terraform with state stored remotely so that environments are reproducible, version-controlled, and auditable.
Acceptance Criteria
Given I run terraform plan against the production config, When no changes have been made, Then the plan shows "No changes. Infrastructure is up-to-date."
Given I need a new Azure resource, When I add it to Terraform and submit a PR, Then the plan output is attached to the PR for review before apply.
INF-006 Blue-green deployment pipeline
As a platform operator, I want blue-green deployments with automated rollback on health check failure so that production updates have zero downtime and automatic recovery.
Acceptance Criteria
Given a new version is deployed to the green slot, When health checks pass for 5 minutes, Then traffic is swapped from blue to green with zero dropped requests.
Given the green slot fails health checks, When the failure threshold (3 consecutive failures) is hit, Then traffic stays on blue, the deployment is marked failed, and the team is alerted.
Epic: Monitoring, Alerting & Disaster Recovery
INF-007 Application performance monitoring
As a platform operator, I want Azure Application Insights tracking response times, error rates, and throughput for all portals and APIs so that I can detect performance degradation before users notice.
Acceptance Criteria
Given Door 2 API response time exceeds 2 seconds (p95), When the threshold is breached for 3 consecutive minutes, Then an alert fires to the ops channel with latency breakdown.
INF-008 Uptime SLA monitoring dashboard
As a platform operator, I want a real-time dashboard showing uptime SLA per portal (target 99.9%) so that I can report availability to stakeholders and identify reliability trends.
Acceptance Criteria
Given I open the uptime dashboard, When the page loads, Then I see: current month uptime %, 90-day trend, incident count, and MTTR for each portal (Doors 1-4).
INF-009 Disaster recovery with geo-redundant backup
As a platform operator, I want daily encrypted backups with geo-redundant storage and a tested DR plan with RTO of 4 hours and RPO of 1 hour so that we can recover from a catastrophic failure.
Acceptance Criteria
Given the primary Azure region goes down, When the DR failover is initiated, Then all services are operational in the secondary region within 4 hours with no more than 1 hour of data loss.
Given a quarterly DR drill is scheduled, When the drill completes, Then actual RTO and RPO are measured and any gaps are documented with remediation plans.
INF-010 Cost monitoring and optimization
As a finance team member, I want Azure cost dashboards broken down by service, environment, and team so that I can track cloud spend against budget and identify optimization opportunities.
Acceptance Criteria
Given I open the cost dashboard, When I filter by "production," Then I see month-to-date spend, forecasted month-end, top 5 cost drivers, and comparison to prior month.
E

Integration Engineering

3 Epics · 10 User Stories · 44 SP
Epic: Health Data Aggregator Integration (Production Data Source)
INT-001 Aggregator API integration and patient data pull
As a platform operator, I want the aggregator API integrated so that when a patient authorizes data access, their FHIR R4 records are pulled and stored in Azure Health Data Services so that clinical data is available within minutes of patient authorization.
Acceptance Criteria
Given a patient completes Clear verification and grants consent, When the authorization token is sent to the aggregator, Then FHIR resources (Patient, Condition, MedicationRequest, Observation, DiagnosticReport) are pulled and stored in Azure FHIR within 5 minutes.
Given the aggregator returns partial data (e.g., EHR doesn't support Observation), When the pull completes, Then available resources are stored and missing categories are logged with the EHR source noted.
INT-002 Incremental data sync from aggregator
As a platform operator, I want incremental syncs running daily to pull new clinical data for all authorized patients so that patient records stay current without requiring manual re-authorization.
Acceptance Criteria
Given a patient had a lab result added at their EHR today, When the nightly sync runs, Then the new Observation resource appears in Azure FHIR by the next morning and the patient sees it in Door 2 Health Updates.
Given a patient has revoked aggregator authorization, When the sync runs, Then their data pull is skipped, existing data is retained per retention policy, and the patient is notified to re-authorize if they wish.
INT-003 FHIR resource mapping and normalization
As a platform operator, I want all aggregator data normalized to a consistent FHIR R4 profile with Moonlitic extensions so that downstream consumers (Folders 01-05, Doors 1-4) don't need to handle EHR-specific variations.
Acceptance Criteria
Given data arrives from Epic (via aggregator) using US Core profiles, When normalization runs, Then all resources conform to the Moonlitic FHIR profile with consent metadata extensions attached.
Given data arrives from a non-US-Core EHR with non-standard coding, When normalization runs, Then codes are mapped to standard terminologies (ICD-10, SNOMED, RxNorm, LOINC) and unmappable codes are flagged for manual review.
Epic: Identity & Payment Service Integrations
INT-004 Clear patient identity verification flow
As a patient, I want to verify my identity through Clear during registration so that my account is IAL2-verified and I can access my health data.
Acceptance Criteria
Given I click "Verify Identity" during registration, When I complete the Clear flow (photo ID + selfie), Then my Moonlitic account is marked IAL2-verified and I can proceed to link my health data.
Given Clear verification fails, When the failure is returned, Then I see a clear message with the reason and alternative verification options (in-person, phone support).
INT-005 Velo Payments patient onboarding
As a patient, I want Velo Payments onboarding embedded in my Earnings tab so that I can link my bank account and start receiving payouts without leaving the Moonlitic portal.
Acceptance Criteria
Given I am on the Earnings tab with no bank linked, When I click "Set Up Payouts," Then the Velo Payments onboarding flow opens in-context, collects my bank details and tax info, and upon completion I see my masked account number and "Ready for Payouts" status.
INT-006 Twilio MFA integration for all portals
As a platform operator, I want Twilio Verify integrated for SMS-based MFA on patient (Door 2) and clinician (Door 4) login so that all PHI access is protected by multi-factor authentication.
Acceptance Criteria
Given a patient enters their email on the login page, When they click "Continue," Then Twilio sends a 6-digit code to their registered phone and the code expires after 5 minutes.
Given Twilio SMS delivery fails (carrier issue), When the failure is detected, Then the user is offered a fallback (email code or authenticator app).
Epic: Notification & Communication Integrations
INT-007 SendGrid transactional email setup
As a platform operator, I want SendGrid integrated with branded email templates for consent confirmations, payout receipts, trial alerts, and system notifications so that all transactional emails are professional, deliverable, and trackable.
Acceptance Criteria
Given a patient revokes consent, When the confirmation email is sent, Then it arrives within 60 seconds, uses the Moonlitic branded template, and includes a summary of current consent states.
Given an email bounces, When SendGrid reports the bounce, Then the patient's communication preferences flag "Email undeliverable" and an in-app notification is used as fallback.
INT-008 Zoho CRM buyer pipeline integration
As a platform operator, I want Zoho CRM integrated with Door 3 buyer registration so that every new buyer application auto-creates a CRM deal, and approval stage changes sync bidirectionally.
Acceptance Criteria
Given a buyer submits a registration on Door 3, When the application is created, Then a Zoho CRM deal is auto-created with: company name, use case, contact info, and pipeline stage "Application Received."
Given a stakeholder approves in the platform, When the approval is recorded, Then the Zoho CRM deal stage advances accordingly (e.g., "Legal Approved" → "Compliance Review").
INT-009 Zoho Books invoicing integration
As a finance team member, I want marketplace query charges auto-generating Zoho Books invoices so that buyer billing is automated and reconciliation is seamless.
Acceptance Criteria
Given a buyer runs 10 Cohort queries in March, When the monthly billing cycle closes, Then a Zoho Books invoice is auto-generated for $3,500 (10 x $350) and emailed to the buyer's billing contact.
INT-010 ClinicalTrials.gov API integration for real trial matching
As a patient, I want my trial matches sourced from real ClinicalTrials.gov data matched against my clinical profile so that I see actual active trials I'm eligible for, not demo data.
Acceptance Criteria
Given my profile includes Type 2 Diabetes and I'm in Texas, When the trial matcher runs, Then I see active NCT studies for T2D with sites within 50 miles, ranked by eligibility match score.
Given ClinicalTrials.gov API is unavailable, When the sync fails, Then the last successful dataset is used and a "Data as of [date]" notice is shown.