Internal & investor material. Sign in with your @qiri.ai Google account to continue.
End-to-end clinical-intelligence platform on Google Cloud. The in-pharmacy console is the wedge (Phase 1); the patient kiosk and central command centre extend it (Phase 2); the neuro-symbolic Qiri reasoning engine and the context graph are the business underneath both.
Five layers: client surfaces → on-site edge → GCP perimeter (security, services, reasoning engine, data) → external & government integrations. Dashed boxes are placeholders you still need to choose, procure, or build.
This is the heart of the system and the regulatory story. The LLM proposes; the symbolic layer disposes; the pharmacist decides; the trace compounds. Same flow whether the script arrives at the console (Phase 1) or the kiosk (Phase 2) — only the human-in-the-loop location changes.
sequenceDiagram autonumber participant SRC as Script source
PMS · eScript · kiosk participant ORCH as Orchestrator participant ENG as Reasoning engine
Claude · Gemini participant GATE as Symbolic safety gate
CQL · hard ceilings participant REV as Pharmacist
console / command centre participant DISP as Dispense + hardware participant GRAPH as Context graph + audit SRC->>ORCH: New script + patient history (PHI) Note over ORCH: normalize to FHIR R4 · redact for prompt ORCH->>ENG: De-identified clinical context ENG->>ENG: Draft proposal · cite AMH / PBS ENG->>GATE: Proposal (advisory only) Note over GATE: LLM output never dispenses.
Hard rules decide. alt Hard rule violated GATE-->>REV: HALT + full reasoning trace REV->>DISP: Hold · contact prescriber else Within safe bounds GATE-->>REV: Recommendation + counselling note + trace REV->>DISP: Approve / modify DISP-->>SRC: Write-back status (FHIR) end REV-)GRAPH: Pharmacist action + outcome GATE-)GRAPH: Rules fired · model · citations Note over GRAPH: Every decision traced →
indemnity defence + network moat
Qiri is the intelligence layer, not a hardware manufacturer. The physical kiosk is partner-built (ScriptPro / Parata / Wellmation class). Edge compute holds an offline cache and a local safety fallback so the unit degrades safely if the WAN drops, and the camera/mic bridge a remote pharmacist for telepharmacy.
Named GCP services per layer, with the phase each is needed. "Build now" vs phased is a sequencing hint, not a hard line.
| Component | GCP service | Role | Phase |
|---|---|---|---|
| Pharmacist console host | Firebase Hosting + Cloud CDN | Serve Next.js console to in-store workstations | P1 |
| API edge | Apigee / API Gateway + Cloud Armor | Auth, rate limit, routing, WAF/DDoS | P1 |
| Identity | Identity Platform + Cloud IAM | Pharmacist + patient auth; service-account least privilege; AHPRA-linked roles | P1 |
| Application services | Cloud Run (or GKE Autopilot) | Dispense orchestration, counselling, integration, audit, kiosk orchestration, command centre | P1 P2 |
| Eventing | Pub/Sub, Eventarc, Workflows | Dispense events, async pipelines, orchestration | P1 |
| Component | GCP service | Role | Phase |
|---|---|---|---|
| Reasoning models | Vertex AI — Claude + Gemini | Claude: clinical reasoning, counselling, patient-level translation. Gemini: multimodal triage, OCR, high-volume. | P1 |
| Model router | Cloud Run service | Route per task type / cost / latency; fail-over between models | P1 |
| Symbolic safety layer | Custom CQL rules engine on Cloud Run | Hard ceilings + clinical rules gate every proposal. Source of truth for "do not dispense". | P1 |
| Knowledge retrieval (RAG) | Vertex AI Search + Vector Search | AMH, PBS schedule, clinical guidelines grounding | P1 |
| Document OCR | Document AI | Script / label extraction at kiosk and console | P1 |
| Voice | Speech-to-Text / Text-to-Speech | Kiosk voice counselling, accessibility | P2 |
| Trace + context graph | BigQuery + graph store (TBD) | Structured decision traces — the compounding moat | P1 |
| Component | GCP service | Role | Phase |
|---|---|---|---|
| Operational / PHI store | AlloyDB or Cloud SQL (Postgres) | Scripts, patients, transactions — CMEK encrypted | P1 |
| Real-time state | Firestore | Console + kiosk live session state | P1 |
| Object store | Cloud Storage (CMEK) | Documents, telepharmacy recordings, images | P1 |
| Cache / sessions | Memorystore (Redis) | Low-latency session + lookup cache | P1 |
| Analytics | BigQuery | Population health (de-identified via DLP API), A/B, ops | P1 |
| Keys & secrets | Cloud KMS (CMEK) + Secret Manager | Customer-managed encryption, credential storage | P1 |
| Compliance perimeter | VPC Service Controls, Private Service Connect, DLP API, Security Command Center | Data exfil prevention, PHI scanning/redaction, posture | P1 |
| Observability | Cloud Logging / Monitoring / Trace + Audit Logs | Immutable audit trail, alerting, distributed tracing | P1 |
| CI/CD + IaC | Cloud Build, Artifact Registry, Cloud Deploy, Terraform | Reproducible, auditable deploys | P1 |
Everything dashed in the diagrams, grouped so you can hand each cluster to the right owner (Jon = product/UX/vendors, Javed = AI/architecture, David Hanin = clinical/regulatory).
Questions worth resolving before you commit code or spend. None block drawing the system, but each changes a box above.
| # | Decision | Why it matters | Owner |
|---|---|---|---|
| 1 | Context-graph store: Spanner Graph vs Neo4j-on-GKE vs BigQuery relational | It's the moat; query shape + scale + ops burden differ a lot | Javed |
| 2 | Cloud Run vs GKE Autopilot for services | Cloud Run is cheaper/simpler; GKE if you need fine-grained networking or sidecars for VPC-SC | Javed |
| 3 | Dispense connector: on-prem agent vs cloud-hosted with site VPN | On-prem is more resilient/offline-friendly but more to maintain across sites | Javed / Jon |
| 4 | How much safety logic runs at the kiosk edge offline | Determines safe-degradation behaviour when WAN drops (CLAUDE.md principle 5) | Javed + David |
| 5 | Kiosk OEM: integrate an existing dispenser vs spec a custom cabinet | Speed, capex, and regulatory surface for Phase 2 | Jon |
| 6 | Telepharmacy transport (LiveKit self-host vs Twilio/Daily) | Latency, cost, and whether AV recordings stay in your GCP boundary | Jon / Javed |