Data Scientist with ~8 years across pharma (Amgen) and financial services (American Express). Building production ML, agentic AI, and grounded RAG systems for regulated industries. Open to Data Scientist, Decision Scientist, Applied Scientist, ML Engineer, and AI Engineer roles.
Agentic RAG pipeline over 484 ClinicalTrials.gov oncology and cardio-metabolic protocols (3,264 chunks). LangGraph-orchestrated Corrective RAG (CRAG) with LLM-as-judge document relevance grading, query rewriting on poor retrieval, and bounded retries. PubMedBERT embeddings, FAISS retrieval, Groq Llama 3.3 70B with source-cited responses. A two-mode UI lets users A/B the agentic flow against the baseline pipeline.
Three failures drove the design. Gibberish input scored 0.914 cosine similarity against PubMedBERT, proving similarity alone could not gate output, so three independent guardrails were layered instead. A bi-encoder failure ranked generic trastuzumab studies above actually-relevant trastuzumab-deruxtecan (T-DXd) chunks on HER2-positive antibody-drug conjugate queries, fixed with a cross-encoder reranker (MS-MARCO MiniLM-L-6-v2) for two-stage retrieval before deduplication — halving in-corpus refusal rate from 67% to 33% on an LLM-judged eval. Fixed-size chunking severed statistical claims from their surrounding context, which recursive chunking preserved.
How it's measured. Evaluation harness with a curated 25-query golden set across 3 chunking strategies, RAGAS faithfulness scoring, retrieval metrics (precision@k, MRR), and an LLM-judged regression suite rerun after every change. Live demo includes graceful rate-limit handling.
Built with: Python, LangGraph, Sentence Transformers, PubMedBERT, MS-MARCO Cross-Encoder, Groq Llama 3.3 70B, FAISS, RAGAS, Streamlit, Git
End-to-end ML pipeline on the UCI Heart Disease dataset (303 patients, 13 clinical features). Trained 5 classification models (Logistic Regression, Random Forest, XGBoost, SVM, PyTorch NN) with MLflow experiment tracking, then tuned the top 3 via RandomizedSearchCV with 5-fold cross-validation. Tuned XGBoost reached 0.95 AUC-ROC with 0.93 recall at the clinical operating threshold.
Built to be defensible, not just accurate. A missed high-risk patient costs more than a false alarm, so the threshold was tuned toward recall deliberately and the model ships with SHAP TreeExplainer for global and per-patient explanations plus calibration analysis (Brier 0.092, reliability curves) rather than raw scores taken on trust.
Phase 2 added causal inference and survival analysis on the NHEFS cohort (Hernán-Robins canon, 1,629 subjects): estimated the ATT of smoking cessation on weight via propensity score matching and G-computation, with three-way convergence within 0.2 kg of the IPW reference. Cox PH and Random Survival Forest agreed at 0.80 test concordance for 10-year mortality, both showing the significant unadjusted Kaplan-Meier difference was pure age confounding.
Deployed as a REST API via FastAPI on AWS Lambda (containerized through ECR, served by Mangum), with input and prediction distributions monitored for drift.
Built with: Python, Scikit-learn, XGBoost, PyTorch, SHAP, DoWhy, lifelines, scikit-survival, MLflow, FastAPI, Pydantic, Docker, AWS Lambda, ECR, Mangum, Git
Compliance spend analytics on real CMS Open Payments data: 16M+ federal records ($13B). Sampled 989K transactions across 289K unique HCPs and engineered 5 HCP-level features.
The disagreement was the finding. Within-specialty z-scores plus global IQR, with a $500 monetary floor and concentration logic, flagged the top 1.67% as a HIGH-tier triage queue. Isolation Forest detection was layered on top with contamination deliberately matched to the rules' flag rate so the two were comparable. Reconciliation surfaced three structurally distinct archetypes — captured specialists (both methods agree), captured generalists (rules-only), and industry consultants (ML-only) — that no single method catches alone. The monetary floor alone lifted flag precision from 17.7% to 73.7%, a simple rule outperforming added model complexity.
Engineered for reuse and verified across backends. The same feature pipeline runs identically on Pandas, Snowflake, and PySpark with cross-platform row-level equivalence verified. Snowflake SQL quantified that the top 4 device manufacturers (Arthrex, Stryker, Zimmer Biomet, Smith+Nephew) capture 59.7% of orthopedic surgery payments, visualized in two interactive Tableau Public dashboards.
Built with: Python (Pandas, Scikit-learn, PySpark), Snowflake, Tableau, Git
Agentic AI production patterns • RAG evaluation • Causal inference at scale • AI-assisted development (Claude Code, Model Context Protocol)
