SvenHVAC Technical Architecture

Executive Summary

This technical architecture document outlines the comprehensive system design for SvenHVAC, an AI-powered voice answering system for HVAC service scheduling. The architecture is designed to support the system's core functionality of providing 24/7 intelligent assistance with real-time appointment scheduling and preliminary troubleshooting for homeowners experiencing HVAC issues.

The system employs a microservices architecture to ensure scalability, resilience, and maintainability. Key components include a sophisticated voice processing pipeline, real-time calendar integration, secure payment processing, and AI-driven diagnostics. The architecture is designed to support the initial Worcester, MA market with a clear path for expansion to additional markets nationwide and eventually internationally.

This document details the system's components, data flows, integration points, and technology choices to provide a comprehensive roadmap for implementation. The architecture balances immediate MVP needs with a foundation that can scale to support the long-term vision of SvenHVAC becoming the category-defining solution for home service booking.

System Architecture Overview

High-Level Architecture

graph TB
    %% Client Layer
    subgraph "Client Interaction Layer"
    PhoneCall["Phone Call"] --> Telephony
    SMS["SMS Messages"] --> SMSGateway
    end

    %% Edge Layer
    subgraph "Edge Layer"
    Telephony["Telephony System"] --> VoiceProcessor
    SMSGateway["SMS Gateway"] --> MessageHandler
    VoiceProcessor["Voice Processing Pipeline"] --> ConversationManager
    MessageHandler["Message Handler"] --> ConversationManager
    end

    %% Service Layer
    subgraph "Core Services Layer"
    ConversationManager["Conversation Manager"]
    ConversationManager --> DiagnosticService
    ConversationManager --> AppointmentService
    ConversationManager --> CustomerService
    DiagnosticService["Diagnostic Service"]
    AppointmentService["Appointment Service"] --> CalendarService
    CustomerService["Customer Service"]
    PaymentService["Payment Service"]
    NotificationService["Notification Service"]
    end

    %% Integration Layer
    subgraph "Integration Layer"
    CalendarService["Calendar Service"] --> CalendarProviders
    PaymentGateway["Payment Gateway"] --> PaymentProcessors
    ProviderIntegration["Provider Integration"] --> ProviderSystems
    end

    %% External Systems
    subgraph "External Systems"
    CalendarProviders["Calendar Providers (Google, Outlook)"]
    PaymentProcessors["Payment Processors (Stripe)"]
    ProviderSystems["Provider Systems"]
    end

    %% Data Layer
    subgraph "Data Layer"
    CustomerDB[(Customer Database)]
    AppointmentDB[(Appointment Database)]
    ProviderDB[(Provider Database)]
    DiagnosticDB[(Diagnostic Knowledge Base)]
    ConversationDB[(Conversation History)]
    end

    %% Connections to Data Layer
    CustomerService --> CustomerDB
    AppointmentService --> AppointmentDB
    DiagnosticService --> DiagnosticDB
    ConversationManager --> ConversationDB
    AppointmentService --> ProviderDB
    
    %% Payment Flow
    ConversationManager --> PaymentService
    PaymentService --> PaymentGateway
    AppointmentService --> NotificationService
    NotificationService --> SMSGateway

Key Components

  1. Voice Processing Pipeline: Handles call answering, speech-to-text conversion, and natural language understanding.

  2. Conversation Manager: Orchestrates the conversation flow, maintains context, and routes to appropriate services.

  3. Diagnostic Service: Provides HVAC troubleshooting guidance and issue assessment.

  4. Appointment Service: Manages scheduling, calendar availability, and appointment confirmation.

  5. Customer Service: Handles customer information and history management.

  6. Payment Service: Processes deposit payments securely.

  7. Notification Service: Manages SMS communications and reminders.

  8. Calendar Service: Integrates with provider calendars for real-time availability.

  9. Data Layer: Stores and manages all system information across multiple databases.

Microservice Architecture

Service Boundaries

SvenHVAC employs a domain-driven microservice architecture with the following service boundaries:

Service Primary Responsibility Data Ownership Interfaces
Voice Processing Service Call handling, speech-to-text, intent recognition None (stateless) Telephony API, Conversation API
Conversation Service Dialog management, context maintenance Conversation sessions, transcripts NLP API, Service Orchestration API
Customer Service Customer profile management Customer profiles, contact information Customer API
Diagnostic Service HVAC issue assessment, troubleshooting Diagnostic knowledge base Diagnostic API, Image Analysis API
Appointment Service Scheduling, availability management Appointments, schedules Appointment API, Calendar API
Provider Service Provider management, service areas Provider profiles, service capabilities Provider API
Payment Service Deposit processing, payment management Payment transactions Payment API
Notification Service SMS and communication management Message templates, notification history Notification API
Calendar Integration Service Third-party calendar synchronization Calendar metadata, availability Calendar Provider API

