Bilal Shihab

Biomedical Engineering at UT Austin — building on-device clinical AI, edge inference pipelines, and iOS health applications.

Ask AI about my work — powered by Gemini
<section>

About Me

I'm a Biomedical Engineering student on the Computational Track at UT Austin, working on on-device clinical AI and edge inference — taking models that normally need a datacenter and getting them to run on a phone or a microcontroller.


That's meant shipping two privacy-first iOS apps that run quantized LLMs entirely on-device via llama.cpp on Metal, building a C inference engine for a dual-core Cortex-M0+, and leading the Edge AI team at Longhorn Neurotech. I'm currently researching the gut-brain axis at Wang Laboratory, modeling EEG and EGG data to time targeted vagus nerve stimulation.


The through-line is privacy by architecture — health data that never leaves the device it was measured on.

</section>
<div class="projects">

Projects

Localabs

Swift · SwiftUI · llama.cpp · Metal · Vision OCR · HealthKit

iOS app that translates medical lab reports into plain language, fully on-device. Apple Vision OCR extracts text locally; MedGemma 4B (quantized to ~2.5 GB) runs on the iPhone GPU via llama.cpp on Metal and returns a five-section summary. Lasso any text on the scan to ask follow-ups. Health Trends folds 30-day Apple Health vitals against peer-reviewed reference bands. No cloud, no account, no telemetry.

MedAdvisor

Swift · Qwen 2.5-7B · llama.cpp · SpeechAnalyzer

Built with a Stanford surgeon — records a medical consultation and scores it against a clinical rubric entirely on-device. Runs a 4-bit 7B LLM on iPhone, fitting a 4 GB model into a 495 MB footprint via memory-mapped weights, and cuts evaluation latency ~60% (18.6 s → 7.3 s per criterion) by caching transcript KV state across all 16 evaluations. Model choice came from benchmarking, not labels: a general 7B beat medical-tuned MedGemma 4B decisively.

PulseCam — Contactless Heart Rate

Python · PyTorch · OpenCV · PhysNet

Measures heart rate from an ordinary webcam using remote photoplethysmography. Two engines: a fully explainable DSP baseline (forehead ROI → green channel → Butterworth bandpass → FFT peak) and PhysNet, a 0.77M-parameter 3D-CNN trained on UBFC-rPPG for robustness to motion and lighting. Runs locally on Apple Silicon MPS, CUDA, or CPU — the camera feed never leaves the machine.

Cloud to Edge Heart Rate Monitor

C · RP2040 · Cortex-M0+ · UART · Google Cloud

Dual-core safety-critical arrhythmia detector. A Raspberry Pi 5 streams MIT-BIH clinical data from Cloud Storage over a custom UART protocol to a Pi Pico, where Core 0 runs a hand-written C inference engine on a hybrid-quantized network (Int8 weights, float math) and Core 1 runs a watchdog that fires a hardware panic strobe if inference hangs past one second.

Evo 2 — BRCA1 Variant Effect Prediction

Python · Evo 2 · Modal · genomics

Zero-shot pathogenicity scoring for BRCA1 single-nucleotide variants using the Evo 2 genomic foundation model — delta log-likelihood between reference and variant sequence windows. Validated against the Findlay 2018 saturation mutagenesis set (~3,893 SNVs) and ClinVar. The centerpiece is the honesty layer: per-category performance, false-positive rates, calibration, and severity-dependent failure modes rather than a headline AUROC alone.

Embedded Multiplayer Racer

C · TI MSPM0G3507 · bare-metal

Won 'Best Embedded Design' in a class-wide competition. Bare-metal racing game in C with register-level drivers written from scratch — UART (interrupt-driven networking), SPI (ST7735 LCD), ADC (joystick), and DAC/Timer (audio, 30 Hz game loop). A custom UART protocol syncs player coordinates and item events between two boards in real time.

Scribend

TypeScript · on-device STT · vector search

Offline-first medical scribe for healthcare workers with no connectivity. Captures doctor-patient audio, converts it to text, retrieves historical patient context via local vector search, and structures the encounter into a JSON SOAP note — 100% on-device.

Ballotwise

React Native · Expo · TypeScript · Claude

Cross-platform voting guide that ranks the candidates on your real ballot by how well they match a 10-policy-area questionnaire. Google Civic Information API for elections and ballots, Claude for neutral candidate summaries and follow-up chat, styled like a paper optical-scan ballot.

Laser Speckle Analysis

Python · PySide6 · Basler · Arduino

Real-time laser speckle UI processing 16-bit optical streams from Basler cameras for tissue imaging during surgery. Localized contrast analysis over a 7×7 spatial sliding window, plus an Arduino feedback loop that evaluates microsecond exposures and adjusts laser current against a center-weighted 98% pixel saturation threshold.

ML Interpretability for Neurotech

PyTorch · Capsule Networks · Captum

Capsule network architecture for interpretability in brain-computer interface models, improving understanding of what neural signal classifiers actually key on.

MotorMind

Python · RAG · vector store

EEG signal processing framework built on retrieval-augmented generation — acquisition, tokenization, vector storage, and inference over neural signal data.

ECG PCB

Fusion 360 · analog design

Custom electrocardiogram PCB designed in Autodesk Fusion 360. Analog signal chain with instrumentation amplifiers and active bandpass/notch filtering to reject 60 Hz noise and isolate cardiac signals, including component selection and BOM optimization for fabrication.

More on GitHub

<ul class="skills">

Skills

Languages
Python
Swift
C
ARMv6-M Assembly
MATLAB
R
TypeScript
On-device AI
llama.cpp
Metal
Core ML
Apple Neural Engine
ExecuTorch
ONNX
TensorFlow Lite
Quantization
ML & Data
PyTorch
Optuna
Captum
LlamaIndex
ChromaDB
Docker
Google Cloud
Modal
iOS
SwiftUI
HealthKit
Apple Vision
Background Assets
React Native
Embedded
TI MSPM0
Raspberry Pi
RP2040
Arduino
UART
Code Composer Studio
Hardware
SolidWorks
Fusion 360
PCB Design
<footer>

Contact

📧 shihabbilal@gmail.com

📍 Austin, TX

Menu