Barrie, Ontario, Canada

AI systems that have to be right, not just plausible.

I build software where a wrong answer is a liability, not an inconvenience: RF engineering tools that refuse to guess, an AI governance framework that denies by default, and automation running in construction, telecom, and field operations today.

339
passing tests on Wavefront AI's headless RF engine, zero failures
704
passing tests on Project Starfish, published open-source on npm
3
production AI systems shipped for construction, telecom, and funeral-home compliance
0
fabricated numbers possible in Wavefront AI's output. Enforced by the type system, not a prompt.
What I actually build

Three kinds of problems, one discipline

Most "AI" work is a chatbot wrapped around a prompt. Mine is systems where the AI has to operate inside real constraints: physics that doesn't negotiate, a governance boundary that can't be talked around, or a workflow a real crew depends on every day.

Flagship / engineering

Engines that refuse to guess

Wavefront AI's RF propagation engine won't let a model invent a coverage number. The value type is branded so only the engine package can mint it, and a CI gate fails the build if anything else tries. If the engine can't substantiate a claim, it reports a warning instead of a confident wrong answer.

TypeScriptMCP339 tests
Flagship / open source

Governance that defaults to deny

Project Starfish is a portable, deny-by-default policy layer for AI agents: file system, shell, network, and secrets access all pass one decision point before anything runs. It governs Claude Code itself. Published on npm, Apache-2.0, 704 tests green.

Node.jsElectronApache-2.0
Flagship / production

Automation real crews depend on

Under Pinnacle Tech Projects: automated compliance checking for building-permit applications with a deterministic code engine and a human keeping final authority, and a system turning WhatsApp field-crew updates into structured reports with no workflow change for the techs sending them.

n8nClaudeMonday.com
How I work

Operational leverage, not maximum autonomy

on scope The goal is not maximum AI autonomy. The goal is operational leverage with human oversight: automation should remove repetitive work and speed up response time, not replace the judgment call at the end of it.
on trust A system is only valuable if it survives contact with reality: edge cases, scale, and the 2am failure. Demo-quality is not the bar. If it can't be debugged and can't recover from failure, it isn't done.
on evidence Systems should pull evidence and track state rather than assume it. In one engagement this caught two live regulatory violations sitting unnoticed in a client's own RF records, found by cross-referencing dated file evidence, not by asking a model to summarize.
on honesty When an AI research pass I ran flagged its own first conclusion as outside its authority to make, I kept that correction in the record instead of quietly fixing it. That's the standard: known limits, not confident guessing.
Get in touch

Tell me what your system actually needs to survive.

If you're evaluating an AI build and want someone who talks about failure modes before he talks about the demo, that's this conversation.