Qiri · Confidential

Platform documentation

Internal & investor material. Sign in with your @qiri.ai Google account to continue.

Qiri
Qiri · Delivery

Roadmap & decisions

What has shipped, what is in build, what remains by phase, and the architecture decisions: made and still open. Live means in production today.

Shipped Live in production

Running today on the console at console.qiri.ai unless noted. Detail per surface in Product surfaces.

Clinical dispensing

  • Script intake + local queue snapshot; script upserts the patient record
  • Review canvas: engine verdicts + checks, interaction matrix, counselling, CMI; guided medicine picker on manual entry
  • Amendments (append-only audit) and traced pharmacist overrides on BLOCK; any un-decided script is editable with the chain rendered on the immutable record
  • S8 controlled-drugs register view; dispensing ledger with days since last supply; PBS-safety-net tally; MedsCheck records with an authorship rule
  • Plain-English SIG on review and on the dispense label; drug lookup + resolve-sig
  • Patient record merge, audited, carrying consults; Medicare treated as a household key with a duplicate prompt and a needs-linking queue; auditable user name changes

Patient intake & notifications

  • Straight-through intake: every path (app, manual, eScript, QR, paper) lands scripts directly in the review queue under the org admin's standing authority; a per-site switch decides whether Qiri screens on the way in, and unscreened arrivals are marked and screenable on demand; the dispensing decision stays with the pharmacist
  • Outcome-notice loop: the sign-off stamps approved / not-approved back to the app
  • Server-derived patient notification inbox: notices computed from platform state (decision, payment, collection), never fabricated client-side
  • Generic, drug-free OS push on a decision (Expo), opt-in
  • Patient account backend: self-service profile, audit-grade consent ledger, admin suspend / delete register

Reasoning & language

  • Ask Qiri streaming on the live engine, grounded in patient context, with suggested next questions and answer feedback (reason chips on a thumbs-down)
  • Ask Qiri Standalone at ask.qiri.ai: self-serve signup, founding billing (monthly and annual), and a referral loop
  • Counselling, CMI, and Ask Qiri translation via /api/translate
  • Signal Intelligence shelf (TGA/FDA feed; mock data pending the live source)

Consults & video

  • Booking, recurring availability, reschedule and cancel from both sides; payment travels with a rescheduled booking
  • Private video consults with in-region transcription (Google STT v2, australia-southeast1); the transcript lands on the consult record, and a bad transcript is refused rather than trusted
  • Consent copy covers transcription as well as recording
  • Paid consults gated on the consult_payment entitlement, with a "Coming soon" fallback when off

POS & payments

  • Dispense orders: scripts + OTC in one basket, box QR, PBS pricing, GST per line
  • /counter in-store POS, entitlement-gated: card on Stripe Terminal, cash, and split tenders (cash + card, two cards); public /pay/<token> pages
  • Till sessions: cash drawer opens on a float, reconciles and closes with variance recorded
  • Tablet till: the Counter installs as a chrome-free web app, with camera barcode/QR scanning and audited 44px touch targets
  • Refunds with automatic OTC restock; stock decrement on paid
  • Stripe Connect consult payments; SaaS billing off entitlements; pricing-acceptance gate. Live keys.
  • Accounting-event ledger (sale / refund / bill) with a Xero/MYOB-ready CSV journal, backfillable from historical sales, refunds and deliveries; direct sync next

Stock & purchasing

  • Per-site stock with an append-only stock_movement ledger
  • Reorder points + low-stock tab; purchase orders + delivery receipt; ad-hoc receiving records the payable and requires a supplier
  • Batch/expiry tracking with FEFO pick suggestions; stocktake (cycle-count) reconciliation
  • Poisons-schedule capture and a below-cost alert on the product file
  • Forecasted reorder points from sales history
  • Drug-dictionary correlation (AMT code): in-stock signal on review, amt-preferred dispense decrement, script-side AMT capture at intake