Service Communication Patterns

sequenceDiagram
    participant PhoneSystem as Phone System
    participant Voice as Voice Processing
    participant Conversation as Conversation Manager
    participant Diagnostic as Diagnostic Service
    participant Appointment as Appointment Service
    participant Calendar as Calendar Service
    participant Payment as Payment Service
    participant Notification as Notification Service
    
    PhoneSystem->>Voice: Incoming call
    Voice->>Conversation: Transcribed speech with intent
    Conversation->>Diagnostic: Request issue assessment
    Diagnostic-->>Conversation: Diagnostic results
    Conversation->>Appointment: Request available times
    Appointment->>Calendar: Check provider availability
    Calendar-->>Appointment: Available time slots
    Appointment-->>Conversation: Appointment options
    Conversation->>Payment: Request payment link
    Payment-->>Conversation: Payment link generated
    Conversation->>Notification: Send SMS with payment link
    Notification-->>PhoneSystem: SMS delivered
    Note over PhoneSystem,Notification: Customer completes payment via SMS link
    Payment-->>Appointment: Payment confirmed
    Appointment-->>Notification: Send confirmation
    Notification-->>PhoneSystem: Confirmation SMS sent

Data Architecture

Domain Model

Core Entities

  1. Customer

    • Represents homeowners using the SvenHVAC service
    • Key attributes: contact information, service address, HVAC system details, service history
  2. Appointment

    • Represents scheduled service appointments
    • Key attributes: date/time, service type, status, associated customer and provider
  3. Provider

    • Represents HVAC service companies
    • Key attributes: business information, service areas, availability, specialties
  4. HVACIssue

    • Represents HVAC problems reported by customers
    • Key attributes: issue type, symptoms, severity, diagnostic questions
  5. Payment

    • Represents deposit payments for appointments
    • Key attributes: amount, status, timestamp, payment method
  6. Conversation

    • Represents interaction sessions with customers
    • Key attributes: transcript, timestamps, intent mapping, context
  7. Notification

    • Represents communications sent to users
    • Key attributes: type, content, delivery status, recipient

Data Schema

Customer Schema

{
  "customerId": "string",
  "firstName": "string",
  "lastName": "string",
  "phoneNumber": "string",
  "email": "string",
  "addresses": [
    {
      "addressId": "string",
      "type": "service|billing",
      "street": "string",
      "unit": "string",
      "city": "string",
      "state": "string",
      "zipCode": "string",
      "accessInstructions": "string"
    }
  ],
  "hvacSystems": [
    {
      "systemId": "string",
      "type": "furnace|ac|heatPump|boiler",
      "manufacturer": "string",
      "model": "string",
      "installDate": "date",
      "lastService": "date"
    }
  ],
  "serviceHistory": [
    {
      "appointmentId": "string",
      "date": "datetime",
      "issueType": "string",
      "resolution": "string",
      "providerId": "string"
    }
  ],
  "communicationPreferences": {
    "smsEnabled": "boolean",
    "emailEnabled": "boolean",
    "reminderTiming": "number" // hours before appointment
  },
  "createdAt": "datetime",
  "updatedAt": "datetime"
}

Appointment Schema

{
  "appointmentId": "string",
  "customerId": "string",
  "providerId": "string",
  "dateTime": "datetime",
  "estimatedDuration": "number", // minutes
  "status": "scheduled|confirmed|inProgress|completed|cancelled",
  "serviceType": "emergency|repair|maintenance",
  "issueDescription": "string",
  "issueId": "string",
  "priority": "high|medium|low",
  "depositAmount": "number",
  "depositStatus": "pending|paid|refunded",
  "paymentId": "string",
  "notes": "string",
  "photos": [
    {
      "photoId": "string",
      "url": "string",
      "analysisResults": "string",
      "uploadedAt": "datetime"
    }
  ],
  "technician": {
    "technicianId": "string",
    "name": "string",
    "phone": "string"
  },
  "createdAt": "datetime",
  "updatedAt": "datetime"
}

Provider Schema

