AI and language
- Vertex AI with Gemini for dialogue, classification and extraction
- Document AI for OCR on leases and invoices
- Cloud Translation v3 for ticket translation on the EU endpoint
Architecture
This page is written for technical evaluators, partners and investors. It sets out the services in use, the path a report takes through the system, and the limits we deliberately imposed. The product is a working end-to-end system in pilot preparation.
Working end to end.
Every capability described here runs in the product today, on Google Cloud, in the europe-west1 region.
Platform
Every environment is created from Terraform. There are no hand-made production resources, and each change is traceable in version control.
The path of a report
Each step is a separate, auditable transition. None of it runs in the user's browser.
The messenger webhook hits Cloud Run. Shared-secret authentication and IP validation happen before anything is processed.
A state machine drives the intake while Gemini handles intent recognition and judges whether the description is sufficient.
The case is written to Firestore. Photos go to Cloud Storage, reachable only through signed, role-checked URLs.
A Firestore trigger starts liability classification, deadline calculation, translation and the scoring of suitable businesses.
The office decides. Businesses respond through a secure one-time link, without an account, with atomic conflict resolution on acceptance.
Scheduled jobs escalate overdue cases. Closed tickets move into an archive together with their history.
Design decisions
Gas, electricity, escaping water and security risks escalate through a fixed rule. A model may raise that classification but never lower it.
The ranking of businesses comes from a published formula — proximity, rating and completed cases — not from a model. The manager's trusted trades always rank ahead of the network.
Before accepting, a business sees only category, severity, a rough area and time windows. The full address and contacts are released only after acceptance.
Role, active status and linkages are closed to clients. Every sensitive workflow runs through a server-side function.
Invitation and job links are stored solely as SHA-256 hashes and never logged in clear text.
Every model call records its token usage. Cost per ticket and per lease are therefore known quantities rather than estimates.
Scaling
Resource demand tracks almost entirely with the number of managed units. These are the quantities that drive cloud consumption:
Because every model call logs its usage, demand per additional unit can be extrapolated rather than estimated.
Status
We're happy to walk partners and technical evaluators through the system in detail.