Showing all phase content; selected phase is highlighted in section badges.

Cost Model

As-of: 2026-05-09. Azure pricing sourced from Azure App Service Linux Pricing and Azure Database for PostgreSQL Flexible Server Pricing. All figures are Central US region, pay-as-you-go. Verify all figures against current Azure pricing pages before presenting to stakeholders — prices may have changed since this document was last updated.


Build Cost (One-Time + Projected)

v1 — Spent to Date

CategoryEffort / CostNotes
Backend architecture + implementation~200 engineering hours5 streams: governance hardening, policy engine, ephemeral issuance, vault integration, notification skeleton
Frontend (React + Fluent UI 9)~60 engineering hoursFull UI with auth, routing, lease management, admin views
Policy engine (pure evaluator + 6 rules)~40 engineering hoursIncluded in backend total; called out for CTO visibility
Seed/fixture system~15 engineering hoursseed-definition.ts single-source-of-truth approach
Deploy pipeline (staging + prod scripts)~20 engineering hoursPowerShell scripts, zip deploy, smoke tests
Azure provisioning (staging)~10 engineering hoursResource group, App Service, Postgres, Key Vault, Entra registration
Azure provisioning (prod — partial)~5 engineering hoursResource group + App Service created, not configured
Keeper integration (KSM + Commander)~30 engineering hoursIncluded in backend total; called out for vendor-specific effort
Integration + pressure testing~20 engineering hours4 integration test suites, 2 pressure test scripts
Total v1 engineering~400 engineering hoursSingle engineer (Ben). No external contractors.
Tooling / LicensesCostNotes
Azure subscription (staging, ~2 weeks)~$25–40B1 App Service + B1ms Postgres + Key Vault ops
Keeper trial$0 (trial)12-day trial from provisioning date. Expiry is imminent.
Dev tooling (IDE, GitHub, CI)$0Existing infrastructure
Total v1 tooling spend~$25–40Excludes engineering labor cost

v3 — Projected Build Cost

CategoryEstimated EffortNotes
Production deployment + VNet/NAT/private endpoints20–30 hoursInfrastructure + validation
Bot Framework registration + Teams integration15–25 hoursM365 admin coordination, bot identity, Adaptive Card wiring
Governance hardening (HARDEN_GOVERNANCE_v1=true)10–15 hoursRuntime validation, staging soak, flag flip
Frontend test runner + coverage expansion15–20 hoursWire vitest, expand from 1 spec to baseline coverage
Discovery strategy finalization (UID-pinned)10–15 hoursReconcile hand-linked SQL, validate discovery job
Dedicated Postgres database + baseline migration5–10 hours
Keeper license conversion + KSM folder grants5–10 hoursExternal coordination with Keeper
Total v3 projected80–125 hoursScope not locked — this is directional.

v4 — Projected Build Cost

CategoryEstimated EffortNotes
SMS gateway integration (ACS or Twilio)20–30 hoursAPI integration, Key Vault config, error handling
Two-step issuance flow (challenge + OTP)30–40 hoursNew ChallengeEvent model, challenge.service.ts, endpoint changes
Android companion app (if option A)80–120 hoursNative Android dev, push notification, biometric
Standard SMS delivery (if option B)0 additional hoursNo app needed
Security review + threat modeling20–30 hoursSIM swap mitigation analysis, penetration testing
Total v4 projected70–220 hoursRange depends on companion app vs. SMS-only decision

Ongoing Cost (Monthly Run Rate)

v1 Staging (Current)

ResourceSKUEst. Monthly CostSource
App Service PlanB1 Linux (1 core, 1.75 GB)~$13Azure pricing pageverify
Postgres Flexible ServerBurstable B1ms (1 vCore, 2 GB)~$12–15Azure pricing pageverify. Plus storage at ~$0.115/GB/mo.
Postgres storage32 GB provisioned~$3.70Estimate based on standard provisioned storage
Key VaultStandard (operations)~$0.50–1.00$0.03/10K operations; low volume in staging
Application InsightsData ingestion~$1–3~$2.30/GB ingested; staging is low volume
Total staging~$30–37/moBelow the $50/mo budget alert threshold set in manifest

