AI workflows for small companies and IT shops

I run teams of AI workers that ship real software. Nothing is done until a check proves it.

By day I'm a systems administrator at a managed IT services company. Since August 2026 I've logged over 600 AI tasks across my projects. 96% of them had to pass an automatic check before they counted.

NO CHECK · NO DONE 96% OF TASKS HAD A CHECK GATED
600+AI tasks tracked, 10 Aug to 6 Oct 2026
96%carried an automatic check that had to pass
60saved proof files of checks tested with deliberate failures
3 daysidea to live site for TeeTimes Ottawa
0failures across 108 new security sites set up by script at work
01Say this first. Out loud, about 30 seconds.

The 30-second pitch

I take one job that eats someone's week and make it run on its own, in your real tools. Nothing counts as done until a check proves it.

I do this at a managed IT company that looks after 111 organisations and about 1,400 devices. The reporting app I built there has 407 commits and pulls live numbers from 7 vendor systems.

I'd start with a two-week audit that finds your first three jobs.

If they remember one line

Hours back, one live job, and someone who proves it works.

Rehearse it

Read it out loud against the clock. Under 35 seconds or cut a sentence.

0:30
02Five beats. Times are a target, not a script.

The 2-minute story

0:00

The day job

I'm a systems administrator at a managed IT services company (an MSP). We look after 111 client organisations and 1,407 managed devices.

The work is repeat work where a mistake costs real money. Billing, security, licences.

0:20

The first real build

In March 2026 I started building an internal reporting app with Claude. It has 407 commits now, and Claude co-wrote 336 of them.

It replaced exporting and cross-checking spreadsheets. The app pulls from 7 vendor systems live.

0:50

AI says "done" when it isn't

One of my checks once passed a completely broken build. A cheaper model shipped 3 bugs that review caught.

So I changed the rules. Before I trust a check, I break the thing on purpose and make sure it goes red. 60 of those tests are on file. "Done" means a command passed, not that an AI said so.

1:20

A team, not a chatbot

Since August I run work as a team. One lead AI plans and never writes code. Specialist AI workers do research, code and design. A gate checks every result.

Over 600 tasks so far. Every worker is a visible window on my screen, so I can watch or stop any of them.

1:45

What that means for you

That's how a tee-time site went live in 3 days.

I want to point the same process at your slowest workflow.

2:00
03The picture to draw on a whiteboard

How I work

STEP 1

The job

You, the owner

One task that still eats somebody's week. We agree what "working" looks like before anything gets built.

On a building site: the homeowner's plan.

STEP 2

The lead

A lead AI

Writes the scorecard first, then splits the work into pieces that can't overlap. It never builds anything itself.

The general contractor.

STEP 3

The specialists

Separate AI workers

Each gets one task and its own folder. Research, code, design. For design work, two can build the same brief and I pick the winner.

The trades. Electrician, plumber, framer.

STEP 4

The check

A command that must pass

Written up front. Before I trust it, I break the thing on purpose and make sure it goes red. The worker's word doesn't count. The command's exit code does.

The inspector who won't sign off on bad work.

STEP 5

Live, proven

Deploy, then re-check

Ship it, fetch the file the live site actually serves, and match its fingerprint to the local copy. Only then is it "live".

The final walk-through before handing over the keys.

Check fails → the work goes back to the same worker with the error. Up to 3 tries, then I decide. Nothing gets killed automatically.
Think of a general contractor. I'm the contractor. The AI tools are the trades. The check is the inspector, and nobody moves in until the inspector signs.
Which trade gets which job
Research sweepsthe tool that's best at searching
Focused code, testsa coding specialist
Reviews, auditstwo different tools, both review everything
Design buildstwo tools on the same brief, I pick the winner
Bulk editsa general-purpose AI
04Outcome first, then the proof

Proof of work

Day job · private app

The reporting app an IT company's managers run on

Checks what every client is billed against the real device and licence counts, pulled live from 7 vendor systems.

407
commits, March to October 2026
83%
co-written with Claude, 336 commits
14
kinds of report in one app
12 wks
of weekly backups kept in a second region

ReplacedExporting and cross-checking spreadsheets. One report moved from parsing invoice PDFs to a live distributor feed. The cloud billing report now matches the vendor's own summary, checked against a real client month.

