Software Engineer @ UWaterloo

John Petruzziello

Hey, I'm John, a developer who builds many things - anything from AI analysis pipelines to emulators, or from custom databases to hardware sensor reads. I just wrapped up co-op as a Software Development Intern for Ford Motor Company Canada. Very soon, I'll be in my 2A term at UWaterloo - I'm currently looking for software engineering roles for the 2027 winter co-op term.

Experience

Software Development Intern — Ford Motor Company

Waterloo, ON · May 2026–August 2026

  • Implemented a self-maintaining Neo4j knowledge graph end-to-end (15+ node/edge types, Cypher-based ingesters across Jira, GitHub, and TestRail) with automated weekly reconciliation that adds missing nodes and prunes stale ones, ingesting 500k+ issues and source files across 150+ repositories.
  • Shipped a conversational application layer (multi-turn NL query endpoint) on top of the knowledge graph and deployed it to Ford's Kubernetes cluster with read-only credential isolation.
  • Architected a LangGraph-based parallelized Jira analysis pipeline supporting configurable N-concurrent AI agents, full JQL pagination across unbounded result sets, per-ticket confidence scoring, and CSV and PDF data exports.
  • Architected a decoupled Gherkin test generation pipeline triggered via Graphile Worker on any completed workflow, integrating 6 GitHub Copilot review agents over GitHub MCP, reducing test-writing overhead for engineering teams.
  • Instrumented cache-aware token telemetry for GitHub Copilot API calls via OpenTelemetry, persisting cacheread/cachecreate metrics to Postgres, enabling cost visibility across multi-agent pipeline runs.
  • Shipped a versioned REST API (v1 to v2) to prevent duplicate workflow submissions across concurrent users by developing a request fingerprint and PostgreSQL advisory lock system.
  • Rebuilt AI analysis retrieval architecture from single-playbook to chunk-level autonomous multi-playbook RAG using an agent-callable script, expanding playbook coverage from 1 to 20+ and boosting output confidence by up to 20%.
  • Redesigned playbook chunking algorithm using markdown heading hierarchy and blank-line boundaries, embedding full hierarchical context per chunk to eliminate mid-section context loss in vector similarity search.

Software Developer — Waterloo Rocketry

Waterloo, ON · September 2025–Present

  • Engineered WebSocket gateway using Flask-SocketIO and ZeroMQ to bridge avionics hardware and browser clients.
  • Implemented message protocol translation layer using msgpack serialization, converting ZeroMQ multipart messages (channel, timestamp, payload) into SocketIO-compatible JSON format for cross-platform telemetry streaming.
  • Built real-time telemetry visualization dashboard displaying IMU sensor data (accelerometer, gyroscope) with data-driven UI components that dynamically render board status panels based on JSON message structure.
  • Implemented state management and error handling to preserve avionics board connection during live telemetry updates.
  • Developed 5+ reusable React components with TypeScript interfaces for rendering live sensor streams, enabling addition of new data types without frontend refactoring and compatibility with any connected avionics boards.

Projects

PetNES

A web NES emulator with a hand-written WebGL CRT renderer.

Cycle-accurate 6502 CPU (all 256 opcodes, including unofficials), 2C02 PPU with loopy scroll, and 2A03 APU with non-linear mixing, compiled from C++ to WebAssembly. Ships a WebGL CRT shader (scanlines, barrel distortion, phosphor bloom), save states, an IndexedDB ROM library, and gamepad support. Drop in a ROM and play.

Technologies: C++, WebAssembly, TypeScript, WebGL, Emscripten

jMessage

A real-time messaging platform whose only persistent store is a database built from scratch.

No PostgreSQL, no Redis—every user, conversation, and message lives in PetDB, a purpose-built LSM engine with no multi-key transactions. Crash-ordered writes and a client-generated UUID dedup index reach 50k+ durable message appends/sec with strong delivery semantics, while an offline-first IndexedDB outbox and receipt watermarks keep everything in sync.

Technologies: Go, React, TypeScript, WebSockets, PetDB

PetDressed

A private digital wardrobe with an explainable, weather-aware outfit planner.

Upload your clothes and get outfits that actually explain themselves. Async computer-vision segmentation catalogs each garment, Open-Meteo forecasts feed a CP-SAT constraint solver, and every generated outfit comes with the reasoning behind it—plus locks, swaps, and regeneration when you don't like the answer.

Technologies: Next.js, FastAPI, Python, Supabase, CP-SAT, Celery

PetDB

A durable, write-optimized LSM key-value store built from scratch in Go.

An embedded storage engine with group-committed WAL writes, concurrent memtables, immutable SSTables, bloom-filter-assisted reads, a sharded LRU block cache, background size-tiered compaction, and crash-safe recovery.

