Agency Aviator
The single source of truth an agency had been trying to keep in spreadsheets: every client, what they actually bought, when they were last met with, how happy they are, and where they sit on a map.
- Agency operations
- Client
- Agency operations platform
- Engagement
- Custom Software
- Service
- One record
- Updated once and reflected across every team that needs it
- Per team
- Service breakdowns split the way each department actually thinks
- Mapped
- Clients plotted nationally, with proximity visible at a glance
The challenge
What we walked into
Client information lived in spreadsheets, and there was more than one. The social team kept theirs, SEO kept theirs, and the account team kept a third. Nobody could reliably say when a client had last been met with, exactly which package they were on, or which clients were near enough to see on the same trip. Updating anything meant updating it in several places, which meant it was updated in one.
On This Page
Three teams, three spreadsheets, three versions of the truth
Every team had built the view they needed, because none of them had one. Social tracked which clients got which posting cadence. SEO tracked which tier a client was on. The account team tracked meetings and renewals. All of it described the same clients from different angles.
The cost was not the duplication itself, it was the drift. A client upgrading their package meant an update in several places, so in practice it happened in the one the person making the change owned. Every other view then quietly described a client who no longer existed.
They knew what they wanted, and described it as a CRM. What they actually needed was narrower than any CRM they had looked at, and every product they trialled asked them to reshape how they worked to fit it.
One record, seen the way each team thinks
The client record became the single place anything is updated, and the teams get views onto it rather than copies of it. Change what a client is subscribed to once and every department sees it immediately, because there is nothing to propagate.
The service breakdown is the part that made it usable rather than merely correct. Services are not tracked as a flat list, they are tracked at the granularity each team distinguishes. Social sees who gets regular Facebook posts against who gets the enhanced package. SEO sees basic against plus. Paid sees local service ads against standard Google Ads.
That granularity is why generic tools had failed. A CRM that records the client is on the mid tier is useless to a social manager who needs to know exactly what to produce this week.
When did we last actually speak to them
The record carries the last meeting date and how satisfied the client is, which together answer the question that predicts churn better than any usage metric. A client nobody has spoken to in months, whose last recorded satisfaction was lukewarm, is not a mystery when it cancels.
Previously that question could only be answered by asking around, and the answer depended on someone remembering. As data on the record it is sortable, which turns it from a recollection into a list of who to call.
The map, and why proximity mattered
Clients are plotted across the United States, and the map turned out to be more than presentation. Because it shows which clients are near each other, a trip to see one client becomes a trip to see three.
That is a scheduling insight that is effectively impossible to extract from a spreadsheet of addresses. Nobody cross-references postal codes by hand to plan a visit, so the opportunity had always been there and had never been visible.
It also gave a geographic read on the book of business that had previously only existed as a sense of where clients tended to be.
Why we did not tell them to buy something
We usually push clients toward an off-the-shelf product, and here we did not. The requirement was unusually specific: service tracking at a granularity that mapped to their own packages, meeting recency, satisfaction, and geography, all on one record.
Generic CRMs handled the contact management well and could not represent the service breakdown without heavy customisation, which is where the cost stops being a subscription. What they needed was narrow, and narrow is exactly when building beats configuring.
How we went at it
- Consolidated three team spreadsheets into one client record with per-team views
- Modelled services at the granularity each department actually distinguishes
- Made meeting recency and satisfaction sortable data rather than recollection
- Plotted clients geographically so proximity became visible
- Chose to build only after confirming off-the-shelf could not represent the packages
What we handed over
- A single client record replacing several team spreadsheets
- Per-team service breakdowns for social, SEO, and paid
- Last meeting date and client satisfaction on every record
- A national client map with proximity visible for trip planning
- Update-once behaviour with every view reading from the same source
What happened next
- Package changes stopped being wrong in two out of three places
- Each team got the detail it needed without maintaining its own list
- Quiet, unhappy clients became a sortable list instead of a recollection
- Client visits could be planned around who else was nearby
Capabilities
- Operations platform
- Data modelling
- Geographic visualization
- Multi-team access
Stack
- Next.js
- TypeScript
- MongoDB
- Google Maps API
- Zoom API
- Calendly API
- Stax Payments API
- NodeMailer
- Vercel
More work
Other builds worth a look
More Custom Software engagements, with the problem and the result written down.
Find out what should actually be built.
Start with an assessment. We walk your business end to end and show you where automation and AI pay off, ranked by what they are worth.