Sanjeet Jayaseelan

Portfolio  ·  2026

Sanjeet

Developer in Health-tech

Scroll
About

Building at the edge of medicine and machine.

I'm a developer and founder working at the intersection of healthcare and AI. My work focuses on building infrastructure that makes clinical AI trustworthy, not just capable.

Currently building Celias AI, a compliance and governance platform that helps healthcare AI vendors navigate regulatory obligations across US federal and state jurisdictions, without needing a full-time regulatory team.

I believe the hardest problems in health-tech aren't purely technical. They live at the boundary between code, regulation, and clinical trust. That's where I work.

Stack
Languages
Python TypeScript SQL Bash
Backend & APIs
FastAPI Node.js Pydantic SQLAlchemy REST
Data & AI
LLM Integration RAG Pipelines PostgreSQL Vector Databases
Infrastructure
AWS Docker Auth0 Supabase
Frontend
React Streamlit HTML / CSS / JS
Domain
Health-tech Regulation HIPAA FDA SaMD Clinical AI Governance CHAI Framework
Work
Project 01

Celias AI

Compliance & governance infrastructure for healthcare AI vendors

Python TypeScript FastAPI Health Regulation Agent-assisted 2025 – Present
celias-ai.vercel.app ↗
+
Celias AI  ·  V0 Build  ·  2025–2026

Regulatory clarity for healthcare AI, built into the stack.

Celias is a compliance and governance platform for healthcare AI vendors. It surfaces regulatory obligations across US federal and state jurisdictions, autocompletes hospital security questionnaires, generates CHAI-aligned model cards, and maintains a tamper-evident audit trail, all through a SDK-first architecture designed to drop into existing workflows.

Core Capabilities
Capability 01

Living Regulatory Map that stays current.

16 records across 11 priority US jurisdictions plus 5 federal frameworks, HIPAA, FDA SaMD, ONC HTI-1, FTC Section 5, NY DFS. Versioned and hash-comparable. When laws change, customers see exactly what changed and what it means for them.

Capability 02

Real-time posture scoring across four dimensions.

Jurisdiction × vendor type × data type × care setting. Behavior-aware severity scoring, marketing-claim flagging with word-boundary matching, coverage-gap detection. Distinguishes verified controls from claimed ones.

Capability 03

Questionnaire autocomplete, not blank forms.

20 canonical hospital security questions answered automatically from your compliance profile. Confidence scored (high / medium / low / gap). Counsel-review flags propagated automatically.

Capability 04

Governance baked in, not bolted on.

Per-encounter append-only audit log, hash-chained and tamper-evident. CHAI-aligned model cards. Human-in-the-loop gate on every clinical write. Signed export bundles for regulator delivery.

Capability 05

Built as an SDK first.

Drop into existing workflows. V1 ships behind your stack as a compliance plugin; V2 unlocks the full governance copilot for design partners. No re-papering, no re-integration required.

celias-sdk  ·  examples/compliance.ts
// Begin a HIPAA-native compliance session
import { Celias } from "@celias/sdk";

const celias = new Celias({
  tenant: "st-marys-cardiology",
  governance: { committee: "on", audit: "per-encounter" },
  ehr: { vendor: "epic", writeBack: true }
});

const posture = await celias.runPosture({
  jurisdictions: ["CA", "NY", "IL"],
  vendorType: "clinical-decision-support"
});

posture.on("gap",   (g) => queue.flag(g));
posture.on("alert", (a) => counsel.notify(a));

await posture.seal(); // audit sealed, report ready.
Design Principles
Sessions, not recordings.

Every encounter is a first-class object, patient, clinician, consent, governance posture. PHI never lands where it shouldn't.

Obligations, not advice.

Celias surfaces what the law requires. Every output carries the standard carveout: outside counsel review before customer reliance.

Verified, not claimed.

The schema distinguishes verified controls from claimed ones. Governance evaluations score them differently. Hospitals see the difference.

v1 → v2, transparently.

V1 ships as a compliance plugin. V2 upgrades active design partners in-place, same SDK, deeper integration, no re-contracting.

Architecture
Backend
Python + FastAPI
SDK
TypeScript (CJS + ESM)
Database
PostgreSQL + RLS
Auth
Auth0 + RBAC
Infrastructure
AWS Multi-AZ
UI
Streamlit → React
Compliance
HIPAA · CHAI · FDA SaMD
Jurisdictions
11 States + Federal
Celias AI · Progress Update · May 2026

Where we are.

A consolidated view of everything built across the Celias AI project, from strategic foundation through V1 product completion.

Phase 01
Strategic Foundation

Before a single line of product code, I built out the full strategic layer. Everything the company would need to move with clarity into design partner conversations and early builds.

Regulatory landscape briefing across 11 US jurisdictions plus federal frameworks (HIPAA, FDA SaMD, ONC HTI-1, FTC Section 5, NY DFS)
Product specification with full feature scope, SDK architecture, and V1-to-V2 upgrade path
Go-to-market roadmap including design partner sequencing and pilot criteria
Hospital buyer interview guides structured around governance committee expectations
Point-of-view documents on AI liability, clinical disclosure standards, and audit trail requirements
Phase 02
The Celias Legal Plugin

I built Celias's own internal legal tooling as a Claude plugin before building the product. This let me stress-test the core compliance logic in a real workflow and generate artifacts that became product inputs.

NDA triage skill: classifies inbound NDAs as GREEN / YELLOW / RED against Celias playbook positions
Contract review skill: clause-by-clause redline generation against standard positions
Compliance check skill: assesses proposed features and expansions against applicable state and federal regulation
HIPAA health data review: flags any PHI-adjacent workflow before it reaches production
Hospital questionnaire response skill: first-draft answers to the 40-80 hour security questionnaire pain point
AI governance review: evaluates features against NIST AI RMF, CHAI, and state-specific AI statutes
Risk assessment, vendor check, signature request, and daily legal briefing skills
Phase 03
V1 Product Build