{
  "providerId": "string",
  "businessName": "string",
  "contactName": "string",
  "phoneNumber": "string",
  "email": "string",
  "address": {
    "street": "string",
    "city": "string",
    "state": "string",
    "zipCode": "string"
  },
  "serviceAreas": [
    {
      "zipCode": "string",
      "city": "string",
      "state": "string"
    }
  ],
  "specialties": ["string"], // e.g., "residential", "commercial", "emergency"
  "certifications": ["string"],
  "businessHours": [
    {
      "day": "monday|tuesday|wednesday|thursday|friday|saturday|sunday",
      "open": "time",
      "close": "time"
    }
  ],
  "emergencyAvailability": "boolean",
  "calendarIntegration": {
    "type": "google|outlook|other",
    "calendarId": "string",
    "syncStatus": "active|error|inactive",
    "lastSync": "datetime"
  },
  "rating": "number", // 1-5
  "onboardedAt": "datetime",
  "status": "active|inactive|pending",
  "createdAt": "datetime",
  "updatedAt": "datetime"
}

Data Ownership and Access Patterns

Service Primary Data Read Access Write Access Access Patterns
Customer Service Customer profiles Full ownership Full ownership Key-based lookup, phone number indexing
Appointment Service Appointments Full ownership Full ownership Time-range queries, status filtering
Provider Service Provider profiles Full ownership Full ownership Service area queries, availability lookups
Diagnostic Service HVAC issues, troubleshooting guides Full ownership Full ownership Symptom-based lookups, decision tree traversal
Conversation Service Conversation history Full ownership Full ownership Session-based access, transcript search
Payment Service Payment transactions Full ownership Full ownership Transaction ID lookups, status queries
Notification Service Message templates, delivery records Full ownership Full ownership Template-based generation, delivery status tracking

Technology Stack

Core Technologies

Backend Services

  • Programming Language: Node.js with TypeScript

    • Rationale: Strong ecosystem for building microservices, excellent async capabilities for handling concurrent calls, and type safety for maintainability.
  • API Framework: NestJS

    • Rationale: Provides a structured architecture for microservices with built-in dependency injection, modular design, and strong TypeScript integration.
  • Service Mesh: Istio

    • Rationale: Provides robust service discovery, traffic management, and observability for the microservices architecture.

Data Storage

  • Primary Database: MongoDB

    • Rationale: Document-based structure matches our domain model, scales horizontally, and provides flexible schema evolution for rapid development.
  • Cache Layer: Redis

    • Rationale: High-performance caching for session data, appointment availability, and frequently accessed information.
  • Search Engine: Elasticsearch

    • Rationale: Powers advanced search capabilities for diagnostic information and conversation transcripts.

Voice and Communication

  • Telephony Platform: Twilio

    • Rationale: Provides programmable voice capabilities, local number provisioning, and SMS functionality with robust APIs.
  • Speech Processing: Google Speech-to-Text & Text-to-Speech

    • Rationale: Industry-leading accuracy for speech recognition and natural-sounding voice synthesis.
  • Natural Language Processing: Google Dialogflow

    • Rationale: Sophisticated intent recognition, context management, and conversation flow design with integration to custom services.

Integration & Infrastructure

  • Calendar Integration: Google Calendar API & Microsoft Graph API

    • Rationale: Comprehensive APIs for calendar management with the two most commonly used provider calendar systems.
  • Payment Processing: Stripe

    • Rationale: Secure, compliant payment processing with robust APIs and tokenization for handling deposit payments.
  • Cloud Infrastructure: AWS

    • Rationale: Comprehensive cloud services with global presence for scaling across markets.
  • Container Orchestration: Kubernetes

    • Rationale: Industry standard for managing containerized microservices with robust scaling and self-healing capabilities.

Development & Operations

  • CI/CD: GitHub Actions

    • Rationale: Seamless integration with source control, flexible workflow configuration, and strong ecosystem.
  • Monitoring & Observability: Prometheus & Grafana

    • Rationale: Industry-standard monitoring stack for metrics collection, visualization, and alerting.
  • Logging: ELK Stack (Elasticsearch, Logstash, Kibana)

    • Rationale: Comprehensive solution for log aggregation, search, and analysis.
  • Infrastructure as Code: Terraform

    • Rationale: Declarative infrastructure definition with support for multiple cloud providers for potential multi-cloud strategy.

API Design

Core API Contracts

Conversation API

openapi: 3.0.0
info:
  title: SvenHVAC Conversation API
  version: 1.0.0
paths:
  /conversations:
    post:
      summary: Create a new conversation session
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                phoneNumber:
                  type: string
                  description: Caller phone number
                callId:
                  type: string
                  description: Unique call identifier
      responses:
        '201':
          description: Conversation created
          content:
            application/json:
              schema:
                type: object
                properties:
                  conversationId:
                    type: string
                  sessionToken:
                    type: string
  
  /conversations/{conversationId}/messages:
    post:
      summary: Process user message and get response
      parameters:
        - name: conversationId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                message:
                  type: string
                  description: User's message text
                intent:
                  type: string
                  description: Detected intent (optional)
      responses:
        '200':
          description: Response message
          content:
            application/json:
              schema:
                type: object
                properties:
                  responseText:
                    type: string
                  nextAction:
                    type: string
                    enum: [collectInfo, offerAppointment, troubleshoot, transferToHuman]
                  requiredData:
                    type: array
                    items:
                      type: string

