← All posts
4 min read

Local SEO pitch template + dashboard system (live previews)

A local SEO pitch template plus a dashboard the prospect logs into after they sign. Same DataForSEO file feeds both. Live previews on this site.

The receipt
The problem
Three SEO projects landed in May. Different scopes, different people, same underlying work.
The tool
Claude Code, DataForSEO, one folder of static HTML and JS templates.
The solution
One pipeline that pulls one DataForSEO file per prospect and drops it into a pitch site plus a dashboard. Same templates for every project. Brand-swappable.
The numbers
3 projects. 1 system. 8 KPIs. 20 ranked actions. 14 mapped gaps. About $0.50 of DataForSEO per prospect.

Decks don't close SEO retainers. A local SEO pitch template is what does. I built one in May when three SEO projects landed in the same week.

A friend asked me to help him close a local-SEO retainer. The deck he was sending was not closing. He needed a pitch artifact that frames a verdict and shows the work.

My own brand site needed local SEO and GEO infrastructure. Rank tracking. AI Overview presence checks. A rewrite list for pages stuck on page two.

A second friend asked me to help his uncle's small business get into the local pack on Google.

Three scopes. Three people. Same underlying work.

So I stopped building three things. I built one folder. Then I pointed it at each project.

Five birds. One stone.

The five birds

Bird 1: A pitch artifact that closes. A 6-page site that opens with a one-number verdict, shows the dollar value of the visibility being handed to competitors, lists the gaps the audit found, ends with a phased plan and a price. Real DataForSEO numbers throughout.

Bird 2: My own site's SEO infrastructure. A biweekly DataForSEO sync writes rank snapshots to Supabase. A dashboard at /admin/seo shows rank deltas, SERP-feature presence, top competitors, recent sync runs. Costs about $10 a year to run.

Bird 3: A second audit, no rebuild needed. Same pipeline. Pulled the data for friend two's uncle. Dropped it into the same templates with new brand placeholders. Pitch artifact ready in an hour.

Bird 4: A reusable template. The pitch site and the dashboard read from the same data file. Swap the file, the whole UI repopulates. Brand name lives as a placeholder Claude can rewrite from the prospect's site.

Bird 5: A lead-gen system, being built this weekend. Same templates, plus a scraper that finds local businesses ranking on page two of money keywords, runs the audit on each one, drops the prefilled artifacts in a folder, and sends a link to the buyer. Tested next week on real prospects.

What this local SEO pitch template shows

The first page is the verdict. One number, one sentence, one decision.

Pitch site opening page showing a 1.4 out of 10 visibility verdict for HVAC Company in Orlando, framed as 'best-kept secret' that's costing them jobs
One sentence. One score. The prospect remembers the number. The rest of the site argues for it.

The second page is the dollars. Real DataForSEO traffic value, plotted as what those clicks would cost the prospect in Google Ads if they were not ranking.

Money on the table page showing $18,100 per month in PPC-equivalent unclaimed visibility, $217,000 annualized, $154 top-bid CPC for AC repair Orlando
$18,100 a month in PPC-equivalent visibility. $217,000 annualized. Numbers come from one DataForSEO pull for the prospect's local market. Same numbers feed the dashboard.

The plan page closes with the phased sequence and the price.

Growth plan page with three phases: Build the foundation in weeks 1 to 4, Capture money keywords in months 2 to 4, Compound and dominate in month 5 onwards
Phase 1 weeks 1 to 4. Phase 2 months 2 to 4. Phase 3 month 5 onwards. The dashboard buildout is a one-time line item. The retainer is the work that closes the gaps over time.

What the dashboard does

Same data file. Different surface. The dashboard is what the prospect logs into after they sign.

Effort hours in the denominator. Otherwise you spend 80 hours moving a 3 percent needle.

Every action is scored:

(impact_per_month × probability_it_works) ÷ effort_in_hours

The top action scores 100 because the impact is $11,907 a month, the effort is 10 hours, the win probability is 55 percent. The next one scores 92 because the impact is lower but the effort is too. The math sorts itself.

Dashboard Mission Control showing 0 of 20 actions complete, top 3 highest-ROI moves with impact and score chips, gaps by severity, KPI snapshot
Top three highest-ROI moves. Open gaps by severity. KPI snapshot. The first screen tells the prospect what they get when they sign.
Action Queue view showing 20 ranked actions, each with opportunity score, impact per month, effort in hours, and win probability
All 20 actions ranked. Each card shows the formula breakdown so the prospect can argue with the numbers if they want.
Gap Inventory showing 14 audit findings tagged critical or high or medium severity, each linked to the action that closes it
14 audit findings tagged critical, high, medium. Each one links to the action that closes it. Mark the action done, the gap auto-closes.
8
KPIs tracked
20
actions ranked
14
gaps mapped

Why one folder handles three projects

The pitch site is 6 HTML files plus one data.js. The dashboard is one HTML file plus one cc-data.js. Both data files come from the same DataForSEO pull.

For each new prospect:

  1. Run the audit script. About $0.50 in DataForSEO calls.

  2. The script writes the two data files.

  3. The brand name in the templates is a placeholder. Claude reads the prospect's actual site (title tag, services nav, contact page) and rewrites the placeholder with real values.

  4. Static folder ships to the buyer.

Nothing on the buyer's end. They open a URL, see their own business name, see real data about their own market. That is the magnet.

Live previews

Both artifacts are hosted on this site. Open them on a desktop. The layout assumes 1200px or more.

The brand name "HVAC Company" is a placeholder. The Orlando data is real. The version that ships to a real prospect has their name, their city, their numbers.

Next Friday is bird 5. The automation layer. How the scraper finds the prospects, the audit pipeline runs against each one, the templates prefill, the link lands in a folder. Building this weekend. Live in production next Friday. Testing on real local businesses the week after.

FAQCommon questions
  • What is the scoring formula?

    (impact_per_month × probability_it_works) ÷ effort_in_hours. Impact is the dollar lift you expect from the action. Probability is your honest gut. Effort goes in the denominator on purpose. An 80-hour action moving $3,000 a month scores 37.5. A 2-hour action moving $1,500 a month scores 750. The 2-hour one is twenty times better business.

  • Why hand the prospect a dashboard before they pay?

    The dashboard is the proof. It shows the work that will happen if they sign, ranked by dollar return. A deck argues "we are good." A dashboard shows "here is the sequence." The prospect can see what week one looks like, what month three looks like, where the eight KPIs need to land. They sign because they can see what they are buying.

  • Why localStorage instead of a database?

    One-buyer artifact. The prospect plus one of their people are the only ones updating it. Status and notes save to localStorage. Zero hosting cost, zero login friction. When a deal grows enough to justify auth, swap localStorage for Supabase free tier. Data shape is identical. Thirty-minute migration.

  • How does the brand swap work?

    The HTML templates treat the business name as a placeholder. The version that ships to a real prospect has Claude scrape their site (title tag, services nav, contact page), pull the real business name and city and phone, and rewrite the placeholders before you send the link. The demo on this site shows "HVAC Company" everywhere. The version sent to a real prospect shows their own brand on a page that argues for them.

  • What is coming next week?

    The automation layer. A scraper finds local businesses ranking on page two of money keywords. The audit runs on each one. The templates prefill. A link goes in a folder for you to send. Building this weekend. Testing on real prospects next week.

Solve expensive problems. Every Friday.

Five minutes to read. Use it Monday. Free.

Get the email