Six core modules shipped as the V1 SDK. Each one independently valuable. Together they form the compliance layer that drops into any healthcare AI vendor's stack.

Living Regulatory Map — 16 records across 11 priority jurisdictions plus 5 federal frameworks. Versioned, hash-comparable, customer-facing delta view when laws change.
Posture Engine — real-time scoring across jurisdiction x vendor type x data type x care setting. Marketing-claim flagging, coverage-gap detection, verified vs. claimed control distinction.
Disclosure Library — CHAI-aligned model cards and jurisdiction-specific disclosure templates. Signed export bundles ready for regulator delivery.
Questionnaire Autocomplete — 20 canonical hospital security questions answered automatically from the compliance profile. Confidence-scored, counsel-review flags propagated.
Change Alerts — regulatory change detection with customer-facing impact summaries. Prioritized by jurisdiction relevance to each tenant's profile.
Disclosure SDK — the V1 SDK interface. Drop in, compliance runs. V2 upgrade in-place with no re-contracting required.
V1 Status
Completion Snapshot
Module Status Notes
Living Regulatory MapDone16 records, 11 jurisdictions + federal
Posture EngineDone4-axis scoring, claim flagging, gap detection
Disclosure LibraryDoneCHAI model cards, signed export bundles
Questionnaire AutocompleteDone20 questions, confidence scoring, counsel flags
Change AlertsDoneDelta detection, tenant-prioritized summaries
Disclosure SDKDoneV1 deployed, V2 upgrade path ready
Celias Legal PluginDone10 skills across NDA, contracts, compliance, HIPAA
Design Partner OutreachIn ProgressInterview guides and POV docs complete
V2 Governance CopilotPlannedUnlocks for design partners on V1 SDK
Project 02

ClearMind

Alzheimer's risk explorer built on peer-reviewed science

Vanilla JS Health Research NIH · Lancet · WHO 2025
clearmind-alzheimers-risk.vercel.app ↗
+
ClearMind  ·  Alzheimer's Risk Explorer  ·  2025

Know your risk
before symptoms appear.

I built ClearMind after learning that Alzheimer's-related brain changes can begin up to 20 years before any symptom shows up. That floored me. I went deep into the NIH studies, the Lancet Commission 2020 report, and the Alzheimer's Association data, and built a scoring engine that translates all of it into a plain risk profile anyone can actually read. This project taught me how to weight conflicting research responsibly — and how to present hard information without causing unnecessary panic.

Core Features
Feature 01

3-step guided assessment, under 3 minutes.

Age, biological sex, education, genetics, lifestyle, and medical history. Each question tied directly to a published risk factor. No filler, no fluff, just the inputs that move the needle in peer-reviewed literature.

Feature 02

Research-backed weighted scoring across 15+ factors.

Every factor in the algorithm is sourced from NIH, Lancet Commission 2020, or the Alzheimer's Association. Weights reflect published relative risk, APOE-ε4 carries more than diet; untreated hearing loss carries more than people expect.

Feature 03

Personalized factor breakdown, ranked by impact.

Every factor in your profile is scored, visualized, and explained with the study behind it. You see exactly why your score is what it is, and which factors are driving it most.

Feature 04

Evidence-based action plan tailored to you.

Recommendations aren't generic, they're filtered to your actual risk profile. If you already exercise regularly, that step disappears. What remains is what will actually move the needle for you specifically.

Feature 05

Private by design, nothing leaves your browser.

All scoring happens locally in JavaScript. No backend, no accounts, no analytics. The page doesn't know what you answered. This is a deliberate architectural choice, not just a privacy policy.

Sample Risk Profile
45 out of 100
Moderate risk
Age (68)
Physical activity
Sleep quality
Family history
Diet quality
Methodology
Weights from published research.

Factor weights aren't estimated, they're derived from relative risk figures in NIH studies, the Lancet Commission 2020 report, and Alzheimer's Association epidemiological data.

Fixed vs. modifiable, clearly separated.

Age, sex, and genetics are scored accurately but always shown alongside the factors you can change. The tool never implies a fixed factor is a sentence.

A conversation starter, not a diagnosis.

Every output is framed as a prompt for a doctor's appointment, not a clinical finding. The distinction is hardcoded into the UI, the copy, and the disclaimer.

Built for early action.

Alzheimer's changes begin up to 20 years before symptoms. Most tools surface this disease after the window for lifestyle intervention has closed. ClearMind is designed for the preclinical phase.

Under the Hood
Frontend
Vanilla HTML · CSS · JS
Scoring engine
Weighted multi-factor algorithm
Risk factors
15+ modifiable & fixed
Privacy
100% browser-side · zero backend
Research
NIH · Lancet 2020 · WHO · AA
Deployment
Vercel · static · no server
Data storage
None, ephemeral only
Audience
Preclinical prevention · 40–80
Project 03

Resource Navigator

A guide for young people navigating mental health, credible resources, not a therapist

Vanilla JS Mental Health Crisis Resources 988 · NIMH · SAMHSA 2025
youth-mental-health-navigator.vercel.app ↗
+
Resource Navigator  ·  Youth Mental Health  ·  2025

A guide when you don't know
where to start.

I built this because I kept thinking about what it's like to be a teenager who knows something is wrong but has no idea where to go. Not the kind of wrong that needs a therapist right now — just the kind that needs a starting point. So I made one. Six paths, all linking to real sources: NIMH, SAMHSA, 988. No chatbot, no account, no algorithm deciding what you need. Just a clear door into something credible. 988 is always one click away from everywhere in the tool — that was non-negotiable from day one.

