Case studies

A 90-person specialty contractor replaced four dashboards with one Monday report and adds a local-search page every week

The team spent Mondays arguing about which number was right. Phos AI Labs gave them one definition, one report, and one new city page every week, trained the office to run it, and keeps tuning it every month.

14 to 40

live local-search pages

34%

more qualified calls from search

5 hrs to 20 min

weekly reporting time

An astronaut in a Phos AI Labs suit pinning cities on a map of Florida

The problem

On a Monday in January, the marketing meeting ran 50 minutes and ended without a decision. The owner, the general manager, and the office manager each brought a different number.


GA4 said website visits were up 18%. The web vendor’s monthly PDF said they were down 6%. CallRail showed 61 calls from search, and the office manager’s own log counted 39 real leads.


The owner asked one question: which city should we go after next? Nobody could answer it, so the meeting moved on, and the next city page stayed unwritten for another month.


Two weeks later, the company lost a $64,000 whole-home impact window job in Jupiter. The homeowner told the estimator she had already met with a competitor. She found them through their page on Jupiter’s permit rules.


The company had installed windows on 31 homes in Jupiter. It had no page about Jupiter. The team had four dashboards, and none of them could say where the next job would come from.

Where Phos AI Labs came in

Phos AI Labs started with a three-week AI Readiness Audit. We interviewed the owner, the general manager, the office manager, two estimators, the two people who answer the phones, and the outside web vendor.


Then we read the data: 18 months of GA4, Search Console, and Google Business Profile history, 14 months of CallRail logs and recordings, and the PostHog events on the estimate form.


Three findings shaped everything after. GA4 and PostHog were both counting a sister shutter-repair brand on a second domain, which made up 31% of reported sessions. Nobody shared a definition of a qualified call.


The third finding pointed at the opportunity. The 14 city pages the company already had produced 41% of its search calls. The site covered 14 of the 46 cities its crews actually served.

How we worked together: audit, foundation, implementation, refinement

The baseline

Before any build talk, we measured. The table below became the scoreboard for the whole engagement.

KPIBaseline
Live local-search pages14
Qualified calls from search per month58
Estimates booked from search calls per month22
Weekly reporting time5 hrs
Dashboards checked weekly4
Reported sessions from the wrong domain31%
Live city pages with title, link, or schema errors9 of 14


The five hours belonged to the office manager. Every Friday she exported four dashboards into a spreadsheet, and every Monday the team questioned the spreadsheet.

Setting the foundation

The AI Foundation phase took two weeks. We sat with the owner and the general manager and wrote down the definitions the team had been arguing about for two years.


A qualified call is a first-time caller, on the line 60 seconds or more, inside the nine-county service area, asking about a new install or a quote. Warranty calls, vendors, and job seekers do not count.


Qualified traffic is sessions on the main domain from the service area, with staff devices and the sister brand removed. Every report we built later uses these two definitions and nothing else.


We also wrote the city page playbook. Each page runs 700 to 900 words and must cite that city’s permit office, its wind zone rules, at least two real local projects with photos, and the state contractor license number.


The playbook also lists what a page must never do: quote prices, promise install dates, or claim work the company has not done in that city. No city gets a page unless crews can reach it within 75 minutes.


Approval rules went into the same document. The office manager approves every page before it goes live. The owner approves every city added to the queue. All reporting connections are read-only.

Deciding what to build

With the baseline and the playbook in hand, the Phos AI Labs engineering team joined the account to decide what kind of system each problem needed.


We looked at three common options first. A consolidated Looker Studio dashboard would have become a fifth dashboard. An SEO retainer at $4,500 a month would have produced pages without the company’s own projects in them.


The third option was a tool that generates 200 city pages in an afternoon. The pages would read alike, promise service in towns crews can’t reach, and invite a search penalty for thin content.


So we matched the tool to the job. The scheduled site and product reports became automations, because they pull the same numbers the same way every time.


The call log became an AI-enhanced workflow: CallRail stays the system of record, with a model at one decision point, deciding whether each call meets the qualified definition.


The Monday report and the post-publish check each became an AI agent. Each one reasons over data and takes one narrow action: write the weekly explanation, or flag and pull a broken page.


Only one job needed an AI employee: owning the city pages end to end: keeping the queue full, drafting each page from the playbook, publishing on schedule, and learning from every edit the office manager makes.

The build

The build ran five weeks. The automations came first, because everything else depended on clean numbers.

How a city page gets made, before and now


The site report runs Monday, Wednesday, and Friday at 8:00 am. It pulls GA4, Search Console, and Google Business Profile for the main domain only and lands in the owner’s and general manager’s Gmail.


The product report runs Tuesday and Thursday at 10:05 am. It reads PostHog events on the estimate form and the window cost calculator, filtered to one site, so the sister brand never leaks back in.


The call screen runs every night. A small, fast model reads each CallRail transcript against the qualified definition and tags it, at a fraction of a cent per call. Anything below 80% confidence goes to the office manager to tag by hand.


