Aquatic Artists custom waterfall
Categories
Flow

Website monitoring found five false alarms and one real bug

The website monitor went off at 6 a.m. Something was wrong with one of our sites. I pulled up the alert, looked at the flagged section, and everything looked fine to me. I closed the laptop and went back to my coffee.

That happened six times over two weeks. Five of those times, I was right to dismiss it. The sixth time, I was wrong – and a real bug had been sitting there, visible to customers, for longer than I’d like to admit.

When website monitoring alerts cry wolf

We run automated website monitoring that checks our sites regularly and flags anything that looks off. It compares page sections against a baseline – layout, content, key elements. When something drifts far enough from the baseline, it fires an alert.

The problem is that not every change is a problem. A font loads slightly differently on a Tuesday. An image swaps out because we updated the gallery. The comparison tool sees the difference and sends the alarm. Five of our six recent alerts fell into that category: legitimate changes the monitor didn’t recognize as intentional.

The issue with that pattern is obvious. Once alerts fire often enough for non-problems, you start dismissing them faster. Your response time to a real issue quietly gets worse.

So we dug into every one of those six alerts properly, traced each one back to its actual root cause, and fixed the detection logic where it was overly sensitive. That part is maintenance work. Not exciting. Worth doing.

The real bug: a project gallery failed on first load

The sixth alert pointed to a project gallery section – the part of a page that shows photos of completed work. When I loaded the page and clicked around, it looked fine. Images loaded, captions appeared, everything worked.

What I hadn’t done was run a first-load website test: load the page fresh and just wait.

A customer who lands on that page for the first time, scrolls to the gallery section, and doesn’t immediately click on anything – they would have seen a blank space. The gallery wasn’t rendering on initial page load. It only appeared after some interaction triggered a refresh.

We’d been testing from inside the system, navigating page to page while logged in. The bug only appeared when you came in cold, the way a real visitor does. Once we loaded pages fresh from outside, the issue was obvious. Fix took less than an hour once we understood it.

The lesson: test from the outside. Your workflow and your customers’ workflow are not the same path.

Backup verification has to check the destination

During this same debugging window, we found something unrelated but equally worth writing about.

Our automated backups were running. They were completing. They reported success. But we hadn’t looked closely at where the files were actually landing. When we checked, they’d been routing to the wrong cloud account – one we had access to, technically, but not the right destination for a real recovery scenario.

For weeks, our backups were “working” – no error ever appeared. But if we’d needed to restore something, we’d have been digging in the wrong place under pressure.

The rule we wrote after this: backups must fail in a way you notice, not succeed in a way you never verify. An automated process that completes quietly and routes output somewhere wrong is worse than one that breaks loudly. A loud failure gets fixed. A silent mismatch can sit there for months.

Now our backup jobs verify destination and file count as part of their completion check. If the numbers don’t match expectations, the alert goes to a human. Not a log entry. A human.

Verify backups before website upgrades

In the same week, we upgraded WordPress to version 7.0. New security patches, compatibility updates, the usual.

The rule before any significant website upgrade is simple: confirm the backup exists and that you can actually restore from it, then proceed. Not “I think the backup ran.” Confirm it. Pull a recent file from it.

The upgrade went fine. But that discipline is what makes an upgrade something you do on a Tuesday afternoon instead of scheduling a Saturday for it. A verified backup means a bad upgrade is a two-hour recovery, not a crisis.

Using an AI coordinator without giving it the keys

One more thing worth explaining: we started using an AI coordinator we call “jefe.” The name is intentional. Jefe’s job is to direct, not to do.

When we have a complex task, jefe breaks it into pieces, assigns each piece to a specialized AI assistant, and collects the results. It never edits a file or makes a change directly. It only coordinates.

I built it this way because I watched what went wrong when a single AI assistant tried to handle too many things at once: mixed-up context, lost steps, fixes from one area getting applied to problems in another. One coordinator plus focused specialists plus a human reviewing the output works noticeably better than one assistant trying to do everything.

The structure matters more to me than whichever model happens to be newest that week: a director that does not touch the work, specialists that stay in their lane, and a human who checks before anything ships. That is how I keep AI useful without letting it run the business by itself.