Access & onboarding

  • Branded per-org sign-in URLs; magic-link auth with branded email + short links
  • Invite-accept provisioning wired to the platform; entitlements + limits, set on the org only and superseded rather than deleted
  • Org lifecycle vocabulary with a Help glossary generated from it; restricted list (source blocklist) UI; onboarding acceptance audit
  • Platform & cost telemetry, usage actuals, and estate-wide product-adoption dashboards on the admin view
  • Public status page at status.qiri.ai; public /support page; surface-scoped Help Center

Security & data isolation 2026-07-12

  • Clinical data on its own Cloud SQL instance (qiri-clinical-pg, Sydney), physically separate from accounts/marketing; CMEK-encrypted with 90-day key rotation
  • Field-level encryption of patient identity numbers on top of the disk encryption
  • Edge WAF (Cloud Armor) in front of console.qiri.ai and my.qiri.ai on one load balancer: OWASP rule groups, per-IP rate limiting, adaptive DDoS
  • Patient API ingress locked to the load balancer; streaming rides the Cloud Run timeout, no 60s edge cap

In build Active

Patient app

  • Core flows (wallet, send script, pay, book consult) run against the live platform; internal builds on TestFlight + Play internal testing
  • Remaining release gate: the clinical identity link (Medicare + DOB) that resolves an app account to its dispensing record, a platform concern
  • See the surface doc

Console & back-office follow-ons

  • Direct Xero / MYOB posting (adapters scaffolded, tax-code maps in place; OAuth + push next)
  • Remaining dispense-flow parity items for full PMS replacement (structured repeats, barcode checks at supply)

Planned Not yet built

What remains to be chosen, procured, or built, grouped by phase.

Phase 1

Apps / software to build

  • Dispense coexistence connector agent (per-PMS adapters)
  • Model router + CQL safety engine
  • Consent + audit service, formalised as a service (immutable audit + consent primitives already live per-table in the clinical schema: patient/script audit events, contract event hash-chains, consult consents)
  • Patient-facing i18n: live translation is shipped; still to do: string externalisation, RTL, and a clinically-validated counselling phrase library

Cloud / GCP to stand up

  • Folder/env structure (prod / staging / dev)
  • VPC-SC perimeter + Private Service Connect
  • CMEK key rings in australia-southeast1 — first one live (the clinical DB, qiri-clinical keyring); extend to the remaining stores
  • Graph store choice for context graph (Spanner Graph / Neo4j on GKE)
  • DR region (-southeast2) + backup policy
  • Cloud VPN / Interconnect to pharmacy sites

Regulatory / accreditation

  • My Health Record CSP onboarding + NASH PKI certificates
  • PBS Online via PRODA (Services Australia)
  • SafeScript / RTPM connection (controlled drugs)
  • Active Script List registration
  • AHPRA pharmacist verification process
  • Privacy Act / APP compliance + DPIA, incl. right-to-access / erasure flow
  • Clinical validation of translated counselling / CMI + dispensing-label language compliance

Partner / data agreements

  • PMS vendor integration agreements (the six vendors in Ecosystem & vendors)
  • Anthropic + Google data-processing terms on Vertex
  • Drug knowledge licensing (AMH, eTG, MIMS, NPS)
  • Error/observability add-ons (Sentry, if any)

Phase 2

Hardware

  • Kiosk OEM partner: ScriptPro / Parata / Wellmation (decide buy-vs-partner)
  • Robotic Rx dispense unit model + capacity
  • OTC / S2-S3 vending mechanism
  • Touchscreen, camera, mic/speaker array spec
  • Medicare/ID + eScript QR scanner; label + receipt printer
  • Card reader (Stripe Terminal, unattended variant)
  • Edge compute device (industrial mini-PC / ChromeOS / Android kiosk)
  • Secure cabinet, tamper sensors, environmental/temp monitoring
  • UPS + 4G/5G failover modem