v3 Production (Projected)

ResourceSKU RecommendationEst. Monthly CostNotes
App Service PlanS1 Standard (1 core, 1.75 GB, custom domain + SSL, auto-scale)~$69Verify. B1 lacks custom domain SSL and auto-scale. S1 is the minimum production tier.
Postgres Flexible ServerGeneral Purpose D2s_v3 (2 vCores, 8 GB)~$100–125Verify. Burstable may suffice initially but GP is recommended for production SLA.
Postgres storage64 GB provisioned + backup~$10–15Growing with audit trail accumulation
Key VaultStandard~$1–2Modest operation volume
Application InsightsData ingestion~$5–15Depends on telemetry volume; 2–6 GB/mo estimated
NAT GatewayStandard~$32 + $0.045/GB processedFixed hourly cost + per-GB data processing
Keeper licensingPer-seat or platform feeTBDTrial must be converted. Contact Keeper for enterprise pricing.
Bot FrameworkFree tier (Teams channel)$0Free for standard channels including Teams
Total production~$220–260/moExcludes Keeper licensing (TBD)

v4 Production (Projected Additions)

ResourceSKUEst. Monthly CostNotes
Azure Communication Services (SMS)Per-message~$0.0075/msg (US)Volume-dependent. 100 msgs/mo = $0.75; 1,000 msgs/mo = $7.50
OR Twilio SMSPer-message~$0.0079/msg (US) + $1/mo phone numberSlightly higher per-message, additional phone number cost
Additional App Insights (challenge events)Marginal~$2–5New telemetry surface for OTP events

Projected Cost at Scale

Cost Scaling Model

ScaleUsersEst. Requests/MoApp ServicePostgresKVInsightsNAT GWSMS (v4)Total/MoPer-User/Mo
Pilot1050S1: ~$69B1ms: ~$15~$1~$3$0 (no VNet)~$88~$8.80
Department100500S1: ~$69D2s_v3: ~$125~$2~$8~$35~$4~$243~$2.43
Division1,0005,000P1V2: ~$140D4s_v3: ~$250~$5~$25~$40~$38~$498~$0.50
Enterprise10,00050,000P2V2: ~$280D8s_v3: ~$500~$15~$70~$55~$375~$1,295~$0.13

All figures are estimates. Verify against current Azure pricing. Keeper licensing is excluded from all rows — it’s a separate line item that depends on the licensing model negotiated.

Cost-Per-User Trend

Cost per user decreases with scale. The fixed-cost base (App Service, Postgres, NAT Gateway) is amortized across more users. The primary variable costs are Application Insights (scales with telemetry volume) and SMS (scales linearly with message count).

Non-Linear Cost Steps

These are the points where you have to upgrade SKUs:

TriggerCurrent SKUUpgrade ToCost Jump
Custom domain + SSL neededB1 (~$13)S1 (~$69)+$56/mo
>200 concurrent connections or >1.75 GB memoryS1 (~$69)P1V2 (~$140)+$71/mo
>4 vCores needed for PostgresD2s_v3 (~$125)D4s_v3 (~$250)+$125/mo
Postgres IOPS > burstable limitBurstable (~$15)General Purpose (~$125)+$110/mo
High-availability Postgres neededSingle serverZone-redundant HA~2x Postgres cost

What’s Not in This Model

  • Keeper licensing: Pricing is not public. Depends on seat count, enterprise vs. business tier, and negotiated terms. This is likely the single largest cost variable and must be resolved before v3 scoping.
  • Engineering labor: Ongoing maintenance, on-call, feature development.
  • Security audit: SOC 2 Type II readiness assessment (typically $30K–80K for initial audit).
  • Custom domain SSL: Azure-managed certificates are free for custom domains on S1+; third-party certs add cost only if required by policy.
  • Disaster recovery: Cross-region failover for Postgres and App Service would roughly double infrastructure cost.