Tuning monitoring alerts lowers noise but adds risk

Jefe can delegate to the wrong specialist, or two specialists can return conflicting answers. The human review step isn’t optional or a formality. More than once, the consolidated report has included a finding that was just wrong, and a human caught it.

The monitoring tuning is also not a permanent fix. Reducing false positives means the thresholds are less sensitive, which means a real issue might take slightly longer to trigger. We accepted that tradeoff deliberately and will revisit it if something slips through.

Check one automated business process this week

Pick one automated process in your business this week – a backup job, a scheduled report, a recurring email – and check the actual output, not just whether it ran. Did the backup land where you expected? Does the file open? Is the report showing the right data?

This takes about five minutes. It has saved us more than once.

Categories
Flow

How we use AI to draft small business blog posts

You’re reading a post that an AI helped write. I want to be upfront about that. I also want to tell you exactly what “helped write” means, because there’s a version of this that’s embarrassing and a version that actually works – and the difference is one step that most people skip.

This week we shipped “The Flow,” the small business blog you’re reading right now. The whole publishing platform was built by our AI system. The first thirty posts were drafted by it. Every single one of them was reviewed and approved by a human – me – before it went anywhere near a publish button.

That approval gate matters more than anything else I’ll say in this post. But let me back up.

Why small business content kept getting postponed

We do good work. We build water features that people are genuinely proud of, and we have a craft approach that’s worth talking about. But content takes time. Writing a solid post about, say, why granite weathers differently in freeze-thaw climates takes a couple of hours of focused work – and that’s on a day when you’re not also managing a job site.

I’d had “start the blog” on my list for two years. It kept losing to things that had to happen today.

What changed this month: we finished building a blog service that’s part of our own AI platform. It generates draft posts from a creative brief, applies our brand voice guidelines, runs them through a quality check, and queues them for human review. The drafts come out rough in spots. They need editing. But for a contractor or small business owner, “rough draft that needs editing” beats “blank page” every time.

Here’s how this works in practice: I write a brief. The system drafts. I read it, edit what’s wrong, kill what doesn’t sound like me, approve what does. Nothing publishes without that pass. If I don’t approve it, it doesn’t run. That’s not a technicality – it’s the actual workflow, and it’s why I’m comfortable with it.

If you’ve seen AI content that sounds like it was written by no one, for no one, about nothing – that’s what happens when the human review step gets skipped. The AI doesn’t have opinions. It doesn’t know your customers. It doesn’t know the specific thing about boulder placement that makes your work different from the next guy’s. That part is still yours, and it has to go back in during the edit.

Compliant business texting for customer follow-up

While I’m pulling back the curtain this week, I want to mention something else we finally got sorted: compliant business texting.

If you’ve tried to send appointment or follow-up texts from a business number in the last year or two, you may have noticed messages getting blocked. That’s because the phone carriers tightened the rules around what they call A2P messaging – application-to-person – which covers any texts your business sends through software.

The registration process is called 10DLC (10-digit long code). Plain English: you register your business number and confirm to the carriers that you’re a real business texting people who’ve agreed to hear from you. There’s paperwork and a few days of waiting, but it’s a one-time thing.

Once approved – ours came through this week – texts reliably arrive again. Appointment reminders, job confirmations, follow-ups. We’d been routing a lot of this through email. Email works, but short, actionable customer messages are often better over text for a field-services business. Worth the paperwork.

A shop dashboard for jobs, weather, and crew decisions

The third piece we shipped this week is the one my team actually talks about when they walk past the conference room: a TV on the wall showing the whole business at a glance.

Weather for the week, because a lot of our install decisions hinge on it. Where the trucks are. How our social posts are performing. Job status. A few metrics that used to mean opening four different tabs on a laptop.

It sounds simple, and it is. But having all of it visible at once – in the spot where the team gathers each morning – changes how people talk about the day. They ask different questions. They notice things earlier. You don’t realize how much you missed until it’s there.

We also pushed a smaller version to a Raspberry Pi kiosk at the front of the shop. Customers see weather and job status updates when they come in. Low-key, but something to look at.

Where AI content automation ends and editing begins

