← Back to the portfolio

How I actually build it.

The portfolio page is the argument. This one is the evidence, and it is deliberately long. If you are deciding whether to hand someone the keys to your operation, you should get to see the inside of the machine first.

Client names, emails and account identifiers are removed from everything below. What is left is the architecture, which is the part that transfers.

01 · Lead and sales infrastructure

GoHighLevel, end to end.

A pipeline is not a list of stages. It is a set of rules about what happens to a lead when nobody is looking. Most of the ones I inherit have the stages and none of the rules, which is why leads sit.

What I build inside it

  • Capture and scoring, so a lead is graded before anyone reads it.
  • Routing by source, property type or program fit, with a named owner attached at the moment of assignment.
  • A twelve-month nurture sequence for the ones who are not ready, because most of them are not.
  • Pipeline stages with entry and exit criteria written down, not agreed verbally.
  • A Zapier bridge into the project tool, so a won deal becomes real work without anyone retyping it.

What it changes

Before: manual lead entry into a spreadsheet, no automated follow-up, and nobody certain whose lead was whose. The founder was spending roughly fifteen hours a week holding it together.

After: zero missed follow-ups, a thirty percent drop in manual data entry, and clear accountability on every lead in the system. The fifteen hours went back to the founder.

Watch the pipeline walkthrough
TRIGGERS · ANY ONE STARTS IT Survey Submitted Survey is any of Customer booked appointment Contact Mode is any of “contact” In calendar is “Path to Publication Enrollment” Customer booked appointment In calendar is “Consultation Call” Contact Mode is any of “contact” Customer booked appointment Contact Mode is any of “contact” In calendar is “Path to Publication” TAG Add Tag PIPELINE Create Or Update Opportunity INTERNAL Internal Notification – SMS INTERNAL Internal Notification – Email CLEANUP Remove from Workflow CLEANUP Remove from Workflow CLEANUP Remove from Workflow TO LEAD Email – Confirmation to lead TO LEAD SMS – asking for confirmation DELAY Wait 1 day TO LEAD Email Pulled out of three other sequences so they cannot be double-messaged. END Click to explore
Redrawn to scale from the live workflow so it stays sharp at any zoom. Four triggers, eleven actions, one end. The raw screen capture is here.
02 · The automation layer

The Zapier ecosystem behind a live business.

Not a handful of Zaps. An ecosystem, where each one knows what the others do, and where breaking one does not silently break three others. This is the layer clients never see and feel every day.

How I structure it

  • Named by function, never by whatever the wizard suggested, so a stranger can read the list and understand the business.
  • One source of truth per data type. Nothing writes a client record in two places.
  • Multi-step with filters and paths, rather than five near-identical Zaps that drift apart within a month.
  • Error paths that notify a human instead of failing quietly, which is how most automation actually dies.
  • A documented map, so the person after me can maintain it without calling me.

What sits in the stack

Forms and CRM feeding the project tool, payment events triggering access, course platform events writing back to the client record, calendar events creating prep tasks, and a scheduled sweep that catches anything the event-driven paths missed.

The sweep is the part people skip. It is also the part that turns automation from a demo into infrastructure.