988 Suicide & Crisis Lifeline · always one click away
Six Navigation Paths
Path 01, Always visible

I need help now.

Crisis resources front and centre. 988 (call or text), Crisis Text Line, and international lines. Never more than one click away from any page in the tool.

Path 02

Coping skills that work.

Grounding techniques, breathing exercises, and evidence-backed strategies for anxiety and overwhelm, sourced to NIMH and SAMHSA guidelines.

Path 03

School stress and pressure.

Navigating academic pressure and burnout. Includes guidance on talking to a school counselor and what to expect from that conversation.

Path 04

Peer relationships.

Social anxiety, bullying, and loneliness, with resources on how to support a friend who is struggling, including crisis escalation guidance.

Path 05

Talking to a parent.

Scripts and frameworks for starting difficult conversations with parents or guardians about mental health, when the adult feels like the hardest part.

Path 06

Journaling as a tool.

Structured prompts and free-write starters. All journaling is local, nothing is stored, sent, or retained after the tab closes.

Design Principles
A guide, not a therapist.

Stated clearly on every page, this tool points to credible resources and real support. It never presents itself as clinical care or a replacement for professional help.

Crisis is always one click away.

The "Need help now" link appears in the header on every page, regardless of where you are in the tool. Crisis resources load first, not last.

Every source is cited.

All resources link to primary sources, 988, NIMH, SAMHSA, Crisis Text Line. A dedicated sources page lists every reference. Nothing invented.

Private by default.

No accounts, no analytics, no data collected. The journal stores nothing. Users navigating sensitive topics shouldn't leave a data trail.

Under the Hood
Frontend
HTML · CSS · Vanilla JS
Backend
None, fully static
Data storage
Zero, ephemeral only
Deployment
Vercel · static hosting
Accessibility
Skip nav · ARIA · keyboard
Crisis line
988 · Crisis Text Line
Sources
NIMH · SAMHSA · WHO
Audience
Students · youth · 13–24
Project 04

Focus Hands

8 browser-native fidget toys for ADHD focus, pop-it, spinner, squish ball, sand garden and more

Vanilla JS Web Audio API Pointer Events ADHD · Focus 2026
focus-hands-fidget.vercel.app ↗
+
Focus Hands  ·  ADHD Fidget Kit  ·  2026

Eight tactile toys.
Busy hands, quieter mind.

I built this one for fun, then realised it was actually useful. I wanted to understand the Web Audio API properly and I was curious whether you could synthesise genuinely satisfying sounds from scratch without loading a single audio file. Turns out you can. Eight fidget toys, all browser-native, all with tuned sound palettes. The pop-it took me three days to get feeling right. This taught me more about AudioContext, oscillators, and pointer events than any tutorial ever did.

Web Audio API · Pointer Events · Vibration API · 8 toys
Eight Toys
Toy 01

Pop-It.

5×5 grid of satisfying bubbles. Each pops with a tuned triangle-wave sound. Completion chime when all 25 are popped.

Toy 02

Fidget Spinner.

Physics-accurate momentum. Drag to spin, flick to fling. Tick sounds at speed. Live RPM readout.

Toy 03

Clicker Counter.

Satisfying mechanical click with a dot-fill pattern every 5 presses. Haptic burst on each milestone.

Toy 04

Squish Ball.

Deforms toward pointer pressure with layered squish sounds. Readout tracks soft → press → squish.

Toy 05

Bead Slider.

Two beads on a rail with snap-to-position stops. Click-clack sound on each detent.

Toy 06

Sand Garden.

Canvas rake draws five parallel grooves with grain sounds. Textured clear resets the sand.

Toy 07

Breathing Orb.

Pulsing orb with adjustable pace. Soft sine tones mark inhale and exhale. Pause anytime.

Toy 08

Tangle Toy.

Drag to twist a multi-coloured ring structure. Oscillates as you rotate with satisfying bead sounds.

Design Principles
Sounds that feel right.

Every sound is synthesised with the Web Audio API, triangle waves, noise bursts, filtered pops. No audio files. Each toy has its own tuned palette engineered to feel satisfying, not tinny.

Physics over animation.

The spinner uses real angular momentum and decay. The squish ball deforms by pointer pressure. The tangle oscillates on twist angle. Behaviour drives visuals, not the other way around.

Keyboard and touch first.

Every toy is operable via keyboard, Space/Enter to interact. ARIA labels and live regions throughout. Works equally on mobile and desktop.

Zero footprint.

No framework, no build step, no backend, no analytics. A single HTML file. All sound and physics run in the browser, no requests after initial page load.

Under the Hood
Frontend
Vanilla HTML · CSS · JS
Audio
Web Audio API
Interaction
Pointer Events API
Haptics
Vibration API
Physics
rAF · angular momentum
Backend
None, fully static
Deployment
Vercel · static
Audience
ADHD · focus · sensory
Project 05

Drug Interaction Visualiser

Clinical drug–drug interaction graph with 15,670-drug A-Z database

Vanilla JS SVG Graph Clinical Safety Drug Database 2026
drug-interaction-visualiser.vercel.app ↗
+
Drug Interaction Visualiser  ·  Clinical Safety Tool  ·  2026

See how your medications
interact in real time.

I was ambitious with this one. I wanted to build something that felt genuinely clinical — not a toy — and that meant learning CYP enzyme pathways, P-glycoprotein interactions, and what actually makes a drug-drug interaction dangerous versus just worth noting. The database covers 15,670 drugs. Getting the name resolution right (so "Warfarin Sodium Monohydrate" correctly matches Warfarin) was one of the most satisfying engineering problems I've worked through. This project taught me that clinical safety software lives or dies on edge cases.

Interaction Severity Tiers
Major

