Skip to content

Case study · Marketing operations

Turning a two-hour manual audit into a three-second report

A repeatable audit of how AI search engines see a business: crawler access tested by real requests, structured data, identity signals and quotability, rendered to a client-ready PDF from one command.

~3 s
From URL to a 3-page PDF
5
AI crawlers tested with real requests
4
Weighted scoring dimensions
100%
Of figures traceable to a check

Context

Ads promised prospects a free report on how ChatGPT, Perplexity and Google's AI see their business. Producing one by hand meant checking robots rules, testing crawlers, reading schema and writing it up, and the reports varied with whoever made them.

The problem

  • Reading robots.txt is not the same as testing access. Firewalls and CDNs block AI crawlers that robots rules allow.
  • Naive schema checks produced false negatives: a page marked up as a specific business type was scored as having no markup at all.
  • Hand-edited numbers in a client PDF cannot be defended when a client asks where a figure came from.

Architecture

  1. 01Test, do not inferEach crawler is checked by requesting the page with its real user agent and recording the status code, which catches firewall blocks that robots rules hide.
  2. 02Measurements and rendering are separateOne module measures, another renders. The template can only display numbers the audit produced; nobody types a figure into the report.
  3. 03Schema matched by type familySpecific business types are recognized as business markup, which fixed a class of false negatives that had under-scored real clients.
  4. 04Fail loudlyAn unreachable site exits with an error and writes no PDF, so a broken audit can never be sent as a real one.

Security model

  • Read-only: the audit only performs public GET requests a search engine would make.
  • No credentials or client data are needed to run it.

Tasks now automated

  • Testing five AI crawlers against the live site
  • Checking structured data, identity and citation signals
  • Scoring on four weighted dimensions
  • Rendering the client PDF

Time returned

~2 hrs to 3 s
Per audit

Estimated manual time for the same checks and write-up, versus the measured CLI run of 2.7 to 3.4 seconds.

0
Hand-typed figures per report

Every number comes from the measurement module.

1
Command per prospect

URL, business name, city and trade in; PDF out.

Time figures are estimates per unit of work, based on the manual steps the build removed. Every other number on this page is measured.

Outcome

Any URL becomes a consistent, defensible 3-page report in about three seconds.

Scores moved for the right reasons: one site went from 76 to 93 when the type-matching false negative was fixed.

If a number goes in front of a client, the code that measured it should be the only thing allowed to write it.

Next step

Tell us which system is slowing you down.

A 15 to 20 minute scoping call. If it is a fit, scope, price and timeline follow in writing.