Plan · 2 Nov 2026 · Rachel and Roman
What checkup.romanlogic.com sends people after they type their business name. Fully automated, objective, built on Apify, and tested internally before the page goes in any bio.
Each step runs on Rachel's box beside the sign-up service. Timings are targets to measure in testing, not measurements yet.
One point per check, each a yes or no a machine can answer. The report shows every check, not just the total, so the score explains itself. Proposed list, for Roman to edit:
| Check | Passes when | Why a customer cares |
|---|---|---|
| Phone number up front | A tel: link or phone number is visible in the first phone screen | Most callers are on a phone and will not scroll to find it |
| Loads fast on a phone | PageSpeed mobile performance 50 or more | Slow pages lose callers before they load |
| Says where you work | The town or service area appears on the homepage | Google and customers both need to know you serve them |
| Title names trade and town | The page title contains the trade word and the town | It is the blue headline people see in Google |
| Has a description | A meta description of 70 to 160 characters | The grey text under that headline |
| Clear main heading | Exactly one H1 that names a service | Tells a visitor in one second what you do |
| Images described | 80% or more of images have alt text | Google reads alt text; screen readers need it |
| Shows reviews | Reviews or testimonials appear on the homepage | Proof before they call |
| Business details for Google | LocalBusiness (or a trade subtype) schema present | Helps Google show your hours, area and rating |
| Secure and mobile ready | HTTPS with a valid certificate, and a mobile viewport tag | Browsers warn people off sites without them |
No website: the score says "no website" instead of a number, and the report leans on the Google listing, competitors and searches. The three fixes shown up top are the failed checks in the table's order, which puts the ones that cost calls first.
| Need | Source | Notes |
|---|---|---|
| The business, its listing, rating, reviews | Apify compass/crawler-google-places | The most used Maps scraper (46k users in 30 days). Charged per place found. |
| Competitors and rank | Same scraper, searching "[trade] near me" at their address | Top 10 places; we show the top 3 and where they sit. |
| Searches people use | Apify apify/google-search-scraper (related searches, People also ask) plus Google's suggestions | No search volumes on purpose: we only claim a search exists, never how big it is. |
| Site text, tags, schema | Our own crawler on the box (plain HTTP plus headless Chrome) | Free and fast; Apify's content crawler only if a site blocks us. |
| Speed | Google PageSpeed Insights API | Free with a key. |
| Screenshots and markers | Headless Chrome on the box | Markers drawn at the real position of the phone number, heading and so on. |
apify-watch.timer reads the Apify account's spend every 10 minutes and alerts the group above $1 in an hour, $5 in a day or $25 in a billing cycle. Above $10 in a day it pauses checkup sign-ups until someone deletes /opt/checkup/apify-paused. The audit worker will obey the same pause.The test set: about 20 real businesses across trades. Some with sites we already know are good or bad, some with no site, one franchise, one with several locations, and one whose name is shared with another business.
The review page: one internal page listing every audit with each check marked right or wrong by us.
Go live when: every business is matched correctly, each check is right on at least 18 of 20, and 19 of 20 finish inside 5 minutes. Then the page goes in the bios.
Find the business (DataForSEO Maps) and score the website, run on the box on five real businesses. Every one finished in 14 to 27 seconds.
| Business | Match | Score | Fixes it named | Seconds |
|---|---|---|---|---|
| Smith Central Heating and Air, Waynesville | high | 9/10 | Phone number up front (true: the first phone screen has no number or call link) | 16.7 |
| Aspen Electrical Services, Tulsa | high | 8/10 | Has a description, Clear main heading | 14.2 |
| Denver Roofers, Denver | high | 8/10 | Clear main heading, Shows reviews | 23.1 |
| Reliant Plumbing, Austin | high | 7/10 | Loads fast on a phone, Clear main heading, Business details for Google | 27.2 |
| Peppy Heating and Cooling, Boise | high | 8/10 | Images described, Business details for Google | 15.8 |
Run it: ssh vps, then cd /opt/checkup && set -a && . ./checkup.env && set +a && ./venv/bin/python audit.py "Name, Town". Results land in /opt/checkup/audits/ with phone and desktop screenshots. Everything runs on the box, never a laptop. Fixed during the run: a business name with a comma in it ("Services , LLC") was read as the town.
The official source for the business lookup and competitors, to compare against DataForSEO in the test. About 15 minutes, in the Google account that owns RomanLogic's Google Cloud (the PageSpeed key's project can host it).
2.25.164.166 (the box)..env as GOOGLE_PLACES_API_KEY=... and tell Claude: it goes to the box and runs beside DataForSEO on the test set.Check the current free allowance and per-request prices on Google's Places API pricing page before raising the quota; they change.