Day job · migration

Moving 86 client sites to a new security console

1,487 protected machines. A readiness report flags any machine that would lose protection if its old site closed too early.

108
sites created by script, 0 failures
90
security rules moved, 0 failures
  • Scripts dry-run by default and never touch the old console.
  • A settings gap report compared 14 areas on both consoles. Every gap was fixed the same day and checked by API.
Day job · security

Locking down the keys the AI can use

In an August audit of the work keys the AI tools could use, half could change client systems. The four that remain were verified read-only.

5 of 10
sets of keys could write on the first run
4 of 4
remaining sets proven read-only, live, 19 Aug

Cut28 stored settings in 10 sets of keys down to 10 settings in 4.

LivePersonal

TeeTimes Ottawa

An Ottawa tee-time map with 38 course integrations and a tap through to each course's own booking page. Live results vary because booking sites limit how often you can ask.

3 days
from brief to live, 12 to 15 Sept 2026
38
course integrations, out of 63 Ottawa-area courses
166
automated tests
$0
a month to host

GapGolfNow lists 4 courses in Ottawa.

teetime.sigouin.net ↗
Day job · AI team build

A billing dashboard built by an AI team, on fake data

An 8-quarter billing trends dashboard. One lead, one backend worker, two competing UI workers, one independent reviewer. Every worker had a check proven to fail first.

0
workers allowed near live accounting data, secrets, git or deploys
5 of 6
charts had the marker a worker claimed was on all 6. The reviewer caught it.
29
backend tests
98
checks in the winning UI's self-test

RuleEach worker had to list what it could NOT verify, not only what passed.

LivePersonal

sigouin.net

My personal site and walkable 3D project hub, built and shipped by the fleet.

21
design rounds
21
releases, each with notes and a rollback

CheckA deploy script hashes every local file and matches it to the live copy.

sigouin.net ↗
LivePersonal · data

Dragonwilds Field Guide

Search every item and recipe in a game and find resources on the map.

1,817
items
15,721
map markers

SpeedFull data pull about 18 minutes. A cached rerun takes 0.5 seconds.

dragonwilds.sigouin.net ↗
LivePersonal · games

Two browser games

A siege game with 30 stages, and an idle game where every piece of art is drawn by code.

43
unit tests in Undergrowth, over 10 build rounds
169/169
automated checks passed at River Garden v1
undergrowth.pages.dev ↗ rivergarden.sigouin.net ↗
Day job · research

One standard for every how-to article

10 research workers across two AI tools produced 10 plain rules and an assistant the team can use to write to them.

171
cited sources, none shared between workers
0
em dashes. The check enforces it.
Day job · website

Rebuilding the company website

Three AI builders, one rubric. Every number on 30 pages was checked against the real site.

0
invented facts
0
contrast failures
05Deploy and verification discipline

Done means proven

"Done" means a command passed. Not that an AI said so.

  1. Write the scorecard before any worker exists

    4 to 6 plain criteria. It becomes every worker's self-check.

  2. Write the check, then break things on purpose

    Plant a bug and confirm the check goes red. A check that has never failed has proven nothing.

  3. Each worker builds in its own folder

    Two workers never edit the same files. It writes a report of what passed and what it couldn't verify.

  4. The canvas runs the check when the worker says done

    Pass and it counts. Fail and the error goes back to the worker. 3 attempts.

  5. Deploy

    Publishing always asks me first.

  6. Prove it on the live site

    Fetch the served file, hash it, match it to the local copy, and test the change on the live site. Then I say live.

Times the inspector said no
BLOCKED

A password left in the code. The check refused "done" on four workers because a password placeholder was left in the code.

BLOCKED

A fix that broke its own page. A security fix was sent back because the new login check locked out the console's own page.

CAUGHT

An overclaim. A worker said a marker was on every chart. It was on 5 of 6.

BLOCKED

A CSS fix at work bounced twice before it counted.

LEARNED

A check that cheated. In one round a check rebuilt the very file it was judging. Now every output is frozen and hashed first, and checks are read-only.

