← Back to all work
The Uptern audit report on a laptop and a phone: the overall site health score, the dimension-by-dimension breakdown, and the findings that need attention. Uptern

Automating the audit, keeping the judgment

Project
Self-directed service and product
Role
Audit methodology, SEO & conversion strategy, design, build
Timeline
2026, ongoing
Status
Service sold and running
Disciplines SEO Technical Audit Conversion Accessibility Product Strategy
Stack PHP WordPress PageSpeed Insights Search Console GA4
Scope Solo build 10 audit dimensions
summarize Overview

The Opening

I write a line in these audits that lands harder than anything else in the document. Some version of: the donation experience is quietly working against you.

It works because it's usually true and nobody has ever said it out loud. A nonprofit's donate flow is the most consequential page they own, and it is almost never the page anyone is watching. It just sits there, losing a percentage of everyone who meant to give, year after year, with no alarm attached.

Finding that takes judgment. Finding the four hundred pages with missing meta descriptions does not. And once I noticed I was charging the same hourly rate for both, I had a product problem.

The Challenge

A real site audit splits cleanly in two, and the halves are worth wildly different amounts.

Roughly sixty percent of it is mechanical: crawl the site, find the missing metas, catch the broken links, flag the images with no alt text, measure the Core Web Vitals, check the security headers. It's genuinely valuable and it is completely uncreative. A machine should do it, because a machine can do it at three in the morning for free, and every hour I spend on it is an hour billed at a rate that insults us both.

The other forty percent is why anyone hires me. Whether the donate button is fighting the newsletter signup for attention. Whether the recurring-giving option is buried where nobody will find it. Whether the content answers what people actually search at 2am when they've just been diagnosed. Those are judgment calls, and they don't survive automation.

So the question wasn't "should I build a tool." It was: which sixty percent do I hand to the machine, and what am I protecting on the other side of that line?

My Role

Everything. I developed the audit methodology, ran it for a paying client, and built the software that automates it: the modules, the integrations, the approval architecture, the reporting. The audit is the service I sell. The tool is the machine I'm building to deliver it at a margin that makes sense.

The Approach

01

Do it by hand first

The audit came before the software, on purpose. A full independent crawl, every link verified rather than trusted, live search rankings checked by hand, medical citations validated against their actual sources, a prior vendor's claims tested against live data. It's hard to automate a process you've never actually run, and I wanted to know where the tedious parts really were before deciding what to build.

02

Let the real audit become the spec

Rather than guessing at features, I benchmarked the tool against the audit I'd actually delivered, dimension by dimension, and measured the gap. That produced an honest number: about sixty percent of the audit's data points are automatable, including the three highest-effort fixes. Everything else stays human because it should.

03

Never let it write without permission

The fix engine drafts changes; it doesn't apply them. Every suggestion enters an approve, edit, or skip queue, and the previous value is captured before anything is written. Restores bypass the plugin abstraction entirely and write straight back to the original field, so a client who switches SEO plugins later can still undo what I did.

04

Keep the keys off the client's server

The plugin never holds an AI vendor key. Every AI call routes through a proxy I control, authenticated by license. Keys rotate centrally, and a lapsed license cuts off access server-side rather than relying on an install to behave. It also means a client site being compromised doesn't hand anyone my credentials.

What the Client Sees

The report is the product a client actually holds. Ten dimensions, each with its own severity counts and a status they can read at a glance, sitting above the detail. It's the difference between handing someone a hundred-page PDF and handing them a decision.

The Harbor Light audit report shown on a laptop and a phone: the same Site Audit Report on desktop and on mobile, each with the ten-dimension breakdown and severity model.

Real report, fictional client. Every organization name, domain, score, and finding here is invented. The structure, dimensions, and severity model are the live ones.

flag The Work

What It Audits

Ten dimensions, each with its own checks and its own reason for existing:

Page Speed: Core Web Vitals, Lighthouse, LCP, CLS, INP, TBT, TTFB, page weight, render-blocking resources
SEO Health: titles, meta descriptions, duplicates, truncation, broken links, rankings, structured data
Technical Health: SSL, robots, canonicals, sitemap completeness, redirect chains, tracking verification
Content: editorial cadence, topic depth, E-E-A-T signals, alt text, social previews, AI search readiness
Links & Authority: backlink profile, internal linking, orphaned pages, citation quality, link velocity
Accessibility: WCAG 2.1 AA, alt coverage, keyboard navigation, ARIA, focus indicators, captions
Conversion: donate CTA placement, clicks-to-give, recurring prominence, social proof, matching gifts, mobile friction
Security: response headers, version disclosure, login exposure, consent compliance, SPF and DMARC, spam protection
Opportunities: Ad Grants utilization, AI search visibility, content hub gaps, citation outreach, local readiness
SEO & SEM Strategy: keyword clustering by intent, competitive positioning, paid opportunity mapping

