cheaper than manual monitoring
per week returned on manual work
of capacity free at Agency level

Challenges
A performance marketing agency wins or loses on what its account managers notice. A Slack message that hints at frustration.
A campaign metric drifting the wrong way three days in a row. A client question that sat unanswered over the weekend. None of these signals are hidden, but they're scattered across so many tools that no human can hold them all in their head at once.
That was the situation at Traffic Today. Account managers were juggling Slack threads, email chains, VOIP call notes, Asana task updates, and analytics from GA4, Google Ads, and Search Console. Every client touched five different tools, and every AM was responsible for ten clients. The institutional answer to "what's going on with client X right now" was: open five tools, scroll for twenty minutes, hope nothing was missed.
The questions leadership couldn't answer:
How many hours per week is each AM losing to status-gathering instead of actual account work?
Why are urgent issues only surfacing in weekly internal reviews instead of the morning they happen?
Which clients are showing early warning signs of churn that nobody flagged because the signal was in a Slack thread three days ago?
How does the agency scale past 100 clients without proportionally scaling AM headcount?
The cost of inaction was real, just invisible. Every AM spent roughly an hour a week per client compiling status. Every churn risk that surfaced late was a renewal conversation starting on the back foot. And every plan to grow the client base hit the same ceiling: more clients meant more monitoring overhead, not more strategic attention.

Approach
We treated this as a client intelligence problem, not a dashboarding problem.
Dashboards aggregate data. Traffic Today needed something that read the data and told them what mattered.
Step 1. Map every signal source.
We ran a discovery phase that catalogued every channel where client signal lived: Slack DMs and channels, email threads (often forwarded between three people before action), VOIP call transcripts, Asana tasks, and the analytics platforms. Five sources per client, no shared schema, no central memory.
Step 2. Diagnose why monitoring was broken.
Native search across these tools returns matches, not meaning. An AM asking "is client X about to escalate" needed sentiment analysis across two weeks of conversation, not a list of files containing the word "frustrated". And the bigger problem: no AM could afford to ask that question every day for every client. Monitoring only happened when something was already on fire.
Step 3. Design for per-client isolation.
Traffic Today's clients compete in overlapping verticals. Cross-client data leakage was a non-starter. We designed Nessy as a per-client agent with isolated memory, so each client's data, sentiment patterns, and history stayed in its own context. No accidental signal bleed between accounts.
Step 4. Pressure-test the architecture for scale.
The agency needed this to work at 100 clients on day one, and not break at 200. We architected the ingestion layer to run as a daily cron, with a flexible channel layer so adding Teams, WhatsApp, or a new analytics source doesn't require rebuilding. The system grows by configuration, not by engineering.
The discovery half wasn't optional. It's the reason the build half scales linearly with channels instead of with engineering hours.

Solutions
What we built is Nessy, a Slack-native Client Intelligence Agent that lives inside Traffic Today's existing workflow and continuously reads what's happening with every client.
Per-client agent with isolated memory. Each of the 100+ active clients has its own Nessy instance with a dedicated memory store. Conversations, analytics signals, and contextual metadata stay client-scoped. An AM asking about Client A can't accidentally surface data from Client B, even if they share a vertical or an agency-side team member.
Multi-channel ingestion pipeline. Nessy reads from Slack, email (via CC), VOIP call data, Asana, and analytics platforms (GA4, Google Ads, Search Console). The ingestion runs as a daily cron, with real-time triggers for high-importance signals. Adding a new channel — Teams, WhatsApp, Meta, TikTok, Ahrefs — is a configuration change, not a rebuild.
Sentiment, urgency, and topic classification. Every incoming message gets scored: sentiment direction, urgency level, topic, and whether it's a question, decision, or action item. The output isn't "here's a transcript". It's "Client X had three negative-sentiment messages this week, two were about reporting cadence, the third was about a delayed deliverable".
Conversational query interface. AMs and managers ask Nessy questions in Slack: "what's the status on Client Y", "which clients showed negative sentiment this week", "did anyone respond to the question Client Z asked on Tuesday". Answers come back in seconds, grounded in the actual messages and analytics, with links back to the source.
Human-in-the-loop importance flagging. We built a "mark as important" feature so AMs can flag high-value communications. This isn't a workaround for weak AI — it's a deliberate feedback loop. The agent learns which signals matter for which clients, and prioritisation improves over time without retraining.
The cost story is where this stops being a tool and starts being infrastructure.
Approach | Cost per client per month | Cost at 100 clients/year |
|---|---|---|
Manual monitoring (1 hr/week per AM per client at €60/hr loaded) | ~€260 | ~€312,000 |
Nessy (LLM + storage + integrations) | ~€4 | ~€4,800 |
That's roughly 65× cheaper per client, and the curve only gets better. Adding the hundred-and-first client costs Traffic Today another €4 per month, not another half-day of AM time per week.
The deeper point is ownership. Nessy runs on Traffic Today's own data, in their own infrastructure, integrated into their own Slack. If a SaaS competitor ships something similar next year, the client memory, the sentiment history, and the integration layer all stay where they are. The asset compounds. A subscription doesn't.

Results
Account managers no longer open five tools to answer "what's happening with my clients today".
They open Slack, where Nessy has already done the read.
Each AM gets roughly 10 hours back per week — one hour per client previously spent on status gathering, now spent on actual account work. At ~30% of Traffic Today's 120 staff in client-facing roles, that's over €1M/year in recovered capacity. The same team can hold more clients, or hold the same clients with materially more depth.
Operationally, the change is sharper than the numbers suggest. Urgent issues that used to surface in weekly internal reviews now surface in minutes. Sentiment shifts get flagged before they become churn conversations. Cross-client patterns — three accounts asking similar questions in the same week — get noticed by managers who used to find out only at the quarterly review.
Strategically, the ceiling moved. Growing past 100 clients no longer means proportional AM headcount growth. The next phase already on the roadmap: deeper analytics integration (Meta, TikTok, Ahrefs), automated reporting via Google Sheets, and WhatsApp ingestion for the clients who prefer it.
In the first month alone, Nessy processed ~1,200 messages per client across all integrated channels, roughly 49,000 messages total. Every one of them was classified, scored, and surfaced or filtered without an AM ever opening the source tool.
12 weeks from discovery to 100+ active clients on Nessy. The discovery half scoped the channel architecture. The build half delivered an asset Traffic Today owns, not a subscription that scales against them.
Key Results
cheaper than manual monitoring
per week returned on manual work
of capacity free at Agency level