96%of tasks carried a check
529tasks finished done, 27 blocked, at the 6 Oct snapshot
46 / 46checks passed on one build. Two planted bugs turned it red: 1 failure, then 10.
3 of 3deliberate breaks caught by a reviewer re-running the test suite at work
06Guardrails and the trust story

Specific destructive commands are blocked

Even when I let agents run without asking me each step, some doors stay locked. I tested that the locks hold.

30

Destructive commands blocked

Wiping folders, force-pushing code, resetting history, formatting disks, piping a download straight into a shell. Blocked outright.

7

Publish actions ask a human

Pushing code, opening a pull request, a release, a package publish, two kinds of deploy. Each one needs my OK, every time.

Read-only

Keys get cut to read-only

I prove it by asking the API (the door other software uses) for the key's own role. A security console account went from Admin to Viewer. A backup tool's key gets refused on every write.

0

Hidden agents

Every AI worker is a visible window on my canvas. A rule blocks the invisible kind. I can watch, type into, or stop any of them.

0

Secrets in chat or code

Keys live in local files, never in code, chat or the service list. Each one has a dated test call on record.

6 of 8

Add-on tools rejected

Before installing anything, research workers vetted 8 tools. One rewrote command output silently. One pulled outside text live with no filter. Nothing got installed during the review.

07Fixed scope. You know the ceiling before we start.

What I do for a client

Step 1 · Audit

Workflow audit

"Where the hours go"
$3,500CAD
Range $2,500 to $5,000 · 1 to 2 weeks
  • List the AI tools already in use, including the unofficial ones.
  • Map 5 to 10 repeating jobs.
  • Rank the top 3 by hours saved and data risk.
  • A written plan with a fixed price for the first build.

Canadian assessments cluster at $1,500 to $5,000. Managed IT companies already sell readiness projects at $2,500 to $6,000 USD.

Step 2 · The proof

One live workflow

"The first one that runs without you"
$12,000CAD
Range $8,000 to $15,000 · 2 to 4 weeks
  • One workflow running in your real tools.
  • Documented, and your team trained on it.
  • A check that proves it still works.
  • 30 days of fix-it support.
  • Licences billed through.

Most first jobs for Canadian small businesses land at $5,000 to $15,000. A messy ticketing or device-management system pushes it to $15,000 to $25,000.

Step 3 · Ongoing

Monthly automation partner

"Keep it running, add the next one"
$4,000CAD / mo
Range $3,000 to $6,000 · 8 to 12 hours a month
  • Only after step 2 is live.
  • Watch the live workflow, patch it when a tool changes.
  • Build the next job on the list.
  • One monthly review a non-technical owner can read.
  • Cancel with 30 days notice. No unlimited help desk.

Canadian retainers run $2,000 to $10,000 a month. $3,000 to $5,000 buys 8 to 12 hours.

→ The audit fee is credited toward step 2 if you start within 90 days.
The rate line. Say it word for word.
"I price the work, not the clock. A two-week audit that names the first three jobs and the hours they return is $3,500 Canadian. One of those jobs, live in your stack, documented, with a check that it actually runs, is $8,000 to $15,000. If you want me after that, $4,000 a month covers a slice of time and the next build. That's boutique Canadian money, not a Big Four quote."
If they push
In US dollars, at 1 USD = 1.4226 CAD≈ $2,460 · $5,620 to $10,540 · $2,810/mo
US rate card instead of converting$2,500 · $8k to $15k · $3k to $7.5k/mo
Hourly, advisory only$225 CAD/hr
Hourly for a buildconvert to a fixed total
08Short answer first. Proof if they lean in.

Tough questions

Isn't this just prompting?

Prompting is asking one AI one question. I run a process around it: a scorecard written first, separate workers, a check that must pass, and a live re-check before I say done.

The prompt is the easy part. The hard part is knowing when the AI is wrong, and that's what the checks are for.

Proof96% of over 600 tasks carried an automatic check. 60 saved proof files document checks tested with deliberate failures.

What if the AI is wrong?

It will be, sometimes. That's the whole design. Nothing counts until a check passes. Before I trust a check, I break the thing on purpose and make sure it goes red. 60 of those tests are on file.

A wrong answer gets bounced back to the worker with the error. After 3 tries a human decides.

ProofThe gate refused four workers because a password placeholder was left in the code. A reviewer caught a claim that was true on 5 of 6 charts.