Appointment API

openapi: 3.0.0
info:
  title: SvenHVAC Appointment API
  version: 1.0.0
paths:
  /availability:
    get:
      summary: Get available appointment slots
      parameters:
        - name: serviceArea
          in: query
          required: true
          schema:
            type: string
        - name: serviceType
          in: query
          required: true
          schema:
            type: string
            enum: [emergency, repair, maintenance]
        - name: startDate
          in: query
          required: true
          schema:
            type: string
            format: date
        - name: endDate
          in: query
          required: false
          schema:
            type: string
            format: date
      responses:
        '200':
          description: Available appointment slots
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    providerId:
                      type: string
                    providerName:
                      type: string
                    slots:
                      type: array
                      items:
                        type: object
                        properties:
                          startTime:
                            type: string
                            format: date-time
                          endTime:
                            type: string
                            format: date-time
  
  /appointments:
    post:
      summary: Create a new appointment
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                customerId:
                  type: string
                providerId:
                  type: string
                serviceType:
                  type: string
                  enum: [emergency, repair, maintenance]
                dateTime:
                  type: string
                  format: date-time
                issueDescription:
                  type: string
                priority:
                  type: string
                  enum: [high, medium, low]
      responses:
        '201':
          description: Appointment created
          content:
            application/json:
              schema:
                type: object
                properties:
                  appointmentId:
                    type: string
                  depositAmount:
                    type: number
                  paymentUrl:
                    type: string

Payment API

openapi: 3.0.0
info:
  title: SvenHVAC Payment API
  version: 1.0.0
paths:
  /payment-intents:
    post:
      summary: Create a payment intent for appointment deposit
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                appointmentId:
                  type: string
                amount:
                  type: number
                currency:
                  type: string
                  default: USD
                customerId:
                  type: string
      responses:
        '201':
          description: Payment intent created
          content:
            application/json:
              schema:
                type: object
                properties:
                  paymentIntentId:
                    type: string
                  clientSecret:
                    type: string
                  paymentUrl:
                    type: string
  
  /payments/{paymentId}/status:
    get:
      summary: Get payment status
      parameters:
        - name: paymentId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Payment status
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum: [pending, succeeded, failed, refunded]
                  amount:
                    type: number
                  processedAt:
                    type: string
                    format: date-time

Integration Architecture

External System Integrations

graph LR
    SvenHVAC[SvenHVAC System] --> Twilio[Twilio API]
    SvenHVAC --> GoogleCalendar[Google Calendar API]
    SvenHVAC --> OutlookCalendar[Microsoft Outlook API]
    SvenHVAC --> Stripe[Stripe Payment API]
    SvenHVAC --> GoogleAI[Google AI APIs]
    
    subgraph Telephony
    Twilio --> Voice[Voice Calls]
    Twilio --> SMS[SMS Messages]
    end
    
    subgraph Calendar
    GoogleCalendar --> ProviderSchedules1[Provider Schedules]
    OutlookCalendar --> ProviderSchedules2[Provider Schedules]
    end
    
    subgraph Payments
    Stripe --> CreditCard[Credit Card Processing]
    Stripe --> ACH[ACH Processing]
    end
    
    subgraph AI Services
    GoogleAI --> Speech[Speech-to-Text]
    GoogleAI --> NLP[Natural Language Processing]
    GoogleAI --> Vision[Vision API for Photos]
    end

Integration Patterns

Calendar Integration

The Calendar Integration Service uses the following patterns:

  1. Polling Pattern: Regular polling of provider calendars to maintain a local cache of availability.
  2. Webhook Pattern: Subscribing to calendar change notifications for real-time updates.
  3. Write-Through Pattern: Appointments created in SvenHVAC are immediately written to provider calendars.
sequenceDiagram
    participant AS as Appointment Service
    participant CIS as Calendar Integration Service
    participant Cache as Availability Cache
    participant GC as Google Calendar API
    participant MS as Microsoft 365 API
    
    Note over AS,MS: Initial Synchronization
    CIS->>GC: Request calendar events
    GC-->>CIS: Return calendar events
    CIS->>MS: Request calendar events
    MS-->>CIS: Return calendar events
    CIS->>Cache: Update availability cache
    
    Note over AS,MS: Real-time Updates
    GC->>CIS: Webhook notification (calendar change)
    CIS->>GC: Request updated events
    GC-->>CIS: Return updated events
    CIS->>Cache: Update availability cache
    
    Note over AS,MS: Appointment Booking
    AS->>CIS: Create appointment
    CIS->>Cache: Check availability
    Cache-->>CIS: Confirm slot is available
    CIS->>GC: Create calendar event
    GC-->>CIS: Confirm creation
    CIS->>AS: Appointment confirmed

