Before Ordinem had a name, we ran the whole playbook on our own carpentry company. Wrote the procedures, ran a stopgap AI operator, then built a one-screen operating system around it all. This is the paper trail.
SJ Carpentry LLC is a residential carpentry and remodeling shop in the Twin Cities. One owner on the tools, one carpenter on payroll, and a bench of 28 subcontractors. This one is different from every breakdown that will follow it, and you should know that up front: SJ Carpentry is ours. It's the company Ordinem comes out of, and it was the proving ground for everything we now build for other people. Nothing here was tested on a client first.
Where the business was
The work was never the problem. The operation was. Books in QuickBooks, invoices in Houzz Pro, everything else in Gmail and the owner's head. Quotes went out when there was time to write them, which meant evenings. Follow-up happened when a name happened to resurface. Fifty-odd past and current jobs lived in folders that only made sense to one person.
None of that shows up on an invoice. All of it caps how big the company can get.
Write it down first
The first move had nothing to do with software. Over the winter and spring, Joe wrote the business down: 27 documents. A master reference for the whole company. Role procedures for project manager, pre-construction, sales, and admin, written for positions that mostly don't exist yet, because the point is to define the job before you hire it. Contract, estimate, invoice, and change-order templates. A safety program, a permit process, a warranty policy, a sub onboarding checklist.
This is the unglamorous part everyone skips. It turned out to be the whole foundation, for a reason that only became obvious later: a procedure written clearly enough for a new hire is written clearly enough for an AI.
The map, drawn before the tools existed
In April, with the procedures done, Joe went through every process step in the company and coded it. Can AI do this today? Can AI do it once it's taught a skill for it? Should the software platform carry it? Or should it never be automated at all, because it's judgment, relationship, or legal exposure?
Every step in the business got a code. Lead triage: AI, once taught. The weekly client status email: AI, once taught, turning a 45-minute Friday chore into a 10-minute review. Filling the demand letter template: AI today. Pricing and markup: never, the owner owns the risk. The go or no-go on a red-flag client: never. Emergency response: never.
Here's the thing about that document in April: most of it couldn't run. "AI does it" meant pasting notes into a chat window by hand. The platform rows meant renting Houzz Pro and QuickBooks. The integration rows meant wiring Zapier between tools that didn't want to talk. The map was honest about that. It even warned against over-automating before the manual process was clean.
So the map sat there, describing a machine that didn't exist. The next four months were spent building the machine.
A stopgap that talked back
The bridge was an AI operator called Hermes, living on a server in the office, reachable from a phone over Telegram. Memory, access to the company Google account, and a 56-row spreadsheet as its customer list. It proved the daily rhythm works: an assistant that reads the mail, keeps a queue, drafts the follow-ups, and waits for approval is worth real hours even held together with tape. It also proved a spreadsheet is not a system. Six weeks of that was enough to know exactly what to build.
Building the real thing
On June 13 the real system was an empty database. Eight weeks later it was running the company at os.sjcarpentryllc.com, built with AI coding tools on our own server. Leads through a nine-stage job lifecycle. Selections with allowances that clients approve from their own portal. Bid packages that subs price from theirs. Scheduling, compliance, warranty, a newsletter. About a hundred database tables underneath, and no monthly bill for the core system.
The difference from every off-the-shelf tool is who the software expects to be working in it. The system exposes 88 tools an AI assistant can operate: read the queue, file a receipt, update a job, log a lesson, draft a reply, build a bid package. The April map's codes became real things. "AI once taught" became a skill library inside the system. The integration duct tape became the system's own scheduled jobs. And every "never automate" row became a hard line in the plumbing.
What the AI runs today
A week of real examples from the log, names left out. A city permit receipt landed in Gmail and filed itself to the right job. A lumber yard's delivery notice became a work item carrying the delivery agreement number. An insurance adjuster asked for status on a bathroom rebuild, and a drafted answer was waiting in the queue before the morning coffee. A sub's missing W-9 got chased. A vendor's cabinetry quote was logged against the right client with its expiration date.
The AI works from the same procedures a human would. The skill library holds the written plays: triage a lead against the job-size floor, write a scope of work, draft a client follow-up, file an invoice versus a receipt, prep a meeting brief, enforce deposit-before-site-visit. Runbooks chain them into routines, like the morning operations review that walks the queue one item at a time. Every action leaves a receipt in an audit log.
And one hard line, enforced in the plumbing rather than by policy. Anything that would reach a human outside the company, an email, a newsletter, an invoice, sits parked in an outbox until Joe presses the button. The send code doesn't exist anywhere the AI can reach.
How it gets more automated from here
This is the part the April map was really about. The operating principle is simple: the AI does every step it's capable of, shows the result, waits for a yes, and moves to the next step. When a step needs a human, it stops and says exactly what's needed and from whom.
What moves over time is the size of that capable list, and it grows three ways.
It gets taught. Every written procedure is a candidate skill. The backlog from April, lead triage, permit packets, weekly status, warranty logging, change-order drafts, is being worked through one skill at a time, and each one starts as a draft the owner approves before it enters the library.
It learns the small rules on its own. Tell it once that the invoicing app's weekly reminder emails are noise, and it stops surfacing them. Tell it a cancelled job is dead, and nothing about that job ever makes the queue again. It hasn't needed telling twice.
It earns rope. Every action is receipted, so there's a track record per skill, not just a feeling. A skill that has drafted forty follow-ups without an edit is a candidate for sending routine ones without the button. That loosening happens one task at a time, deliberately, and it hasn't happened yet. The plan on file for a fully autonomous loop stays a plan until the receipts say otherwise. The April map put it best: over-automating before the manual process is clean is a recipe for bad data.
Further out, the learning gets structural. Every job feeds actual costs, timelines, and outcomes into the same database the AI reads. Estimates start referencing what the last kitchen actually cost, not what the price book hopes. Payment schedules get proposed from the real cost curve of the work. The system gets better at the business by doing the business.
What stays human
The April list survived into the live system unchanged. The go or no-go on a red-flag client. Final pricing and markup. Difficult conversations: past-due, disputed change order, warranty dispute. Live emergencies. Contract signing. Lien filings, which are attorney work in Minnesota. Hiring and firing. The AI flags, drafts, assembles, and briefs. A person decides.
What it did to the numbers
Straight answer: the system went live in July, and we're not going to invent a revenue lift for it in August. The 90-day numbers get published here when they exist, good or bad.
What we can count now. Fifty jobs and 28 subs in one place instead of four apps and a memory. Email triaged every day, with follow-up drafts inside a day instead of inside a week. Zero misfiled permit or payment receipts since go-live. The Friday status chore the map priced at 45 minutes is a review-and-send. And the owner's day starts with a queue of five instead of an inbox of forty.
What didn't work
The paper trail includes the misses. The first version locked the whole screen while the AI was thinking, so Joe couldn't check a job while it worked. Rebuilt. A settings default silently ran development work on an AI model at five times the intended price. Caught in the logs, fixed. Old job history imported clean, but stitching old jobs to the leads that spawned them is still partly by hand.
What's next
Sub bidding shipped in the first week of August, so the next jobs get priced through it start to finish. The skill backlog keeps burning down. The 90-day numbers land here in the fall. And the bigger job is already underway: separating what in this build is carpentry-specific from what any trades company could run. That second list is Ordinem.
It does every step it can, shows me the result, and waits for my yes. Every month the list of steps it can do gets longer.