I spent four years at Deutsche Bank building event-driven financial systems: Kafka pipelines, microservices, real-time trade verification, and full-stack trading dashboards used firm-wide. I'm now pursuing an M.S. in Computer Science at USC, where I build production AI systems spanning retrieval, semantic search, and agentic workflows. I care most about systems that are reliable under real load and correct when it matters.
Prescriptive maintenance system for industrial drives, built solo for the ABB Accelerator 2026 challenge. Trained failure-risk models on AI4I 2020 telemetry, selecting between XGBoost, LightGBM and a baseline with runs tracked in MLflow, and converted predicted risk into remaining useful life in hours. SHAP attribution identifies the driving feature, then a LangGraph agent runs counterfactual simulations over torque and speed, re-scoring each candidate through the model and returning the smallest adjustment that defers failure past the next maintenance window, emitted against a strict JSON schema. The AI4I physical failure rules run as a deterministic simulator beside the learned model, so any adjustment that trips a physical limit is rejected. A dataset quality report returns a verdict before any prediction is trusted. Shipped as a FastAPI service with a React dashboard on Cloud Run, with 126 tests across dataset, model, physics, counterfactual, agent, schema and API layers.
Engine that keeps a language model inside a fixed business procedure while it still converses naturally. Code owns phase, gates and permissions, and the model is restricted to reading and writing language, with per-phase context assembly controlling what it can see. Identity verification counts only fields that matched the record, tracking mismatch and absence as separate counters so repeated mismatches escalate while missing information does not. Protected records stay out of the model's context before verification, and disclosure is asserted by provenance rather than by searching the prompt. After measurement showed the same sentence classified both ways at temperature zero, the model's refusal signal was backed with a deterministic no-progress counter. Verified with 69 tests that need no model or network, plus 9 adversarial personas against live models across two model families: 9 of 9 passing, with zero pre-verification disclosures, zero illegal transitions and zero ungrounded replies.
Architected a 4-agent system (Orchestrator, Cultural NLP, Dietary, Voice) on Fetch.ai's uAgents framework with an MCP server exposing a 37-entry cultural medical knowledge base across 13 languages. Built MongoDB Atlas Vector Search over Gemini embeddings for semantic cultural symptom lookup, with Gemini 2.5 Flash multimodal analysis and ElevenLabs multilingual voice synthesis for patient care.
Real-time AI meeting copilot that listens to the microphone and surfaces three contextual suggestions every 30 seconds (questions to ask, facts to check, talking points, or answers to what was just raised). Captures audio in chunked MediaRecorder blobs, sends them to Whisper Large V3 for transcription, and uses GPT-OSS 120B with token-by-token streaming via async generators for chat answers. Suggestions are classified into five distinct types with a typed JSON contract to keep the UI consistent. Runs entirely client-side with no backend, so the live demo takes your own Groq API key and keeps it in the browser.
End-to-end Retrieval-Augmented Generation pipeline with FAISS vector search, HuggingFace embeddings (all-MiniLM-L6-v2), and flan-t5 generation, exposed via 12 REST endpoints. Built an evaluation framework with Precision@K, MRR, NDCG, and faithfulness scoring, plus Scikit-learn grid search across prompt templates, temperature, and top-k for automated optimization.