What about security and our data?

Least access first. Keys get cut to read-only, and I prove it by asking the API for the key's own role. My work dashboard team built on fake data only.

30 destructive commands are blocked outright. Anything that publishes asks me first. Keys live in local files, never in chat or code.

ProofIn the August work audit, 5 of 10 sets of keys could write on the first run. Now 4 remain and all 4 were verified read-only.

Why you instead of a dev shop?

I'm an IT operator who builds. I already work inside the tools IT companies and small businesses run on: ticketing, device management, endpoint security, accounting.

Fixed scope, so you know the ceiling. And the speed is real: TeeTimes went from brief to live in 3 days.

ProofThe security move at work: 108 new sites and 90 security rules set up by script, 0 failures.

What does it cost?

$3,500 Canadian for a two-week audit. $8,000 to $15,000 for the first live workflow. $4,000 a month after that if you want me.

The audit fee is credited toward the build if you start within 90 days.

Where it sitsInside published 2026 Canadian boutique ranges. Not Big Four, not a freelance marketplace.

How many hours will it save us?

I won't guess. The audit counts your hours first, then I price the build against them.

Vendors in this market say first jobs often pay back in a few months if the hours are real. I'd rather measure yours.

Did you build the canvas app?

No. CNVS is the canvas I run my agents on. What I built is the playbook: who gets which job, the scorecards, the checks and the guardrails.

What if an AI vendor changes prices or cuts you off?

I use three AI tools on purpose, so no single vendor stops the work.

ProofWhen codex hit its usage cap, the work went to claude. In one test round two tools hit their limits mid-round, and the lead swapped in another and kept going.

Can this handle our messy ticketing or device-management system?

Yes, read-only first. Write access widens only after it has earned trust, one change at a time.

Messy systems cost more to wire up, so I quote that as $15,000 to $25,000 instead of the standard build.

Why should we trust code an AI wrote?

Don't trust it. Trust the checks. The builds I'd show you ship with tests, and before I trust a check I break the thing on purpose and make sure it goes red.

ProofTeeTimes has 166 API tests. River Garden passed 169 of 169 checks.

What do you say no to?

Bad business cases. I researched a game-server hosting side business and dropped it. It needed 300 to 650 customers and I found no proof anyone makes it work solo.

09About 90 seconds on stage. Same script as the talk track.

Live demo script

Before the call
  • CNVS open on a fresh canvas page with nothing else on it
  • Folder /Users/ls/Claude-Workspace/cnvs/demo-live exists and is empty
  • Dry run done; the Liar's rejection message saved to demo-live-dryrun/bounce.txt
  • Dry-run worker terminals closed
  • Any admin or client-data tabs closed
  • Backup on a second canvas page: Fleet-Machine/how-the-fleet-works.html in a CNVS browser node
# tonight, once
mkdir -p /Users/ls/Claude-Workspace/cnvs/demo-live
# after the dry run, so tomorrow starts empty
mv /Users/ls/Claude-Workspace/cnvs/demo-live /Users/ls/Claude-Workspace/cnvs/demo-live-dryrun
mkdir -p /Users/ls/Claude-Workspace/cnvs/demo-live
# only if "which cnvsctl" prints nothing in the shell node
alias cnvsctl=/Applications/CNVS.app/Contents/MacOS/cnvsctl
0:00

Show the inspector fails first

In my terminal, run the check for a file that doesn't exist yet. It prints exit 1.

test -s /Users/ls/Claude-Workspace/cnvs/demo-live/d-checklist.md && grep -q DONE-CHECK /Users/ls/Claude-Workspace/cnvs/demo-live/d-checklist.md; echo "exit $?"

This is the inspector's test. Nothing's built yet, so it fails. Before I trust a check, I make sure it can go red.

0:10

Spawn three honest workers

Paste the three commands one after the other. What each check looks at:

  • Writer: the file exists and is 8 lines or fewer.
  • Coder: at least 3 test functions, and the unit tests pass.
  • Researcher: at least 3 lines with a web link. It doesn't check that the prices are right.