Payment Integration

The Payment Service integrates with Stripe using the following patterns:

  1. API Delegation Pattern: SvenHVAC delegates payment processing to Stripe.
  2. Webhook Pattern: Stripe notifies SvenHVAC of payment status changes.
  3. Tokenization Pattern: Payment methods are tokenized for security.
sequenceDiagram
    participant CS as Conversation Service
    participant PS as Payment Service
    participant AS as Appointment Service
    participant Stripe as Stripe API
    participant NS as Notification Service
    participant Customer as Customer
    
    CS->>PS: Request payment for appointment
    PS->>Stripe: Create Payment Intent
    Stripe-->>PS: Return client secret and payment URL
    PS-->>CS: Return payment URL
    CS->>NS: Send SMS with payment link
    NS->>Customer: SMS with payment link
    Customer->>Stripe: Complete payment on Stripe-hosted page
    Stripe->>PS: Webhook: Payment succeeded
    PS->>AS: Update appointment as deposit paid
    AS->>NS: Send appointment confirmation
    NS->>Customer: Appointment confirmation SMS

Security Architecture

Authentication & Authorization

SvenHVAC implements a comprehensive security model:

  1. Customer Authentication:

    • Phone number verification via SMS one-time passcodes
    • Voice biometric recognition for returning callers (future enhancement)
  2. Service-to-Service Authentication:

    • JWT-based authentication between internal services
    • Service accounts with minimal required permissions
    • Mutual TLS for service communication
  3. External API Authentication:

    • OAuth 2.0 for calendar provider integrations
    • API keys with IP restrictions for Twilio
    • Webhook signatures for Stripe
  4. Authorization Model:

    • Role-based access control for administrative functions
    • Resource-based permissions for customer data
    • Attribute-based access control for sensitive operations

Data Protection

  1. Data Encryption:

    • All data encrypted at rest using AES-256
    • All data in transit encrypted using TLS 1.3
    • Database-level encryption for sensitive fields
  2. PII Handling:

    • Tokenization of payment information
    • Masking of sensitive data in logs
    • Strict access controls for PII
    • Compliance with GDPR and CCPA requirements
  3. Audit Trail:

    • Comprehensive logging of all data access
    • Immutable audit records for sensitive operations
    • Regular audit log reviews

Deployment Architecture

Infrastructure Design

SvenHVAC is deployed on AWS using a Kubernetes-based infrastructure:

graph TB
    subgraph "AWS Cloud"
        subgraph "VPC"
            subgraph "Public Subnet"
                ALB["Application Load Balancer"]
                WAF["AWS WAF"]
            end
            
            subgraph "Private Subnet - Application Tier"
                EKS["Amazon EKS"]
                subgraph "Kubernetes Cluster"
                    API["API Services"]
                    WebHooks["Webhook Handlers"]
                    Workers["Background Workers"]
                end
            end
            
            subgraph "Private Subnet - Data Tier"
                MongoDB["MongoDB Atlas"]
                Redis["Amazon ElastiCache"]
                ES["Amazon Elasticsearch"]
            end
            
            subgraph "Security Services"
                KMS["AWS KMS"]
                Secrets["AWS Secrets Manager"]
                IAM["IAM Roles"]
            end
        end
        
        subgraph "Managed Services"
            S3["S3 Buckets"]
            CloudWatch["CloudWatch"]
            SNS["Amazon SNS"]
        end
    end
    
    subgraph "External Services"
        Twilio["Twilio"]
        Stripe["Stripe"]
        GoogleAPIs["Google APIs"]
        MicrosoftAPIs["Microsoft APIs"]
    end
    
    Internet["Internet"] --> WAF
    WAF --> ALB
    ALB --> EKS
    EKS --> MongoDB
    EKS --> Redis
    EKS --> ES
    EKS --> S3
    EKS --> CloudWatch
    EKS --> SNS
    EKS --> KMS
    EKS --> Secrets
    EKS <--> Twilio
    EKS <--> Stripe
    EKS <--> GoogleAPIs
    EKS <--> MicrosoftAPIs

Deployment Strategy

