Metiss AI is a microservices platform deployed on Google Cloud Platform. This page describes the key components, how they communicate, and the end-to-end data flow from a homeowner's first interaction to a qualified lead landing in a partner's CRM.
System diagram
Components
Frontend layer
Component
Tech
Purpose
Lead Widget
React
Embeddable widget hosted on partner websites. Collects address and utility data, shows savings estimates, captures leads.
Vista Portal
Next.js
Partner administration interface for configuring service territories, products, utilities, and financial options.
Orion
Next.js + EncoreTS
Field service portal for managing installation and service jobs, tracking status, and surfacing AI job insights.
Backend services
All services are deployed as independent containers on GCP Cloud Run, routed through the API Gateway. Each service is Python (FastAPI) with shared commons libraries.
Service
Responsibility
authenticator-service
Token issuance and validation. All auth is handled at the gateway; individual services trust the gateway's assertions.
utility-bill-service
Accepts uploaded utility bill PDFs/images. Uses Gemini to extract structured monthly consumption data.
savings-insight-service
Calculates potential solar savings from consumption, roof type, utility rates, and available products. Triggers report emails.
org-service
Manages partner organisations, their configurations, and service territory eligibility rules.
user-service
User accounts, roles, and permissions across partner organisations.
widget-service
Serves widget configuration, address standardisation, roof type and utility provider lookups.
appointment-handling-service
Schedules field service appointments, integrates with Skedulo for availability and time-slot management.
email-agent
Delivers savings reports and customer communications.
pdf-generator-service
Renders savings reports as downloadable PDFs.
contract-approval-service
Manages partner contract workflows and approval states.
Data stores
Store
Used for
PostgreSQL (Cloud SQL)
Primary relational store — users, organisations, jobs, leads, event logs.
Uploaded utility bill files. Stored securely; deleted after extraction.
External integrations
Integration
Purpose
Google Gemini
AI extraction of usage data from utility bill documents.
Google Maps API
Address type-ahead, standardisation, and geocoding.
US Census Bureau
Demographics lookup by latitude/longitude for lead enrichment.
ATTOM / CoreLogic
Property information (roof type, square footage) fetched asynchronously.
Salesforce
Qualified lead creation via REST API into partner CRMs.
Skedulo
Appointment availability, date/time slot retrieval for field service scheduling.
GCP Pub/Sub
Audit event streaming. The audit-event-consumer-job Cloud Function processes all domain events.
Security model
Auth at the gateway — OAuth2 / API key validation happens at the API Gateway. Individual microservices do not implement their own auth logic.
Encrypted in transit— all traffic is HTTPS; internal service-to-service calls stay within GCP's private network.
PII minimisation — customer PII is only persisted when a lead is created. Uploaded utility bills are stored transiently in GCS and removed after extraction.
Partner isolation — all data is scoped to the partner organisation. Cross-organisation access is prevented at the service layer.
Deployment: All backend services are containerised and deployed to GCP Cloud Run. Infrastructure is managed via the devops and infrastructure-live repositories using Terragrunt.
Next steps
Lead Widget — how to embed and configure the widget on a partner site.