AUTOMATION ARCHITECTURETwenty-six automations, in three tiers.Built and named so a stranger can read the list and understand the business.TIER 1 · INTAKEWk 1 passWk 1 failWk 2 passWk 2 failWk 8 passWk 8 failOne automation per week, per outcome. Sixteen in total, so a failure in week three can never silently behave like a failure in week seven.TIER 2 · WATCHERSPayment watchcatches a card that never clearedStaleness watchdogcatches data that stopped updatingAttendance intakerecords who actually showed upTIER 3 · THE ONE THAT WATCHES THE OTHERSError alert managerSlack channelAny automation in the account that fails postsitself into a channel. Nothing dies quietly.No automated message ever reaches a learner. Automation detects and routes; a person sends every human touch. Click to explore
Twenty-six automations in one client account, drawn from the live build. Anonymized: no client, no learner, no commercial terms.
Zapier dashboard listing twenty-five live automations in one client folder Click to explore
SlotA slice of the real dashboard. The names are the documentation, which is why a stranger can read them and understand the operation.
Twenty-five of twenty-seven automations in one client folder, straight off the live account. Read the names in order and you can reconstruct the business: intake from two payment processors, a watcher for stalled data, one per week per outcome, and an error manager sitting over all of it. That is deliberate. The naming is the documentation.
A single Zap opened, showing seven ordered steps Click to explore
SlotOne automation opened end to end.
One of them opened. A payment lands, the email is lowercased and the name split before anything is written, the row is created in the registry, a filter decides whether this one continues, and only then does it touch the work system. Three of those seven steps do nothing but normalize data. That is the ratio in anything that has to run unattended for a year.
03 · The work system

Asana, built as a pipeline rather than a task list.

A task list tells you what is outstanding. A pipeline tells you where every person is, what happens next to them, and which stage is quietly slowing everything down. The second one is a system. The first one is a to-do list with a logo.

The student pipeline

  • Stages that mirror the real journey, not the marketing version of it.
  • Custom fields carrying cohort, start date, current module, risk flag and owner, so the board can be filtered into an answer instead of read.
  • Rules that move a record when a condition is met, so nobody drags cards for a living.
  • Automated check-in tasks that appear on the owner's list at the right moment and nowhere else.
  • A dashboard on top that answers the founder's actual question, which is always some version of who is stuck.

Where Zapier meets it

Enrollment writes the record. Payment sets access. Course completion advances the stage. A missed check-in raises the risk flag and notifies the owner. None of this involves a human noticing something.

The design constraint I hold myself to: if the system needs someone to remember, it is not finished.

Asana board view of a student pipeline with custom fields Click to explore
Screenshot slotThe Asana board or list view of the student pipeline with the custom fields column visible. Redact names and emails; the field structure is what matters, not the records.
The pipeline between cohorts, which is the honest time to show it. Six stages across, fourteen custom fields carrying the state the rules read. The two cards in Onboarding are my own test records, one checking the rule fires and one checking it does not fire twice.
Asana rules configuration screen Click to explore
Screenshot slotThe Rules panel showing two or three configured rules, and separately the custom fields setup. These two screens together prove the board is automated rather than manually maintained.
The rule behind the board, exactly as it is configured. One field changes, one condition is checked, and three things happen: a seven-item checklist is dropped, and two status fields are stamped so the next automation knows where it stands. This is the difference between a system and a spreadsheet with colors.
04 · Delivery and accountability

ClickUp, organized so follow-through is visible.

Most teams do not have a follow-through problem. They have a visibility problem that looks exactly like a follow-through problem. When a space is structured properly, the person who has gone quiet is obvious on Monday morning instead of at the end of the quarter.

How I lay out a space

  • Spaces by function, folders by client or program, lists by workstream. Predictable enough that a new hire guesses correctly.
  • Custom statuses that describe reality, including the honest ones like waiting on client.
  • Every task has one accountable owner. Shared ownership is how things get dropped politely.
  • Recurring tasks for anything that has ever been forgotten twice.
  • A dashboard per role, so nobody has to build their own view to know what they owe.

What I watch

Tasks with no owner. Tasks with no due date. Anything sitting in the same status for two weeks. Those three filters find almost every problem in a delivery operation before it reaches a client.

They are also the three things a founder can check themselves in ninety seconds, which is the point.

ClickUp space showing folder and list structure with custom statuses Click to explore
Screenshot slotA clean demo space built for this page: the sidebar structure, one list with custom statuses and owners, and one role dashboard. Invented data, so nothing needs redacting.
A demo space I built for this page, so nothing needs redacting. Five columns, not fifteen: to do, in progress, waiting on client, in review, complete. The fourth one is the column most boards refuse to have, and it is the one that stops a stalled task from sitting in "in progress" for three weeks pretending to be fine.
A ClickUp dashboard reading from the demo space Click to explore
SlotThe dashboard sitting on top of the same space.
The same space, read as numbers. Unassigned is a card on the dashboard rather than a report somebody has to remember to run, which is the only reason it stays at zero.

