Orvana

Reports drafted by AI, released only after a licensed clinician signs them.

Head of Engineering · AI Research · Aug 2026 to Present · Web

  • AI engineering
  • Full-stack engineering
Orvana overview
  • AI engineering
  • Product design
  • Health

Overview

Orvana is a consumer oral microbiome test kit built for Southeast Asia, starting in Singapore. A customer orders a kit, swabs at home, and sends the sample back. A partner lab sequences it, our pipeline processes the results, and an AI engine drafts a report of oral microbiome insights. A licensed clinician reviews and signs every report before a customer can see it.

I joined in August 2026 as Head of Engineering. I design and build the report engine and the platform around it: the customer portal, the ops dashboard, the sequencing pipeline, and the clinician review tooling. The product is in testing and has not launched.

This page is about the techniques behind the engine, at pattern level. The interesting work was not getting a model to write. It was building the machinery that makes the writing safe to release.

Ops that run from a pocket

The Orvana ops dashboard on a phone, listing completed sequencing pipeline runs on demo data

The Problem

Putting generated text inside a health product is easy to do badly. A language model will write something plausible about any input you hand it, and plausible is not a standard a clinician can put their name under.

Three things made this harder than a normal AI feature. The output reads like advice, so the wording carries real responsibility. The evidence base shifts, because microbiome literature moves and yesterday's retrieval is not today's. And health data is regulated, so where bytes live and who can see them is a design input, not an afterthought.

So the real problem was never the drafting. It was making the output checkable: every claim traceable to evidence we chose on purpose, every release owned by a named person, every result reproducible months later.

Constraints

ConstraintWhat it forced
Personal data under Singapore's PDPAData stays in its region; the lab only ever sees pseudonymous sample IDs
A clinician answers for every reportA hard gate in the release path, and tooling shaped around clinician hours
Careful claim languageReports give oral microbiome insights, not a diagnosis; wording is reviewed like code
A small team running a physical productFew moving parts, boring infrastructure, ops flows a two-person crew can actually run

Architecture

The system is a straight line with one gate. Kits come back as sequencing results through a lab intake that works on pseudonymous IDs. Results process in an asynchronous job pipeline: batch-shaped runs with resumable stages, because a multi-hour run should never start over for a failure in its last step. The report engine drafts against a pinned release of a curated knowledge base. Drafts queue for clinician review. Only signed reports reach the customer portal.

Orvana architecture: kit to released report inside a Singapore region boundary, with the curated knowledge base, the third-party model provider and the offline-trained taxonomy classifier outside itKit and order: registered to the customer, personal data held here. Lab intake: lab sees a de-identified manifest reads checksum-verified, kept raw. Pipeline run: one lab delivery = one run, in a pinned container durable job bus: retries with backoff, ops alerted. Quality check: validate every read, quarantine a bad tube. Primer trim: cut primers, drop untrimmed reads. Denoise: error model per run, chimeras removed. Taxonomy: pinned classifier, hash-checked first. Diversity: alpha diversity per sample, no rarefying. Results: per-sample results with run provenance: every version used. Rules engine: interval thresholds, deterministic, and abstains when unsure. Report engine: seven traced steps, one strict-JSON draft, five versions pinned. Clinician review: sign-off is the only path to released a licence is required. Customer portal: released reports only, a frozen, hashed Report of Record. Curated knowledge base: curator-approved entries, immutable versioned releases, no live literature search. Model provider: behind a swappable interface, zero-retention routing, fails closed, in-region swap is configuration. Classifier: trained offline on the reference sequences; artifact pinned by hash. Shared evidence and the model sit outside the boundary. Personal data never crosses it; the provider only sees coarse demographics, questionnaire categories and abundances under a one-time ID. The one model trained here is the taxonomy classifier. The drafting model is third-party and never fine-tuned.SINGAPORE REGION · PERSONAL DATA STAYS RESIDENTFIVE STAGES · CHECKPOINTED, RESUMABLEsend back, reason auditedthe only evidence source,pinned on every reportminimized payload out,strict JSON draft backverified before useKit and orderPIIregistered to the customer,personal data held hereLab intakelab sees a de-identified manifestreads checksum-verified, kept rawPipeline runJobone lab delivery = one run, in a pinned containerdurable job bus: retries with backoff, ops alerted01Quality checkvalidate every read,quarantine a bad tube02Primer trimcut primers, dropuntrimmed reads03Denoiseerror model per run,chimeras removed04Taxonomypinned classifier,hash-checked first05Diversityalpha diversity persample, no rarefyingResultsper-sample resultswith run provenance:every version usedRules engineCodeinterval thresholds,deterministic, andabstains when unsureReport engineLLMseven traced steps,one strict-JSON draft,five versions pinnedClinician reviewsign-off is the onlypath to releaseda licence is requiredCustomer portalreleased reports only,a frozen, hashedReport of RecordCurated knowledge baseCuratedcurator-approved entries,immutable versioned releases,no live literature searchModel providerThird-partybehind a swappable interface,zero-retention routing, fails closed,in-region swap is configurationClassifierTrainedtrained offline on thereference sequences;artifact pinned by hashShared evidence and the model sit outside the boundary. Personal data never crosses it;the provider only sees coarse demographics, questionnaire categories and abundances under a one-time ID.The one model trained here is the taxonomy classifier. The drafting model is third-party and never fine-tuned.
Kit to released report. Personal data stays inside the region boundary; shared evidence and the model sit outside it, reached only through a minimized payload.
The pipeline runs list in the ops dashboard, five completed batch runs with versions, start times and durations
Every lab delivery becomes one pipeline run.
A pipeline run detail screen with five completed processing stages followed by the per-sample drafting trail
A run's stages, then the drafting steps that follow them, all on one audit trail.

