2:I[7012,["4765","static/chunks/4765-f5afdf8061f456f3.js","9856","static/chunks/9856-3b185291364d9bef.js","6687","static/chunks/app/docs/%5B...slug%5D/page-e07536548216bee4.js"],"MarkdownRenderer"] 4:I[9856,["4765","static/chunks/4765-f5afdf8061f456f3.js","9856","static/chunks/9856-3b185291364d9bef.js","6687","static/chunks/app/docs/%5B...slug%5D/page-e07536548216bee4.js"],""] 5:I[4126,[],""] 7:I[9630,[],""] 8:I[4278,["9856","static/chunks/9856-3b185291364d9bef.js","8172","static/chunks/8172-b3a2d6fe4ae10d40.js","3185","static/chunks/app/layout-2814fa5d15b84fe4.js"],"HeadingProvider"] 9:I[1476,["9856","static/chunks/9856-3b185291364d9bef.js","8172","static/chunks/8172-b3a2d6fe4ae10d40.js","3185","static/chunks/app/layout-2814fa5d15b84fe4.js"],"Header"] a:I[3167,["9856","static/chunks/9856-3b185291364d9bef.js","8172","static/chunks/8172-b3a2d6fe4ae10d40.js","3185","static/chunks/app/layout-2814fa5d15b84fe4.js"],"Sidebar"] b:I[7409,["9856","static/chunks/9856-3b185291364d9bef.js","8172","static/chunks/8172-b3a2d6fe4ae10d40.js","3185","static/chunks/app/layout-2814fa5d15b84fe4.js"],"PageFrame"] 3:T47fb, # Integration Improvements Handoff Document **Date**: 2025-11-21 **Scope**: VoiceAssist V2 - Integration Improvements (Phases 0-8) **Status**: Priority 1-2 Complete, Priority 3 Partially Complete --- ## Executive Summary This document provides a comprehensive handoff of the Integration Improvements implementation for VoiceAssist V2. All Priority 1 and Priority 2 tasks are complete and deployed. Priority 3 is 40% complete (2 of 5 tasks). Priority 4 tasks are documented and ready for implementation. **Total Work Completed**: ~136 hours of the estimated 392 hours (35%) **Remaining Work**: ~256 hours across Priority 3-4 tasks --- ## Work Completed ### ✅ Priority 1 (COMPLETE - 42 hours) All 5 Priority 1 tasks completed and deployed: 1. **P1.1: Unified Health Monitoring Dashboard** ✅ - Created comprehensive Grafana dashboard (`dashboards/system-health.json`) - Integrated all phase metrics (infrastructure, security, RAG, Nextcloud, RBAC) - Visual dependency map and SLO tracking - **Files**: `docs/operations/HEALTH_DASHBOARD.md`, `dashboards/system-health.json` 2. **P1.2: Trace Context Propagation** ✅ - Added W3C Trace Context to all Nextcloud API calls - Implemented trace_id propagation in HTTP headers - Updated `caldav_service.py`, `nextcloud_file_indexer.py`, `email_service.py` - **Files**: `app/services/caldav_service.py:45`, `app/services/nextcloud_file_indexer.py:78` 3. **P1.3: Configuration Documentation** ✅ - Created `CONFIGURATION_REFERENCE.md` (complete config catalog) - Updated `.env.example` with all options - Documented validation rules and examples - **Files**: `docs/CONFIGURATION_REFERENCE.md`, `.env.example` 4. **P1.4: Security Audit Log Dashboard** ✅ - Built Grafana dashboard for security events (`dashboards/security-audit.json`) - Panels for auth failures, RBAC violations, PHI access, admin actions - Alert rules for suspicious activity - **Files**: `docs/operations/SECURITY_AUDIT_DASHBOARD.md`, `dashboards/security-audit.json` 5. **P1.5: Document Upload Async Queue** ✅ - Implemented Redis-backed job queue for document indexing - Background workers for processing - Job status tracking and progress updates - **Files**: `app/services/document_queue.py`, `app/api/admin_kb.py:85-120` ### ✅ Priority 2 (COMPLETE - 96 hours) All 5 Priority 2 tasks completed and deployed: 1. **P2.1: Multi-Level Caching** ✅ - L1 (in-memory) cache with LRU eviction - L2 (Redis) cache with TTL-based invalidation - Cache service with automatic fallback - **Files**: `app/services/cache_service.py`, `app/core/cache.py` 2. **P2.2: End-to-End Integration Tests** ✅ - 15+ E2E test scenarios - User flow tests (registration → login → API access) - RAG pipeline tests (upload → index → query → citations) - Nextcloud sync tests - **Files**: `tests/integration/test_e2e_flows.py`, `tests/integration/test_rag_pipeline.py` 3. **P2.3: Define and Monitor SLOs** ✅ - Defined 8 production SLOs with error budgets - Created SLO tracking dashboard - Implemented SLO alerts in AlertManager - **Files**: `docs/operations/SLO_DEFINITIONS.md`, `dashboards/slo-dashboard.json` 4. **P2.4: Unified Architecture Documentation** ✅ - Created `UNIFIED_ARCHITECTURE.md` (900+ lines) - Built `ARCHITECTURE_DIAGRAMS.md` with Mermaid diagrams - Created architecture index and role-based guides - **Files**: `docs/UNIFIED_ARCHITECTURE.md`, `docs/architecture/ARCHITECTURE_DIAGRAMS.md` 5. **P2.5: Connection Pool Optimization** ✅ - Configurable pool settings (PostgreSQL, Redis, Qdrant) - Prometheus metrics for pool utilization - Performance tuning guide - **Files**: `app/core/database.py:85-120`, `docs/operations/CONNECTION_POOL_OPTIMIZATION.md` ### ✅ Priority 3 (40% COMPLETE - 40 of 112 hours) 2 of 5 tasks completed: 1. **P3.1: Feature Flag System** ✅ (16 hours) - Complete feature flag infrastructure - Admin API for CRUD operations - Redis caching (5-minute TTL) - **Extended with**: - User-specific feature flag overrides (`user_feature_flags` table) - A/B testing support (rollout percentage) - Analytics tracking (`feature_flag_analytics` table) - Foundation for gradual rollouts - **Files**: - `app/models/feature_flag.py` - `app/models/user_feature_flag.py` - `app/models/feature_flag_analytics.py` - `app/services/feature_flags.py` - `app/core/feature_flags.py` - `app/api/admin_feature_flags.py` - `docs/FEATURE_FLAGS.md` - **Database**: Migrations 003 and 004 applied 2. **P3.2: Operational Runbooks** ✅ (24 hours) - Created 6 comprehensive runbooks (147KB total): 1. `DEPLOYMENT.md` - Step-by-step deployment with rollback 2. `INCIDENT_RESPONSE.md` - Incident management framework 3. `BACKUP_RESTORE.md` - Backup/restore procedures 4. `SCALING.md` - Horizontal/vertical scaling guides 5. `MONITORING.md` - Monitoring stack setup 6. `TROUBLESHOOTING.md` - Common issues and solutions - All runbooks production-ready with: - Copy-paste commands - Expected outputs - Checklists - Emergency contacts - Related doc links - **Files**: `docs/operations/runbooks/*.md` --- ## Remaining Work ### 🔨 Priority 3 (60% REMAINING - 72 hours) 3 of 5 tasks remaining: #### P3.3: Build Business Metrics Dashboard (16 hours) **What needs to be done**: 1. **Business Metrics Collection** (6 hours) - Complete `app/core/business_metrics.py` (started, needs integration) - Instrument key business events: - User activity (registrations, logins, DAU/MAU) - RAG query success rates - Knowledge base growth - API usage patterns - Cost metrics (OpenAI tokens, API calls) - Add metrics to existing endpoints 2. **Grafana Business Dashboard** (6 hours) - Create `dashboards/business-metrics.json` - Panels for: - User engagement (DAU/MAU, session duration) - RAG performance (query success rate, citation quality) - Content metrics (documents indexed, KB size) - Cost tracking (OpenAI spending, infrastructure costs) - Feature adoption (feature flag usage) - Business-friendly visualizations (not technical metrics) 3. **Documentation** (4 hours) - Create `docs/operations/BUSINESS_METRICS.md` - Define KPI targets - Interpretation guide for stakeholders - Cost optimization recommendations **Files to create/modify**: - `app/core/business_metrics.py` (started) - `dashboards/business-metrics.json` - `docs/operations/BUSINESS_METRICS.md` - Update existing API endpoints to track metrics #### P3.4: Implement Contract Testing (24 hours) **What needs to be done**: 1. **Pact Setup** (8 hours) - Install Pact Python library - Set up Pact broker (Docker service) - Configure CI/CD integration 2. **API Contract Tests** (10 hours) - Define contracts for: - `/api/auth/*` endpoints - `/api/users/*` endpoints - `/api/admin/*` endpoints - `/api/realtime/ws` WebSocket - Create provider tests (backend validates contracts) - Create consumer tests (frontend/client expectations) 3. **External Service Contracts** (6 hours) - Nextcloud API contracts (CalDAV, WebDAV, OCS) - OpenAI API contracts - Qdrant API contracts - Mock external services for testing **Files to create**: - `tests/contract/test_auth_contract.py` - `tests/contract/test_users_contract.py` - `tests/contract/test_admin_contract.py` - `tests/contract/test_nextcloud_contract.py` - `docker-compose.yml` (add Pact broker service) - `docs/TESTING_CONTRACTS.md` #### P3.5: Add Chaos Engineering Tests (32 hours) **What needs to be done**: 1. **Chaos Toolkit Setup** (8 hours) - Install Chaos Toolkit - Create chaos experiments directory - Configure experiment templates 2. **Infrastructure Chaos Tests** (12 hours) - Database failure scenarios: - PostgreSQL connection loss - Database slow queries (< 100ms → 5s) - Connection pool exhaustion - Redis unavailability: - Redis crash - Redis memory limit - Qdrant failures: - Vector search timeouts - Collection unavailable 3. **Application Chaos Tests** (12 hours) - External API failures: - OpenAI API timeout/errors - Nextcloud API unavailable - Network chaos: - Latency injection (50ms → 500ms) - Packet loss (0% → 10%) - Resource exhaustion: - CPU throttling - Memory pressure - Disk full scenarios **Files to create**: - `chaos/experiments/database-failure.yaml` - `chaos/experiments/redis-unavailable.yaml` - `chaos/experiments/network-latency.yaml` - `chaos/experiments/resource-exhaustion.yaml` - `docs/CHAOS_ENGINEERING.md` - `scripts/run-chaos-tests.sh` --- ### 🔨 Priority 4 (100% REMAINING - 144 hours) All 5 tasks remaining: #### P4.1: Implement External Secret Management (40 hours) **What needs to be done**: 1. **HashiCorp Vault Setup** (16 hours) - Add Vault to `docker-compose.yml` - Configure Vault initialization - Set up authentication (AppRole) - Create secret engines (KV v2) 2. **Secret Migration** (16 hours) - Migrate secrets from `.env` to Vault: - Database credentials - Redis password - JWT secrets - OpenAI API key - Nextcloud credentials - Implement Vault client in application - Add secret rotation support 3. **Documentation & Rotation** (8 hours) - Create `docs/VAULT_SETUP.md` - Implement automatic secret rotation - Create rotation runbook - Update deployment process **Files to create/modify**: - `docker-compose.yml` (add Vault service) - `app/core/vault_client.py` - `app/core/config.py` (integrate Vault) - `docs/VAULT_SETUP.md` - `scripts/migrate-secrets-to-vault.sh` - `docs/operations/runbooks/SECRET_ROTATION.md` #### P4.2: Add User Experience Monitoring (32 hours) **What needs to be done**: 1. **Real User Monitoring (RUM)** (16 hours) - Set up OpenTelemetry for frontend - Track page load times - Monitor API call latencies from client - Track user interactions (clicks, navigation) 2. **Error Tracking** (12 hours) - Integrate Sentry or similar - Frontend error tracking - Backend error aggregation - Error rate alerts 3. **User Journey Tracking** (4 hours) - Define user journeys (e.g., login → query → result) - Track journey completion rates - Identify drop-off points - Create funnel visualization **Files to create**: - `frontend/src/telemetry.ts` (if frontend exists) - `app/middleware/rum_middleware.py` - `docs/USER_EXPERIENCE_MONITORING.md` - `dashboards/user-experience.json` #### P4.3: Build Cost Monitoring Dashboard (16 hours) **What needs to be done**: 1. **Cost Tracking Infrastructure** (8 hours) - Track OpenAI API costs: - Token usage by endpoint - Cost per query calculation - Daily/monthly spending trends - Track infrastructure costs: - Database storage growth - Redis memory usage - Qdrant vector storage 2. **Cost Dashboard** (6 hours) - Create `dashboards/cost-monitoring.json` - Panels for: - OpenAI spending (daily, monthly, projected) - Cost per user - Cost per RAG query - Infrastructure costs - Budget alerts 3. **Cost Optimization** (2 hours) - Document cost optimization strategies - Set up budget alerts - Cost anomaly detection **Files to create/modify**: - `app/services/cost_tracker.py` - `app/core/business_metrics.py` (extend) - `dashboards/cost-monitoring.json` - `docs/operations/COST_OPTIMIZATION.md` #### P4.4: Create Developer Onboarding Program (32 hours) **What needs to be done**: 1. **Onboarding Documentation** (16 hours) - Create `docs/DEVELOPER_ONBOARDING.md` - Day 1-5 onboarding plan - Required reading list - Practice exercises - Setup checklist 2. **Development Environment Setup** (12 hours) - Create `scripts/dev-setup.sh` (automated setup) - Docker Compose dev profile - IDE configuration (VS Code, PyCharm) - Debugging guide - Hot reload setup 3. **Learning Path** (4 hours) - Code walkthrough videos (optional) - Architecture deep-dive sessions - Common gotchas document - Contribution guide **Files to create**: - `docs/DEVELOPER_ONBOARDING.md` - `docs/DEVELOPMENT_SETUP.md` - `docs/DEBUGGING_GUIDE.md` - `docs/COMMON_GOTCHAS.md` - `scripts/dev-setup.sh` - `docker-compose.dev.yml` - `.vscode/launch.json` (debug configs) #### P4.5: Implement Alert Escalation System (24 hours) **What needs to be done**: 1. **PagerDuty Integration** (12 hours) - Set up PagerDuty account - Configure services and escalation policies - Integrate with AlertManager - Define on-call rotations 2. **Alert Routing** (8 hours) - Critical alerts → Page (immediate) - High alerts → Slack + Email - Medium alerts → Slack - Low alerts → Email - Alert grouping and deduplication 3. **Escalation Policies** (4 hours) - Define escalation paths: - L1: On-call engineer (0-15 min) - L2: Team lead (15-30 min) - L3: Engineering manager (30+ min) - Create escalation runbook - Set up auto-escalation rules **Files to create/modify**: - `alertmanager/config.yml` (add PagerDuty routes) - `docs/operations/ALERT_ESCALATION.md` - `docs/operations/ONCALL_GUIDE.md` - `scripts/test-alert-escalation.sh` --- ## System Status ### Current Deployment - **Database**: Migration 004 applied (feature flags with user overrides and analytics) - **Server**: Running healthy on `voiceassist-server` container - **Health**: `http://localhost:8000/health` returns 200 - **Version**: 0.1.0 ### Recent Changes 1. **Feature Flag Enhancement** (Migration 004) - Added `rollout_percentage` and `rollout_salt` columns to `feature_flags` table - Created `user_feature_flags` table for per-user overrides - Created `feature_flag_analytics` table for usage tracking - Foundation for A/B testing complete 2. **Operational Runbooks** - 6 comprehensive runbooks created (147KB total documentation) - Production-ready procedures for deployment, incidents, backup, scaling ### Known Issues 1. **Cache Errors** (Non-Critical) - FastAPI-Cache Redis pipeline errors in logs - Does not affect functionality - Pre-existing issue, not from recent changes 2. **Background Bash Processes** - Several background Docker builds may still be running - Can be safely killed if needed - No impact on deployed system --- ## Quick Start Guide for Next Developer ### To Continue Work: 1. **Verify Current State**: ```bash cd /Users/mohammednazmy/VoiceAssist docker compose ps curl http://localhost:8000/health docker compose exec postgres psql -U voiceassist -d voiceassist -c "SELECT * FROM alembic_version;" # Should show: 004 ``` 2. **Review Documentation**: - Read `docs/UNIFIED_ARCHITECTURE.md` for system overview - Review `docs/INTEGRATION_IMPROVEMENTS_PHASE_0-8.md` for full task list - Check `docs/operations/runbooks/*.md` for operational procedures 3. **Start with P3.3** (Business Metrics Dashboard): - Complete `app/core/business_metrics.py` (skeleton created) - Instrument key endpoints with business metrics - Create Grafana dashboard - Test metric collection 4. **Environment Setup**: ```bash # All containers should be running docker compose up -d # Verify migrations docker compose run --rm voiceassist-server alembic current # Check feature flags table docker compose exec postgres psql -U voiceassist -d voiceassist -c "SELECT name, enabled FROM feature_flags LIMIT 5;" ``` ### Files to Know About: **Key Configuration**: - `.env` - Environment variables (secrets not committed) - `.env.example` - Template with all options documented - `docker-compose.yml` - All services configuration **Core Application**: - `app/main.py` - FastAPI application entry point - `app/core/*.py` - Core utilities (database, metrics, logging) - `app/api/*.py` - API endpoints - `app/services/*.py` - Business logic - `app/models/*.py` - SQLAlchemy models **Operations**: - `docs/operations/runbooks/*.md` - Operational procedures - `docs/operations/*.md` - Operation guides - `dashboards/*.json` - Grafana dashboards - `alertmanager/*.yml` - Alert configurations **Testing**: - `tests/unit/` - Unit tests - `tests/integration/` - Integration tests - `tests/contract/` - Contract tests (to be created) - `chaos/` - Chaos experiments (to be created) --- ## Estimated Timelines ### Optimistic (Experienced Developer) - P3 Remaining: 50 hours (2 weeks) - P4 Complete: 100 hours (2.5 weeks) - **Total**: ~4.5 weeks ### Realistic (Mid-level Developer) - P3 Remaining: 72 hours (2.5 weeks) - P4 Complete: 144 hours (4 weeks) - **Total**: ~6.5 weeks ### Conservative (Junior Developer or Unfamiliar) - P3 Remaining: 100 hours (3.5 weeks) - P4 Complete: 200 hours (7 weeks) - **Total**: ~10.5 weeks --- ## Success Metrics ### Priority 3 Completion Criteria: - [ ] Business metrics dashboard shows real-time KPIs - [ ] Contract tests prevent API breaking changes - [ ] Chaos engineering validates system resilience - [ ] All P3 documentation complete ### Priority 4 Completion Criteria: - [ ] Secrets managed in Vault (not `.env`) - [ ] User experience monitoring active - [ ] Cost dashboard tracks spending - [ ] Developer onboarding process documented - [ ] Alert escalation integrated with PagerDuty --- ## Questions for Stakeholders 1. **P4.1 (Vault)**: Do we want to use HashiCorp Vault, AWS Secrets Manager, or Azure Key Vault? 2. **P4.2 (RUM)**: Do we have a preferred monitoring tool (Sentry, Datadog, New Relic)? 3. **P4.3 (Costs)**: What's the monthly budget for OpenAI API costs? 4. **P4.5 (Alerts)**: Do we already have a PagerDuty account or need to create one? --- ## Contact Information **Handoff From**: Claude Code (AI Assistant) **Date**: 2025-11-21 **Project**: VoiceAssist V2 - Integration Improvements **Repository**: `/Users/mohammednazmy/VoiceAssist` For questions about the work completed, refer to: - Git commit history for detailed changes - `docs/UNIFIED_ARCHITECTURE.md` for system design - `docs/operations/runbooks/*.md` for operational procedures --- **Document Version**: 1.0 **Last Updated**: 2025-11-21 **Status**: Ready for Handoff 6:["slug","INTEGRATION_HANDOFF","c"] 0:["X7oMT3VrOffzp0qvbeOas",[[["",{"children":["docs",{"children":[["slug","INTEGRATION_HANDOFF","c"],{"children":["__PAGE__?{\"slug\":[\"INTEGRATION_HANDOFF\"]}",{}]}]}]},"$undefined","$undefined",true],["",{"children":["docs",{"children":[["slug","INTEGRATION_HANDOFF","c"],{"children":["__PAGE__",{},[["$L1",["$","div",null,{"children":[["$","div",null,{"className":"mb-6 flex items-center justify-between gap-4","children":[["$","div",null,{"children":[["$","p",null,{"className":"text-sm text-gray-500 dark:text-gray-400","children":"Docs / Raw"}],["$","h1",null,{"className":"text-3xl font-bold text-gray-900 dark:text-white","children":"Integration Handoff"}],["$","p",null,{"className":"text-sm text-gray-600 dark:text-gray-400","children":["Sourced from"," ",["$","code",null,{"className":"font-mono text-xs","children":["docs/","INTEGRATION_HANDOFF.md"]}]]}]]}],["$","a",null,{"href":"https://github.com/mohammednazmy/VoiceAssist/edit/main/docs/INTEGRATION_HANDOFF.md","target":"_blank","rel":"noreferrer","className":"inline-flex items-center gap-2 rounded-md border border-gray-200 dark:border-gray-700 px-3 py-1.5 text-sm text-gray-700 dark:text-gray-200 hover:border-primary-500 dark:hover:border-primary-400 hover:text-primary-700 dark:hover:text-primary-300","children":"Edit on GitHub"}]]}],["$","div",null,{"className":"rounded-lg border border-gray-200 dark:border-gray-800 bg-white dark:bg-gray-900 p-6","children":["$","$L2",null,{"content":"$3"}]}],["$","div",null,{"className":"mt-6 flex flex-wrap gap-2 text-sm","children":[["$","$L4",null,{"href":"/reference/all-docs","className":"inline-flex items-center gap-1 rounded-md bg-gray-100 px-3 py-1 text-gray-700 hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700","children":"← All documentation"}],["$","$L4",null,{"href":"/","className":"inline-flex items-center gap-1 rounded-md bg-gray-100 px-3 py-1 text-gray-700 hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700","children":"Home"}]]}]]}],null],null],null]},[null,["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children","docs","children","$6","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children","docs","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/7f586cdbbaa33ff7.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","className":"h-full","children":["$","body",null,{"className":"__className_f367f3 h-full bg-white dark:bg-gray-900","children":[["$","a",null,{"href":"#main-content","className":"skip-to-content","children":"Skip to main content"}],["$","$L8",null,{"children":[["$","$L9",null,{}],["$","$La",null,{}],["$","main",null,{"id":"main-content","className":"lg:pl-64","role":"main","aria-label":"Documentation content","children":["$","$Lb",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]]}]]}]}]],null],null],["$Lc",null]]]] c:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Integration Handoff | Docs | VoiceAssist Docs"}],["$","meta","3",{"name":"description","content":"**Date**: 2025-11-21"}],["$","meta","4",{"name":"keywords","content":"VoiceAssist,documentation,medical AI,voice assistant,healthcare,HIPAA,API"}],["$","meta","5",{"name":"robots","content":"index, follow"}],["$","meta","6",{"name":"googlebot","content":"index, follow"}],["$","link","7",{"rel":"canonical","href":"https://assistdocs.asimo.io"}],["$","meta","8",{"property":"og:title","content":"VoiceAssist Documentation"}],["$","meta","9",{"property":"og:description","content":"Comprehensive documentation for VoiceAssist - Enterprise Medical AI Assistant"}],["$","meta","10",{"property":"og:url","content":"https://assistdocs.asimo.io"}],["$","meta","11",{"property":"og:site_name","content":"VoiceAssist Docs"}],["$","meta","12",{"property":"og:type","content":"website"}],["$","meta","13",{"name":"twitter:card","content":"summary"}],["$","meta","14",{"name":"twitter:title","content":"VoiceAssist Documentation"}],["$","meta","15",{"name":"twitter:description","content":"Comprehensive documentation for VoiceAssist - Enterprise Medical AI Assistant"}],["$","meta","16",{"name":"next-size-adjust"}]] 1:null