How a vision becomes something a team can do on Tuesday.

Four working demos of the method behind the board: the ladder from a twelve-month sentence down to a task with one owner, the three filters that find every defect on a Monday, a real meeting taken apart into actions, decisions, risks and information in front of you, and the capacity check that decides who gets the next piece of work.

Open the project demos
05 · Instructional design

Designing a program people actually finish.

An eight-week certification for a creator-economy platform, built end to end: the course architecture, the enrolment logic, and the platform split underneath it. Client, program and commercial terms are all withheld. What is shown is the design, which is the part that transfers.

COURSE ARCHITECTUREEvery week is the same five objects. Only the content changes.START HERENo drip. Open toeveryone on day one.How it works · Set upprofile · Do this firstWK 1ReadLiveReplayWorksheetSelf-checkWK 2ReadLiveReplayWorksheetSelf-checkWK 3ReadLiveReplayWorksheetSelf-checkWK 4ReadLiveReplayWorksheetSelf-checkWK 5ReadLiveReplayWorksheetSelf-checkWK 6ReadLiveReplayWorksheetSelf-checkWK 7ReadLiveReplayWorksheetSelf-checkWK 8ReadLiveReplayWorksheetSelf-checkFormative all the way throughWeekly self-checks do not gate progress. They exist tosurface who is drifting, early enough to do somethingabout it.One summative gateThe final exam is the only hard gate in thewhole program, and passing it is what issuesthe credential. Click to explore
Eight weeks, five identical objects per week. Formative throughout, one gate at the end.
TWO CLOCKS, NEVER INTERCHANGEABLEONBOARDING CLOCKcounts from the day the money landsPaidDay 3Day 4Day 6Day 7Day 9auto chasehumanauto chasecard due, humanauto chaseRuns the payment chase ladder. Nothing about weeks, health or content ever counts from it.PROGRAM CLOCKcounts from the day the agreement is signedSignedWk 1Wk 2Wk 3Wk 4Wk 5Wk 6Wk 7Wk 8the one gateThe floor ruleProgram start is the later of the signature date and the date that learner’s week one opens, so a learner who signs early does not burn weeks waiting. Click to explore
Two dates run the program and they are never interchangeable. Most errors in this kind of system come from using one where the other belongs.
THE PLATFORM SPLITFour tools, one job each. None of them asked to do another one’s work.TRAININGCourse, community,live sessions, replaysCHECKOUTPayment, plans,refundsAUTOMATIONThe glue betweenthe other threeCREDENTIALINGIssues thecertificateWHAT MOVES BETWEEN THEMPayment clearscheckout sends the event to the automation layerAgreement signedthe automation layer grants access, not the paymentWeekly self-check submittedresult routed to a human, never messaged to the learnerFinal exam passedcredential issued and the record written backAccess is gated on the signature, not on the payment. That one decision removes an entire class of dispute. Click to explore
Four tools, one job each. Access is gated on the signature, not the payment.

The decision I am proudest of

Access is granted when the agreement is signed, not when the payment clears. Those are different moments and treating them as one is where most programs get into disputes they cannot win.

It also gave the program a clean definition of day one, which every other rule could then count from.

The rule I would not bend

No automated message ever reaches a learner. Automation detects the problem and routes it to a person, and the person sends every human touch.

It costs more staff time. It is also the difference between a program that feels supported and one that feels processed.

06 · The build underneath

Twenty-six automations, one custom script, and a registry that cannot contradict itself.

The instructional design above is the visible half. This is the machinery that runs it: what triggers what, the script I had to write because no tool covered the gap, the registry every decision reads from, and the screen a program lead actually opens. Client, program and commercial terms withheld throughout.