SvenHVAC employs a multi-environment deployment strategy:

  1. Development Environment:

    • Feature branch deployments
    • Isolated databases per feature
    • Mock external services
  2. Staging Environment:

    • Production-like configuration
    • Integration with test instances of external services
    • Full end-to-end testing
  3. Production Environment:

    • Multi-region deployment for redundancy
    • Blue-green deployment for zero downtime updates
    • Canary releases for risk mitigation

CI/CD Pipeline

graph LR
    Code[Code Changes] --> Build[Build & Unit Test]
    Build --> StaticAnalysis[Static Analysis]
    StaticAnalysis --> IntegrationTests[Integration Tests]
    IntegrationTests --> BuildImage[Build Docker Image]
    BuildImage --> ScanImage[Security Scan]
    ScanImage --> DeployDev[Deploy to Dev]
    DeployDev --> E2ETests[End-to-End Tests]
    E2ETests --> DeployStaging[Deploy to Staging]
    DeployStaging --> StagingTests[Staging Validation]
    StagingTests --> ApprovalGate[Manual Approval]
    ApprovalGate --> DeployProd[Deploy to Production]
    DeployProd --> Monitoring[Post-Deploy Monitoring]

Scalability & Performance

Scalability Strategy

SvenHVAC is designed for horizontal scalability:

  1. Service Scalability:

    • Stateless microservices for horizontal scaling
    • Auto-scaling based on CPU, memory, and request metrics
    • Service-specific scaling policies
  2. Database Scalability:

    • MongoDB sharding for horizontal scaling
    • Read replicas for query-heavy services
    • Redis cluster for distributed caching
  3. Geographic Scalability:

    • Multi-region deployment capability
    • Region-specific telephony numbers
    • Local data storage for compliance and performance

Performance Optimization

  1. Response Time Optimization:

    • Response time target: < 200ms for API calls
    • Voice response latency: < 1 second
    • Caching of frequently accessed data
    • Optimized database queries with proper indexing
  2. Throughput Capacity:

    • Initial capacity: 100 concurrent calls per market
    • Scaling capacity: Up to 1000+ concurrent calls nationwide
    • Asynchronous processing for non-interactive operations
  3. Resource Efficiency:

    • Right-sized containers based on workload profiling
    • Serverless functions for sporadic workloads
    • Cost-optimized infrastructure with auto-scaling

Observability & Monitoring

Monitoring Strategy

SvenHVAC implements a comprehensive monitoring approach:

  1. Infrastructure Monitoring:

    • CPU, memory, disk, and network metrics
    • Kubernetes cluster health
    • Database performance metrics
    • Auto-scaling events and capacity utilization
  2. Application Monitoring:

    • Request rates, latencies, and error rates
    • Service dependencies and health
    • API endpoint performance
    • Background job execution
  3. Business Metrics:

    • Call volume and conversion rates
    • Appointment booking success rate
    • Payment completion rate
    • Customer satisfaction metrics

Alerting & Incident Response

  1. Alert Thresholds:

    • Error rate: > 1% of requests
    • Latency: > 500ms for 95th percentile
    • Availability: < 99.9% service uptime
    • Resource utilization: > 80% sustained
  2. On-Call Rotation:

    • 24/7 coverage with primary and secondary responders
    • Escalation paths for critical incidents
    • Automated incident creation and tracking
  3. Incident Management:

    • Defined severity levels and response procedures
    • Post-mortem process for all significant incidents
    • Continuous improvement of monitoring and alerting

Disaster Recovery & Business Continuity

Backup Strategy

  1. Database Backups:

    • Daily full backups retained for 30 days
    • Point-in-time recovery capability with transaction logs
    • Cross-region backup replication
  2. Configuration Backups:

    • Infrastructure-as-code repositories with version control
    • Kubernetes configuration backups
    • Secret and credential management with secure backups

Recovery Procedures

  1. Service Recovery:

    • Automated health checks and self-healing
    • Service restart procedures
    • Rollback capabilities for deployments
  2. Data Recovery:

    • Database restore procedures with validation
    • Point-in-time recovery process
    • Data consistency verification
  3. Full System Recovery:

    • Cross-region failover procedures
    • Infrastructure recreation from IaC
    • Service restoration prioritization

Business Continuity

  1. High Availability Design:

    • Multi-AZ deployment within each region
    • Database replication and failover
    • Load balancing across redundant services
  2. Resilience Testing:

    • Regular chaos engineering exercises
    • Simulated region failures
    • Service dependency failure testing

Implementation Roadmap