The tools are getting better, and that is genuinely good. I use ChatGPT, Claude, Gemini, and different coding tools because each one has strengths and weaknesses. I also do not pretend any of them are infallible.

Better does not mean hands-off. The blog you’re reading involved real editorial judgment, not just automation. Some posts needed a light pass. A few I rewrote from scratch because the draft missed the point. The AI is a capable first-pass writer with no taste, no field experience, and no relationship with our customers. I bring those things. The combination works. The automation alone wouldn’t.

Same goes for the texting. Automated messages with typos, wrong names, or tone-deaf timing damage your reputation. We review templates before they go live. We test before we send. The automation handles volume and timing – not judgment.

Where to start with AI-assisted content

If you’ve been putting off a content or communication task because it feels too big for your bandwidth, it’s worth asking whether the draft step is what’s actually stopping you.

AI is reasonably good at drafts. It’s not good at approval. That part requires someone who knows the business, cares about the reputation, and is willing to say “that’s not right, fix it.” If you’re willing to be that person for your own content, the blank-page problem gets a lot smaller.

Start with one post or one email template. See if having a draft to react to changes how fast you finish the thing.

That’s what changed for us. Two years of “I should start a blog” became a blog.

Categories
Flow

Moving our AI platform without business downtime

Picture moving your whole shop across town over a weekend. Every tool, every piece of equipment, every file cabinet. Monday morning your crew shows up and everything is where it belongs. Nobody missed a call. Nobody lost an estimate. The customers have no idea anything happened.

That’s what we pulled off last week with our AI platform, and I want to tell you about the boring work that made it possible – because business downtime is not an abstract technology problem when your phone, CRM, and job schedule all depend on the same system.

Why AI platform reliability matters

Most AI coverage focuses on the visible wins. Voice assistants. Automated quotes. Smart scheduling. That stuff matters, and it does save real hours.

What rarely gets mentioned is the infrastructure underneath it. Moving a platform that handles customer calls, CRM data (that’s the contact and job database – your digital Rolodex), voice agents, and automated tasks to brand-new hosting is nerve-racking. One misconfigured server, one missing database file, one deploy that lands on the wrong machine – and you’re explaining to customers why nobody picked up the phone on Tuesday.

We had been running our operation on one hosting setup for a while. It worked, but we’d grown: more services, more data, more things that mattered. The new hosting was faster and better spec’d. But knowing it’s the right move and actually making the move without breaking anything are two very different problems.

The backup and recovery prep that saved us

Here’s what we did before we touched a single live system.

Backups, then backups of the backups. I know that sounds obvious, but I mean current, tested backups – not the ones you set up six months ago and assumed were running. We verified every database, every recording, every config file. If we had to roll back, we’d be rolling back to something real.

A warm standby. Think of this like staging a second crew truck with all the same tools. The new server was fully configured and tested weeks before the cutover. We ran it in parallel, not live, until we were confident.

Disaster-recovery drills. This is the one most shops skip. We actually practiced the restore. Not on the real system – on a copy. We blew it up on purpose and timed how long it took to come back. You do not want the first time your team runs a backup restore procedure to be during an actual emergency.

Here’s the moment that made me glad we ran the drill. Halfway through the practice restore, the voice-agent database came back up but pointed at the wrong config file – a leftover from the old server setup. The agents started, looked healthy, and would have answered calls with stale routing rules. On a test copy, that’s a finding. On cutover day with customers calling, that’s an incident. We caught it, fixed the config, documented the step, and added it to the checklist. Forty minutes of drill time, potentially hours of customer-facing grief avoided.

Host-aware deployment. When you’re managing multiple servers, you can end up in a situation where a deploy – think of it like sending a new version of a tool to your crew – lands on the wrong machine. We labeled everything so the system knows which server it’s talking to and refuses to run a job on the wrong host.

Think of it like color-coded key tags on a truck fleet. The red tag goes with Truck 1, the blue tag goes with Truck 2, and if someone grabs the wrong keys the ignition won’t turn. That’s roughly what this does for software. It sounds simple. It prevents a whole category of expensive mistakes.

What happened during the hosting migration

We moved on a Saturday. We had a checklist, we had a rollback plan, and we’d tested both. By Sunday afternoon, everything was running on the new platform. Voice agents answering calls. CRM accessible. Automated jobs running on their usual schedule.