THE ARCHITECTURAL RULEOne field is the trigger surface for the entire system.Humans and automations only ever write that one field. Everything downstream reacts to the change.A PERSONsets the stage by handAN AUTOMATIONsets it from a payment,a course completion, a formA SCHEDULED SWEEPcatches whatever theevent-driven paths missedPIPELINE STAGEthe single field everything writes toRULES THENMOVEthe record to theright sectionRULES THENSTAMPdates, owners andstatus fieldsRULES THENDROPthe checklist forthat stageNothing else is a trigger. That is what keeps twenty-six automations from fighting each other. Click to explore
The rule the whole system is built on. Get this wrong and twenty-six automations start fighting each other.
CUSTOM SCRIPTThe detector that closes the gap no tool covered.A signed agreement lands in cloud storage. Nothing natively tells the work system. So I wrote the thing that does.EVERY 10 MINPoll for newsigned PDFsFILTERCreatednever modifiedDEDUPESkip anythingalready seenMATCHFind the recordby folder idWRITESet one fieldnothing elseTHE FOUR DECISIONS THAT MAKE IT SURVIVE PRODUCTIONCreated time, never modified timeAn edit or a comment on the file must not re-fire the whole chain.A thirty minute overlap windowCloud indexing lags. The window catches what a clean cutoff would drop.A rolling list of processed idsThe overlap would double-process without it. The list is the thing that makes the overlap safe.Writes one field, not the recordRe-writing unchanged values fires downstream rules. Sending only the change is what stops loops.Collects errors and emails themA silent failure in a ten-minute job is invisible for a week. This one tells on itself.It also never touches the community platform directly. It sets a field, and a rule and an automation take it from there. Click to explore
A custom script, and the four decisions inside it that are the difference between a demo and something that has run for months.
THE REGISTRYOne row per learner. One writer per column.Every field has exactly one thing allowed to write it, which is why two sources can never disagree about a learner.FIELDWRITTEN BYWHAT IT GOVERNSEmailthe payment eventidentity, and the key every system joins onPaid-onthe payment eventday one of the onboarding clockDrive Folderthe intake automationhow the detector script finds the right rowAgreementthe detector scriptaccess, which gates on signature and not on paymentSigned-onthe detector scriptday one of the program clockInvited-onthe community syncproof the invite went out, and whenPipeline Stagea person or an automationthe trigger surface, see the rule aboveHealth (auto)a rule, from attendance and self-checkwho the program lead calls on MondayExama person, same daythe credential, and nothing elseCertified-onthe credential platformthe only date that closes a recordFourteen custom fields on the live board. The script writes the signature date in one fixed timezone and refusesto add a second row for a learner it has already seen. Click to explore
One row per learner, one writer per column. Two sources can never disagree because only one of them is allowed to speak.
AUTOMATION ARCHITECTURETwenty-six automations, in three tiers.Built and named so a stranger can read the list and understand the business.TIER 1 · INTAKEWk 1 passWk 1 failWk 2 passWk 2 failWk 8 passWk 8 failOne automation per week, per outcome. Sixteen in total, so a failure in week three can never silently behave like a failure in week seven.TIER 2 · WATCHERSPayment watchcatches a card that never clearedStaleness watchdogcatches data that stopped updatingAttendance intakerecords who actually showed upTIER 3 · THE ONE THAT WATCHES THE OTHERSError alert managerSlack channelAny automation in the account that fails postsitself into a channel. Nothing dies quietly.No automated message ever reaches a learner. Automation detects and routes; a person sends every human touch. Click to explore
Intake, watchers, and the one automation whose only job is watching the others.

Why I wrote a script at all

A signed agreement lands in cloud storage and nothing natively tells the work system it arrived. Every off-the-shelf bridge either polled the wrong timestamp or fired again every time somebody opened the file.

