Available now · Forward-deployed + applied AIVancouver · Montréal · Remote · Open to relocating

I’m a McGill CS grad and software engineer at Gravity Computers. I’ve launched client sites, published browser extensions, built AI automation, and managed IT across 300+ devices. Now I’m looking for a forward-deployed or applied AI role where I can own a problem from the first conversation to production.Explore selected workView résumé

Current
Software Engineer · Gravity Computers
Shipped
5 client sites · 2 browser extensions
Education
B.Sc. Computer Science, McGill ’26
Seeking
Forward-deployed · Applied AI · Product
6production sites shipped
5apps & extensions built
300+devices managed
20%fewer recurring IT issues
Why hire me

I’m useful when the work doesn’t fit neatly in a ticket.

One person can carry the context from the customer conversation through the build, the launch, and the next iteration.

01

I can talk to the customer

I ask the questions, write the scope, and explain tradeoffs without hiding behind jargon.

02

I can build across the stack

Interface, automation, backend, copy, deployment—I move to whichever layer gets the product over the line.

03

I operate what I ship

Years in IT taught me to care about reliability, security, documentation, and the person using it on Monday.

01 · Client Deployments

From brief to production

Six client sites taken from an ambiguous brief through brand, copy, design, build, and deployment.

01

Gravity Computers

Managed IT, made effortless

Rebuilt the company’s marketing site end-to-end, owning brand, copy, design, build, and deploy. Faster load times and a clearer conversion flow lifted client inquiries.

Next.jsTypeScriptTailwindBrand
Visit live site
gravitycomputers.com
Gravity Computers website
Brand → Build → DeployVisit gravitycomputers.com
02

Win / Ratio

An editorial studio identity

A refined, type-forward site for a team of writers, editors, and designers who help companies win work. Built to feel as considered as the service it sells.

Next.jsTypeScriptEditorialMotion
Visit live site
winratio.ca
Win / Ratio website
Design → BuildVisit winratio.ca
03

North

A product site with a point of view

The marketing home for my focus extension. A calm, dark-green editorial identity, a clear point of view, and a live preview of the pause screen that sells the idea before the install.

Next.jsProductMotionBranding
Visit live site
northfocus.app
North website
End-to-end productVisit northfocus.app
04

Shoebox Investments

Patient capital, presented with weight

A premium site for a Vancouver investment firm that acquires MSPs, backs real estate development, and offers private lending. Forest green and gold, serif-led, and built to earn the trust of sellers and partners.

Next.jsTypeScriptTailwind
Visit live site
shoeboxinvestments.com
Shoebox Investments website
Design → Build → DeployVisit shoeboxinvestments.com
05

Wilco Civil

Heavy civil, built to last

A bold, image-led site for a heavy-civil construction firm on Vancouver Island. Earthworks, parks, and waterfront work, framed to win bigger contracts.

Next.jsTypeScriptTailwind
Visit live site
wilcocivil.ca
Wilco Civil website
Design → Build → DeployVisit wilcocivil.ca
06

Orbit

A calm planner, sold calmly

The marketing home for Orbit, my planner for iPhone and Windows. Live device frames, a working quick-add demo that runs the app’s own parser, and motion that stays quiet enough to match the product.

Next.jsTypeScriptTailwindMotion
Visit live site
orbithabit.app
Orbit website
End-to-end productVisit orbithabit.app
02 · Product Engineering

Apps & extensions

Self-published tools with real users and real constraints—from sync engines and rule engines to UX, branding, and distribution.

Beta
iPhone + Windows · SwiftUI · Electron · Supabase

Orbit: a calm daily planner

A local-first planner that turns one line of text into a task or a habit, keeps the day manageable, and syncs between an iPhone app and a Windows app. Works fully offline; sync adds a durable outbox, tombstones, revision checks, and conflict review on top.

  • One shared phrase parser and test suite drive quick add on both platforms
  • Widgets, Live Activities, Siri and Shortcuts on iOS; tray, global shortcut and notifications on Windows
  • Auto-updating Windows releases shipped from CI
SwiftUIElectronSupabaseLocal-first
Live demo · try smart add
Orbit
Today 
1/3
Habits
Try
2023 · Prototype
Full stack · MongoDB · Express · React · Node · Twilio

RxRemind: prescription reminders by text

