
Restaurants
How we rebuilt True Food Kitchen's local search system, from schema to revenue
True Food Kitchen is a wellness restaurant brand founded in Phoenix in 2008, built around an anti-inflammatory menu that changes with the season. It runs 45 restaurants across the United States, each one a separate local business as far as a search engine is concerned: its own address, its own hours, its own neighborhood, its own competitors two blocks away.
That is the shape of the problem. A brand can be well known nationally and still be invisible in the twenty local searches that decide where someone eats tonight.
Metrics are real, from Google Analytics 4, Google Search Console and Semrush, covering February 15 to August 13, 2026 against the same dates a year earlier. The non-brand keyword comparison is the 5,337 keywords present in both the January and August exports. Published with the client's approval.
Want the same read on your locations?
What was actually broken
Forty-five restaurants, forty-five pages, and Google could not tell the cities apart.
A 45-location restaurant group was losing organic search and could not see why. The location pages looked finished. Underneath, the headline on all 45 was text baked into an image, so Google never read which city any restaurant was in, and 85 URLs across the site carried no headline markup at all.
Strip out the brand boilerplate repeated on all 45 pages and roughly thirty words were left about the actual restaurant: city, address, phone, hours. Eighty-four percent of clicks came from people already searching the brand name. On "healthy food near me", 673,000 searches a month, the site sat at position 33.
What we built, and why it repeats
45 location pages, researched one at a time, built on one chassis
Neighborhood copy, a nine-question FAQ, live review quotes and a featured-dish section per restaurant, all on an identical frame so the set stays editable in bulk. The live page runs 3.3 times the length of the one it replaced, and of 119 copy blocks audited across ten pages, 108 appear on exactly one page. That is local SEO written per location, not a template with the city swapped.
Four conflicting data sources reconciled into one master
The internal store sheet, Google Business Profile, Yelp and their listings manager each held a different version of the same restaurants: seven store-code mismatches, six address discrepancies, thirteen day-level hours conflicts. One reconciled master file keyed on store code, with a per-platform view for each, so an edit is made once and exported rather than retyped four times. Built on our data platform and owned outright by the client.
A system their own team operates without us
One spreadsheet import changes a field across all 45 pages, and a full menu swap takes about thirty seconds with no ticket and no developer. Their marketing lead updates menus, hours, private-dining capacities and featured dishes himself, because the websites we build get handed over working that way on purpose.
The audit layer underneath all of it
A 74-item technical, CRO and GEO audit that scored the site 35 out of 100, sixteen months of Search Console data across more than a thousand keywords, and a 400-row map assigning every target query to a page. The monthly reconciliation is what caught a third-party integration silently reverting hours at five restaurants in July.
Scroll inside the frame to see the full page.

What moved, against what baseline
Recomputed from the raw exports rather than carried over from a report. Method: deduplicate by keyword taking the best position, drop brand queries, keep positions one to fifty, then intersect the January and August exports.
| Measure | Before | After | Window |
|---|---|---|---|
| Organic revenue, year over year | -17% | +36% | First 90 days vs last 90 |
| Organic transactions, year over year | -9% | +46% | First 90 days vs last 90 |
| Organic sessions, year over year | -34% | -3% | First 90 days vs last 90 |
| Revenue per organic session | Baseline | +29% | Full engagement |
| Average position, non-brand | 19.0 | 11.6 | Jan to Aug 2026 |
| Non-brand keywords in the top ten | 1,752 | 2,936 | Jan to Aug 2026 |
| Top ten on location pages | 2,450 | 3,452 | Jan to Aug 2026 |
| Top ten in the menu section, not yet reached | 94 | 26 | Jan to Aug 2026 |
| "Healthy food near me" | Position 33 | Location page, top ten | Jan to Aug 2026 |
Each panel is scaled to its own maximum, so the two are read for direction and not against each other. The playbook ran on the location pages and not on the menu section.
Impressions to these pages fell 44% over the same period while clicks fell 20%, so the same set earns considerably more from less. August 2026 is left off because the export stops on the 13th and a partial month draws a cliff that is not a result.
Every platform we had, including our website, was misaligned, and we kept getting penalized by Google because nothing lined up. That was our biggest problem.
Why this is not really a restaurant story
Nothing above depends on food. It depends on running many near-identical locations off one set of pages, with the operational truth about those locations scattered across four systems that disagree with each other. Dealerships, clinics, gyms, franchised services and bank branches all have the same shape: a brand that is well known nationally and invisible in the twenty local searches that decide the sale. The chassis is the same everywhere. The research per location is the part that is not, and the reconciliation layer underneath is what keeps the whole thing from drifting apart again six months later.
Where the movement actually landed.
Split the engagement in half and the reversal is clear. In the first ninety days organic revenue was down 17% year over year and transactions down 9%. In the ninety days after the new pages went live, revenue was up 36% and transactions up 46%. Average position across the compared keyword set went from 19.0 to 11.6, and top-ten rankings went from 1,752 to 2,936.
Across the compared keyword set, 3,806 of 5,337 keywords improved while 999 slipped, and 1,391 entered the top ten against 207 that fell out of it.
The movement lands on location pages rather than the homepage, which is the whole point of rebuilding them. "Healthy food near me" now resolves to a location page. "Restaurants in King of Prussia" went from 30 to 10, "UTC restaurants" from 25 to 7, "Walnut Creek restaurants" from 17 to 7. Those are the searches a guest actually runs when they are deciding where to eat tonight.
Not ready to talk? The agents we ran this with are described on the portal agents page, and the location-page method sits under SEO.

Find out what your location pages are costing you.
A systems audit reads every location page the way Google reads it, checks your listings against each other, and ranks the gaps by the traffic sitting behind them. One call, a week of analysis, and the findings are yours either way.