Monday morning: no customer emails asking why something was broken. No missed calls showing up in the logs. Nothing. The migration was invisible from the outside, which is exactly what you want.

What downtime planning still won’t protect you from

I won’t pretend this was quick. The prep work I described above took several weekends. Backups had to be verified, not just assumed. The warm standby had to be configured correctly, not just spun up. The DR drills took time to design and run.

If you skip the prep and just move, you’ll probably be fine. Until you’re not. And the day you’re not is the day a customer calls and nothing answers, or an estimate goes missing, or a payment doesn’t process. At that point you’re not thinking about how much time the prep would have taken. You’re thinking about how fast you can fix it.

The boring work is what keeps the phones, quotes, and crews moving.

A downtime checklist for a small business

If your business runs on any software you depend on – scheduling, CRM, phone system, website – find out when the last backup ran and whether anyone has ever tested the restore. Not “does a backup exist.” Does the restore actually work.

That’s the question that matters. And most small businesses don’t know the answer until something breaks.

If you want to talk through what a simple backup-and-recovery approach looks like for a shop your size, reach out. It’s one of those things that’s less complicated than it sounds once you’ve done it once.

Categories
Flow

Cleaning up AI-generated code after the robot ships

I’m going to tell you something that doesn’t make it into most AI hype pieces: after a big AI-assisted development sprint, you open the codebase and it looks like a job trailer after a long install week. Things everywhere. Half-finished ideas. The same logic written three different ways in three different files. Perfectly functional, mostly, but you would not want to hand it to anyone else and call it done.

This is not a knock on AI tools. The speed is real. In a week of heavy AI-assisted coding we’ll ship more working features than we’d have managed in three weeks doing it by hand. But “working” and “clean” are not the same thing, and in software, same as in a waterfall build, the difference shows up later. You either deal with it now, or you deal with it at a worse time, under more pressure, when you can least afford it.

This past week we did a full cleanup pass on a big chunk of our small business automation platform. Here’s what that looks like and why it matters.

What AI-generated code clutter actually is

When you ask an AI coding assistant to build something, it solves the problem you gave it. It doesn’t automatically know about the solution you built six weeks ago that does half the same thing. It doesn’t keep a running sense of what the overall system should look like. It focuses, it ships, and it moves on.

The result is that over time you get modules that ballooned to five times a healthy size, logic that’s been duplicated in three places when one would do, and functions that were written once for a specific situation and then never touched again even when the situation changed. None of it is broken. All of it is weight.

Our cleanup pass this week split several oversized files into smaller, focused pieces. We found three separate places doing the same data lookup and consolidated them into one. We deleted roughly a thousand lines that were doing nothing useful. The working behavior didn’t change. The system got easier to reason about, like organizing a parts room after a busy season so the new hire can actually find things.

A clean codebase is also much easier for an AI assistant to understand and improve. When the structure is obvious, the AI spends fewer tokens figuring out where things live and less time guessing which duplicate helper is the real one. That means less wasted context, fewer wrong turns, and better outcomes when I ask it to make the next change.

Automated tests are the acceptance checklist for AI automation

Here’s the part I want to emphasize, because it’s the thing that makes the cleanup meaningful rather than cosmetic.

When you tidy a parts room, you know it worked because you can see the parts on the shelf. When you reorganize software, “it looks better” isn’t enough. You need to know it still works exactly as it did before. That’s what automated tests are for.

A test is a small program that checks one specific thing. “When this input comes in, this output should come out.” We write tests before we clean up code, run them after, and if they all pass, we know the cleanup didn’t break anything. If one fails, we know exactly what broke and where.

For a business owner, the practical point is this: if you’re going to trust AI automation with anything important, like customer communications, scheduling, or estimates, you need a way to verify that the automation is still doing what you think it’s doing. Tests are that verification. Without them, you find out something broke when a customer tells you. With them, you find out before anyone sends an email.

We added a meaningful number of tests this week to code that had been running in production without them. It’s the kind of work that doesn’t feel urgent until it suddenly is.

A small business automation example: email that files itself