So the script polls on creation time, holds a thirty minute overlap for indexing lag, keeps a rolling list of what it has already seen, and writes exactly one field. That last one matters more than it sounds: re-writing an unchanged value fires every downstream rule again.

What it refuses to do

It never touches the community platform directly, even though it easily could. It sets a field, and a rule and an automation take it from there.

That restraint is the reason the chain can be changed later without going near the script, and the reason a person who has never seen the code can still follow what happens after a signature.

The screen a program lead opens on a Monday.

A working prototype of the learner progress view, reading the registry above. Twelve learners, eight weeks, filters for who needs a human this week. Invented data throughout, and it writes nothing back.

Open the prototype
07 · A different client, a different system

A reward economy, built out of two spreadsheets and nine script files.

Everything above belongs to one engagement. This belongs to another, in a different industry, with a different team, and it is the most complex thing I have built. A writing community wanted to reward the members who kept showing up: attend one session a week for eight consecutive weeks and you earn a token, worth four thousand words of professional feedback. Miss a week and the streak resets. No product did that, and the ones that came close wanted a per-member fee for a community that was not monetized that way, and made every member create yet another login. So I built it. Client, community and every member are withheld throughout.

ONE SYSTEM, TWO SHEETS, TWO WEB APPSNothing here is a product. All of it is a spreadsheet that learned to run itself.Nine script files, nineteen scheduled jobs. A member never logs into anything they do not already use.HOW A MEMBER GETS ON THE BOARDCOURSE PLATFORMa purchase, or a free challengeZAPIERwrites the row by APIA FIVE MINUTE JOBcatches what the API cannotTHE TRACKER SHEETThe source of truth for every member, every week, every token.ATTENDANCEone session a weekSTREAKeight in a row, or resetAWARDone token, datedEXPIRYone year, then goneOUTPUT ONE · READThe public leaderboardA daily sync copies the numbers into a secondsheet. A web app reads that sheet and renders it.The web app writes nothing, has no triggers andreceives no webhooks. It is a display layer, so awrong number is never its fault.OUTPUT TWO · WRITEThe claim formA second web app. Validates, deducts the token,writes a document backup, emails the team and thenthe member, and appends the row to the claims log.A blank cell on that row is what the reviewerlater turns into an archive action.The two halves never write to the same place. One reads, one writes, and the sheet in the middle is the only thingeither of them trusts. That is the whole reason it has run for a year without a reconciliation meeting. Click to explore
How the pieces actually connect. A purchase on the course platform becomes a row by integration, a five minute job finishes what the integration could not, attendance accrues into a streak, and the streak becomes a dated token. From there the system splits in two and never crosses back.
THE DECISIONS THAT MADE IT SURVIVESix choices, each one paid for by a bug.None of these are visible to a member. All of them are the difference between a demo and a system that ran for a year.One direction onlyThe public board is a display layer. It writes nothing,schedules nothing, receives nothing. When a number looks wrong, there is exactly one place to look.The API blind spotA row written by an integration does not fire the sheet's ownedit handlers. A five minute job sweeps for rows the handlers never saw, and finishes the setup they would have done.Emails wait for the truthThe token-earned email is queued during processing and sent onlyafter the public board has been refreshed. A member is never told about a token they cannot yet see.Never rewrite the pastThe monthly reconciliation refuses to touch any month before thecurrent one. History is a record, not a cache.The tag is temporary, the tab is notA cohort marker gets cleaned up seven days after the cohortends. The permanent answer to did this person do it before lives on its own tab that nothing deletes from.Do not schedule the cross-account checkOne integration account gets repointed between clients. A timedjob that reaches into it would eventually reach into the wrong one, so that check stays manual, on purpose.I did not know Apps Script when this started. I knew what the operation needed, and I was willing to keepreading the failure logs until the thing stopped failing. Click to explore
Six decisions, each one paid for by a bug that reached a member before I did. None of them are visible from the outside. All of them are why it has run for a year.
The live token claim form Click to explore
SlotThe claim form members actually use. No account, no app, one link.
The live form. One link, no account, no app. The word count is checked against the tokens being claimed and links are refused outright, because a link can change after review and a pasted draft cannot.