MVP Phase (Months 1-3)

  1. Core Voice Processing Pipeline:

    • Twilio integration for call handling
    • Basic speech-to-text and intent recognition
    • Simple conversation flows for appointment booking
  2. Essential Appointment Management:

    • Basic calendar integration with Google Calendar
    • Appointment creation and confirmation
    • SMS notifications for appointments
  3. Minimal Payment Processing:

    • Stripe integration for deposit payments
    • Payment link generation and status tracking
    • Appointment confirmation upon payment
  4. Worcester Market Launch Infrastructure:

    • Local phone number provisioning (508-686-SVEN)
    • Initial provider onboarding
    • Basic monitoring and alerting

Phase 2 (Months 4-6)

  1. Enhanced Diagnostics:

    • Expanded HVAC troubleshooting capabilities
    • Photo analysis for visual diagnostics
    • More sophisticated issue identification
  2. Additional Calendar Integrations:

    • Microsoft Outlook/365 integration
    • Enhanced availability management
    • Provider-specific scheduling rules
  3. Improved Customer Experience:

    • Returning customer recognition
    • Enhanced conversation flows
    • Expanded notification capabilities
  4. Operational Improvements:

    • Enhanced monitoring and alerting
    • Improved deployment automation
    • Performance optimization

Phase 3 (Months 7-12)

  1. Market Expansion Infrastructure:

    • Multi-region deployment for additional U.S. markets
    • Scaling infrastructure for additional markets
    • Geographic routing and load balancing
  2. Advanced Provider Integration:

    • Field service management software integration
    • Technician matching and optimization
    • Enhanced provider portal
  3. Intelligent Optimization:

    • Machine learning for conversation improvement
    • Predictive analytics for service demand
    • Optimization of provider scheduling
  4. Enterprise-Grade Operations:

    • Advanced security enhancements
    • Comprehensive disaster recovery
    • Compliance certification preparations

Future Expansion (Year 2+)

  1. International Expansion:

    • Infrastructure for Canadian and European markets
    • Multi-language support
    • Region-specific compliance implementations
  2. Service Line Expansion:

    • Architecture adaptation for additional home services (plumbing, electrical, etc.)
    • Shared service components with service-specific extensions
    • Cross-service scheduling optimization
  3. Advanced AI Capabilities:

    • Preventative maintenance recommendations
    • Predictive issue diagnosis
    • Virtual technician assistance

Architecture Decisions

ADR 1: Microservices Architecture

Context: The SvenHVAC system needs to handle complex, multi-step interactions with varying loads across different components. The system must scale independently based on market growth and be able to evolve different capabilities at different rates.

Decision: Implement a microservices architecture with domain-driven service boundaries to allow independent scaling, development, and deployment of system components.

Consequences:

  • Positive: Independent scaling of high-demand services; easier team assignment to specific domains; improved fault isolation
  • Negative: Increased operational complexity; distributed system challenges; potential performance overhead
  • Neutral: Requires strong DevOps practices; needs service discovery and orchestration solutions

ADR 2: MongoDB as Primary Database

Context: SvenHVAC needs a database solution that can handle diverse data models, scale horizontally as we expand to new markets, and allow for rapid schema evolution during early development phases.

Decision: Use MongoDB as the primary database for most services, with service-specific databases to maintain data sovereignty.

Consequences:

  • Positive: Flexible schema for rapid iteration; horizontal scaling capabilities; document model matches domain entities well
  • Negative: Eventually consistent model requires careful design; less rigid schema enforcement than SQL
  • Neutral: Team needs to develop expertise in NoSQL data modeling; requires careful index design for performance

ADR 3: Twilio for Telephony and SMS

Context: SvenHVAC requires reliable voice call handling, local phone number provisioning across multiple markets, and SMS capabilities for appointment confirmations and payment links.

Decision: Use Twilio as the primary telephony and SMS platform for all customer communications.

Consequences:

  • Positive: Proven reliability; extensive API capabilities; supports all required communication channels
  • Negative: Cost scales with usage; vendor lock-in concerns
  • Neutral: Requires webhook handling for incoming communications; needs careful error handling for communication failures

ADR 4: Google Dialogflow for Conversation Management

Context: SvenHVAC needs sophisticated natural language understanding to handle diverse customer inquiries, maintain conversation context, and provide appropriate responses.

Decision: Use Google Dialogflow as the conversation management platform, integrated with custom backend services for domain-specific logic.

Consequences:

  • Positive: Advanced NLU capabilities; handles conversation state; supports multiple languages for future expansion
  • Negative: Potential latency for complex conversations; less control over underlying models
  • Neutral: Requires careful design of conversation flows; needs integration with custom business logic

Product Alignment and Value Delivery

User Problem Alignment