While we were doing the cleanup sprint, we also shipped something that has nothing to do with code tidiness but is a good example of AI automation for a small business that earns its keep quietly: automatic email-to-record linking.

Before this, an email from a customer about a job would land in the inbox and someone had to drag it to the right folder, paste the key parts into the CRM, or just try to remember what was said. Ten ongoing projects means ten chances to miss something.

Now the system reads incoming email, figures out which customer and which job it’s about, and attaches it to the right record automatically. Open a project in the CRM and the relevant thread is already there. No filing, no copy-pasting.

It doesn’t do anything a diligent office manager couldn’t do manually. But it does it on every email, every time, without forgetting. That consistency is the whole point.

Good AI workflows beat chasing every new release

It is almost scary how fast the AI coding tools are improving. I have used tools that feel close to zero-code for certain jobs, and that would have sounded like science fiction not very long ago.

But the teams getting real value from AI tools are not the ones jumping to whatever launched last Tuesday. They’re the ones who picked a set of tools, got good at using them, and built the cleanup habit around them.

The cleanup work we did this week, testing, consolidating, removing AI-generated clutter, applies regardless of what model is running. Habits matter more than the latest release. A tidy, well-tested automation on a good-enough model will outperform a messy, untested one on the newest model.

AI code cleanup still takes a human eye

Cleanup takes real time. I spent the better part of a week on it, and that’s a week I wasn’t shipping new features. That’s the right call, but it’s a call that requires discipline. The pressure to keep adding things is constant. The pressure to tidy what’s already there is quieter and easier to defer.

The automated tests caught a few things during cleanup, but they can’t catch everything. A test only checks what you thought to write a test for. Tests reduce the risk. They don’t eliminate it.

The email auto-linking isn’t right 100% of the time either. Occasionally an email attaches to the wrong record, usually when a customer mentions multiple projects in one message. We do a periodic review to catch mis-files. The automation handles the routine; a human handles the edge cases.

The rule I’ve settled on: after any AI-assisted sprint, schedule a cleanup pass before moving to the next thing. Even an afternoon spent deleting what you don’t need, consolidating what’s duplicated, and writing one test for the thing that would hurt most to have break silently pays back more than it costs.

The robot builds fast. Cleaning up after it is still your job.

Categories
Flow

AI costs for small business: keep the meter under control

Early April, we noticed something in our usage logs: one background worker had been running a processing loop through the night, making AI calls far faster than it should have. By morning it had burned through a significant chunk of our weekly budget. The rest of the platform was fine, but we were suddenly rationing.

That’s the version of the AI cost problem that doesn’t show up in the demos. Not “AI is expensive to buy” – the tooling is pretty affordable now. The problem is that AI calls are metered like water or electricity, and without the right setup, a small business owner may not know the meter is running until the bill comes.

How AI pricing becomes a metered bill

Most people’s first experience with AI pricing is a subscription like ChatGPT Plus. That is the easy version to understand: you pay a flat monthly price for the ChatGPT web app, then use it inside the limits of that plan. At the time I’m writing this, OpenAI lists ChatGPT Plus at $20/month.

Business automation usually works differently. When software calls an AI model through an API, that API usage is separate from the ChatGPT subscription and is billed independently. The bill is usually based on tokens. A token is a small piece of text. The text you send into the model is input tokens; the answer the model writes back is output tokens. OpenAI publishes API prices per million tokens, with separate rates for input and output.

That difference matters. Typing into ChatGPT feels like using a subscription. Wiring AI into a background worker feels more like turning on a meter. If a job sends a long customer history, a pile of email threads, or a database export, the input tokens can be large before the model writes a single word back. If the response is a long report, the output side grows too.

The problem is volume. If you have an agent that runs nightly and processes a hundred records, that’s a hundred calls. If that agent has a bug and processes the same records ten times each, that’s a thousand calls. If it runs into an error and retries in a tight loop, it can make ten thousand calls before anyone notices. At that point, the affordable AI starts looking different.

Put every AI call through one gateway

The single most useful thing we did was route all AI calls through one gateway – one piece of software that every request passes through before reaching the model. Think of it like a dispatcher at a trucking company. Nobody goes directly to the driver. Every job goes through the dispatcher, who logs it, assigns it, and tracks whether it got done.

