Hey there, I'm
Rishabh Shah.
I solve problems end to end, from a three-second API to a stroke-consult scheduler, and I sweat the details nobody asked about.
M.S. in Computer Science at Rutgers, graduating May 2027. Open to full-time SWE & ML roles.
01Things I've built
Problems I couldn't leave alone, including two hackathon wins. Hover for the punchline, click for the story.
Tele-neurology operations command center that replays a live event stream, spots coverage gaps before they happen, and staffs them through an approval loop.
The problem
Late stroke consults and uncovered shifts get noticed only once they are already late.
What I built
An event-replay engine that spots coverage gaps 90 minutes ahead and proposes the cheapest safe fix.
What came of it
Won the Sevaro × Rutgers Health Hack. Every action is approved and audit-logged.
- Lookahead
- 90 min
- Roles
- 3
- Engine
- Deterministic
- Pipeline
- Detect · Decide · Act
Under the hood
- 01Rebuilds physician and consult state by replaying an event stream server-side, with an injected clock, so every decision is deterministic and explainable.
- 02Detect, decide, act: flags breaching time standards, demand surges, and coverage gaps; picks the cheapest safe fix (reassign, escalate, wait, or a short split shift) and names the approver.
- 03Act loop runs propose → clinical-lead approval → send → accept, decline, or 10-minute timeout → recompute coverage, with every step in an append-only PostgreSQL audit log.
- 04FastAPI backend with an OpenAPI contract that generates the React dashboard's types; a Flutter app gives the clinical lead and physicians their own role-based views.
Python
FastAPI
PostgreSQL
React
TypeScript
Flutter
ECharts
Docker
Plans a day in New York from one sentence, ordering the stops around travel time, opening hours, and how crowded each neighborhood is.
The problem
Days out in New York fall apart on logistics: zig-zag routes, peak crowds, closed doors.
What I built
One sentence in, an ordered itinerary timed to travel, opening hours and subway crowds.
What came of it
Best Use of Backboard (MLH) at DivHacks 2026.
- Input
- 1 sentence
- Data sources
- 6
- Crowd signal
- MTA ridership
- Hackathon
- DivHacks '26
Under the hood
- 01Turns a free-text description of the day into an ordered itinerary, timed around travel between stops and each place's opening hours.
- 02Estimates crowds from MTA subway ridership near each stop, and schedules every stop for its quiet hour.
- 03Shows the plan on a 3D city from Google Maps Platform, with places and streets from OpenStreetMap, weather from Open-Meteo, and photos from Wikimedia Commons.
Next.js
Google Maps Platform
OpenStreetMap
MTA open data
- Open-Meteo
Vercel
Local-first code context engine and developer tooling: CLI, MCP server, SDK, SQLite graph index, and VS Code wrapper for coding agents.
The problem
Coding agents burn tokens and tool calls hunting through a repository for context.
What I built
A Tree-sitter symbol graph in SQLite, queried with BM25 and graph walks under a token budget.
What came of it
82.3% less context (1,540 → 273 tokens) over 364 tasks at 100% recall. Shipped to PyPI.
- Median context
- −82.3%
- Target recall
- 100%
- Agent tasks
- 364
- Symbols indexed
- 177K+
- Open-source repos
- 12
- Tests, 76% coverage
- 379
How the data flows
Hover a stage to pause it
- 01
Repository
Python, JavaScript and TypeScript sources
- 02
Tree-sitter
Symbols, imports, calls and tests into a SQLite graph
- 03
FTS5 · BM25
Keyword search fused with graph proximity
- 04
Token budget
Only the context the task actually needs
- 05
MCP tools
Served to coding agents over 6 tools and a CLI
Under the hood
My role: Sole developer. Engineered a local-first Python developer tool spanning a CLI, MCP stdio server, SDK facade, SQLite graph index, and VS Code wrapper to generate compact repository context for coding agents.
- 01Tree-sitter indexing pipeline for Python, JavaScript, and TypeScript extracts files, symbols, imports, calls, inheritance, tests, and source references into a transactional SQLite graph.
- 02Adaptive retrieval combines FTS/BM25, graph proximity, token budgets, and strict schemas to return task-scoped context.
- 03Surfaces compact context through 9 CLI commands and 6 strict-schema MCP tools, shipped as a PyPI package.
- 04Crash-safe re-indexing: SHA-256 change detection re-parses only what changed, then swaps the index atomically so agents never read a half-built graph.
- 05Every release is gated on PR and nightly evaluation suites across 12 open-source repos (12,245 files), including Django, pandas, and Transformers.
AI mock interview platform that grades like a panel would: grounded questions, cited evidence, and weighted verdicts computed on the server.
The problem
Mock interview tools give vague feedback that drifts from one session to the next.
What I built
RAG over a curated question corpus, Gemini strict-schema grading, and a Go verdict engine.
What came of it
Grades 8 interview types with exact-quote citations and server-side weighted verdicts.
- Interview types
- 8
- Prompt budget
- 256 KiB
- Recording memory cap
- 32 MiB
- Upload chunk
- 5 MiB
- Rate-limited endpoint types
- 4
How the data flows
Hover a stage to pause it
- 01
Question corpus
Curated questions, ingested idempotently into pgvector
- 02
RAG
Grounded questions retrieved per interview type
- 03
Live interview
Recorded in 5 MiB chunks straight to S3
- 04
Prompt budget
Older exchanges dropped whole to fit 256 KiB
- 05
Verdict
Gemini strict schema, exact quotes, weighted in Go
Under the hood
- 01Questions come from a curated corpus through RAG over pgvector, with idempotent ingestion and a retrieval verification script, so interviews stay grounded instead of improvised.
- 02Gemini returns strict JSON Schema output with exact-quote citations; the Go server computes weighted verdicts across structure, clarity, depth, and ownership, and a cleanup job removes invalid scores.
- 03Recordings upload directly to S3 as 5 MiB multipart chunks with retry and part reconciliation, capping in-browser memory at 32 MiB per recording.
- 04Postgres-backed rate limits, CSRF checks, and per-user presigned S3 keys protect 4 endpoint types.
Go
TypeScript
Next.js
PostgreSQL
- pgvector
Gemini
AWS S3
Computer vision backend pipeline for red-light, helmet, and speeding detection with OCR, PDF challans, cloud storage, and SMS delivery.
The problem
Ticketing traffic violations by hand does not scale and leaves weak evidence.
What I built
YOLO12-X and ByteTrack, firing checks only when a vehicle crosses a virtual line, with LLM plate OCR.
What came of it
93.76% end to end, with PDF challans sent by SMS. Published at IEEE ICICIS 2025.
- End-to-End Accuracy
- 93.76%
- Vehicle Detection
- 97.56%
- Helmet Detection
- 93.26%
- Plate Extraction
- 92.7%
- Plate Detection
- 98%
- YOLO12-X mAP@50-95
- 90.61%
How the data flows
Hover a stage to pause it
- 01
Live video
60 fps feeds; checks fire only when a vehicle crosses a virtual line
- 02
YOLO12-X
Best of 5 YOLO11/12 variants for red lights, helmets and speeding
- 03
ByteTrack
Per-vehicle state and duplicate-ticket suppression
- 04
Llama 4 Scout
Plate OCR, retried on the next sharpest frame, regex-checked
- 05
Challan
PDF evidence to S3, delivered by Twilio SMS
Under the hood
My role: Co-author. Built the OCR step (Llama 4 Scout vision, a retry on the next sharpest frame, and regex checks for Indian plates) and helped fine-tune YOLO12-X, the best of 5 YOLO11/YOLO12 variants.
- 01Integrated Llama 4 Scout via Groq for license plate OCR, regex-based plate validation, vehicle registration verification, Jinja2/pdfkit document generation, AWS S3 storage, and Twilio messaging.
- 02Violation checks fire only when a tracked vehicle crosses a virtual line instead of on every frame of 60 fps video, cutting wasted compute and duplicate tickets. ByteTrack keeps per-vehicle state across frames.
- 03YOLOv12x fine-tuned on a custom traffic dataset covering red light jumping, speeding, helmet-less riding, missing insurance, and pollution non-compliance.
Conditional WGAN-GP that synthesizes realistic stock market sequences, nearly halving a forecaster's error when mixed into its training set.
The problem
Financial series are scarce and noisy, so forecasters overfit and miss rare events.
What I built
A 264K-parameter conditional WGAN-GP, causal TCN plus stacked LSTM, generating AAPL market series.
What came of it
Forecast error fell from 2.07% to 1.15% MAPE. First-author chapter, Wiley 2026.
- Forecast MAPE
- 2.07% → 1.15%
- Hurst exponent, real 0.7626
- 0.7624
- Correlation-matrix distance
- 0.0107
- Generator parameters
- 264K
- Pearson correlation
- >0.80
- Training epochs
- 3,000
How the data flows
Hover a stage to pause it
- 01
Market windows
6 AAPL features modeled as conditional sequences
- 02
Causal TCN
Temporal convolutions that never see the future
- 03
Stacked LSTM
Long-range structure in a 264K-parameter generator
- 04
WGAN-GP critic
Gradient penalty plus mean-variance matching
- 05
Augment
Synthetic sequences join the LSTM forecaster's training
Under the hood
My role: First author. Designed and implemented the full pipeline: WGAN-GP architecture, 3000-epoch training, synthetic-data filtering, and downstream prediction evaluation on unseen data.
- 01Conditional Wasserstein GAN with gradient penalty plus mean-variance matching, not a vanilla GAN. It stabilizes 3,000 epochs of adversarial training on high-variance series where vanilla GANs collapse.
- 02Causal TCN layers feed stacked LSTMs, so the generator never sees the future while still learning long-range structure across 6 market features modeled as conditional sequences.
- 03Generator concatenates past market windows with noise, then runs multi-head attention, temporal convolution blocks, two LSTM layers, and a GRU before a dense head. The critic is a Conv1D plus LeakyReLU stack trained 5 times per generator step with AdamW.
- 04Trained on AAPL daily data (Open, High, Low, Close, Adjusted Close, Volume) preprocessed with log returns and a hybrid standard plus min-max scaling scheme. Synthetic sequences are validated with Pearson, Spearman, and R-squared before being mixed into training sets.
Python
PyTorch
NumPy
Pandas
Voice assistant with smart home automation: wake-word speech pipeline, Groq-hosted Llama 3.1 8B query processing, and Azure IoT Hub device control through Raspberry Pi GPIO.
The problem
Smart speakers fumble complex requests and are opaque about voice data.
What I built
A wake-word pipeline, guarded Llama 3.1 8B on Groq, and Pi GPIO control over Azure IoT Hub.
What came of it
A four-module assistant that runs a home end to end, privacy-first. Published at ISTE 2025.
- Modules
- 4
- LLM
- Llama 3.1 8B
- IoT Platform
- Azure IoT Hub
- Edge Device
- Pi 3B+
How the data flows
Hover a stage to pause it
- 01
Wake word
“JARVIS”, after noise filtering
- 02
Speech to text
Spectral filtering for accents and noisy rooms
- 03
Fast path
Math, reminders and apps skip the LLM entirely
- 04
Llama 3.1 8B
On Groq, behind guard prompts for privacy
- 05
Home
Azure IoT Hub to Raspberry Pi GPIO
Under the hood
My role: End-to-end build: Django backend with authentication via django-allauth, Groq API integration for LLM inference, Raspberry Pi 3B+ device control, Azure IoT Hub messaging, and the wake-word speech pipeline.
- 01Four modules: deterministic keyword tasks, multi-threaded math and reminder handling, LLM query processing, and home automation. The wake word JARVIS triggers the speech pipeline after noise filtering.
- 02LLM queries are forwarded with guard prompts to Llama 3.1 8B hosted on Groq; prompt engineering filters harmful context and prevents exposure of private data before responses reach the user.
- 03Home automation commands flow through Azure IoT Hub to a Raspberry Pi 3B+ that toggles appliances via GPIO pins, with device state mirrored in a database and voice commands never cached on device.
Bi-LSTM ML pipeline using Librosa features achieving 98.73% accuracy with lightweight inference.
The problem
Accurate genre models are usually too heavy to serve cheaply in real time.
What I built
Librosa MFCC features into a 2-layer Bi-LSTM, then post-training quantization.
What came of it
98.73% accuracy, with a model 15% smaller and 22% faster at inference.
- Accuracy
- 98.73%
- Model Size
- -15%
- Inference Speed
- +22%
- Genres
- 10
How the data flows
Hover a stage to pause it
- 01
Audio clip
Uploaded track, features extracted on the fly
- 02
Librosa
MFCCs plus spectral centroid and rolloff
- 03
Bi-LSTM
Two bidirectional layers with dropout
- 04
Quantize
Post-training quantization for cheap serving
- 05
Streamlit
Per-genre probabilities and confidence
Under the hood
My role: Built the full pipeline: feature extraction (MFCC plus spectral features via Librosa), Bi-LSTM architecture in TensorFlow, training loop, post-training quantization, and a Streamlit demo app.
- 01Librosa extracts MFCC coefficients plus spectral centroid and rolloff. Features are normalized and fed into a 2-layer Bi-LSTM with dropout between layers.
- 02Post-training quantization shrinks the model by 15% and speeds inference by 22% at negligible accuracy cost. Deploy-time is materially better.
- 03Streamlit demo app uploads audio, extracts features on the fly, runs inference, and shows per-genre probability plus a confidence spark chart.
Python
TensorFlow
- Librosa
NumPy
Pandas
Scikit-learn
Streamlit
Plus a few earlier experiments
- 2023Discord Bot with Admin PrivilegesModeration-first Discord bot with role-scoped commands, audit trails, and reversible actions.
- 2023Movie Recommendation SystemTMDB-based recommendation engine using cosine similarity across 5000+ films.
- 2023AR Product Visualization PlatformAugmented reality platform with Google PaLM 2 chatbot for product visualization and support.
- 2022Banking System (Early Project)Java OOP banking simulator with runtime accounts, auth, and core banking operations.
02Where I've been
Two internships shipping to production, two degrees, and now teaching the fundamentals at Rutgers. Pick a stop on the timeline.
Sep 2026 – Now · New Brunswick, NJ
Teaching Assistant at Rutgers University
CS205: Introduction to Discrete Structures I
- 50+
- Students each week
- 01Teach weekly recitations for 50+ undergraduates on logic, induction proofs, relations, and finite-state machines.
03Ideas, in print
Computer vision, generative models, and voice interfaces, written up properly.
- Wiley · Scrivener Publishing2026
Bridging Financial Data Gaps with WGAN-GP: Generating Synthetic Time Series for Robust Models
Explainable Artificial Intelligence, Volume 2: Bridging Concepts, Applications, and Future Challenges (Ch. 34, pp. 739-754)
Rishabh Shah, Fayed Hakim, Armaan Attar, Harsh Samant, Nilesh Patil, Chinmay Raut
- IEEESeptember 2025
Intelligent Traffic Surveillance: A Vision-Based System for Detecting Traffic Rule Violations
2nd International Conference on Integration of Computational Intelligent System (ICICIS)
Harsh Samant, Kush Doshi, Rishabh Shah, Shreevardhan Bhosale, Dashrath Kale
- ConferenceJune 2025
JARVIS: Voice Assistant with Smart Home Automation
ISTE Journal, Vol. 48 (2025), p. 130 · International Conference on STEM for Sustainable Development
Rishabh Shah, Alan George, Yukta Saraf, Rujuta Jariwala
04My stack
The tools I work with, grouped the way job posts list them.
Languages
What everything is written in.
Python
TypeScript
JavaScript
Go
Java
C++
- SQL
Backend & databases
APIs that stay fast, data that stays put.
Django
FastAPI
Express.js
Node.js
REST APIs
Pydantic
JWT Auth
OAuth2
Clerk
- RBAC
PostgreSQL
- pgvector
MySQL
MongoDB
SQLite
Redis
Celery
Prisma
Frontend
Interfaces people enjoy using.
Next.js
React
Tailwind CSS
Streamlit
Bootstrap
HTML5
CSS3
AI & data science
Models, pipelines, and the numbers behind them.
PyTorch
TensorFlow
Scikit-learn
OpenCV
YOLO
- RAG
- Embeddings
Groq API
Gemini
Pandas
NumPy
SciPy
Matplotlib
Apache Spark
Hadoop
Tableau
Power BI
AI tooling
Agents in the loop, me on the review.
Claude Code
Codex
Cursor
Kiro
GitHub Copilot
MCP
Cloud & DevOps
Shipped, tested, and kept shipped.
AWS
GCP
Azure
Oracle Cloud
Vercel
Render
Docker
Kubernetes
GitHub Actions
Git
Linux
Pytest
Vitest
Playwright
Postman
05 · Say hi
Got a problem
worth solving?
I'm happiest on the messy ones. Send it over and I'll bring curiosity, a plan, and a very sharp eye for detail.