The form is the easy half. Open the other one.

A working replica of the claim form, with the eight things the script does after submit running beside it in order: validate, deduct, write a document backup, file it, notify the team, confirm to the member, append the row, answer the browser. There is a switch to force a rejection so you can watch the failure get logged rather than swallowed.

Open the claim demo
08 · The member-facing half

A public board that cannot be wrong, because it is not allowed to think.

Members needed to see their own streak without emailing anyone, and the team needed to stop being asked. The board is a second sheet and a second web app, and the only interesting thing about it is everything it is forbidden to do: it holds no logic, runs on no schedule, receives no webhooks and writes nothing anywhere. A daily job copies the numbers across; the board renders whatever it finds. When a member says the number is wrong, there is exactly one place to look, and it is never here.

Why the separation matters

A display layer that also calculates is a display layer that can disagree with its own source. The first version of anything like this always stores its own totals, and then one day the two drift and nobody can say which is right. Keeping the read half stupid is what makes a dispute a five minute answer instead of an afternoon.

What it costs

A claim does not appear on the board instantly; it waits for the next sync. So the confirmation email says so, in plain words. A known delay that a member has been told about is a feature. An unknown one is a support ticket.

The board a member checks themselves on.

A working replica: search a name, open a member, see the eight-week streak, the tokens earned and spent, and when the next one expires. Every member on it is invented. The live board carries real people's names and their attendance history, and those are not mine to publish.

Open the leaderboard demo
09 · Operating rhythm

EOS, and the cadence that keeps it honest.

Systems decay without a rhythm. The cadence is what turns a scorecard from a document into a habit, and it is the first thing I put in place, because everything else needs somewhere to be reviewed.

Weekly
Level 10, 90 minutes
Scorecard first, five minutes, numbers only. Then rocks on track or off track. Then the issues list, solved in priority order rather than discussed in arrival order. The meeting ends on time whether or not the list is empty, because a meeting that runs long teaches people to stop bringing things.
Weekly
Owner check-ins, 15 minutes
One to one with each accountable owner. Not status, which the board already shows. Blockers, decisions they need from someone else, and anything they are quietly carrying that is not written down.
Monthly
System review
Every automation checked for silent failure. Every recurring task asked the question: is this still worth doing. Documentation updated for anything that changed. This is the hour that prevents the quarterly emergency.
Quarterly
Rocks and reset
Three to five rocks, each with a single owner and a measurable done. Last quarter's rocks closed honestly, including the ones that did not land. New constraint identified, because there is always a new one once the old one clears.
Always
The standing rule
If a number is red for two consecutive weeks, it becomes an issue with an owner and a date. Not a discussion. Red is not a status, it is a trigger.

The dashboard a founder actually opens on a Monday.

A working demo, fed by a spreadsheet and rendered as a web app. Click through six weeks and watch a problem build in one column while everything else improves. Sample data throughout, no real client anywhere on it.

Open the live demo
10 · How the work gets made now

I use fewer AI tools than you would expect. I set up the one I use properly.

Most operators solve this by collecting tools. I went the other way and narrowed it to one, then spent the time on the setup instead of the shopping. What that buys is not novelty. It is that a client never gets re-explained, the constraints hold whether or not I remember them, the systems are already connected so an answer comes from the board rather than from memory, and each engagement is walled off from the others. The build cost collapsed as a side effect. This page, the diagrams on it and every demo linked from it were made this way, which is the only claim here you can check without taking my word for it.

Cowork

Where the operating work happens. Research, documents, analysis and the long multi-step jobs that used to eat whole days of an operations week.

Claude Code

Where things get built. Apps Script, dashboards, data migrations, redaction pipelines and every web app demo linked from this page.