Life-threatening combinations requiring immediate clinical review. Concurrent use typically contraindicated or needs a strict monitoring protocol.

Warfarin + Amiodarone → Severe INR elevation and bleeding risk via CYP2C9/3A4
Moderate

Clinically significant interactions requiring monitoring or dose adjustment. Manageable but needs active prescriber or pharmacist review.

Omeprazole + Clopidogrel → Reduced antiplatelet activation via CYP2C19 inhibition
Minor

Low clinical impact or manageable with simple timing adjustments. Documented for completeness; rarely warrants therapy changes.

Carbamazepine + Sertraline → Mild CNS overlap and possible reduced antidepressant exposure
Drug Intelligence

15,670 A-Z names enriched automatically on load.

Salt forms are stripped iteratively, "Warfarin Sodium Monohydrate" resolves to Warfarin and inherits its stored interactions. 35 INN/USAN stem classes (−statin, −pril, −sartan, −olol, −dipine, −xaban and more) infer drug class and shared metabolic pathways for drugs not in the prototype set. Truly unknown names fall back to "Drug (class unknown)", never falsely reassured.

15,670
A-Z drug names
35
INN stem classes
14
Stored pair interactions
Safety Engine

ISMP-aligned high-alert detection across 6 categories.

Anticoagulants, insulins, opioids, chemotherapy agents, neuromuscular blockers, and route-dependent medications are automatically flagged using word-boundary term matching. Caution badges appear on drug chips and graph nodes, with monitoring guidance surfaced in the "What to watch" panel for every flagged drug or pair, even unknown combinations show the right safety signal.

6
High-alert categories
~100
Flagged terms
0
Backend required
Under the Hood
Frontend
Vanilla HTML · CSS · JS
Visualisation
SVG interaction graph
Drug database
15,670 names · Drugs.com A-Z
Classification
INN/USAN stem inference
Interactions
14 stored pairs + fallback
Safety flags
ISMP-aligned · 6 categories
Privacy
100% browser-side · no backend
Deployment
Vercel · static
Project 06

NutriPath

Goal-driven nutrition & inflammation intelligence powered by USDA FoodData Central

Vanilla JS USDA API Dietary Inflammatory Index Health Goals 2026
nutripath-black.vercel.app ↗
+
NutriPath  ·  Nutrition Intelligence  ·  2026

Map every food choice to
seven evidence-based goals.

I built NutriPath because most nutrition tools just tell you calories. I wanted to go deeper — to actually score food against specific health goals using the Dietary Inflammatory Index and real USDA nutrient data. Learning the DII framework was a rabbit hole I didn't expect: 45 parameters, thousands of epidemiological studies behind it. Mapping all of that to seven practical goals and making it feel simple on the surface was the real challenge. This one taught me how to take dense academic methodology and make it genuinely usable.

Seven Evidence-Based Health Goals
❤️
Cardiovascular Protection

Scores foods on heart-healthy fat profiles, fibre content, and anti-inflammatory markers linked to reduced CVD risk.

🧠
Cognitive Health

Prioritises omega-3 fatty acids, antioxidants, and anti-inflammatory nutrients associated with brain function and neurodegeneration prevention.

⚖️
Weight Management

Evaluates energy density, satiety-driving protein and fibre, and glycaemic load to support sustainable weight goals.

🩸
Blood Sugar Control

Maps fibre, glycaemic index, and magnesium content against insulin sensitivity and type-2 diabetes risk reduction evidence.

🦴
Bone & Joint Health

Highlights calcium, vitamin D, vitamin K, and anti-inflammatory scores relevant to bone density and joint inflammation.

🛡️
Immune Support

Surfaces vitamin C, zinc, selenium, and polyphenol content linked to immune resilience and inflammatory regulation.

The DII Engine

Real-time Dietary Inflammatory Index scoring per food.

The Dietary Inflammatory Index is a literature-derived scoring system validated across thousands of epidemiological studies. NutriPath applies it food-by-food using USDA nutrient data, rather than whole-diet scoring, so you can identify pro- and anti-inflammatory items in isolation, compare alternatives, and track cumulative inflammatory load as you build a meal.

45+
DII parameters
7
Health goal lenses
0
Backend required
Data Source

USDA FoodData Central, over 600,000 foods.

Every search hits the USDA FoodData Central API, the gold-standard public nutrition database covering branded products, raw ingredients, and reference foods. Nutrient data is fetched live, parsed for DII-relevant parameters, and mapped through each goal's evidence-weighted formula. Results are presented with goal alignment scores, inflammation signal, and actionable context, all computed client-side with no stored data.

600K+
Foods searchable
100%
Browser-side compute
0
Data stored
Under the Hood
Frontend
Vanilla HTML · CSS · JS
Data API
USDA FoodData Central
Scoring
Dietary Inflammatory Index
Goals
7 evidence-based lenses
Typography
Cormorant · DM Sans · JetBrains
Privacy
100% browser-side · no backend
Deployment
Vercel · static
Audience
Health · nutrition · prevention
Project 07

Vision Fatigue Checker

Clinical eye-strain assessment and personalised relief protocols, fully in-browser

Vanilla JS Ophthalmology Eye Health Clinical Assessment 2024
vision-fatigue-checker.vercel.app ↗
+
Vision Fatigue Checker  ·  Ocular Health Tool  ·  2024

Detect digital eye strain
before it becomes chronic.

I built this after going down a rabbit hole on Computer Vision Syndrome research — I had no idea how well-documented digital eye strain actually is, or that most people have no idea their symptoms have a name. I wanted to build something that felt like a real assessment, not a quiz, so I spent time with AOA guidelines on convergence and accommodation testing and tried to replicate the logic clinically. The intentional low-stimulation UI design was a deliberate choice — it felt wrong to make a bright, busy interface for something that's literally about eye strain.

