1M+
Journal lines and 1M+ invoices validated during a large data migration
I build the tools that prove software works before it ships: automated tests, AI helpers, and release checks for web and mobile apps.
00 By the numbers
Real numbers from my work, rounded.
1M+
Journal lines and 1M+ invoices validated during a large data migration
1,000+
Automated regression tests running in parallel across 100+ machines
4,000+
Jira tickets handled since 2022, including 2,500+ bug reports
25
Teams following the test documentation and QA standards I established
10×
Faster executive reporting after rebuilding how dashboard reports are generated
300
Automated checks per location in a daily data-integrity audit
700+
Product docs kept accurate by an AI agent pipeline I built
5+
Years in QA, leading testing across web and mobile products
01 Founder project
Founder & Owner · 2026 - Present
TestPilot is my own testing tool. You write tests in plain English, like "open invoices and approve the newest one," and it runs them in a real browser. AI handles the clicking, but only inside the rules you set.
02 AI systems
I use AI to speed up testing and everyday engineering work, and I build in checks so a person always confirms the result.
How a broken test fixes itself
When a test breaks, AI figures out why and suggests a fix. A person approves it.
✓ One real fix: the affected tests passed 20 out of 20 times, then the full test suites passed with no retries.
Team workflow · Buyers Edge
AI reads a Jira ticket, tests it in the browser, and takes screenshots along the way. Then QA reviews the results and decides what's actually a bug. I set this up, wrote the instructions, and trained the team on it.
Internal tooling
I built an internal MCP server that connects our AI tools to company data. Teammates use it so their AI remembers what came up in meetings and knows how the product works.
Knowledge assistant
Ask a question about the product and get an answer with links to the docs it came from. It double-checks those docs before answering, so answers stay grounded in what's written.
Searches 700 product docs and shows its sources
Agents
A team of AI agents checks each help article against how the product really works, applies reviewer feedback, publishes the updates, and sends support a summary in Teams.
Keeps 700 docs in sync with the product
Browser extension
A Chrome extension you can talk to. It sees the page you're on, answers questions, and can click through tasks for you while showing each step.
180+ automated tests, and it recovers cleanly when the page changes
Internal app
Describe a test in plain English and AI turns it into steps you can edit. Save it, run it, watch it live, and get a short summary when it finishes.
Prototype
Asks GPT, Claude, Gemini, and Grok the same question, lets them talk it through, and combines their answers into one, showing which model said what.
Reusable tooling
Small tools that turn repetitive work into one command: creating test users, writing test plans in our template, digging through analytics, and researching the web with sources.
03 Quality engineering
A passing test should mean the feature actually works. My tests check what really got saved, and they make sure failures can't slip by.
Browser automation
I grew our browser test suite to cover accounting, inventory, ordering, invoices, and payments. Each test uses its own user and data, and reloads the page to confirm changes really saved.
Visual regression
Screenshots every page and compares it to the last version, pixel by pixel and number by number. It waits for pages to fully load, so a slow server doesn't get flagged as a bug.
75+ pages captured in minutes with zero load errors
Data validation
When customer data moved to a new system, I wrote Python and SQL checks comparing the old data to the new: accounting entries, totals, and invoices. Every mismatch lands in a report.
1M+ journal lines · 1M+ invoices
Pipeline
Runs every day and checks 300 things per location, from bank accounts to inventory to invoices, then posts the results to a dashboard.
1,000+ results in minutes, with no failed runs
Performance
Our page-speed tests used to count errors and timeouts as passing results. I fixed that, so every number is a real page load.
Every page measured, 1,100+ requests checked
Test strategy
A 200-scenario plan for matching bank transactions to bills, built around the tricky cases: double-clicking submit, losing access halfway through, being off by a cent, and expired sessions.
Mobile
Automated tests for a restaurant management mobile app, plus the pipeline I built in 2022 that tests new iOS and Android builds. I also check that the app and the website show the same data.
Accounting
Along with my main QA work, I've tested a lot of accounting features: integrations with accounting software, bills, bank reconciliation, and the general ledger. I also set up shared test docs used by 25 teams and turn customer reports into clear bug tickets.
How I think about quality
A “saved” message doesn't mean it saved. I reload the page and check.
If a test only passes on the third try, something is wrong.
If part of a test run goes missing, the whole run counts as failed.
Before fixing anything, I figure out if it's the app, the test, or the server.
AI can do a lot of the testing work, but a person still signs off.
04 Platforms & leadership
Internal apps that show what's shipping, who owns it, and whether it's ready, for everyone from QA to leadership.
Release governance
One place to see everything going into a release, pulled straight from Jira and GitHub. QA signs off on each item, exceptions get logged, and every release is locked after it ships so there's a permanent record. It also drafts release notes and watches for errors after launch.
Executive reporting
Shows leadership what each team shipped, how releases are trending, and how the support backlog is moving. It refreshes itself every hour.
Loads 10× faster after I rebuilt it
Observability
After each release, it collects the errors people actually ran into and groups them by page, so it's easy to see what broke and for whom.
Brought AI into our QA work and taught teammates to code, write tests, and track down bugs.
Run technical interviews that show how candidates really think about automation and AI.
Set up shared test docs used by 25 teams, with clear rules for what counts as passed or blocked.
Work with support to reproduce customer issues and hand engineers bug reports they can act on.
05 After hours
iPhone apps, multiplayer games, and AI experiments I build on my own time.
Log meals by typing, snapping a photo, or just talking. AI breaks the meal into foods with nutrition info you can edit.
SwiftUI · AVFoundation · Firebase · OpenAI
An iMessage add-on. Hold to talk, and your words show up as text in the chat.
Swift · Messages framework · Whisper
Give it a few words and a mood, and it writes a bedtime story and reads it out loud.
SwiftUI · OpenAI Responses + TTS
Moved a set of browser games onto a real multiplayer server and added a new one, Puck, with shared physics and scoring.
TypeScript · Colyseus · Matter.js · 40 realtime tests
A puzzle game where you roll a block to the goal. 12 levels, plus endless new ones it makes on its own. Works with touch or keyboard.
React · Vite · TypeScript
A tower defense game with endless waves, four kinds of turrets, and upgrades.
HTML · CSS · JavaScript
Upload your documents and ask questions about them. Answers stream in with links back to the source.
Next.js · Supabase · OpenAI embeddings
Connects to QuickBooks and imports a list of vendors from a spreadsheet, showing which rows worked.
Python · Flask · QBO API
A simple app for making AI videos: start a job, track it, remix it, and download the result.
Next.js · Sharp · Video API
06 Experience
Lead QA EngineerMar 2026 - Present
Senior QA EngineerMay 2022 - Mar 2026
Founder & OwnerIndependent company
Software QA EngineerFeb 2022 - Apr 2022
QA TechnicianAug 2021 - Feb 2022
Software DeveloperJun 2017 - Aug 2018
B.S., Computer Science
07 Toolkit
08 Contact
Open to talking about QA leadership, test automation, and AI.