The SvenHVAC technical architecture directly addresses the core user problems identified:

  1. Trust and Expertise Concerns:

    • AI-powered voice system provides consistent, knowledgeable responses
    • Diagnostic service incorporates HVAC domain expertise
    • Photo analysis capabilities help provide accurate preliminary assessments
  2. After-Hours Booking Challenges:

    • 24/7 availability through automated voice system
    • Real-time calendar integration for accurate appointment scheduling
    • Immediate confirmation of appointment times
  3. Booking Certainty:

    • Deposit payment secures appointment slot
    • Integration with provider calendars ensures availability
    • Confirmation SMS with appointment details

Business Value Metrics

The architecture supports key business metrics that will determine success:

  1. Conversion Metrics:

    • Call-to-appointment conversion rate
    • Appointment-to-payment conversion rate
    • Customer return rate
  2. Operational Metrics:

    • Average handling time per call
    • Successful automation rate (calls handled without human intervention)
    • Provider calendar utilization improvement
  3. Expansion Metrics:

    • New market deployment time
    • Provider onboarding time
    • Service scaling efficiency

Feature Prioritization Alignment

The technical architecture supports the product roadmap with appropriate technical priorities:

  1. MVP Focus: Core scheduling and payment functionality with basic HVAC troubleshooting
  2. Phase 2 Focus: Enhanced diagnostic capabilities and improved provider integration
  3. Phase 3 Focus: Market expansion capabilities and operational scaling

Team Structure and Responsibilities

To implement the SvenHVAC technical architecture, we recommend the following team structure:

Core Development Team

  1. Voice Experience Team:

    • Responsibilities: Voice processing pipeline, conversation flows, NLP integration
    • Skills: Speech recognition, conversational AI, dialog design
  2. Appointment Services Team:

    • Responsibilities: Appointment management, calendar integration, provider scheduling
    • Skills: API integration, distributed systems, real-time systems
  3. Customer Experience Team:

    • Responsibilities: Customer service, notification system, payment processing
    • Skills: User experience, communication systems, payment integration
  4. HVAC Diagnostics Team:

    • Responsibilities: Diagnostic knowledge base, troubleshooting flows, photo analysis
    • Skills: Domain expertise, decision trees, image recognition

Support Teams

  1. DevOps Team:

    • Responsibilities: CI/CD pipeline, infrastructure automation, monitoring
    • Skills: Kubernetes, Terraform, observability tools
  2. Data Engineering Team:

    • Responsibilities: Data modeling, analytics, reporting
    • Skills: Database design, data pipelines, business intelligence
  3. Security Team:

    • Responsibilities: Security architecture, compliance, penetration testing
    • Skills: Application security, compliance frameworks, secure coding

Conclusion

The SvenHVAC technical architecture provides a comprehensive foundation for building a scalable, resilient, and maintainable system that meets the business requirements outlined in the PRD. The microservices approach allows for independent scaling and evolution of system components while maintaining clear boundaries of responsibility.

The architecture is designed to support the initial Worcester, MA market launch with a clear path for expansion to additional markets nationwide and internationally. By leveraging cloud-native technologies and established integration patterns, the system can grow efficiently while maintaining high reliability and performance.

Implementation should follow the phased approach outlined in the roadmap, focusing first on core functionality for the MVP and then expanding capabilities based on market feedback and business priorities. Regular architecture reviews should be conducted as the system evolves to ensure continued alignment with business goals and technical best practices.

This architecture not only addresses the immediate needs of the SvenHVAC service but also provides a flexible foundation that can adapt to future expansion into additional home services verticals such as plumbing, electrical, landscaping, and general contracting as outlined in the founder's vision.

  • Executive Summary

    Vanka clearly articulates your idea in a way that enables the entire business strategy & planning foundation to be expertly prepared.

  • User Journey

    Everything customers experience from the moment they learn about you, to their first use of your product, to evangelizing your product.

  • Brand Strategy

    The foundation for how you show up in the world. It determines whether you are memorable, trusted, and ultimately chosen.

  • Business Analysis

    Expert analysis of your business idea, to help you make an informed decision about how to proceed.

  • Visual Identity System

    Establishes comprehensive branding guidelines, defining visual elements & their consistent application.

  • Product Requirements

    Defines what a product should do in a way that guides product development teams.

  • Technical Architecture

    Defines system structure, technologies, data flow, etc to guide engineering implementation and ensure scalability.

  • Component Library

    Catalogs reusable UI elements with usage guidelines, specs, code examples to ensure consistent interface design across products.

  • UI Spec

    Details interface layout, interactions, styling, behavior for specific screens or features to guide design implementation.

  • UX Flow Diagram

    Visually maps user journeys through a product, showing screens, decision points, interactions to clarify navigation and experience.

  • Low-Fi Mockups

    Quick, simple sketches of interface layouts to explore concepts, test ideas, and gather early feedback before detailed design.