Projects
Software Packages
BHPTNRSurrogate
Reduced-order waveform models for intermediate mass-ratio black-hole binaries
I led development of surrogate models trained on black-hole perturbation theory and numerical-relativity data across multidimensional physical parameter spaces. The software combines reduced-order modeling, empirical interpolation, and Gaussian process regression in separate training, validation, and inference components.
I integrated the models with the SXS Collaboration's surrogate infrastructure and the gwsurrogate ecosystem, and produced automated tests, documentation, and tutorial notebooks to support use by researchers outside the development team.
I also profiled the model-evaluation path, traced avoidable work to repeated model loading and sequential per-mode calculations, and redesigned those paths with caching and vectorized computation while preserving regression checks for numerical behavior.
- Python
- NumPy
- SciPy
- Gaussian process regression
- SVD
- empirical interpolation
- pytest
- GitHub Actions
- HPC
SEOBNRv4CE
Waveform uncertainty quantification for Bayesian inference
SEOBNRv4CE augments an existing gravitational-wave model with a learned representation of calibration uncertainty. I modeled amplitude and phase deviations across frequency and physical parameter space, then integrated uncertainty-aware waveform generation into the bilby Bayesian inference pipeline.
Validation on simulated signals in Advanced LIGO detector noise showed an approximately 1.5-fold reduction in normalized parameter bias at high signal-to-noise ratio. The project was released as a pip-installable package with tests, technical documentation, and worked tutorials.
- Python
- Gaussian process regression
- Bayesian inference
- bilby
- pytest
- pip packaging
Independent Projects
Anti-Money Laundering Detection with Temporal GNNs
Graph-based detection on 9.5 million transactions
I proposed the architecture and led technical development of a temporal graph neural network for the SAML-D anti-money-laundering benchmark. The model combined GraphSAGE representations with GRU-based temporal modeling to detect suspicious activity in a dataset where only 0.10% of transactions were positive.
The system achieved 0.85 PR-AUC, a 45.1% improvement over the XGBoost baseline. We also selected an operating point of 81% precision at 81% recall to connect model evaluation with investigation capacity and detection coverage. The project was selected as a top project in The Erdős Institute Deep Learning Bootcamp.
- Python
- PyTorch
- GraphSAGE
- GRU
- XGBoost
- imbalanced classification
- reproducible experiment pipelines
GW Galaxy Catalogue REST API
Searchable access to the GLADE+ galaxy catalogue
I built and deployed a containerized REST API serving approximately 100,000 galaxies from the GLADE+ catalogue. The service supports sky-coordinate cone searches, redshift and luminosity-distance filters, and paginated queries.
The data layer uses PostgreSQL with Q3C spatial indexing. I also built a validated ingestion pipeline for VizieR catalogue exports and an automated test suite covering response schemas, pagination, range validation, cone-search geometry, and error handling.
- Python
- FastAPI
- PostgreSQL
- Q3C
- SQLAlchemy
- Pydantic
- Docker
- pytest
Career Copilot Lite
Local-first semantic matching for job searches
Career Copilot Lite is a Chrome extension for capturing, organizing, and comparing job postings. I built an on-device semantic matching workflow using sentence-transformer embeddings and ONNX Runtime Web, with an asymmetric coverage score that measures how well a resume addresses the content of a job description.
The extension stores data locally in IndexedDB and includes workflow features for status tracking, filtering, tags, and notes. An optional bring-your-own-key language-model step can clean job descriptions and extract structured fields without making cloud processing a requirement.
- JavaScript
- Chrome Manifest V3
- ONNX Runtime Web
- Transformers.js
- IndexedDB