Toronto, ON

AlexOu

I build full-stack applications and the data pipelines behind them, and I've debugged the ones already running in the field.

Wilfrid Laurier UniversityOpen to 2027 roles

About

Illustrated portrait of Alex Ou

I'm a full-stack engineer, and I work across the whole line because the interesting problems live at the seams: where a form becomes a row, or a row becomes a model's input. React and TypeScript in front, FastAPI and PostgreSQL behind.

Right now I'm at KorraNet Creative Inc., a startup I joined as an intern and stayed on with part-time under contract. Before that, a summer on production IoT firmware in Guangzhou, learning what a system looks like once it is running on a fleet of a thousand you only ever see through its logs.

The two I'm building now are ReLab, a reliability harness in Go and PostgreSQL that kills a worker mid-task on purpose and checks whether the recovery was correct, and DiaLog, a health record where the hard problem was data quality rather than modelling. Both would rather fail loudly than round a number up: one names the divergence it cannot verify, the other says "not enough data yet".

At a glance

Focus
Full-stack · Backend & APIs · Distributed systems · Data pipelines · Applied ML
Core stack
Python · Go · TypeScript · FastAPI · PostgreSQL · React & Next.js · Pandas · scikit-learn

01Experience

Where I've worked

Firmware, data pipelines, client research, and a booking platform I still maintain. Most recent first.

  1. May 2026 – Present

    Software Engineer

    KorraNet Creative Inc.

    Winnipeg, Manitoba, CanadaContract, Part-Time

    • Started here as an intern and stayed on part-time under contract after the internship ended.
  2. Dec 2025 – Present

    Web Designer & Administrator

    Second Wind Basketball

    Toronto, Ontario, CanadaFreelance

    • Designed and launched the booking site for a one-person basketball training business, putting services, pricing, and availability in one place instead of across DMs.
    • Set up online booking with deposit enforcement and session management, which took the scheduling back-and-forth off the owner.
    • Structured the listings around the three formats he actually sells (private, group, and beginner) so clients can tell them apart.
    • Still maintain it: availability and pricing change, and the site has to match.
  3. Mar 2026 – Apr 2026

    Business Analyst

    Riipen: Your Style Doula X Riipen Labs

    Toronto, Ontario, CanadaProject-Based

    • Audited the client's Instagram and Stan Store messaging and found it was missing the audience it was written for: perimenopausal women in the Guelph and Kitchener-Waterloo market.
    • Turned the SWOT and the client's real constraints into acquisition recommendations a solo operator with no marketing budget could actually run.
    • Built the growth plan around community activation, a referral program, and re-engaging past clients, rather than paid acquisition she couldn't sustain.
    • Worked in a team of four to deliver the final strategy report to the client.
  4. Mar 2026 – Apr 2026

    Business Analyst

    Riipen: EduTutor X Riipen Labs

    Toronto, Ontario, CanadaProject-Based

    • Led research and competitive analysis for EduTutor.ca, a Canadian K–12 tutoring company with a customer acquisition bottleneck.
    • Ran a SWOT on their proposed tutor-matching website and found where it conflicted with the service model they already had. Optimizing for conversion would have broken how tutors were actually assigned.
    • Argued for a lightweight MVP over the full marketplace build, on the basis of their budget, their contractor model, and their brand positioning.
    • Wrote a 30/60/90-day roadmap measured on website-to-inquiry conversion and consultation booking rate.
    • Worked in a team of five to deliver the final report.
  5. May 2024 – Aug 2024

    IoT Software Developer Intern

    Guangzhou Mingliang Energy Saving Technology Co., Ltd.

    Guangdong, ChinaInternship

    • Shipped firmware and app updates to a live fleet of 1,000+ devices, tracing telemetry gaps and NB-IoT connectivity failures back to their cause and fixing the lighting signal quality issues they caused.
    • Automated device provisioning with reusable config templates, validation rules, and rollout checks, which cut setup effort about 25% per technician, per site.
    • Wrote the Python that parsed device logs, normalized the time-series, flagged anomalies, and produced triage summaries, so field issues arrived pre-diagnosed instead of as raw dumps.
    • Wrote the deployment runbooks and verification checklists: config standards, test steps, and who to escalate to.

02Projects

What I've built

Workflow reliability and health tech first, and route optimization, applied ML and a few backends behind them. Mostly built outside of work hours.

Featured

ReLab

Workflow Reliability Testing & Replay