What It Assesses
👁️
Symptom Screening

Scores dryness, blur, headache, and light sensitivity using validated digital eye strain questionnaire criteria.

🔭
Convergence & Focus

Guides users through near-point convergence and accommodative flexibility checks to detect binocular strain.

📋
Personalised Protocol

Outputs a severity-graded relief plan, 20-20-20 scheduling, blink exercises, workspace adjustments, tailored to the user's result.

Clinical Grounding

Built on evidence-based ophthalmology guidelines.

The assessment logic is drawn from Computer Vision Syndrome (CVS) research and the American Optometric Association's digital eye strain criteria. Symptom weights reflect published prevalence data across screen-worker populations. The 20-20-20 rule and accommodative exercises are recommended by optometric bodies for mild-to-moderate fatigue, the tool applies these contextually based on the user's specific symptom profile rather than as generic advice.

CVS
Evidence base
3
Severity tiers
0
Data stored
Design Approach

Zero friction, no sign-up, no backend, instant results.

The entire assessment and scoring engine runs client-side in vanilla JavaScript. There is no account creation, no data transmission, and no dependency on external APIs, which means it loads instantly on any device and works offline once cached. The UI is intentionally low-stimulation: dark background, reduced contrast, and minimal animation to avoid aggravating the very condition it's assessing. Results are presented as a clear severity band with a structured action plan the user can act on immediately.

100%
Browser-side
0
Dependencies
0
Sign-up needed
Under the Hood
Frontend
Vanilla HTML · CSS · JS
Assessment
CVS symptom scoring
Evidence
AOA digital eye strain criteria
Output
Severity-graded relief protocol
Privacy
100% browser-side · no backend
Offline
Works without connection
Deployment
Vercel · static
Audience
Screen workers · eye health
Project 08

Symptom Timeline

Map, track, and decode chronic symptoms into a structured clinical picture your doctor can actually use

Vanilla JS SVG Timeline Chronic Illness Patient Tools 2024
symptom-timeline-chi.vercel.app ↗
+
Symptom Timeline  ·  Patient Intelligence Tool  ·  2024

Turn months of feeling off
into something a doctor can read.

I built this because I kept hearing the same story — someone unwell for months, finally in a doctor's office, and completely unable to articulate what's been happening because it's all in their head, scattered across time. A good log changes that conversation. This taught me a lot about how to design for people who are already stressed: the UI had to be gentle, fast to use, and never ask more than necessary. Getting the SVG timeline to feel intuitive rather than clinical was the part I'm most proud of.

Core Capabilities
📅
Visual Timeline

Log symptoms against dates and see them rendered as an SVG timeline, revealing clusters, gaps, and progressions that are invisible in a list.

🔗
Trigger Tagging

Tag each episode with potential triggers, food, sleep, stress, activity, medication, and surface correlations across your logged history.

📋
Clinical Export

Generate a structured one-page summary with symptom frequency, severity trend, and flagged patterns, formatted for a clinical conversation, not a personal diary.

The Problem It Solves

Most patients arrive with no structure, and leave misunderstood.

The thing that stayed with me was reading about diagnostic delay for conditions like endometriosis and POTS — 4 to 7 years on average. A big part of that is the 10-minute appointment window where someone has to remember and articulate months of scattered symptoms from scratch. I wanted to close that gap. Not by replacing the doctor, but by giving the patient something structured to hand over. A log that already surfaces the patterns, already links the triggers, already looks like something a clinician knows how to read.

4–7
Avg years to diagnosis
10
Min GP appointment
0
Data leaves device
Design Philosophy

Privacy by architecture, not policy.

I made a deliberate decision early on: no backend, no account, no server. Symptom data is deeply personal and I didn't want to be in the business of holding it. Everything lives in localStorage. The export uses the browser's native print API, so a clean PDF comes out with zero external calls. It's not a privacy policy that can change — the architecture just doesn't have the ability to send data anywhere. That felt like the only honest choice for something this personal.

100%
Local storage
0
Accounts needed
0
Dependencies
Under the Hood
Frontend
Vanilla HTML · CSS · JS
Visualisation
Pure SVG timeline
Storage
localStorage · no backend
Export
Native print API · PDF-ready
Privacy
100% on-device · zero telemetry
Offline
Works without connection
Deployment
Vercel · static
Audience
Chronic illness · undiagnosed
Project 09

Lab Results Decoder

Plain-English blood panel intelligence, enter your values, understand what they mean

Vanilla JS Clinical Pathology NIH · Mayo Clinic Blood Panels 2026
lab-decoder.vercel.app ↗
+
Lab Results Decoder  ·  Clinical Pathology Tool  ·  2026

Your blood results, finally explained
in plain English.

I built this after watching someone close to me receive blood results they genuinely couldn't parse — a page of numbers, some flagged red, no explanation. It seemed like a solvable problem. Building it was a deep education in clinical pathology: learning what ferritin actually tells you versus serum iron, why TSH is a more useful thyroid signal than T4 alone, how age and sex shift what "normal" means. Sourcing every range from Mayo Clinic or NIH rather than using generic defaults was a deliberate call — credibility matters when the stakes feel personal.

Panels Supported
CBC & Metabolic

Full blood count, liver enzymes, kidney markers, fasting glucose, HbA1c, lipid panel, the core of any standard blood test decoded marker by marker.

Thyroid & Hormones

TSH, Free T3, Free T4, testosterone, oestradiol, cortisol, DHEA-S and more, with sex-specific reference ranges and age-adjusted thresholds.

Micronutrients

Vitamin D, B12, ferritin, magnesium, zinc, folate, homocysteine, hsCRP, the markers most GPs don't explain and patients most misunderstand.

Clinical Grounding