Apps / software to build

  • Kiosk client app (kiosk-mode, offline-first)
  • Central command-centre console (remote kiosk oversight)
  • Kiosk checkout payments (unattended; the in-store Terminal flow is live today)

Regulatory / accreditation

  • State pharmacy board sign-off for kiosk model
  • Patient consent capture at the kiosk (minors, incapacity, withdrawal)

Cloud / analytics

  • BigQuery analytics + warehouse (fleet analytics, context-graph at scale, population health, ML training); Phase 1 keeps decision traces in Postgres + GCS

Architecture decisions

Made first, then open. Open items are ranked 1–3 by how much each blocks Phase 1, sits on the clinical safety path, or is costly to reverse.

Decided

DecisionOutcome
Qiri vs the incumbent PMSQiri is the dispensing system of record + intelligence (2026-07-01). The connector remains as the coexistence and migration mode; it no longer defines the architecture.
Payments & billing stackStripe across the board: Billing (SaaS), Connect direct-charge (consults, orders), Terminal (counter). Live keys. Usage metering in-house; Lago retired.
Patient identityTwo records by design: patient_profile (app account, consent ledger) and clinical.patients (dispensing record); controlled Medicare + DOB match, no shared key, Medicare numbers never hashed.
Pricing authorityQiri-authored pricing in contract_templates + entitlements, gated on org-admin acceptance before billing starts.
Patient-app intake defaultStraight-through: an app submission runs platform intake + screening automatically under the org admin's standing authority, so no per-pharmacist service credential is required. A site can instead have scripts arrive unscreened, marked as such and screenable on demand; nothing is held out of the queue. The dispensing decision stays with the pharmacist either way.
Entitlements scopeFeatures, limits, and pricing are set on the org only; site rows carry usage. Grants are superseded, never deleted, so the entitlement history stays auditable.
Consult transcription residencyConsult audio is transcribed in-region on Google STT v2 (australia-southeast1), accepting its current limits (en-AU only, no speaker diarisation) rather than sending patient audio offshore. Unattributed transcript lines are rendered as such, never guessed.
Accounting integration shapeRecord a normalised accounting_event at the source transaction; Xero/MYOB are downstream readers of that one feed, not code woven through the till. The integration can be built, replayed, or swapped without touching POS or stock.

Open

PriorityDecisionWhy it matters
1Safety rules engine: HL7 CQL vs purpose-built deterministic rulesOn the clinical critical path; CQL is standard but heavy for real-time hard-stops, and hard ceilings may not need it
1Panel reconciliation: deterministic merge vs model-arbitrated vs pharmacist-resolvedIt sits on the clinical path; a model arbitrating safety would weaken the gate principle
1Context-graph store: Spanner Graph vs Neo4j-on-GKEIt's the moat; query shape, scale and ops burden differ a lot, and it's costly to migrate once full (BigQuery analytics over it is Phase 2)
1Coexistence connector: on-prem agent vs cloud-hosted with site VPNGates every pilot that keeps its incumbent PMS; on-prem is more resilient and offline-friendly but more to maintain across sites
2Translated counselling: validated phrase library vs LLM + back-translation + pharmacist sign-offPatient safety: the pharmacist can't verify a language they don't read; high-risk dosing needs validated wording
2Which patient languages per pilot region (and STT/TTS enablement)Sets phrase-library scope and kiosk voice coverage for CALD communities; can be set close to each pilot. In-region STT is live but en-AU only today, so multilingual voice needs its own path
3How much safety logic runs at the kiosk edge offlinePhase 2: determines safe-degradation behaviour when the WAN drops
3Kiosk OEM: integrate an existing dispenser vs spec a custom cabinetPhase 2 hardware: speed, capex, and regulatory surface
Qiri platform documentation · v1.2 · 2026-07-23. Brand tokens from design-system/qiri-tokens.css. Source lives in design-site/src/; edit there, then run node build.mjs.
© 2026 Qiri.ai – All rights reserved
scroll to zoom · drag to pan · Esc to close