The tool ships eight working modules against that spec. Three run the full loop of detect, draft, approve, write, and keep a backup: meta descriptions, alt text, and a live 404 logger that watches real traffic rather than crawling for hypotheticals and proposes redirects once a URL is actually being hit. Five diagnose only: PageSpeed with nightly rotation and score history, competitive SERP analysis, AI citation tracking, a chronological timeline of every change, and tokenized client reporting.

Accessibility is the honest one. Automated checks catch about thirty percent of WCAG criteria. The scores confirm real gaps, but they cannot clear a site, and any report that implies otherwise is lying to the client.

palette Product Foundation

The Principles

Most of the interesting decisions on this project were about what the software is not allowed to do.

Protect the judgment layer

Conversion and UX calls stay manual on purpose. Not because they're impossible to automate badly, but because they're the reason a client renews. The tool gets them eighty percent of the report at near-zero marginal cost. The last twenty percent is a person who has looked at their donate flow and has an opinion.

Nothing writes without a human

AI drafts, a person approves, the old value is captured first. An SEO tool that rewrites two hundred meta descriptions unattended isn't a time-saver, it's an incident waiting to be discovered three weeks later by someone's traffic report.

Diagnose for the client, fix for me

A deliberate reversal partway through. Clients see findings, statuses, and history. The fix engine is vendor-gated, because it isn't a client feature. It's my own labor-saving machinery, and giving it away means giving away the thing that makes the engagement viable.

Say what the tool can't see

Automated accessibility checks catch about thirty percent of WCAG. Domain authority isn't automatable in-plugin at all. Where the machine is partial, the report says so. A number presented as complete when it isn't is worse than no number.

The audit is the sales artifact. The tool is the retention artifact.

A one-time audit wins the engagement; the installed system that keeps producing that report every month is what turns it into a relationship. Which means the software's job was never to replace me. It was to make the boring sixty percent cost nothing, so what a client is actually paying for is the part only a person can do, and so that what I'm selling stops being hours and starts being judgment.

Automate the measurable
65+

Data points captured in a single audit, before the SEO and SEM opportunity map is built on top.

The methodology won a web health and remediation engagement, now underway, and runs as a service while the software that automates it is in active development.

A desktop performance score of 96 in an Uptern report, with the Core Web Vitals figures behind it.
The Conversion dimension of an Uptern report, subtitled donor experience and CTA effectiveness.
An overall site health score of 91, shown as a ring in an Uptern report.
A count of 48 healthy signals in an Uptern report, scoring the elements already working.

Judgment Is
the Product

About sixty percent of the audit's data points can be gathered automatically, measured against a delivered engagement rather than estimated. The rest is reading them together, which is the part worth paying for and the part that stays manual.

10Dimensions
60%Automatable
5Disciplines
lightbulb Takeaways

What This Taught Me

The most valuable thing I own turned out to be the part I won't automate, which I did not expect going in. It would be easy to build a tool that generates the whole report. Plenty exist. They produce a hundred-page PDF nobody reads, because a list of every problem with your website is not the same as knowing which three to fix first, and the second thing is the entire job. The tool's ceiling isn't technical. It's that a checklist can't tell you the donation experience is quietly working against you.

So the line I drew is the business model. Machine does the counting. I do the looking. A client who pays for counting will leave the moment something cheaper counts; a client who pays for looking stays, because looking is the thing that's actually scarce.

The other lesson is smaller and more uncomfortable: I built this because I was annoyed at how I was spending my time, and being annoyed turned out to be better product research than any market analysis I could have run. The spec wrote itself the moment I stopped guessing at features and started measuring the tool against work I'd already done for someone who paid me.

grid_view More Work
Willet

A Conference Platform for the Room That Matters Most

Product · Self-Directed

A nonprofit's conference app kept treating a homecoming like foot traffic. So I built the alternative.

Read the case study →
St. Baldrick's

Turning Search Traffic Into Childhood Cancer Research Funding

Nonprofit · Brand & Growth

Sixteen years as a shavee before I ever worked on the brand. Then the joy started draining out of the marketing.

Read the case study →