Workflow engines get tested on the happy path, and the failure paths are the ones that cost money. ReLab runs workflows across real worker processes, breaks them on purpose, and then checks the recovery: the event history answers whether the run came back, and the attempt and side-effect records answer whether it came back twice.

  • Written in Go over PostgreSQL with no message bus: the coordinator, the workers and the CLI coordinate only through the database, so a crashed process is indistinguishable from a slow one.
  • Each state change and the event describing it are written in one transaction, so the journal records what happened rather than what someone remembered to log.
  • Replay is a pure reducer with no I/O, no clock and no randomness. It refuses a journal it cannot verify instead of reconstructing a plausible wrong answer.
  • Five fault types, none of them a flag the scheduler can consult and be written to survive. Worker crash and latency degrade the real system, a real SIGKILL and a real delay pushing a task towards its lease; duplicate delivery, HTTP errors and database disconnects produce the failure the dependency would have produced, at the point the task would have seen it.
  • The guarantee matrix maps each proved claim to a named test, publishes the five it cannot prove yet rather than listing only its wins, and CI fails if it cites a test that no longer exists. A twelve-point benchmark at 1, 5, 10 and 25 workers against 0, 1 and 5 percent fault rates lost no tasks at any point, measured on 4 cores with the database alongside, which the project calls a laptop rather than a deployment.

Distributed systemsBackend & APIs

GoPostgreSQLDockerOpenTelemetryNext.jsReactTypeScriptGitHub Actions

DiaLog

Personal Glucose & Metabolic Health Record

A glucose and metabolic health record that logs readings, meals, activity, sleep and medication, imports the same records out of device and vendor exports, and grades every pattern it surfaces by how much of your own data supports it. It says "not enough data yet" when that is the honest answer, and it is not a medical device.

  • Ten health event types behind server-side validated forms; storage is always mg/dL and the UI renders mg/dL or mmol/L per preference, with plausibility bounds enforced at entry.
  • Imports CSV, XLSX, JSON and XML through nine connectors: six for vendor and device exports (Abbott LibreView, Abbott Optium Neo, Nightscout, Apple Health, Omron and DiaLog's own) plus three generic fallbacks. Parse and preview, then commit, with deduplication that makes re-importing the same file a no-op and per-row issues reported rather than dropped.
  • The analytics engine covers summary statistics, meal, activity and sleep associations, anomaly and trend detection, day-pattern clustering and feature importance, and grades each finding by sample size before showing it, so nothing overclaims from thin data.
  • The offline Python research pipeline trains on strict chronological splits and reports every model against majority-class and persistence baselines, because a random split on a time series lets a model train on its own future.
  • The assistant explains the data without ever receiving it. The provider layer is handed a pre-aggregated, evidence-graded bundle of counts, averages, sample sizes and findings, never an individual reading, meal, medication or note, and runtime checks reject anything shaped like a raw record.
  • Accessibility is a build gate rather than an audit: a WCAG 2.2 AA target, axe-core running over twelve public and signed-in routes on every CI run, no meaning carried by colour alone, and a real table alternative behind every hand-built chart.

Full-stackData pipelines

Next.jsReactTypeScriptPostgreSQLPrismaTailwind CSSZodPythonPlaywright

Also on GitHub

03Skills

What I work with

Languages, frameworks, and practices I've used on shipped work rather than tutorials.

Languages
Python, Go, Java, C, SQL, TypeScript, JavaScript
Frontend
React, HTML/CSS, TypeScript, JavaScript
Backend & Data
FastAPI, PostgreSQL, REST APIs, Schema Design, API Contracts, Data Pipelines, SQLAlchemy, Deterministic Replay, Idempotency, Concurrency
AI / ML
TensorFlow, Scikit-learn, Pandas, Librosa, Feature Engineering, Preprocessing, Model Evaluation
Cloud & DevOps
GCP, Vercel, CI/CD Pipelines, GitHub Actions, Docker, Linux, GitHub Pages
Tools & Practices
Git, GitHub, Jupyter, Agile/SDLC, Logging & Telemetry, Root-Cause Analysis

04Extracurriculars

Outside the work

Hackathons and developer communities, where several of the projects above started.

Sep 2025 – Present

Hackathons

Hack Canada, GenAI Genesis, DeerHacks, Laurier Computing Society

  • Won and placed at Canadian and university hackathons, scoping and building working demos on 24- to 48-hour deadlines. Several of the projects listed above started at one.
  • Usually take the backend, the data pipeline, or the AI integration, depending on what the team is short of.

05 · Contact

Let’s connect.

Always glad to hear from engineers, teams, and anyone building something interesting.

Resume
Currently being updated