Software for the awkward bits
I'm Adam, a software engineer in Vancouver. I build internal tools, AI features and web products.

Product work and open source

PR QA Copilot, open source
PR checks in a browser
A GitHub Action that runs browser journeys against a preview and puts the result and screenshots on the pull request
Published as a versioned action with a live test
Playwright, GitHub Actions, Next.js
Geny, Assembly Digital
Geny inside WordPress
An AI content tool placed where editors were already drafting and publishing
Used by Canadian media teams
Product engineering, AI integration, AWS
Kopperfield, current role
Permit tools for electricians
Load calculations, single-line diagrams and permit paperwork for electricians
Current product work at Kopperfield
React, Node.js, PostgreSQL
Open source
Wanderlust
A readable Next.js recreation of OpenAI's DevDay Assistants API demo
60 stars and 20 forks on GitHub as of September 2026
Next.js, TypeScript, applied AI
The kind of work I take on
Usually one of these, or the awkward overlap between them
Internal tools
The small app your team keeps trying to approximate with spreadsheets, inboxes and one person's memory
AI features
Search, extraction, drafting or review inside a product people already use
Product engineering
A focused web feature, integration or rescue job when a team needs extra engineering capacity

A focused first month
We start with one clear job and scope a first version for about 30 days.
Projects from $5,000 USD
Ongoing engineering starts at $5,000 USD a month, on a month-to-month basis.
A quick cost check
For repetitive work, estimate the value of time a tool could save.
Calculate workflow costI'm Adam
I'm a software engineer in Vancouver. Over six years I've worked on media products, electrical permitting tools, cloud systems, AI features and plenty of less visible engineering. I studied security and privacy at UVic and like working close to the people using what I build
More about meTell me what you're making
A rough note is enough. I'll read it and let you know whether I can help.