With a front door like this, you can see at a glance which parts of your system are making calls and how many. You can set rate limits. You can stop a runaway worker without taking down everything else. You can also apply different rules to different types of work. That’s where the next few dials come in.

Four AI cost controls that actually move the meter

Route simple tasks to cheaper models. Not every job needs the most capable AI available. If you’re classifying whether an incoming email is junk or a real lead, a smaller, faster model costs a fraction of the price and works almost as well. We push classification, labeling, and formatting work to lighter models, and save the heavier ones for things that actually need them: drafting a proposal, generating a response that represents the company, handling a complex phone inquiry.

Batch multiple items per call. If you have twenty emails to screen, sending them one at a time means twenty calls. Sending them together in a single call with the right instructions means one. Not every task batches cleanly, but when it does, the savings are real.

Add circuit breakers. A circuit breaker is a rule that says: if this worker makes more than X calls in Y minutes, stop and alert me. It’s the equivalent of a breaker panel in an electrical system. When something goes wrong, it fails loudly and stops, rather than running quietly until the bill arrives.

The return-on-investment math, honestly

I talk a lot about the value of these tools because the value is real. A $20-a-month AI account can do things that feel ridiculous compared with what software used to cost. But that does not mean AI is automatically cheap once you wire it into a business process.

Here is the kind of math I mean. As of this edit, OpenAI lists GPT-5.5 API pricing at $5 per million input tokens and $30 per million output tokens for standard short-context calls. Suppose a useful daily review job uses 500,000 tokens each run: 360,000 input tokens and 140,000 output tokens. That is $1.80 on the input side and $4.20 on the output side, or $6 per run. Run it twice a day and it is about $12/day. Over a 30-day month, that is $360.

$360/month may be a great deal if the work is worth more than that. If the review saves several hours of office time, catches missed leads, or prevents a real operational problem, the cost is easy to justify. The question is not whether the AI bill is zero. The question is whether the job it is doing is worth more than the meter it runs.

Now flip the example. A similar 500,000-token job on a more expensive model, or one that produces much longer output, can cost a lot more. Using GPT-5.5 Pro rates from the same pricing page, a 500,000-token run split evenly between input and output would be $7.50 for input and $45.00 for output, or $52.50 per run. Run that once a day and you are at $1,575/month. If nobody reads the report, approves the suggestions, or turns the output into a decision, the value is zero. You didn’t buy automation; you bought an expensive pile of unread text.

The honest return-on-investment math is not “AI saves X per month.” It is “AI saves X per month if you run it cleanly and use the output.” A single misbehaving worker, or a perfectly functioning worker that nobody looks at, can flip a sensible budget into an ugly one faster than you would expect. Cost discipline is part of the return, not a separate accounting chore.

What AI budget controls won’t do on their own

Circuit breakers and rate limits don’t configure themselves. Getting value out of a usage dashboard requires someone who understands the system well enough to know which numbers should concern them. For a small shop, that might mean a monthly review of your AI vendor’s billing dashboard, looking for any line that jumped unexpectedly.

Worth naming too: if you’re using AI tools you didn’t build yourself (which is most small businesses), you may not have direct access to the usage data. Ask your vendors. A good AI tool for a small business should show you, at minimum, call volume per month and whether there are any anomalies. If they can’t tell you that, it’s worth asking why.

What I’d do before adding the next AI tool

Before you add any new AI feature to your business, estimate how many times it will run in a day. If it runs once per customer inquiry and you get ten a day, that’s ten calls. If it runs on every incoming email and you get a hundred emails a day, that’s a hundred calls. Write the number down. Then check whether your AI vendor’s pricing makes that sustainable at the volume you’re actually planning for – not just the volume you have today.

That five-minute exercise has saved us from a few decisions that would have looked a lot different at the month-end invoice.

Categories
Flow

How we use AI to review our small business automation

I came in one morning to find that our AI had filed 1,004 improvement tickets about our small business automation while we slept.

That number stopped me cold. A thousand suggestions – about its own performance, its own gaps, things it thought should work better. Most of them were probably fine ideas. None of them were going to get built automatically. That part is entirely up to us.

