Back to Proof
glass/doorSouth Jersey Glass & DoorVisit South Jersey Glass & Door

Bring in more glass and door customers through search

A century-old glass and door company with five South Jersey branches was invisible online for anything but its own name. We rebuilt the site on Next.js, wired up CRM and per-branch call tracking, and ran a sustained SEO and AI-visibility program. Average Google position climbed from 48 to 10, organic traffic more than doubled, ChatGPT now names SJ Glass first for its core services, and every lead has a home. The same company then hired us to replace its whiteboard job tracking with custom field-service software.

The owner & the bottleneck

Where it started.

South Jersey Glass & Door has served the region for close to 100 years across five locations: Vineland, Berlin, Glassboro, Marmora, and Wildwood. Online, that reputation counted for almost nothing. A November 2023 audit found about 1,100 organic keywords driving roughly 1,400 monthly visits, and 91% of that traffic came from people already searching the company by name. For non-branded searches ("glass repair near me," "storefront doors," "shower enclosures"), the business was effectively invisible. The site ran on WordPress and was being managed by Hibu at over $2,400 a month, a bill that came with wiped historical analytics and a slow, thin site. Google Business Profiles were a mess: Berlin was missing entirely, Glassboro had a duplicate, and several locations were unverified. Behind the site, the back office was disconnected. Form submissions and social messages went unanswered, and there was no way to tell which calls came from which branch or which campaign. Marketing spend went in, but nobody could trace what came out.

What we built

The system we put in.

We started by cutting the $2,400-plus monthly Hibu bill and standing up a placeholder site to stop the bleeding, then set the reporting foundation with Semrush baselines and Google Search Console tracking. In May 2025 we launched a custom Next.js site on Vercel, replacing the slow WordPress build with a fast, crawlable one structured around all five locations. We added Twilio call tracking so every branch and campaign gets its own number and every call is attributed. Google Business Profiles were cleaned up and verified, including the missing Berlin and Wildwood locations and the duplicate Glassboro listing. Leads stopped falling through the cracks: form fills and messages now route automatically through the CRM (HubSpot, later migrated to Salesforce). On top of that we ran a continuous program: local SEO across the five markets, technical SEO, a content engine, review and profile management, and early answer-engine optimization work for AI search surfaces. The result is a system where visibility, traffic, and leads are all measured, connected, and improving month over month rather than a one-time redesign.

The numbers

What changed, measured.

47 → 11
Avg. Google position, quarterly average
Q4 2024 → Q2 2026 · Search Console, impression-weighted
14 → 67
CRM deals in one quarter
Nov 2025 → Feb 2026 · HubSpot
+229% MoM
Website-driven calls, all five branches
Jul 2025 · Twilio call tracking
5 of 6
Core service searches where ChatGPT names SJ Glass first, citing its own pages
Aug 2026, 18-query confirmation run · DataForSEO ChatGPT benchmark
85%
Share of local-pack visibility, Vineland branch
Sep 2026, 95-point grid, 23 keywords · Local rank tracker
$2,400+
Monthly vendor bill eliminated
Aug 2023 · Hibu invoices

The full story

How it played out.

The starting line: November 2023

The baseline audit told a familiar story for a great local business with a neglected digital presence: roughly 1,100 organic keywords, about 1,400 estimated monthly organic visits, and 91% of that traffic branded. The searches that generate new customers belonged to competitors. The backlink profile sat at 466 links from 162 referring domains, the 24-page WordPress site had thin content flagged on nearly a third of its pages, and the Google Business Profile footprint was incomplete for a five-location company.

Every figure verified against monthly SEO reports, Search Console, and rank-tracker scans.
MetricBeforeAfter
Avg. Google position (site-wide, all tracked queries)48 (Oct 2024)10.5 (Jun 2026)
Organic sessions / month2,162 (Oct 2024)4,518 (Oct 2025)
Keywords in Google's top 10140 (Jun 2026)
Backlinks466 (Nov 2023)1,100+ (2026)
Referring domains162 (Nov 2023)~400 (2026)
Google Business ProfilesIncomplete, unverified (2023)5 verified · 4.5★ · 241 reviews (Sep 2025)

Climbing from page five to page one

When Search Console tracking began in October 2024, the site's average position was 48 — page five territory, invisible for practical purposes. The Next.js rebuild gave Google a fast, crawlable structure organized around all five locations, the content program gave it something worth ranking, and an August 2025 cleanup removed the toxic backlinks left over from the Hibu era. By December 2025 the average position had reached 22.8. By spring 2026 it settled at roughly 10 — page one, on average, across every query the site appears for.

Average Google search position
Site-wide average position, Google Search Console. Lower is better.

Traffic that shows up and stays

Organic search sessions more than doubled from 2,162 a month in October 2024 to 4,518 by October 2025, and engagement rates held between 93% and 97% throughout — the growing traffic was landing and staying, not bouncing. Search impressions grew from 61,023 in October 2024 to 88,718 in May 2026 as the site began surfacing for non-branded service searches, with clicks up 30% over the same window.

