-
-
GxP compliance banners: SYNTHETIC DEMO DATA and SANDBOX / MOCK COURIER GATEWAY (IATA UN1845 COMPLIANT).
-
Un-bypassable 21 CFR Part 11 §11.70 QP sign-off gate. Real packet, PDF download, four SignatureRecord actions.
-
ReportLab ICH E6(R2) §4.5 deviation packet with USP <1150> MKT analysis and UN1845 dry-ice waybill. Byte-identity regression tested.
-
End-to-end proof: HARD_BREACH scenario fires four ADK agents on gemini-3.5-flash-lite, packet lands in QP queue with hash.
-
Approve click passes 21 CFR Part 11 signature-linkage check. Green "Packet filed" banner: record locked to state=FILED.
-
Thermal chart + Logistics panel. Last reasoning step surfaces Compliance agent's ICH E6(R2) narrative in real time.
-
311 tests pass. Hypothesis property-based physics tests. Grep-guard proves only one file writes state=FILED.
-
Live CryoMesh dashboard on Cloud Run. Route map, telemetry, multi-agent reasoning log, un-bypassable QP sign-off panel.
-
Four Gemini 3.5 Flash Lite agents on Google ADK: Triage → Evaluator → Dispatch → Compliance. Deterministic USP <1150> physics.
-
Live CryoMesh dashboard on Cloud Run. Route map, telemetry, multi-agent reasoning log, un-bypassable QP sign-off panel.
-
Cloud Run revision 00015-6jf, 100% traffic. --no-cpu-throttling + --min-instances=1 keep async ADK background tasks alive.
-
CAPA draft (corrective + preventive action), agent reasoning chain, and 64-hex record-integrity hash the 21 CFR Part 11 signature substrate.
-
UN1845 dry-ice waybill declaration, mock-gateway booking reference, depot ID, courier ID, safety margin ratio, ETA replenishment UTC.
-
Thermal assessment page: MKT trace, Arrhenius mean-kinetic-temperature computation, EXCURSION classification, sublimation runway seconds.
Inspiration
A single vial of CAR-T cell therapy is worth $500,000 for one specific patient. When a freezer fails mid-transit at −80 °C, a Qualified Person spends four hours manually writing an ICH E6(R2) §4.5 protocol-deviation packet — while the dose warms. The GxP world already has excellent sensors and excellent dashboards. What it does not have is the autonomous decision-and-paperwork layer between them.
We wanted to prove that a rigorously scoped multi-agent workflow could compress those four hours into under sixty seconds, without violating a single 21 CFR Part 11 clause and without letting the LLM anywhere near the regulatory arithmetic.
What it does
CryoMesh is an autonomous cold-chain custodian for ultra-low-temperature biopharma shipments. Four Google ADK agents on Gemini 3.5 Flash Lite run a linear workflow:
- Triage — debounce sensor noise, confirm a real excursion
- Thermal Decay Evaluator — deterministic USP <1150> Arrhenius mean-kinetic-temperature physics (in pure Python — the LLM never does math)
- Logistics Dispatch — book a UN1845-compliant dry-ice courier through a sandbox gateway
- Compliance & Audit — draft an ICH E6(R2) §4.5 deviation packet with CAPA fields, integrity-hash chain, and a ReportLab-rendered PDF
Every state change routes through an un-bypassable 21 CFR Part 11 §11.70 Human-In-The-Loop QP sign-off gate. Gemma — our second Google AI model — narrates the audit stream in plain English.
How we built it
- Google ADK Workflow — parked-interrupt primitive enforces HITL gates
- Gemini 3.5 Flash Lite — reasoning + tool calls (
location=global, Vertex AI Agent Platform) - Gemma — plain-English narration of the audit stream
- Deterministic Python physics — Arrhenius MKT calculator, sublimation runway estimator, all property-tested with Hypothesis
- FastAPI — async API layer with 11 domain routes
- Cloud SQL Postgres — ADK session service
- Google Cloud Storage — signed-URL PDF artifact service
- Cloud Pub/Sub — excursion ingest topic
- Next.js + React + Tailwind + Leaflet + Recharts — real-time dashboard
- ReportLab — deviation-packet PDF with ICH E6(R2) §4.5 + USP <1150> citations
- Docker multi-stage build — Next.js frontend + Python backend in one container
- Google Cloud Run — deployed, live, publicly reachable
- 311 tests — pytest + Hypothesis property-based tests + PDF byte-identity regression + grep-guard against un-authorized
state=FILEDwrites
Challenges we ran into
- Vertex AI Model Garden ≠ API accessibility. Several Gemini 3.5+ endpoints appear in Model Garden yet return 404 on
generateContentfor our project. Landed ongemini-3.5-flash-liteatlocation=globalafter a curl-based capability probe. - Cloud Run CPU throttling killed async ADK background tasks silently. No exception, no log line — just zero packets. Fixed with
--no-cpu-throttling --min-instances=1. This was the hardest bug of the build. - Pydantic
tuple[float, float]tripped Vertex AI Schema. Fixed by switching tolist[float]in models that cross the ADK tool-call boundary. - Un-bypassable Part 11 gate enforcement. Solved with a grep-guard CI test: only
cryomesh/security/transitions.pymay assignstate = FILED. Any other file doing so fails CI. - Prompt-injection defense on QP comment path — free-text field is validated + hashed before it ever reaches an LLM prompt.
Accomplishments we're proud of
- 311 tests passing including property-based Hypothesis generators on the physics module and byte-identity regression on the PDF renderer
- One and only one file in the codebase can flip a packet to
FILED— grep-guarded and CI-enforced - Second Google AI model (Gemma) integrated for the hackathon bonus
- Deployed to Cloud Run live at a public URL — no synthetic-mode fallback, real Gemini calls, real Postgres sessions
- Real ICH E6(R2) §4.5 PDF artifacts with a UN1845 dry-ice waybill on every rescue booking
What we learned
- Vertex AI Model Garden listings are not API-availability guarantees — always probe with a curl before wiring
- Cloud Run's request-scoped CPU allocation is the silent killer of
asyncio.create_taskorchestrators - ADK's park-and-resume interrupt primitive is the cleanest way to model an un-bypassable HITL gate — it forbids the workflow from advancing without a signed disposition
- Never let the LLM do regulatory arithmetic — every MKT number in every packet must be reproducible from raw ticks by pure Python
What's next for CryoMesh
- Real UN1845 courier gateway integration (currently a compliant sandbox)
- FDA eNDA/eSUB submission bookmarking so filed packets stream directly into the regulatory dossier
- Multi-shipment fleet orchestration with cross-shipment learning
- Extend the "autonomous custodian" pattern to blood banking, cell therapy, and gene therapy cold chains
Built With
- docker
- fastapi
- gemini
- gemma
- google-adk
- google-cloud
- google-cloud-run
- google-cloud-sql
- google-pub-sub
- hypothesis
- leaflet.js
- next.js
- numpy
- pandas
- postgresql
- pydantic
- pytest
- python
- react
- recharts
- reportlab
- sqlalchemy
- tailwind-css
- typescript
- vertex-ai
Log in or sign up for Devpost to join the conversation.