---
title: "One record, every tool: why none of our software keeps its own client list"
description: "Our creative, reporting, market, call center and AI tools all ask the Hub who a client is. Here is how that works, the rules that keep it clean, and what it changes when you tell us something once."
section: Inside Sneeze It
author: David Steel
published: 2026-10-10T20:14:59.163Z
url: https://one.sneeze.it/blog/one-record-every-tool
tags: ["inside-sneeze-it", "hub", "data-quality", "franchise-operations"]
---

# One record, every tool: why none of our software keeps its own client list

_Our creative, reporting, market, call center and AI tools all ask the Hub who a client is. Here is how that works, the rules that keep it clean, and what it changes when you tell us something once._

Here is a test for any agency you work with. Tell them your new location manager's name on Monday. On Friday, check whether that name is right in their reports, their creative tool, their call center and their billing. If it is right in one place and wrong in three, the agency does not have a client record. It has several, and they disagree.

We built our tools so that cannot happen. The Hub, at hub.sneeze.it, is the only database of clients and locations at Sneeze It. Studio, Coach, Audience, Call Center, our Chrome extension and our AI connector all read client facts from the Hub, and none of them keeps a copy. We call the rule "the Hub is the record."

## Who reads the Hub, and for what

Each tool asks the Hub for something different.

**Studio**, where we make and approve ads, reads who a client is (name, industry) from the Hub, and builds the brand kit from that brand's notes on the Hub. If the brand book is a PDF on the Hub, it leads the kit's look and brings its logos into the library.

**Coach**, our performance tool, takes the client list, budgets, contacts and owner groupings from the Hub. That is how an owner with several locations gets one combined report: the Hub knows which locations are theirs.

**Audience**, our market tool, starts from a business on the Hub and keeps no private client list.

**Call Center** works the locations the Hub marks as being called now. One client can be several calling projects; the Hub keeps them tied to the right locations.

**The Chrome extension** shows the Hub's record for a business the moment one of our staff opens its website, and offers to add it as a prospect if the Hub has nothing.

**The MCP connector**, which lets our staff ask questions from inside Claude or ChatGPT, gets its location tools from the Hub itself. The Hub publishes 8 tools there, staff only.

:::flow "How a business gets into every tool"
Added anywhere | A business is entered in any of our tools
Duplicate check | The Hub refuses a second business with the same website
One record | The business gets one Hub page, by location
Every tool reads | Studio, Coach, Audience, Call Center, the extension and MCP ask the Hub
Changes flow out | A fixed fact or a new status reaches every tool at once
:::

:::pullquote
If it is right in one place and wrong in three, the agency does not have a client record. It has several, and they disagree.
:::

## The rules that keep one record clean

One record is only better than five if it is right. These are the rules that hold it together.

**A business added anywhere is created in the Hub.** If someone adds a new business from another of our tools, it is created in the Hub after a duplicate check. A business with the same website domain as an existing one is refused.

**Match on the id, never the name.** Location rosters and owner directories came from the franchise's own sheets, matched on the club system's id. Names drift ("St." and "Saint") and towns repeat across states, so a name match would quietly join two different gyms.

**A guess is never taken.** When something could match more than one location, such as an emailed request from an unfamiliar address, the Hub does not pick. It waits for a person to choose.

**Imports never undo a person.** Any fact can be corrected by hand, and the next automatic import leaves that correction alone. Every change keeps the old value, the new value, who and when.

**Former means former, everywhere.** Mark a client as former once and every tool that reads the client list leaves it out. Nobody has to remember to remove it from four places.

:::compare "Every tool keeps a list" "Every tool asks the Hub"
The new manager's name is fixed in the report tool and stale in creative. A former client still gets a weekly read. Two tools spell the same gym two ways.
---
The name is fixed once, on the location page. Marking a client former removes it from every tool. There is one spelling, because there is one record.
:::

## It also works in the other direction

A record that only hands data out goes stale. So the Hub also takes things in.

Our team's notes live there now: a page tree per brand and per location, with every version kept. We moved 511 pages and 357 images out of our old wiki into the Hub, so the notes sit on the client they are about. Brand-wide pages show on every location of that brand.

Our request desk lives there too. A ticket opened on a location in the Hub is pushed to the right Jira desk where our team already works, and comments and status changes flow back both ways. When we switched it on, 43 older Jira requests were linked into the Hub with zero errors. If a ticket ever fails to reach Jira, it is retried every 10 minutes and the team gets one Slack alert per problem. No ticket fails silently. The routing is plain rules, not AI, so the same request always goes the same way.

Our accounting reads in too, once a day, read-only. If every accounting record for a client goes inactive, the Hub moves that client to terminated on its own, and the whole team is emailed.

And the Brain, our shared memory of corrections, attaches every lesson to a location or brand on the Hub. A correction our creative team makes in Studio about one location is there for Coach the next time it writes about the same location.

:::stats
6 | tools that read the Hub instead of keeping a client list
209 | locations matched to their analytics property in one pass
43 | older Jira requests linked on day one, with 0 errors
10 min | retry for any ticket that did not reach Jira
source: Sneeze It Hub code and build notes, September 29 to October 7, 2026
:::

:::figure wide
![An illustrated wooden card catalog in an agency workroom, with threads running from a laptop, a headset, a printed map and a camera on nearby desks into the same open drawer](/blog/media/c51677d2500d25cc03e88996.jpg)
Every tool pulls from the same drawer. Nobody keeps a private copy.
:::

## What it changes for you

The practical effect is that you tell us something once. A new owner, a closed location, a new booking page, a brand book: it goes on the location's page, and every tool we use reads it from there. The person making your ads, the coach writing your report and the caller dialing your leads are all looking at the same facts.

It also makes our own mistakes easier to find. Because there is one record, a wrong fact is wrong in one place, it is visible, and the fix is recorded with a name and a date.

The Hub holds 523 locations across 60 brands today, counting past clients, prospects and a franchise roster as well as the locations we serve. To see how it was designed around the location in the first place, read [we rebuilt our portal around the location](/blog/we-rebuilt-our-portal-around-the-location). For the whole map of our tools, start with [Inside One](/blog/inside-one-an-agency-that-runs-on-its-own-software).

:::takeaways "What this means if you run 20 locations"
- Tell us a change once. It lands on one location page, and every tool we use reads that page.
- Locations are matched on your club system's id, not on names that drift.
- A former location stays former in every report, campaign and call list.
- Requests you raise live on the location and stay in sync with our team's desk, with retries if anything fails.
:::

:::cta button="See the Hub" href="https://hub.sneeze.it"
One page per location, read by every tool we use.
See a sample location on the Hub's homepage.
:::