A full-stack prototype that texts patients when it’s time to take a dose. Prescriptions are created and edited in a React front end, stored in MongoDB through an Express REST API, and delivered as SMS reminders through Twilio, so it works on any phone with no app to install.

  • REST API with create, read, update and delete routes backed by Mongoose models
  • Twilio messaging for reminders that reach any phone, smart or not
  • Personal messages built from each patient’s name, medication and dose
ReactExpressMongoDBTwilio
Live demo · schedule a dose
RxRemind 7:52 AM
Today’s schedule
  • 8:00 AMAmoxicillin 500 mgNext
  • 8:30 AMVitamin D 1 capsuleQueued
RxRemindText message

Reminders arrive here at dose time.

03 · Engineering

AI systems

Agents that reserve LLM calls for judgment, and on-device models that keep personal data where it belongs.

In progress
iOS · SwiftUI · On-device speech + NLP

Euno: a private voice journal

An iPhone voice journal for finding what you talked about and noticing how you felt. Recordings are transcribed on the device in 45-second chunks, then searched, tagged with suggested topics, and measured for pace and quiet audio. No server, no accounts, no paid AI.

  • Persistent processing queue with restart recovery and per-note retries
  • Voice Memos share extension and SHA-256 duplicate detection for large libraries
  • Honest signals: mood is self-labelled, sentiment is lexical, nothing is diagnosed
SwiftSpeechNaturalLanguageXCTest
Live demo · search the notes
Euno5 notes · on device
2025 · Prototype
iOS + Android · Expo · React Native · three.js · LLM

Orca: triage before the appointment

A mobile app built to take over the intake survey. Patients tap where it hurts on a 3D anatomical model split into 75 clinical regions, then answer a short guided survey: visible signs, how the pain feels, how bad it is, how it started, and whether it’s constant. A backend asks an LLM for the likely diagnoses and their likelihoods, so patients get some reassurance and doctors start with the answers in hand.

  • 3D body rendered with three.js on expo-gl, with rotate, pan, pinch-zoom and per-region hit testing
  • Six-step guided survey with help sheets, posted to an LLM diagnosis endpoint
  • Results as a likelihood ring: a best guess, other possibilities, and an “unsure” share
React NativeExpothree.jsLLM
Live demo · tap where it hurts
Drag to turn · tap where it hurts
Where does it hurt?

Tap any of the model's 75 regions, or start from one of these.

Demo only, not medical advice.
In production
Company build · TypeScript · Playwright · Gemini 2.5

Agentic Browser Automation

Built for a company whose team was losing hours to repetitive work inside web portals. The agent navigates dynamic sites, fills forms, and carries multi-step workflows through to completion on the team’s behalf. A hybrid architecture reserves LLM calls for decisions while deterministic code handles execution, cutting token usage by ~33% and keeping runs predictable enough to trust in day-to-day operations.

TypeScriptPlaywrightGemini 2.5
Client work · details on request
04 · Profile

About me

I learned software from both sides: building it, and being the person people call when it breaks.

I started at Gravity Computers in IT, supporting real people and real businesses across more than 300 devices. That work taught me where software fails: unclear handoffs, fragile workflows, and tools designed without the user in the room.

I moved into software engineering and began shipping the fixes myself—client websites, internal workflows, browser extensions, and AI automation. I still think like an operator: make it understandable, make it reliable, and make sure it helps on Monday morning.

I graduated from McGill with a B.Sc. in Computer Science. I’m looking for a small, ambitious team that wants an engineer who can handle the customer conversation as well as the code.

Experience
Software Engineer

Gravity Computers · Vancouver

2025 – Now
IT Lead

Gravity Computers · Vancouver

2022 – Now
Education
B.Sc. Computer Science

McGill University · Montréal

2021 – 2026

Languages

  • TypeScript
  • JavaScript
  • Swift
  • Python
  • SQL
  • Java

Frontend & Apps

  • React
  • Next.js
  • React Native / Expo
  • SwiftUI
  • Electron
  • Tailwind
  • Framer Motion
  • Chrome Extensions (MV3)

AI & Automation

  • Agentic pipelines
  • LLM orchestration
  • Gemini
  • Playwright
  • On-device speech
  • Apple NaturalLanguage
  • Three.js

Backend & Ops

  • Node.js
  • Express
  • MongoDB
  • Supabase
  • PostgreSQL
  • Offline-first sync
  • Twilio
  • GitHub Actions CI
  • AWS EC2
05 · Contact

Need someone who can meet the customer, find the real problem, and come back with working software? That’s the job I want.

Give me the problem.
I’ll create the solution.