The weekly report agent runs Mondays at 8:00 am. A reasoning model compares qualified traffic and qualified calls week over week, by city and by page, and writes five lines explaining what changed and why.

The Monday report, one number per question (illustrative screen)


The local pages AI employee works on a weekly clock. On Thursday it drafts the next page from the queue, using the playbook, the city’s permit office page, and the company’s own completed jobs there from JobNimbus.


The draft lands in the office manager’s inbox as a preview link to approve, edit, or skip. At 12:00 am Tuesday, the approved page publishes to the Webflow CMS with its photos, schema, and internal links.


If nothing is approved by Monday night, the slot is skipped, and the owner sees why in the Monday report. Every edit she makes is saved as an example the next draft learns from.


The page audit agent runs at 1:00 am Tuesday, one hour after publishing. It checks the title, meta description, headings, internal links, schema, sitemap entry, and load errors on the new page.


A blocking error, such as a broken link or a missing license number, sets the page back to draft and emails the office manager. Cosmetic issues go into the Monday report instead.

The page audit, one hour after every publish (illustrative screen)


When the queue drops below six cities, the AI employee runs a keyword pass. It reads Ahrefs and DataForSEO volumes, Search Console queries for unserved cities, and job history, then proposes the next cities for the owner to approve.


Cost drove the model choices. A small model screens calls. A stronger reasoning model writes the weekly analysis, runs the audit, and ranks cities. A drafting model writes pages in the company’s voice. A person approves every page.


Keyword data is capped at $40 a month, and the whole system runs under $260 a month. Any single model can be swapped when a better one ships, without rebuilding the rest.

The system and where people stay in control

Rollout and training

We started small. For three weeks, the new reports ran in shadow mode beside the old dashboards, and the team compared both at each Monday meeting.


The comparison was the first round of training. Every gap traced back to the sister brand or a vendor call counted as a lead.


The AI employee drafted two pages in shadow mode that nobody published. The first live page, for Jupiter, went up in week six, after the office manager approved it.


The owner and general manager got a 90-minute session on reading the Monday report. The office manager got two hands-on sessions: approving and editing live drafts, adding cities to the queue, and fixing audit warnings herself.


The two people who answer the phones learned to correct a wrong call tag in CallRail. The office manager owns the queue and page approvals, the general manager owns the definitions, and Phos AI Labs meets them for thirty minutes every month.

Making it better

The first month of drafts all sounded alike. The office manager edited 54% of page drafts. The most common fix was sameness: drafts for neighboring cities reused the same paragraph order and the same opening line.


The second fix was facts. One draft cited Palm Beach County’s permit process for Wellington, which runs its own building department. We added a city fact sheet step that reads the city’s own permit page before drafting.


We also tightened the queue rule. A city now needs at least two completed jobs with photos in JobNimbus before it can enter the queue, so every page shows real local work.


The call screen had its own problem. In week one it marked 14% of warranty callers as qualified, because they asked about “new windows.” We added 40 labeled examples, and agreement with the phone team’s spot checks rose to 96%.


The audit agent raised eleven warnings per page at first, most of them cosmetic. We split warnings into blocking and notes, and the office manager now reads one or two per week.


In month four, a newer drafting model came out. We tested it by redrafting ten already-approved pages blind. The office manager preferred the new drafts eight times out of ten, so we swapped it in. By month six, the edit rate was down to 12%.

The outcome

On a Monday in September, the marketing meeting took 12 minutes. Everyone opened the same report, and the only question was why qualified calls from Stuart had doubled.


The report already said why: the Stuart page, live for five weeks, now drove six qualified calls a week. The owner approved four more Martin County cities for the queue before the meeting ended.


The same week, a homeowner in Jupiter called from the Jupiter page and signed a $58,000 whole-home impact window job. The page showed three installs near her street.

KPIBaselineAfter 6 months
Live local-search pages1440
Qualified calls from search per month5878
Estimates booked from search calls per month2231
Weekly reporting time5 hrs20 min
Dashboards checked weekly41
Reported sessions from the wrong domain31%0%
Live city pages with title, link, or schema errors9 of 140 of 40
Page drafts approved without editsn/a88%

Before and after KPIs


The 26 new pages produced 71 qualified calls in six months, which became 30 booked estimates and 11 signed jobs worth $196,000, from cities the company had served for years without a page.

Monday morning I read one page and know whether the phones are ringing for the right reasons. We stopped arguing about numbers and started picking cities.

— Anonymous Owner, Florida specialty contractor

What’s next

The project doesn’t have an end date. Each page adds to the last, each approved edit teaches the AI employee, and each new model release is tested against the same ten approved pages before we switch.


Next, we will feed signed contract values from JobNimbus into the keyword pass, so the queue favors cities where calls turn into signed jobs. The target is 60 live pages and 100 qualified calls a month.


If your marketing numbers live in four places that disagree, a short audit from Phos AI Labs will show you which cities your site is missing.

Client details changed under NDA.

In partnership with

  • Anthropic
  • OpenAI
  • Zo
  • Make

The fastest way to know whether we're the right fit, is a conversation.

STEP 1/2 · ABOUT YOU