Reference ranges from named, authoritative sources, not generic defaults.

I spent a lot of time on the reference ranges because I knew if they were wrong, or vague, the whole thing would fall apart. Every single one is sourced from Mayo Clinic, NHS Pathology, NIH, or a specialist society — and the citation lives in the data object, not just a footer disclaimer. The distinction between "optimal", "within range", and "worth discussing" was a conscious design decision too. Binary red/green framing sends people into a spiral over borderline results that aren't actually worrying. I wanted the tool to inform, not alarm.

60+
Markers covered
5
Panel categories
0
Data leaves device
Design Approach

Built to reduce anxiety, not amplify it.

The specific scenario I kept designing for was someone sitting with their results the night before a GP appointment, trying not to catastrophise a flagged number. Most interfaces don't help with that — they just show red and leave you to Google at midnight. I wanted every out-of-range result to land with context: what it actually means, what might cause it, and one concrete thing worth doing. The print summary came from realising that a one-pager going into a 10-minute appointment is worth ten times more than a phone screenshot.

100%
Browser-side
0
Sign-up needed
0
Dependencies
Under the Hood
Frontend
Vanilla HTML · CSS · JS
Reference Data
NIH · Mayo Clinic · NHS
Input
Manual entry + paste parser
Export
Print-ready clinical summary
Storage
localStorage · session restore
Privacy
100% on-device · no backend
Deployment
Vercel · static
Audience
Patients · health-conscious
Project 10

Cancer Screening Navigator

Age and risk-factor based guide to which cancer screenings you are due for and when

Vanilla JS Preventive Oncology USPSTF · NHS · ACS 2026
cancer-screening-navigator-sanjeetpersonals-projects.vercel.app ↗
+
Cancer Screening Navigator  ·  Preventive Oncology Tool  ·  2026

Know which screenings you need,
and why the evidence says so.

I built this because I realised I had no idea which cancer screenings I was supposed to have, let alone when. And I work in health-tech. The USPSTF guidelines exist, the NHS criteria exist, the ACS recommendations exist — but none of it is written for a person, it's written for a clinician. I wanted to translate that into something you could open, answer a few questions, and walk away from knowing exactly what you should book. Building the risk-adjustment logic — where family history or smoking history shifts your eligibility — was where I learned the most.

Screenings Covered
Common Cancers

Breast, cervical, colorectal, lung, prostate, and skin cancer screening — the six where guideline-recommended screening has the strongest evidence base for mortality reduction.

Risk-Adjusted Eligibility

Screening start ages and intervals shift based on family history, smoking history, BMI, and other documented risk factors. The tool applies these adjustments the way guidelines actually intend them.

Guideline Sources

Every recommendation is tied to its source: USPSTF grade, NHS bowel and breast screening criteria, or ACS position statement. No invented thresholds, no blended averages.

The Problem It Addresses

Most people don't know what they're eligible for, or that they're overdue.

What surprised me most researching this was how much screening uptake drops not because people don't care, but because they genuinely don't know they're eligible. Colorectal screening rates below 60% in countries with free access — that's not apathy, that's confusion. I built the risk-adjustment logic carefully because that's where the guidelines actually do most of their work. A 45-year-old with a first-degree relative diagnosed under 60 should be starting colonoscopies earlier than average. That nuance matters and most people never hear it.

6
Cancer types covered
3
Guideline bodies
0
Data leaves device
Design Approach

Actionable output, not a wall of information.

I was deliberate about the output format. Not a long article — a ranked list with a status on each item: due now, coming up, not yet eligible, doesn't apply to you. I kept thinking about what someone should actually walk away with after two minutes. Three clear actions felt like the right bar. Every recommendation links to its source guideline because I didn't want the tool to feel like it was making things up. It's just translating what already exists into something a human can actually act on.

100%
Browser-side
0
Sign-up needed
0
Dependencies
Under the Hood
Frontend
Vanilla HTML · CSS · JS
Guidelines
USPSTF · NHS · ACS
Logic
Risk-adjusted eligibility rules
Output
Ranked personalised schedule
Privacy
100% on-device · no backend
Offline
Works without connection
Deployment
Vercel · static
Audience
Prevention · primary care
Project 11

HPA Axis Explorer

An interactive map of the body's stress system — from hypothalamus to cortisol to chronic disease

Vanilla JS SVG Anatomy Psychoneuroimmunology NIH 2026
hpa-axis-explorer.vercel.app ↗
+
HPA Axis Explorer  ·  Stress Physiology Tool  ·  2026

Why chronic stress makes you physically ill,
explained by the science.

I got deep into psychoneuroimmunology research after trying to understand why prolonged stress causes such specific physical symptoms — gut problems, poor sleep, catching every cold. The HPA axis literature is genuinely fascinating, and I was ambitious in trying to make it navigable for someone with no biology background. Building the interactive SVG diagram forced me to understand the cascade well enough to explain every step in plain English. This project changed how I personally think about stress — that alone felt worth building it.

What It Maps
The Stress Cascade

From the hypothalamus signalling CRH, through pituitary ACTH release, to adrenal cortisol output — the full feedback loop visualised as an interactive pathway.

Downstream Effects

Immune suppression, gut permeability, hippocampal atrophy, sleep disruption, and metabolic dysregulation — each traced to its mechanistic origin in the HPA cascade.

Recovery Interventions

Evidence-based interventions mapped to each affected system — what the research actually supports for resetting HPA dysregulation, not generic wellness advice.

Why This Matters

Chronic stress is a physiological event, not a personal failing.

What drew me to this subject was how often people experiencing chronic stress symptoms — gut problems, constant fatigue, getting ill repeatedly — blame themselves for not managing better. But the biology is specific and measurable: elevated cortisol suppresses natural killer cell activity, increases intestinal permeability, and over time reduces hippocampal volume. That's not a willpower problem. I wanted to build something that made that visible in a way that shifts the frame from self-blame to understanding. That felt like a worthwhile thing to put into the world.

