Real work

Systems I run my own business on

Built for my waterproofing consultancy, not for clients. What each one does, how it works and where it stops.

My back office: jobs, invoices and follow-ups

Real · in daily use since January 2026

After a call or a site visit, I record a voice note. It comes back as suggested changes to my records, and I review them before they go in.

  1. After a call or site visit, I record a voice note.
  2. It’s transcribed and turned into a structured debrief.
  3. The changes it suggests are staged for me to review.
  4. I approve them, and an update routine carries them into the job records, the invoice ledger and the follow-up calendar.

When I type a debrief instead of recording one, it feeds the same update routine.

Illustrative walkthrough Invented sample data, laid out to show the steps above. Not a screenshot or a recording of a real run, and not a real job, client or invoice.
  1. 1 The voice note

    Voice note · Monday, 4:52 pm · sampleLeaving the Example St job. Membrane’s down on both balconies. The earliest I can get back for the flood test is Thursday. Builder’s happy with where it’s at. Remind me to send the stage one invoice tomorrow. And they’ve paid the last one.
  2. 2 The changes it suggests

    Staged for reviewJ-0417
    Status
    Membrane down, both balconies
    Note
    Builder signed off the work so far
    Next action
    Flood test booked for Thursday
    Invoice
    Stage one: send Tuesday
    Invoice
    Previous invoice: mark as paid
  3. 3 My review

    • Accepted The status, and sending the stage one invoice on Tuesday.
    • Rejected ‘Signed off’. A builder being happy on site isn’t a sign-off, and the record shouldn’t say it is.
    • Edited ‘Flood test booked’ became ‘Book the flood test, aiming for Thursday’. Nothing was booked yet; the note only said Thursday was the earliest return.
    • Edited ‘Mark as paid’ became ‘Client says paid. Check the bank on Wednesday’. The paid date stays empty until the money arrives.
  4. 4 The record afterwards

    Job recordJ-0417
    Status
    Membrane down, both balconies
    Next action
    Book the flood test, aiming for Thursday. Due Tuesday
    Invoices
    Stage one: send Tuesday. Previous invoice: client says paid, check Wednesday
    Follow-ups
    Wednesday: check the bank. Once the test is booked: add its date. After the test: call the builder with the result
Documented
The voice-note path: transcription, a structured debrief, changes staged for me to approve, then the update routine.
Illustrated
The walkthrough above. Same steps, invented data.
Not shown
Output from a real run. Real records hold client details, so none is published here.

What it keeps. It’s a set of AI-assisted routines over plain files I own. I call it Ops, which is where the name RunByOps comes from. It keeps:

  • a record for each lead and job, with its status and next action
  • an invoice ledger, each invoice tied to its job reference, with issue date, due date, payment terms, paid date and status
  • a follow-up calendar
  • short debriefs from site visits, calls and meetings
  • a morning summary of the pipeline, follow-ups due and the day’s priorities.

The rules I’ve written into it. These are written instructions for the AI-assisted routine. They describe how it’s meant to work, not database rules that make a mistake impossible.

  • Keep the ledger in step. Any change that touches an invoice should update the ledger in the same save, so follow-ups don’t work from stale figures.
  • A client’s own requirement. One regular client needs a purchase order number on every invoice, so the rules call for one.
  • Follow-ups nobody wrote down. When a lead or job changes state, a dated follow-up should go into the calendar in the same save.
  • Sources that disagree. When two records say different things, don’t quietly pick one: list both, then record the reconciled answer with a timeline.

Where it stops. It started in January 2026, and the invoice ledger was added in May. It’s built around one person and plain files, so it isn’t something I’d install in your business as it is. What transfers is the pattern: one record per job, a ledger tied to it, follow-ups set when something changes, and a person reviewing what the AI suggests. Guides 01 and 03 are the spreadsheet version, and guide 04 is about making an AI step like this one reliable.

Photo registers: a converter for observation-only records

Real · built February 2026

The problem. My early photo registers did two things at once. Beside each photo was what I saw, plus a severity rating and a recommended action. On the jobs these registers support, those calls belong to the appointed consultant, not to whoever records the photos. Putting them in my register blurred who decided what.

What I built. An observation-only register format, and a small script that converts a finished register into it, so changing the format didn’t mean redoing registers by hand.

What the script changesRegister v B
Removes
Severity and recommended action
Renames
‘Defect type’ to ‘potential defect type’. ‘Description’ to ‘visual observation’
Splits
One location column into elevation, level and area, by matching keywords
Rewrites
Removes interpretive phrases on a fixed list, and replaces the disclaimer with observation-only wording
Photos
Carries the first photo in each row into the new table

What it expects. My own register layout: a Word table with eight columns and one photo per row. On the register it was written for, 15 rows with one photo each, the observation-only version has all 15 photos, unchanged.

Sample run A sample row written for this page and run through the actual script on 4 October 2026. Sample data, not a client job.
Before · old layoutP-01
Photo
1 sample image
Location
North elevation, Level 2 balcony
Level
Level 2
Defect type
Joint/Sealant Failure
Severity
High Removed
Description
Sealant cracked and separated along about 1.2 m at the balcony upstand. Removed by the script: Pattern may be consistent with movement at the slab edge.
Action
Remove and replace sealant. Investigate slab movement. Removed
After · what the script producedP-01
Photo
The same image, carried across
Elevation
North Facade
Level
Level 2
Area
Balcony
Potential defect type
Joint/Sealant Failure
Visual observation
Sealant cracked and separated along about 1.2 m at the balcony upstand.

What the rest of the sample showed

  • Two photos in, one out. A row with two photos came out with only the first. That suits my one-photo-per-row registers, and it’s a real limit for any other layout.
  • A missing photo is flagged, not hidden. A row without one was marked ‘[No photo in source]’.
  • The phrase list is only a list. ‘Likely caused by poor adhesion’ stayed in, because that wording isn’t on it.
  • The location split works by keyword. ‘North elevation, east corner’ was filed under East Facade.

Where it stops. It’s built for my own register layout, not as a general tool. Because it works from fixed lists of phrases and keywords, the converted register is a draft for a person to read, not a finished document. Observation-only is now the standard for the registers I deliver: I record what’s there, and the appointed consultant makes the calls.

The same idea runs through guide 02: record what was seen, and leave causes and recommendations to the person responsible for them.

Want the pattern in your business?

I’d build it into your tools, for your work and your team, and test it on real examples before anyone relies on it.