That’s the setup for this post: not “AI improves itself,” but “AI proposes, humans decide.” The distinction matters more than it sounds if you are using AI tools around real customers, schedules, email, or job records.

What our AI review system actually does

The tool is something we call the Program Improvements Manager, or PIM. Every night, it runs a review pass across the AI systems we’ve built: voice agents, email tools, the CRM integration, the scheduling app. It looks for patterns: things that failed more than once, places where a response was slow, steps that a human had to correct, areas where the output was inconsistent.

Then it writes up suggestions. Each one gets a rough estimate of effort and a rough estimate of impact. They get sorted into categories: reliability improvements, new capability requests, content updates, configuration changes.

By morning, we didn’t have 1,004 raw suggestions. We had 129. That was better, but it was still too many. It was not practical to sift through 129 active improvement suggestions every day and make good decisions about all of them.

That became the real lesson: the system had to be tuned for usability, not just output. A review tool is only useful if the queue is small enough that a person will actually read it. You do not want AI doing a million things if all but a few get stuck in a human review backlog.

That human is me, usually. I review the queue, decide what is worth building, and tune the system when the list starts turning into noise. Some suggestions go into our actual development backlog. Most get noted and watched. A few get dismissed. Nothing happens automatically.

The best use of AI here is not as a magic box for every shiny new idea. It is a tool to reduce work we were already doing. If it overwhelms us with a pile of crap we will never get a chance to look at, it has failed, even if every individual suggestion sounds clever.

Why human approval is the whole point

An AI that can modify its own behavior without oversight is a liability. I’m not being dramatic about that. It’s just true. The value of an AI self-review system like this is not that it fixes things on its own. The value is that it sees things I would miss, at a speed and scale I can’t match, and hands them to me in a form I can actually act on. The judgment call stays with me.

The analogy I keep coming back to is a good estimator who reviews all your past jobs and writes up a report: here’s what came in under budget, here’s what ran over, here’s a pattern I’m noticing. That’s genuinely useful. But the decisions about how to bid the next job, which crew to put on it, when to take a pass – those stay with the person who signs the contracts.

Same idea here.

Nightly backups make the automation safer

The same night the PIM runs, a set of backup jobs runs too. Every customer recording, every voice-agent transcript, every video gets quietly copied to cloud storage. Not because anything bad happened, but because “automated backups run every night” is the kind of boring sentence that prevents years of work from disappearing.

I don’t think about it most days. That’s the point.

A few weeks back I was looking at the backup logs and noticed they’d been running without a single gap for over a month. Thousands of files, dozens of sessions, completely automated, no one watching. That’s the kind of automation I actually trust. Not because it’s clever, but because it’s predictable.

Why AI process improvement is practical now

One reason this is practical now is that the AI tools have gotten cheap enough for normal business experiments. In the videos I’ve made about AI, I keep coming back to the same point: a lot of this is not five-figure enterprise software anymore. Sometimes it is a $20-a-month tool, or a small metered cost, doing a job that would have taken a person hours.

That does not mean everything should be automated. It means the math is finally good enough that a small company can try things, keep what works, and shut off what does not.

This only works if someone reviews the queue

An AI that writes its own improvement tickets is only as good as the person who reads them. If the queue piles up unreviewed for weeks, or if the person reviewing it doesn’t understand the systems well enough to evaluate the suggestions, you get noise. Or worse, a false sense that the system is improving itself when really it’s just generating paperwork.

This approach works for us because I’m close enough to the code and the business logic to make calls quickly. For a shop owner who doesn’t build their own tools, the right version of this might just be a monthly review session with whoever manages your software vendors. Periodic review by a person who can act on it matters more than the specific implementation.

One place to start

If you’re building any kind of automation, build the review step first. Not as an afterthought. Decide ahead of time: how will I know if this is working? How will I know if it’s quietly doing the wrong thing? The answer doesn’t have to be sophisticated. It can be a weekly email summary, a log you glance at on Mondays, a number that should stay below a threshold. Just something a human actually reads.

Categories
Flow

Website automation for Project Pages