The setup underneath both

Locked context per client, enforced constraints, connected systems, scoped access, scheduled work. The part that turns a capable tool into an operating layer.

Around those, four tools that carry one job each and nothing more: Wispr Flow for dictating at the speed I actually think, Fireflies for meetings I do not want to take notes in, ElevenLabs for voice, and Napkin for turning a paragraph into a picture fast enough that it is worth doing.

What the setup buys

A fractional operator carries several clients at once and cannot afford to re-explain any of them, or to let one client's context leak into another's work. So the setup does four things: it holds each engagement's canon so nothing is re-litigated, it enforces the rules that protect a client rather than relying on my memory of them, it connects to the systems the work lives in, and it walls each client off from the rest. The architecture is below. The construction is not, and that is deliberate.

THE SETUP UNDERNEATH THE WORKFifty skills, four tiers, one rule each.A skill is a file Claude loads on its own when the work matches. Thirty-seven of these I wrote. The rest ship with the product.37skills I wrote13that ship built in22plugins enabled19live connectorsTIER 1GuardrailsFire on every single conversation. Verify the assumptionbefore acting. Challenge the misread. Never quietly agree with a wrong premise.4 skillsTIER 2Client canonOne per engagement. The platform split, the team, the lockednumbers, the house style, the decisions already settled. Nothing gets re-explained.17 skillsTIER 3MethodHow the work is actually done. Process mapping, SOP style,operations analysis, action extraction, weekly reporting.10 skillsTIER 4OutputDocuments, spreadsheets, decks, PDFs, artifacts. The formats adeliverable has to land in.19 skillsClaude picks the tier. I do not paste context into a chat box, and I never re-explain a client twice. Click to explore
The shape of it, not the build of it. Guardrails that fire on everything, one locked context per client, the method, and the output formats. How each layer is written is the part that stays in-house.
WHAT IT PRODUCESSix things that are true because of how it is set up.Not a tool list. These are the differences a client would notice in the first fortnight, and none of them require them to learn anything.A client is never re-explainedEvery engagement carries its own locked context: the platform split, theteam, the numbers already decided. Work starts from where we left it, not from the beginning.Constraints are enforced, not rememberedHouse style, what must never be named, which decisions are alreadyclosed. These hold whether or not I remember to say them on a Monday.The tools are already connectedNineteen live connections into the systems the work actually lives in,so a question about a board is answered from the board and not from memory.The data stays where it belongsAccess is scoped per engagement. One client's canon is not visible fromanother client's work, and nothing is trained on.Recurring work runs on a scheduleThe reports and sweeps that used to depend on someone remembering nowdepend on nothing.A build takes an afternoonScripts, dashboards, migrations and web apps. The demos on this sitewere built this way, which is the only claim here you can check yourself.How it is built is the part I do not publish. What it does for the operation is the part that matters to you,and that half is on this page in full. Click to explore
The half that matters to a client. Six differences they would notice inside a fortnight, none of which ask them to learn a tool.

What this means for you

Custom stopped being expensive. If your operation needs something the off-the-shelf tools do not do, that is now a conversation about whether it is worth having, not about whether you can afford to build it.

What it does not mean

It does not mean an AI runs your operation, and I will talk you out of that before a competitor sells it to you. Every judgment on this page is mine, every number is checked by hand, and anything I could not defend in a meeting does not go in.

A procedure somebody actually follows.

How a library of SOPs is arranged so the right one is findable, one complete procedure built to my own conventions with both checklists working, and how I decide whether a step needs a sentence, a screenshot or a recording. The friction in an SOP is never that people will not read it.

Open the SOP demo

Where AI belongs in an operation, and where it does not.

Every tool in your stack shipped an AI feature this year and most of it is the automation that was already there, repriced. Three demos: a real intake process with the one step worth metering marked out, a triage classifier you can run twice and try to break, and the pricing models that decide whether an AI feature is a budget line or a fuse.

Open the AI demos