Techniques

Reports cite a curated knowledge base, nothing else. At drafting time the engine retrieves evidence only from a knowledge base our team curates, approves by hand, and publishes as versioned releases. There is no live literature search anywhere in the release path. Every report pins the exact release it drafted against, so a released report can be re-derived exactly, long after the literature has moved on.

A sign-off gate, not a review culture. A report moves through draft, under review, signed, released, and cannot skip a state. The clinician can send a draft back, and the send-back is recorded with a reason. We sized the system around clinician hours as the throughput ceiling, because in a product like this, that is what the ceiling is.

Region-resident data. Region is a property of the customer from day one. Personal data never crosses a region boundary, and nothing joins personal data across regions. Expanding to a second country means standing up a parallel data plane, not untangling a global one.

The model is a guest, not a tenant. The language model sits behind a swappable provider interface, and every payload is minimized before it leaves: coarse demographics, questionnaire categories, and abundance data under an opaque one-time ID. No names, no contact details, no sample identifiers. If a regulator or a partner ever requires in-region inference, swapping providers is configuration, not a rewrite.

Sequencing results process asynchronously. One lab delivery becomes one pipeline run, executed as a batch job with per-stage checkpoints. Each run records the versions of everything it used, which turns results into reproducible artifacts instead of one-off outputs.

Drafting changes pass evals first. An evals workspace replays the drafting step against fixed inputs, so a prompt or model change shows its effect before it gets near the release path.

Inside one Orvana draft: seven traced steps from a pinned knowledge base release to the clinician queue, the versions pinned on every report, and the evals that replay the drafting pathPin KB release: one immutable snapshot, recorded on the report. Load evidence: sample results, rule hits, questionnaire context. Match taxa: deterministic join: detected organisms × pinned snapshot. Minimize payload: no names, contacts or sample IDs; one-time request ref. Draft sections: one call, 13-section strict JSON, walks curated chains. Check citations: organism, claim and grade checked against the snapshot. Persist draft: revision + step trace with token usage; state: draft. Clinician queue: evidence panel beside the draft; sign or send back. Pinned on every report: KB release · rule-set version (hash of the active rules) prompt version · model ID pipeline run → image, tool and reference versions so a released report can be re-derived exactly. Provider seam: one place sets routing: zero retention, no data collection, no silent fallbacks; fails closed a mock model in CI, live models on demand. Golden fixtures: five fixed cases with expected bands from the real thresholds. Real drafting: seeded into the app, a pinned eval release, the same code path. Seven checks: hard: section contract, citation provenance, no PII, evidence coverage, rule acknowledgement, mechanism honesty advisory: band coherence. CI gate: mock model in CI; a hard failure fails the build; live runs are manual. No embeddings or vector search: evidence is a deterministic join of detected organisms against the pinned release. The drafting model is a third-party guest, never fine-tuned. The only model Orvana trains is the taxonomy classifier, offline and hash-pinned.ONE DRAFT · SEVEN TRACED STEPSEVALS · REPLAY THE REAL DRAFTING PATHrejected: one corrective retry, reason appendedrejected twice: draft-failed audit row, no reportwrites the pinsminimized payload01Pin KB releaseCodeone immutable snapshot,recorded on the report02Load evidencesample results, rule hits,questionnaire context03Match taxadeterministic join: detectedorganisms × pinned snapshot04Minimize payloadno names, contacts or sampleIDs; one-time request ref05Draft sectionsLLMone call, 13-section strictJSON, walks curated chains06Check citationsCodeorganism, claim and gradechecked against the snapshot07Persist draftrevision + step trace withtoken usage; state: draftClinician queueevidence panel beside thedraft; sign or send backPinned on every reportLineageKB release · rule-set version (hash of the active rules)prompt version · model IDpipeline run → image, tool and reference versionsso a released report can be re-derived exactlyProvider seamThird-partyone place sets routing: zero retention, no datacollection, no silent fallbacks; fails closeda mock model in CI, live models on demandGolden fixturesfive fixed cases withexpected bands fromthe real thresholdsReal draftingseeded into the app,a pinned eval release,the same code pathSeven checksCodehard: section contract, citationprovenance, no PII, evidence coverage,rule acknowledgement, mechanism honestyadvisory: band coherenceCI gatemock model in CI;a hard failurefails the build;live runs are manualNo embeddings or vector search: evidence is a deterministic join of detected organisms against the pinned release.The drafting model is a third-party guest, never fine-tuned. The only model Orvana trains is the taxonomy classifier, offline and hash-pinned.
One draft, seven traced steps. Every report pins the versions it was drafted from, and the evals replay the same path against fixed cases.
Step six of six on a batch in the ops dashboard: review and release is reserved for the clinician account, with one report under review and one released
The final step of every batch belongs to the clinician. Ops can look, only a clinician can sign.

Outcome

Orvana is in testing and has not launched, so the honest outcome list is short. On 23 September 2026 the staging environment passed an end-to-end human test: customer sign-in, checkout against a payment sandbox, the questionnaire, and ops access, run by people rather than scripts. Synthetic lab data has travelled the full path from intake to a signed, released report. There are no user numbers because there are no users yet.

What I can already say is the part I care about: nothing a customer will ever read goes out unsigned, and any report we release can be reproduced exactly. That is the property the engine was designed around, and it held up under test.