## Inspiration
In 2012, Rory Staunton scraped his arm during gym class. He went to the ER twice. Both times, he was sent home. He died of septic shock three days later. He was 12 years old.
His lab results - flagged abnormal - were never reviewed. The signs were there. The system missed them.
11 million people die from sepsis every year. Most of them showed symptoms that looked like the flu. We built RORY so the next time a child walks into a school nurse's office or an ER with vague symptoms, the system catches what the eye might miss.
## What it does
RORY is a tablet-based triage tool that a nurse uses in the first 90 seconds of seeing a child. She types what she observes, enters whatever vitals are available, and gets back one of three decisions: HOME, ED, or 911 - with a confidence score, risk level, and an explanation of why.
- Works with missing vitals. School nurse only has a thermometer and pulse? RORY still works. It adapts to whatever data is available and tells you exactly how confident it is.
- Catches what it has never seen. If a patient doesn't fit any known pattern, RORY flags it as an outlier - better to over-alert than to miss something new.
- Watches for deterioration. Tracks the last 5 readings and notices when the overall trajectory is drifting toward sepsis, even if individual vitals look borderline.
- Every recommendation is cited. Maps to Rory's Regulations (NY Public Health Law 405.4) and Pediatric Surviving Sepsis Campaign guidelines.
## How we built it
Backend A - ML Inference (Python, PyTorch, FastAPI)
- Trained a fusion model on AMD Instinct MI300X via AMD Dev Cloud
- Bio_ClinicalBERT (frozen) encodes clinical text into 768-dim embeddings
- VitalsMLP encodes vital signs into 256-dim space
- Fusion head combines both and outputs softmax over 3 triage classes
- DBSCAN outlier detection on the 256-dim embedding space
- Cluster drift monitoring via ring buffer of last 5 embeddings + cosine distance to sepsis centroid
- Adaptive dimensionality: 30% training-time feature dropout, inference-time mean imputation, confidence penalty for missing vitals
- 1,948 synthetic pediatric cases in the training cohort
Backend B - Palantir Foundry
- 6 object types in Ontology (RoryPatient, RoryEncounter, RoryVitalSnapshot, RoryTriageDecision, RoryRegulationsCheck, RoryProtocolCitation)
- 4 link types wiring relationships
- 52 seed objects including Rory Staunton's actual 2012 case
- Document Intelligence: 2 PDFs (Rory's Regulations + Pediatric SSC) with extraction config
- 2 AIP Logic functions with AI FDE evaluations (19/20 pass rate)
- 1 AIP Agent (RORY_Triage_Advisor) for natural language clinical queries
- Shared Pydantic v2 contract between both backends
Frontend (Next.js 15, Tailwind v4, Framer Motion)
- Landing page with nervous system neural network animation, 4D dimension transition (square to cube to tesseract to embedding space), AMD GPU exploded-view animation
- Interactive demo page with live inference and demo mode
- Full clinical results page with vital sign analysis, reasoning chains, trend charts, and recommended next steps with medical explanations
- Emotional bookends: RorySplash on load (Rory's story) and "For Rory. 1999-2012" close
## Challenges we ran into
- Contract mismatch between Backend A and B. Backend A never had a
settingfield that Backend B expected. Reconciling the shared Pydantic schema across both teams required careful coordination. - Foundry API naming conventions. Foundry auto-generates camelCase parameter names from display names, which we had to discover by writing an inspection tool to query the action type schemas.
- PyTorch on Python 3.13. The CPU wheel index didn't have PyTorch 2.5.1, only 2.6.0+. scikit-learn also failed to build from source. Required loosening all version pins.
- Adaptive dimensionality in 3 hours. The full version (training-time dropout + inference-time imputation + confidence penalty) was scoped at 8 hours. We built an MVP that handles the core use case in 3.
## Accomplishments that we're proud of
- 19/20 AIP Logic eval pass rate across both threshold and drift interpretation functions
- The model catches Rory Staunton's case every time - even with only temperature and heart rate available (school nurse setting with 3 of 5 vitals missing)
- 6 Foundry object types with full ontology, Document Intelligence, Logic, and Agent integration - deeper than any other project at LAH X
- The splash screen. When it plays in silence before the demo starts, people listen.
## What we learned
- Sepsis kills 11 million people a year because early symptoms look like the flu. The difference between life and death is often a single nurse asking "does this look right?" in the first 90 seconds.
- Palantir Foundry's Ontology is powerful but the learning curve is steep. Once the object types are linked correctly, everything else (Logic, Agent, Doc Intel) clicks into place.
- Adaptive dimensionality matters more than model accuracy. A model that works with 2 vitals in a school office is more valuable than one that requires 5 vitals in an ICU.
Built With
- amd-dev-cloud
- amd-instinct-mi300x
- bio-clinicalbert
- fastapi
- framer-motion
- huggingface-transformers
- next.js
- palantir-aip
- palantir-foundry
- pydantic
- python
- pytorch
- react
- scikit-learn
- tailwind-css
- three.js
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.