# Milestone 5 Acceptance Checklist

Scope: Features #10/#11/#12 (voice provider abstraction, recording/transcription archive, metered billing automation)

## Implemented

- [x] Voice provider abstraction config surface
  - Schema: `voiceProviderConfigs` in `packages/backend/convex/schema.ts`
  - API: `packages/backend/convex/public/voiceProviderConfigs.ts`
- [x] Recording + transcription archive
  - Schema: `callRecordings`
  - Archiver: `packages/backend/convex/system/voiceArchive.ts`
  - Webhook ingestion: `packages/backend/convex/system/vapiWebhook.ts`
  - Query API: `packages/backend/convex/public/recordings.ts`
- [x] Metered usage + billing rollups
  - Schemas: `usageEvents`, `billingRollups`
  - Usage event writer: `packages/backend/convex/system/billing.ts`
  - Rollup computation:
    - internal: `packages/backend/convex/system/billing.ts`
    - public: `packages/backend/convex/public/billing.ts`
  - Daily automation: `packages/backend/convex/crons.ts`, `packages/backend/convex/cronHandlers.ts`

## Validation

- [x] `npx convex codegen`
- [x] `pnpm -C packages/backend test -- --runInBand`

## Residual Risks

- Voice provider failover logic is config-ready but runtime failover orchestration per-call can be further expanded.
- Recording redaction is modeled (`piiRedactionStatus`) but advanced content-level redaction pipeline is not yet implemented.
- Billing rates are currently static defaults in code paths and should be externalized to managed pricing config for production finance operations.
