I lead the work that turns business questions into production ML — and into decisions people act on.

From multiple product models to one production decision system
Predict what a client may need next, prioritize what matters, deploy the models, and continuously test whether the system remains trustworthy.
Built and productionized likelihood models across 30+ commercial-banking products, accounting for selection bias in historical offer data and automating recurring evaluation. Led the ranking layer that converts independent model outputs into prioritized recommendations by combining predictive likelihood with economic and customer-context signals — from algorithm design and stakeholder alignment through Model Risk Management and production release. The system now refreshes thousands of recommendations a month, with multiple-fold lift over baseline targeting, and replaced workflows that took one to two days of manual work per cycle.
Designed monitoring around three distinct failure points: data validity between refreshes with Anomalo, model validity through recurring AUC evaluation, and output usefulness through lift against downstream outcomes. Data quality, model quality and decision usefulness are three different questions, so they get three different checks. In 2026, led the signal discovery — customer patterns, peer behavior, emerging needs — that extends the framework into new product areas.
Enterprise AI agents designed to reason, collaborate, and verify
Specialist agents analyze the data, humans participate in the discussion, an orchestrator reconciles the findings, and a final layer checks conclusions against evidence.
Led development of a four-layer multi-agent architecture for working with enterprise information. Specialist agents independently summarize data, surface key findings, and raise questions. Their outputs enter a discussion layer where agents exchange evidence and incorporate human-in-the-loop feedback.
An orchestrator then consolidates and reconciles competing or overlapping findings into a coherent result. A separate verification layer checks conclusions back against source data where possible and applies structured evaluation where direct verification is harder.
The architecture powers customer and colleague synthesis, recommended actions, grounded content generation, and self-service prospecting — letting sales colleagues work iteratively with enterprise information without SQL or programming expertise. It is being scaled across the commercial bank to hundreds of bankers, cutting customer research from hours to minutes, and is one of eight concurrent AI, ML and analytics workstreams I lead with a team of four senior data scientists. Built as a React front end on a FastAPI service, deployed through Shakudo, with models served from Amazon Bedrock.
From messy enterprise data to decisions people can act on
Resolve imperfect data, apply analytical logic, and put the result into interactive tools instead of static analysis.
Built applications that turn inconsistent enterprise data into structured decision support using entity resolution, fuzzy matching, analytical calculations, and dynamic user inputs. The same pattern has been applied to prospecting, customer segmentation, and sales prioritization: resolve the underlying data first, then calculate context-specific signals and expose them through an interface where users can explore and act on them.
Developed forward-looking segmentation that combines current relationships, potential opportunity, and strategic priorities; took analytical products from prototype through scheduled production delivery and monitoring in Power BI and Tableau; and built planning applications that connect company strategy with colleague outreach to support executive customer engagement. Together they support decisions across thousands of commercial relationships and prospects. The current direction is to retire static dashboards in favor of these dynamic, agent-backed decision systems.
B-SOiD — behavior discovery without a single human label
Labs with no programmers can classify animal behavior from pose data in minutes.
Pose time-series are embedded with UMAP, clustered with HDBSCAN, and a random-forest classifier is trained on the discovered groups so new video is labeled in milliseconds per frame. Shipped as a desktop app that reads DeepLabCut, SLEAP, and OpenPose files.
A-SOiD — let the model ask the expert only when it's unsure
Supervised behavior classifiers are data-hungry — thousands of hand-labeled frames per behavior. This is a way for the human and the model to do the labeling together.
Starts from a handful of labels, trains, and asks the expert only about the frames it isn't confident in; each answer goes back in and the model retrains. An unsupervised “discover” step then splits over-broad classes into behaviors nobody labeled. Co-first author; delivered as a no-code GUI with refinement, prediction, and ethogram tabs.
Reading behavior from brain chatter alone
160 TB of synchronized video and brain recordings turned into predictions of what the animal is doing — from the neural signal, with no camera.
Built the recording arena (24/7, four cameras, synthetic daylight), the Arduino-triggered sync between video and Neuropixels with under 33 ms of jitter, and the cloud pipeline that processed the data; then trained decoders that predicted 100,000s of behaviors across three animals and 150+ hours.
Vowel for Weddings — answers your guests' questions so you don't have to
Hosts stop fielding the same fifty questions; guests get answers, photos of themselves, and a reason to talk to each other.
A native Swift app on a Supabase backend. A wedding assistant answers guests from what the host entered (schedule, venue, dress code, menu) and hands off to the host when it doesn't know; face matching lets guests find themselves in the gallery from a few selfies; nearby-guest discovery, icebreaker profiles, and pinned host announcements round it out. Designed, built, and shipped solo — and first used at my own wedding, by 30+ guests.