# Writer
cnvsctl spawn-agent --agent claude --name Writer --prompt "Write a 5-line plain-English explanation of a quality gate for a small business owner into /Users/ls/Claude-Workspace/cnvs/demo-live/a-summary.md. Then report done to CNVS." --verify "test -s /Users/ls/Claude-Workspace/cnvs/demo-live/a-summary.md && [ \$(wc -l < /Users/ls/Claude-Workspace/cnvs/demo-live/a-summary.md) -le 8 ]"
# Coder: leave it as a visible terminal, do not add --headless
cnvsctl spawn-agent --agent codex --name Coder --prompt "In /Users/ls/Claude-Workspace/cnvs/demo-live/b/ write invoice.py with a function total_with_tax(subtotal, rate) that rounds to cents, and test_invoice.py with at least 3 unittest cases. Run the tests. Then report done to CNVS." --verify "[ \$(grep -c 'def test' /Users/ls/Claude-Workspace/cnvs/demo-live/b/test_invoice.py) -ge 3 ] && python3 -m unittest discover -s /Users/ls/Claude-Workspace/cnvs/demo-live/b"
# Researcher
cnvsctl spawn-agent --agent grok --name Researcher --prompt "Find 3 published 2026 price ranges for a small-business AI workflow audit. Write them with their source URLs to /Users/ls/Claude-Workspace/cnvs/demo-live/c-research.md. Then report done to CNVS." --verify "[ \$(grep -c 'https://' /Users/ls/Claude-Workspace/cnvs/demo-live/c-research.md) -ge 3 ]"

Three different AI tools, three separate jobs, three separate files. A writer, a coder, a researcher. Each one gets its test attached when I hire it, not after.

0:30

Spawn the one that lies

Its check: the file exists and contains the line DONE-CHECK.

cnvsctl spawn-agent --agent claude --name Liar --prompt "This is a live demo of a quality gate. Step 1: report done to CNVS right now with the note 'all finished', before creating any file. Step 2: when CNVS hands you the failure, create /Users/ls/Claude-Workspace/cnvs/demo-live/d-checklist.md with a 5-item pre-launch checklist for a small website, ending with a line that says DONE-CHECK. Then report done again." --verify "test -s /Users/ls/Claude-Workspace/cnvs/demo-live/d-checklist.md && grep -q DONE-CHECK /Users/ls/Claude-Workspace/cnvs/demo-live/d-checklist.md"

This fourth one I told to cheat on purpose. It's going to say "done" without doing anything. I'm telling you up front so nobody thinks I staged a lucky failure.

0:45

Point at the canvas

Zoom out so all four terminals show: cnvsctl zoom-to-fit

Four AIs working at the same time, and I can see every one of them. Nothing runs hidden. In my full setup a status board flags any worker that goes quiet for 10 minutes, and I decide what happens. Nothing gets killed automatically.

1:05

The gate rejects the lie

Point at the Liar terminal. When it reports done, CNVS runs its check, gets exit 1, and hands back the failure with a note like "Fix the failure and run done again (2 attempts left)." The live wording may differ. Don't promise when it will retry.

It said "all finished". The check ran, the check failed, and the job bounced straight back. Its word counts for nothing. Only the check counts. When it says done again, the same check runs again.

1:25

Close the loop

Once the workers finish, run cnvsctl tasks and point at the done states.

That's the whole idea in one screen. Parallel work, a test on every job, and "done" means the test passed. I've run over 600 jobs this way since August.

10Read twice tonight. Glance once tomorrow.

Numbers to know cold

627AI tasks tracked, 10 Aug to the 6 Oct snapshot. Say "over 600".
529finished done
604 · 96%carried an automatic check
60saved proof files of checks tested with deliberate failures
30 · 7commands blocked · publish actions that ask me
111 · 1,407client organisations · managed devices at the day job
407 · 336commits on the reporting app · co-written with Claude
86 · 1,487sites · machines in the security move
108 · 90 · 0new sites · security rules set up · failures
5 of 10 → 4 of 4August work audit: key sets that could write → remaining sets verified read-only
3 days · 38TeeTimes, brief to live · course integrations
$3,500 · $12,000 · $4,000/mothe three packages, CAD
1.4226CAD per USD, Bank of Canada, 6 Oct
Words to skip in the room

Say instead: hours back, one live job, a monthly person who keeps it honest.