5
Body systems mapped
2
Stress modes compared
0
Data leaves device
Design Approach

Dense science made spatially navigable.

Psychoneuroimmunology is genuinely one of the most interconnected areas I've ever tried to learn — hormones, neurotransmitters, cytokines, organ systems, all in feedback loops with each other. I kept trying to explain it linearly and it kept falling apart. The SVG anatomy diagram was the solution: let the body itself be the navigation. Tap a structure, get its role in the cascade. The science doesn't get flattened — you just navigate it differently. Getting that to feel intuitive rather than overwhelming was the part of this build I'm proudest of.

100%
Browser-side
SVG
Interactive anatomy
0
Dependencies
Under the Hood
Frontend
Vanilla HTML · CSS · JS
Visualisation
Interactive SVG anatomy
Science
Psychoneuroimmunology · NIH
Model
Acute vs chronic stress states
Privacy
100% on-device · no backend
Offline
Works without connection
Deployment
Vercel · static
Audience
Chronic stress · mental health
Project 12

Uncover the Invisible

A guide to conditions that take a decade to diagnose — fibromyalgia, ME/CFS, POTS, MCAS — and how to finally be heard

Vanilla JS Chronic Illness NIH · NICE Invisible Conditions 2025
uncover-the-invisible.vercel.app ↗
+
Uncover the Invisible  ·  Chronic Illness Guide  ·  2025

Conditions that are real,
even when you're told otherwise.

I built this because the average diagnostic journey for conditions like ME/CFS or POTS is nearly a decade. Not because the science doesn't exist — it does — but because it's scattered across specialist literature that most GPs never read. This tool maps fibromyalgia, ME/CFS, POTS, and MCAS in plain language: what the diagnostic criteria actually are, what the research says about mechanisms, and how to have a conversation with a doctor that doesn't end in dismissal.

What It Covers
Four Conditions

Fibromyalgia, ME/CFS, POTS, and MCAS — each explained with its actual diagnostic criteria, known mechanisms, and what the current research says, not what gets dismissed in a 10-minute appointment.

Symptom Mapping

Many of these conditions overlap and share symptoms. The tool helps distinguish them, understand co-occurrence, and build a clearer picture to bring to a specialist referral.

How to Be Heard

Scripts and frameworks for clinical conversations — how to present symptoms in the language a doctor responds to, what to ask for, and what to do when you're dismissed for the third time.

Why I Built This

A decade to diagnose something
with published diagnostic criteria.

That's the part that got me. These aren't rare conditions without a medical consensus — fibromyalgia has ACR diagnostic criteria, POTS has documented autonomic testing thresholds, ME/CFS has the Canadian Consensus Criteria. The science exists. The problem is access to it, and the cultural tendency to dismiss symptoms that don't show up on a standard blood panel. I wanted to put that science directly into the hands of the people who need it most, in language they can actually use in a clinical setting.

4
Conditions mapped
~9
Avg years to diagnosis
0
Data leaves device
Design Approach

Information that empowers,
not overwhelms.

People with these conditions are often already exhausted — cognitively and physically. I was deliberate about the information architecture: lead with the thing someone needs right now, layer the depth underneath. The "how to be heard" section came from thinking hard about who actually uses a tool like this. It's not a researcher. It's someone who's been dismissed twice and is preparing for a third appointment. What do they actually need to walk in with? That question shaped everything about how the content is organised.

100%
Browser-side
0
Sign-up needed
0
Dependencies
Under the Hood
Frontend
Vanilla HTML · CSS · JS
Conditions
Fibromyalgia · ME/CFS · POTS · MCAS
Sources
NIH · NICE · ACR · ICC
Focus
Diagnostic criteria · advocacy
Privacy
100% on-device · no backend
Offline
Works without connection
Deployment
Vercel · static
Audience
Chronic illness · undiagnosed
Project 15

AI Particle Simulator

20,000+ GPU-accelerated particles — live 3D formations, smart text engine, media imports, and hand-gesture control

Three.js WebGL2 Vanilla JS MediaPipe 2026
particle-display.vercel.app ↗
+
AI Particle Simulator · Three.js · WebGL2 · 2026

20,000 particles.
One browser tab.

I built this after getting obsessed with GPU-driven particle systems and wanting to push what vanilla JS + WebGL2 could actually do without a build step. The swarm runs fully on the GPU with custom shaders — every formation morph, every text render, every media import is calculated in real time. The hand-gesture camera felt like magic the first time it worked.

Massive Swarm
20,000+ particles at 60fps using WebGL2 GPU shaders — no canvas 2D fallback
Live Formations
Sphere, Cube, Helix, Donut — smooth morph transitions between any formation
Smart Text Engine
Type anything, watch it become a flowing particle cloud in Static / Scroll / Wave / Pulse / Matrix mode
Media Imports
Drop in an image, video, or 3D model (GLB/OBJ) and it materialises as particles
Drawing Pad
Sketch a shape freehand, see it reconstruct itself in 3D particle space
Neural Navigation
Hand-gesture camera control via webcam using MediaPipe Hands — no mouse required
Three.js (CDN)
WebGL2 / GPU shaders
ES Modules
MediaPipe Hands
Vanilla JS
No build step
Project 13

Sepsis Early Warning

Recognise the signs of sepsis before it's too late — plain-English guidance for after an infection or procedure

Vanilla JS Emergency Medicine WHO · Surviving Sepsis Campaign 2026
sepsis-early-warning.vercel.app ↗
+
Sepsis Early Warning  ·  Emergency Medicine Tool  ·  2026

