Hi - I’m Ali, an engineer from Toronto. I’m in business and tech. I enjoy building systems.
Lately that’s meant shipping with AI, watching tech Twitter go bonkers, and giving back to the communities I love. Before that I spent years working and excelling in sales.
Outside of work - my family, fitness, football (the real one), and Rocket League (top 0.05%).
B2C Solar Sales ConsultantFreedom Solar ProsMay 2025 - Aug 2025+
Closed 13 residential solar contracts in 45 days through door-to-door outreach.
Closed 13 residential solar contracts in 45 days through door-to-door outreach across Houston, knocking 100+ doors daily.
Ran the full sales cycle independently - prospecting, discovery, utility bill analysis, proposal, objection handling, and contract execution.
Coordinated with site survey and operations teams to ensure a clean handoff from sale to install scheduling and permitting.
Houston, TXOn-site · Contract Full-time
IT Technician InternSeptodontJan 2025 - Apr 2025+
First-line IT support; co-led a UniFlow print rollout across France, Canada, and the US.
Primary point of contact for end-user IT support, escalating server and networking issues to the infrastructure team.
Managed software licensing and owned the employee onboarding and offboarding workflow across departments.
Co-led the UniFlow deployment, rolling out a unified print management system across offices in France, Canada, and the US.
Supported the MFA and ZTNA rollouts and maintained Power BI dashboards tracking IT performance metrics.
Cambridge, ONHybrid · Internship
Data Analyst InternVanguard FinancialMay 2023 - Aug 2023+
Managed records for 30+ clients and automated bank-statement reconciliation in Python.
Managed financial records for 30+ business clients and presented account analysis to the team.
Built a Python script that automated bank statement reconciliation, processing ~1,000 transactions per week at >99% accuracy.
Contributed to the migration onto a new SQL database system for cleaner data organization.
Led development of a full-stack payroll tool that replaced manual data entry and standardized inflow and export.
Mississauga, ONHybrid · Internship
B2B Marketing Team-LeadThe Rec SourceJun 2022 - Dec 2022+
Secured four $100k+ workforce-solutions contracts and led a team of three reps.
Secured 4 workforce-solutions contracts worth $100k+ each, outperforming team benchmarks.
Led a team of 3 marketing reps, setting sales strategy and coaching day-to-day approach.
Ran client meetings with HR managers at company warehouses across Ontario, traveling extensively to close deals on site.
GTA, ONHybrid · Contract Part-time
B2C TELUS Sales ConsultantGoSalesApr 2022 - Aug 2022+
Sold 68 TELUS smart-home systems in one summer across ~3,400 door-knocks.
Sold 68 TELUS smart-home security systems in a single summer, a ~2% conversion over ~3,400 door-knocks.
Engaged 100+ prospects per day door-to-door, generating qualified leads from roughly 10% of them.
Handled the full pitch for TELUS smart-home security and mobile plans, matching products to homeowner needs.
GTA, ONOn-site · Contract Full-time
B2C Sales ConsultantStudent WorksDec 2021 - Mar 2022+
Door-to-door residential window-cleaning quotes with on-the-spot pricing.
Delivered on-the-spot quotes for residential window-cleaning jobs through door-to-door canvassing.
Assessed home type, size, and access to price services accurately on first visit.
Sharpened negotiation and objection-handling skills through direct homeowner interactions.
GTA, ONOn-site · Contract Part-time
Sales RepresentativePumaOct 2017 - Jan 2019+
Retail floor sales and customer service.
Retail floor sales and customer service at a Puma outlet location.
Milton, ONOn-site · Permanent Part-time
The StadiumJan 2026 - Present
Polsa
A Rocket League esports app. Schedules, brackets, standings and rosters for the pro scene, plus a friends feed that shows what everyone is playing right now.
React Native
TypeScript
Rust
Cloudflare Workers
D1
BigQuery
An iOS app for following RLCS, with the season's schedule, live brackets, standings, rosters and pro VODs in one place.
A Windows overlay that links your own account and broadcasts your live matches to friends, so solo play turns into a social feed.
One Cloudflare Workers backend behind both, stitching the pro data together from four unofficial sources and keeping five seasons of history in BigQuery.
The full story +
Rocket League esports has a huge following but no official app, and no public API for its pro data. Polsa fills that gap with two clients over one backend. The iOS app is built with Expo and React Native, the overlay in Rust, and the backend runs on Cloudflare Workers with D1. The pro data is stitched together from start.gg, blast.tv, Twitch and Liquipedia and matched into single team and player profiles, and a scheduled job syncs it into BigQuery so the standings keep their history. Every API key stays on the server, so when a source changes, one deploy fixes it for everyone.
A Rocket League bot that taught itself to play through reinforcement learning.
Community bots playing against pros. Franky is not featured. YouTube ↗
Python
RLGym
Pandas
PyTorch
RL
Learns by playing. Trained with RLGym and PyTorch on rewards for scoring, defending and keeping speed up.
Sees the game as numbers. Player, ball and boost positions are encoded every tick and fed to a neural network with an LSTM, so it can reason about what just happened.
Runs at 120 ticks per second, picking an action every tick without wasting work on calculations that don't matter.
The full story +
Franky is built in Python with RLGym and PyTorch. Rather than scripted plays, it learned positioning, speed and boost management from a reward system, and adapts to how the opponent plays.
The Old Ivy TreeSep 2025 - Apr 20265
Ivy
An AI study platform built as my engineering capstone. Course planning, deadlines, study help and early career tools in one place.
1 / 5
Course progress and upcoming deadlines, shown with sample coursework.
Next.js
React
TypeScript
OpenAI API
Tailwind CSS
Reads real course documents and turns them into structured tasks and deadlines, so a syllabus becomes a plan.
One dashboard for courses, deadlines, a Pomodoro timer and an AI study assistant, with a resume analyzer and cover letter tool - a suite of student tools.
My engineering capstone, built over the school year as a Next.js web app with the OpenAI API doing the reading.
The full story +
Students already have everything they need, spread across syllabi, slides and emails. Ivy pulls it into one system, with the OpenAI API doing the reading. Built by a team of five on Next.js and TypeScript, with typed data models and modular components so everyone could work in parallel. The hard part turned out to be trust, making sure every date and deadline was right so people would actually rely on the schedule it produced.
An RC car that drives itself with a camera and an ultrasonic sensor.
1 / 3
Course hardware reference from the McMaster COMPENG 4DS4 manual, p. 3.
Python
C++
OpenCV
PX4
Raspberry Pi
A Raspberry Pi camera decides where to steer. OpenCV finds the edges ahead and the car turns toward the open path.
An ultrasonic sensor sets the speed, easing off as an obstacle gets closer and stopping before it hits.
A PX4 flight controller drives the motor and servo, taking its decisions from the Pi over MAVLink.
The full story +
Built in a team of three. The sensing runs in Python on a Raspberry Pi, the motor and servo control in C++ on a PX4 flight controller with uORB, and the two talk over MAVLink. The camera decides where to steer and the ultrasonic sensor decides how fast.
A real-time FM radio written in C++. It takes the raw signal from a cheap USB dongle and turns it into mono and stereo audio.
1 / 2
Receiver architecture from the COMPENG 3DY4 project guide, p. 4 (course reference).
C++
Python
NumPy
SciPy
CMake
DSP
Runs live between the RTL-SDR dongle and the sound card in a Unix pipe, decoding FM as the samples arrive without falling behind.
Decodes stereo by recovering the station's pilot tone and separating the left and right channels.
Four operating modes at different sample rates, each checked against a Python model of the same signal chain.
The full story +
Written for the Computer Systems Integration course at McMaster in a team of four. All of the signal processing is our own C++, the filters, the FM demodulator, the phase-locked loop for stereo and the resamplers, and a Python model of the same chain was the reference for every stage. It has four operating modes at different sample rates, from 960 kHz to 2.4 MHz in and 40 to 48 kHz out.
An image decompressor built in hardware. Verilog on an Altera DE2-115 FPGA, decoding compressed images and drawing them on a VGA screen.
1 / 2
Our cycle-by-cycle hardware schedule, from the team report, p. 1.
Verilog
ModelSim
Quartus Prime
FPGA
Built the upsampling and YUV to RGB stage in Verilog, a six-tap shift register interpolator feeding 32-bit accumulators that clip and write back to SRAM two pixels at a time.
Fit 22 multiplications into 7 clock cycles per pixel pair on the board's 4 multipliers, 78% utilization against a 75% target, so a frame takes 270k cycles or 5.4 ms at 50 MHz.
Laid out the IDCT stage as a state machine working through 8x8 blocks in three dual-port RAMs, with the compute states keeping the multipliers 98% busy.
The full story +
Checked the hardware against a C reference decoder and ModelSim testbenches before synthesis in Quartus, where the design grew from 616 to 4,006 logic cells.
Built in a pair. Compressed data arrives over UART into SRAM, the Verilog decodes it through dequantization, an inverse DCT, upsampling and YUV to RGB conversion, and a VGA controller draws the result. All of it had to fit the board's four multipliers and keep them busy, which it does, with the colour stage at 78% utilization against a 75% target.
A payroll system for an accounting firm, with separate portals for accountants and their clients.
TypeScript
PostgreSQL
JWT
React
REST API
Clients upload payroll and onboard employees through their own portal, and accountants process it through theirs.
Role-based access from the login down to the database queries, so each side only sees what it should.
Started the project with a TypeScript and PostgreSQL backend and React frontend, then handed it over to the next intern to continue development.
The full story +
Started during my data analyst internship at Vanguard Financial and handed over to the next intern to continue development. Two logins, two sets of API routes and separate query permissions keep the accountant and client sides apart, with JWT handling the authentication. TypeScript and PostgreSQL on the backend, React on the front.
The Survey PostFeb 2023 - Apr 2023
LiDAR Spatial Mapper
A room scanner built from a LiDAR sensor on a stepper motor. It sweeps the space and draws it as a 3D point cloud.
1 / 4
A preserved wireframe view from the hallway scan.
C
Python
NumPy
Open3D
A LiDAR sensor spins on a stepper motor, measuring the room one slice at a time as the rig is moved forward.
A microcontroller drives the motor and reads the sensor, streaming the distances to a PC over UART.
Python and Open3D turn the readings into a 3D point cloud you can rotate and look around.
The full story +
A VL53L1X time-of-flight sensor on a 28BYJ-48 stepper, driven by an MSP432E401Y microcontroller. The firmware is C, and the reconstruction on the PC is Python with NumPy and Open3D.
The ClinicSep 2022 - Dec 20225
Model Pacemaker
A pacemaker model that paces the heart's chambers under different modes, with a desktop app to control it live.
1 / 2
The Python GUI I built: selecting a pacing mode. Captured locally without hardware.
MATLAB
Simulink
Python
Tkinter
pySerial
Simulates atrial and ventricular pacing in MATLAB and Simulink across the standard pacemaker modes.
A Python and Tkinter app acts as the programmer, changing the mode and settings while the model runs.
The app talks to the hardware over a serial link, so changes take effect in real time.
The full story +
Built in a team of five for a software engineering course. The pacing logic lives in MATLAB and Simulink, the device controller in Python and Tkinter, with pySerial carrying the settings between them so changes take effect while the model runs.