Organic search sessions per month
GA4 organic search sessions, selected months (Oct 2024 – Oct 2025).

From clicks to customers

Rankings are a means, not an end. Before the rebuild, form submissions and social messages went unanswered; now every lead routes automatically through the CRM, and Twilio numbers attribute every call to a branch and a campaign. With tracking finally connected, the lead flow became visible — and it moved. CRM deals grew from 14 in November 2025 to 67 in February 2026. In July 2025, website-driven calls jumped 229% month over month across all branches, with the Vineland branch up 854%. By April 2026 the site generated 880 tracked conversions in a single month.

Measured in HubSpot, GA4 key events, and Twilio per-branch call tracking.
SignalChangePeriod
CRM deals created14 → 67 (+378%)Nov 2025 → Feb 2026
Website-driven calls, all branches+229% MoMJul 2025
Website-driven calls, Vineland+854% MoMJul 2025
Tracked conversions880 (+36.9% MoM)Apr 2026
Emergency service events1 → 13Dec 2025

Owning the local map

All five Google Business Profiles are now claimed, verified, and linked — including the Berlin profile that didn't exist in 2023 and the duplicate Glassboro listing that was cleaned up. Grid-based local rank tracking in 2026 shows the Vineland headquarters averaging a local-pack position between 2.3 and 2.9 with roughly 70–80% share of local visibility in its market. Berlin, the weakest branch at an average position around 5.4, is the clear next target.

Public Google Business Profile data, September 2025.
LocationRatingReviews
Vineland (HQ)4.671
Berlin4.648
Glassboro4.371
Marmora4.616
Wildwood4.435

How we measure

Every figure in this case study is verified against a specific source: monthly SEO reports, Google Search Console, GA4, the CRM, and independent rank-tracker scans. We publish no projected revenue and no modeled estimates. Where a measurement system changed mid-engagement — like the CRM migration from HubSpot to Salesforce in May 2026 — we note the break in the series rather than blending numbers that don't belong together. That's the standard we hold our own reporting to, because it's the same standard we hold for clients.

What came next: the same company replaced its whiteboard job tracking with custom field-service software we built, at 86% less than Salesforce. See the field-service proof entry.

Resources

Keep learning

Browse all resources
Two rows of eval nodes labelled with plugin and without plugin inside a dashed sandbox boundary, one node escaping it marked 127, with a delta bracket between the rows

Claude Code Plugin Evals: The Traps the Docs Don't Mention

We ran Claude Code's new plugin eval harness on a real plugin: 8 cases, 46 agent runs, about $12. Here are the three ways the results JSON misleads you, what the eval sandbox can and cannot reach, and the five-line hook that fixes the plugin-root variable Bash never sees.

Jim DeolaSeptember 16, 2026
Freezing code was the easy part: adding determinism to generative AI workflows

The Benchmark Pointed at Itself

The first paired benchmark of our procedural-memory registry measured a deterministic share under 0.5% on one workload and about 55% on another, caught its own row-append step failing silently, and ran under two conditions that rule out any arm-versus-arm verdict. Here is what held up, what did not, and the six variables the next cohort holds fixed.

Jim DeolaAugust 26, 2026
Glowing AI subagents branch around a sealed library of skill cards beneath the headline “Your Subagents Aren’t Using Your Skills.”

Your Subagents Aren't Using Your Skills

We counted how often our AI subagents invoked skills from a several-hundred-skill library: zero of fifteen dispatches. Here is why cold-started agents never browse the library, the three injection levers that work, the spike methodology that proved the hook surface, and the log-first measurement instrument now watching every dispatch.

Jim DeolaAugust 26, 2026
A tangled improvised line resolving into a row of identical evenly spaced blocks, representing an AI system replacing per-run improvisation with a stored, repeatable procedure.

AI Agent Memory: Why Our Systems Stopped Re-Solving the Same Problems

Most AI automations re-derive the same work every run. Here is how procedural memory, storing the working code rather than a description of it, makes AI agent workflows faster, cheaper, and more predictable.

Jim DeolaAugust 23, 2026
Task cards flow through a secure local planning hub and human approval checkpoint into a scheduled daily timeline.

Rhize Tasks: A Local-First AI Task Planner for Jira and Calendar

Rhize Tasks turns Jira work into a realistic daily plan across Google Calendar and Apple Reminders, with local-first privacy and human approval controls.

Rhize Media TeamAugust 14, 2026
Left: a flat gray list of skill names. Right: a purple knowledge graph with labeled fork-of, replaces, and overlaps edges. Title: your skills need a graph, not a list.

We gave our AI agent 500 skills. It needed a graph, not a list.

Flat lists of AI agent skills fail silently as they grow. Every failure we hit was a relationship failure, so we built a generated graph, and the case for generating it came from our own code drifting within hours.

Jim DeolaAugust 9, 2026

What could this look like
in your business?

Start with a conversation.

Tell us about your operation and what you want to improve. We'll talk through whether a similar approach could help.

No pitch, no obligation.