Technologies: Go, LSM Trees, WAL, SSTables, Bloom Filters

ScratchMCP

An MCP-compatible AI pair-programmer that reads, demonstrates, and edits live Scratch projects.

Bridges an MCP client like Claude into TurboWarp over a Python server and a WebSocket-connected extension, so the model can inspect a project's sprites, scripts, and variables and act on the live Scratch VM with no page reloads. Tutor Mode keeps it read-only with live stage demonstrations for guiding a learner; Copilot Mode adds full script editing, including nested blocks and custom "My Blocks", for hands-on pair programming.

Technologies: Python, MCP, WebSocket, JavaScript, Electron

ChartSmart

A music-trivia arcade powered by real playcounts, previews, and discographies.

Three music games—Higher or Lower, Album Blitz, and Name That Tune—built on live data from iTunes, Last.fm, and MusicBrainz. Includes daily seeded challenges and real-time multiplayer rooms over Socket.io.

Technologies: React, TypeScript, Node.js, Socket.io, Tailwind CSS

PetFolio

A living knowledge graph of an engineering portfolio, queried with citations that resolve to real source lines.

Turns GitHub repositories into a queryable graph of files, symbols, call edges, and docs, then answers questions about them with citations validated against the graph before they ever reach the user. Deterministic retrieval runs first; the language model only ever synthesizes evidence retrieval already selected—and when there's no evidence, it says so instead of guessing.

Technologies: Go, Neo4j, PostgreSQL, React, Tree-sitter, Claude API

Skillmatch

Matches resume skills to job postings using the Claude API.

A job-hunting tool that reads a resume and a job posting, then surfaces exactly which skills line up and which are missing. TypeScript frontend, Python backend, Claude API for the matching logic.

Technologies: TypeScript, React, Python, Claude API

Jailbreakr

Adversarial probe suite that red-teams LLM system prompts.

Stress-tests a deployed system prompt against a library of structured attack scenarios: prompt injection, goal hijacking, role abandonment, data exfiltration, context manipulation, persona jailbreaks. Claude Sonnet acts as the attacker, generating and scoring probes against any OpenAI-compatible target, producing a PASS / WARNING / FAIL report with suggested fixes.

Technologies: Python, Claude API, CLI

Cyber-Weather Station

Bare-metal sensor rig streaming live readings to a dashboard.

A full-stack IoT weather monitor: a DHT11 sensor feeds two firmware implementations (Arduino with the Adafruit DHT library, and STM32 written in bare-metal C with no HAL), a Python bridge logs readings to SQLite, and a Flask dashboard visualizes temperature, humidity, dew point, and heat index with Chart.js and gap detection for offline periods.

Technologies: C, STM32, Arduino, Python, Flask, SQLite

Wizard's Stand

NES homebrew survival game, written in C and 6502 assembly.

A wave-based arcade survival game built for real NES hardware. Control a wizard fending off ten progressive waves of enemies with unique behaviors, fireballs, piercing shots, and screen-clearing nukes. Runs inside the PetNES emulator.

Technologies: C, 6502 Assembly, cc65

Wordamatician

A fast-paced mobile word-search game built in Godot 4.

Find words on a 5x5 letter grid before the clock runs out. Longer words, power-ups, and combo streaks push the score higher; tiles are weighted by English letter frequency and refill from above as words clear.

Technologies: Godot 4, GDScript

GrowForward

A gamified exercise app for muscular dystrophy patients.

Built with a team of four at the MedSprint Design-a-thon. A React Native / Expo app that streamlines exercise routines and rewards patients with muscular dystrophy for hitting their goals.

Technologies: React Native, Expo, TypeScript

Category Blitz

A rapid-fire naming game, built in React under a hard deadline.

Name as many things in a category as you can before time runs out. Built solo within a short hackathon-style timeframe.

Technologies: React, TypeScript, Vite

Wisp

A home-screen widget for sub-2-second voice capture.

A native Android home-screen widget (Kotlin, Jetpack Compose) bridged into a React Native app for AI-powered task parsing with Model Context Protocol integration. Tap the widget, speak, and the audio pipeline handles permissions and capture in under two seconds.

Technologies: Kotlin, Jetpack Compose, React Native, Android SDK, MCP

Skills

Languages: C, C++, Go, Python, JavaScript/TypeScript, Java, Kotlin, HTML/CSS

Frameworks: React, React Native, REST API, Next.js, Flask, SocketIO, ZeroMQ, JNI, Jetpack Compose, Tailwind CSS

Tools: Git, Jira, Docker, Valgrind, LaTeX, Linux, MySQL, Gradle, npm, Expo, Node.js, Figma, Android Studio, Android SDK, cc65