There’s a photo on my phone of a waterfall we finished last fall. Great install. The kind of job you want on your website. I took about forty photos on-site, picked the best three, and then set them aside because getting them onto the website meant sitting down, opening three different tools, resizing images, filling in fields, writing a caption, and publishing – and I had six other things on my list.

The photos sat for two weeks.

That’s not a technology problem. That’s a friction problem. The harder you make something to do, the more often it doesn’t get done. And for a small shop, your website is your portfolio. If it doesn’t reflect your recent work, you’re leaving your best sales tool half-empty.

What publishing a Project Page used to look like

Before we built our website management system, getting a finished install onto the site went something like this: open the WordPress admin, create a new post, upload images one at a time, resize or crop as needed, write a title and description, assign categories and tags, check that the gallery template looked right, preview it, fix whatever was off, and publish. Then separately update the portfolio index.

From start to finish, about 15 to 20 minutes – on a good day, when nothing went wrong.

That may not sound like a full afternoon. But multiply it by every project we do in a year, and it adds up to a real chunk of time. More importantly, it’s the kind of task where friction wins. You do it when you have a clear desk and a focused hour. Which means it often doesn’t happen at all.

What website automation changed

We built a custom website editor that handles the whole project publishing workflow in one place. You pick the photos, the tool handles resizing and optimization, it generates a title and pulls in the project details we’ve already entered elsewhere, it sets the right template, and it publishes. The whole thing takes under a minute now.

The difference isn’t that the computer is working faster. It’s that we eliminated the switching – jumping between tools, re-entering information that already existed somewhere, hunting for the right image dimensions. The automation handles the steps that were only ever annoying busywork.

The time savings that compound most reliably for a small business are usually the boring ones. Shaving 15 minutes or more off a task you do every week. Removing the friction that caused you to skip updating your portfolio for two weeks straight. Nobody writes headlines about that, but it’s where the real time goes.

The YouTube and SEO workflow

We also built a YouTube management tool on the same principle: remove the friction from getting project content onto the channel.

The piece I find most useful is the AI thumbnail draft. When you publish a new video, the tool proposes a thumbnail based on the project photos and the title. It’s not always perfect – you still need a human eye on it before it goes live – but having a draft to react to is much faster than staring at a blank canvas and thinking about what to make. Most of the time the draft is 80% of the way there, and I’m adjusting rather than creating from scratch.

The SEO scoring layer checks the title and description against what tends to perform well in search – not in a black-box way, but by flagging specific things: title too long, description missing key terms for a Project Page, that kind of thing. Again, a guide, not an oracle. But useful enough that I actually use it instead of skipping the step because it feels like too much work.

My honest take is that you do not need to chase every AI update for this kind of work. Pick a friction point in your own operation and remove it. In our case, that meant getting good project photos out of my phone and onto the website before they got buried. Better tools help, but they help a lot more when you have already built the habit of using them.

What small-business automation still can’t do for you

Automation handles the steps that are well-defined and repeatable. It doesn’t replace judgment.

The AI thumbnail draft still needs a human look before it goes live. The SEO suggestions are starting points, not guarantees – what ranks well shifts, and a tool trained on last year’s patterns isn’t always right about this year’s. Publishing automation means nothing if the underlying content is weak or the photos are poor quality.

There’s also a real risk of automating too fast. We’ve had moments where the system published something with a formatting issue that looked fine in preview and wrong on the live page. Automation moves fast, and fast is useful only if you still have a review step before the thing is public.

The rule we follow: automate the tedious parts, keep a human eye on anything that touches the customer-facing result.

The math worth doing

If your shop does fifty Project Pages a year, and each one takes 15 to 20 minutes, that’s about 12 and a half to nearly 17 hours. Cut it to under a minute, and you’ve saved roughly 12 to 16 hours – which matters even more when you remember that those hours weren’t all in one block. They were fifteen minutes here, twenty minutes there, scattered across a year of days when you already had too much on your list.

The real savings aren’t the time. They’re the jobs that actually make it onto your portfolio instead of sitting in a folder for two weeks.

If you’re managing your own contractor website and marketing, even basic tools – a photo-resize shortcut, a template that fills in the repetitive fields – can make a real difference in whether you actually do the thing or skip it. Start with the step that causes the most friction. That’s usually where the time is hiding.