11 million people die from sepsis every year.
Most don't know what to watch for.

I built this because sepsis is one of the most preventable causes of death we consistently fail to prevent. The information that could save lives — what sepsis looks like hour by hour after an infection or procedure, when to call emergency services — exists in clinical guidelines that nobody outside medicine ever reads. This tool puts it in plain English, in the hands of the people who actually need it.

What It Covers
Warning Signs

The early signs of sepsis mapped in plain language — fever, rapid breathing, confusion, clammy skin — explained as they actually present at home, not in clinical SIRS criteria that mean nothing to a patient.

Hour-by-Hour Guidance

What to watch for in the 24-48 hours after an infection, surgery, or hospital discharge — the highest-risk window when most people are at home without monitoring and sepsis progresses fastest.

When to Act

Clear, unambiguous thresholds for when to call emergency services — not "if you feel unwell, see a doctor," but specific signs that mean call now, go now, say the word sepsis when you arrive.

Why This Exists

The window to act is real.
Most people miss it.

What struck me researching this was how survivable sepsis is when caught in the first few hours, and how quickly that changes. Every hour of delay in treatment increases mortality by around 7%. That's not a statistic I could sit with passively. The clinical protocols exist — the Surviving Sepsis Campaign has published clear guidance since 2004. The problem is none of it is written for patients. I wanted to close that gap as directly as I could.

11M
Deaths per year
~7%
Mortality rise per hour
0
Data leaves device
Design Approach

Built for someone who is scared and needs clarity, not information.

This was the most important design constraint I've ever worked with. The person using this tool is not browsing — they're worried about someone they love, possibly at 2am, possibly already in a spiral. Every word had to earn its place. No hedging, no jargon, no walls of text. The "when to act" section went through more iterations than anything else I've built — because the difference between "call your GP in the morning" and "call 999 now" is not a design question, it's a clinical one, and I wasn't willing to get it wrong.

100%
Browser-side
0
Sign-up needed
0
Dependencies
Under the Hood
Frontend
Vanilla HTML · CSS · JS
Sources
WHO · Surviving Sepsis Campaign
Focus
Post-infection · post-procedure
Output
Hour-by-hour warning guide
Privacy
100% on-device · no backend
Offline
Works without connection
Deployment
Vercel · static
Audience
Patients · carers · post-op
Project 14

Ultra Test Suite

Point it at any URL and fire 1,000+ structured tests — UI, SEO, accessibility, security, performance, and more — with zero per-project setup

Python Playwright asyncio Open Source 2026
github.com/SanjeetPersonal/ultra-test-suite ↗
+
Ultra Test Suite  ·  Open-Source Developer Tool  ·  2026

1,000+ tests.
One command.
Any URL.

Every project I build — Celias, ClearMind, NutriPath, all of them — gets run through this before anything ships. I got tired of setting up a new test framework from scratch each time just to answer the same questions: is the accessibility clean, are the security headers right, will this hold up on mobile. So I built one suite I could point at any URL and get answers in minutes. At some point I realised there was no reason to keep it to myself, so I open-sourced it. Clone it, point it at your site, and it works.

1,043
Tests registered
18
Test modules
0
Per-project setup
Parallel execution
Live Run
runner.py — bash
Usage
Quick start — any URL
# Runs all 1,043 tests against any URL python runner.py --url https://yoursite.com
Target a localhost dev server
# Works against local dev servers too python runner.py --url http://localhost:3000
Filter to specific modules
# Keep runs fast by targeting modules python runner.py --module ui,seo,accessibility
Add a custom test in 6 lines
@test("CUSTOM-001", "Has main element", "high") async def my_test(ctx): s = await soup(ctx) assert s.find("main")
All 18 Modules
ui
UI-001 – 080
80tests
accessibility
A11Y-001 – 080
80tests
performance
PERF-001 – 075
75tests
security
SEC-001 – 070
70tests
api
API-001 – 070
70tests
seo
SEO-001 – 060
60tests
mobile
MOB-001 – 060
60tests
content
CONT-001 – 055
55tests
forms
FORM-001 – 055
55tests
navigation
NAV-001 – 050
50tests
error_handling
ERR-001 – 050
50tests
link
LNK-001 – 050
50tests
meta
META-001 – 050
50tests
browser_compat
COMPAT-001 – 050
50tests
auth
AUTH-001 – 045
45tests
media
MED-001 – 045
45tests
load
LOAD-001 – 040
40tests
cookie
COOK-001 – 035
35tests
Why I Built It

Every project starts with
the same twelve concerns.

After working across enough projects, a pattern became obvious: the first thing any serious site needs validated — WCAG accessibility, Core Web Vitals, broken links, security headers, SEO meta — is identical every time. I was duplicating setup work instead of finding defects. Ultra Test Suite is the answer to that: a framework that runs immediately against any URL, covering every domain that matters, so the real work starts at analysis rather than scaffolding.

18
Modules
Parallelism
2
Report formats
Design Philosophy

Clone once,
point at anything.

The suite is intentionally zero-config at its core. One YAML file, one command. Every test has a severity label (high / medium / low) so the HTML report immediately shows you what to fix first. Tests that don't apply — no forms on a static page, no auth endpoints — skip automatically rather than failing, keeping results clean. Adding a custom test is ten lines of Python with a single decorator. The output is CI-friendly: exit code 1 on failures, 0 on clean runs.

JSON
Machine output
HTML
Human report
CI
Exit code aware
Under the Hood
Language
Python 3.13
Browser
Playwright · Chromium
Concurrency
asyncio · semaphore
HTTP
httpx · requests
HTML parse
BeautifulSoup4
Config
YAML · argparse
Reports
HTML · JSON
CLI output
Rich · progress bars
Let's build
something meaningful.