University of Waterloo
Bachelor of Computer Science, Data Science
Honours Co-operative Program · GPA 3.9 / 4.0 · Excellent Standing · Term Distinction
Building scalable systems
Software engineer crafting
backend services.
Computer Science and Data Science at the University of Waterloo. I design reliable backend systems, data pipelines, and API-driven applications — from regulatory ingestion at scale to LLM-powered tooling that turns messy workflows into production software.
About me
I am a Waterloo Computer Science and Data Science student with a 3.9 GPA, focused on backend engineering, scalable data pipelines, and API-driven applications across Python, TypeScript, C++, and SQL.
At Capsule AI, I engineer production ingestion systems for life-sciences data across hundreds of heterogeneous sources — press releases, investor events, scientific literature, and regulatory feeds (NMPA and CDE are two of the newest we added). The core of my work is the automation around them: an AI-assisted onboarding pipeline that discovers, configures, validates, and ships a new company's scrapers with minimal hand-tuning, and a triage-and-debug system that detects extraction failures, isolates the root cause, and proposes the fix — keeping 500+ sources healthy without one-off maintenance.
Previously at Sanofi, I rebuilt fragmented analytics into a unified Snowflake and Power BI platform, cut dashboard load times by over 70%, and prototyped LLM interfaces that let non-technical stakeholders query enterprise KPIs in natural language.
const focus = {
backend: ["NestJS", "REST APIs", "Redis"],
data: ["pipelines", "scraping", "ETL"],
principle: "make systems scale"
};
Education
Bachelor of Computer Science, Data Science
Honours Co-operative Program · GPA 3.9 / 4.0 · Excellent Standing · Term Distinction
Work experience
Capsule AI
Built and hardened production data-ingestion systems for life-sciences intelligence — spanning regulatory records, scientific publications, press releases, investor events, and company onboarding at scale.
Sanofi Digital Data & AI
Rebuilt a fragmented reporting ecosystem into a unified analytics platform serving multiple business units across Sanofi's digital portfolio.
Visa Inc.
Analyzed international-student credit-card application behavior and built an end-to-end data pipeline to turn survey responses into actionable business insights.
Selected projects
Production ingestion infrastructure spanning NMPA/CDE regulatory pipelines, Publication Watch literature tracking, and AI-assisted company onboarding — built to handle anti-bot defenses, heterogeneous page structures, and 500+ company sources with fault isolation and deterministic fallbacks.
The internal platform behind the scraping fleet: an LLM dev-agent plus automation services that onboard new companies, keep 500+ scrapers healthy, and ship fixes with minimal human touch. Onboarding discovers a company's feeds, configures each route — press, investor, pipeline, regulatory — and validates it by actually running the worker before go-live. From there a triage service classifies extraction failures, reproduces them, and drafts the fix, canary health checks watch production for regressions, and a ticket-driven workflow turns a reported bug into a tested pull request.
A full-stack AI job-matching platform for WaterlooWorks that processes 1,000+ postings, parses unstructured descriptions into structured features (skills, requirements, experience levels), and scores fit using contextual signals beyond keyword overlap — improving matching precision by 30%.
A backend system design project supporting high read/write traffic with hash-based unique ID generation, RESTful encode/decode APIs backed by MySQL, and Redis cache-aside caching that cut average response latency by 50%.
A prototype that identifies and classifies enterprise data-quality issues using rule-based logic, returning structured outputs with issue categorization and recommended resolution workflows for stakeholder routing.
Built RESTful services and simulated high-concurrency load to study backend behavior under pressure — applying Redis cache-aside caching to cut database latency, distributed locking and token-bucket rate limiting for safe concurrent requests, and TCP client-server programs in C++ for low-level connection handling.
Implemented a least-recently-used cache with O(1) get and put using a hash map backed by a doubly linked list, mirroring Redis-style eviction policies — then optimized access patterns to improve cache hit rate across test scenarios.
Built a complete Tetris game in C++ with an ADT-based design — implementing piece rotation logic, collision detection, and scoring. Hardened stability by debugging memory and pointer issues with GDB and Valgrind, eliminating leaks.
Contact
I am interested in backend engineering, data systems, AI automation, and graduate-study conversations.