One Dashboard, One Task List: Rebuilding How Account Managers Work at Chotot
A look at Salemate - the internal platform that replaced a stack of scattered tools with one prioritized, AI-assisted workflow for account management at scale.
Trang Tran - Salemate Team
The problem: one AM, thousands of sellers, data everywhere
Chotot's Account Manager team runs on a ratio that doesn't leave room for guesswork: Each Account Manager handles a portfolio reaching 5,000 sellers - a scale where manual tracking or memory is mathematically impossible.. No AM can personally remember the state of every account in their portfolio - which ones just had a spending drop, whose subscription is about to lapse, who hasn't been contacted in three weeks.
Before Salemate, getting a full picture of even one seller meant hopping between systems. Ad and listing performance lived in the internal Back Office. Call and contact history sat in a separate CRM. Notes and follow-ups were often tracked in a Google Sheet someone on the team maintained by hand. Subscription and wallet balance data lived somewhere else again. None of these updated in sync with each other, so even a diligent AM was working from a picture that was already a little out of date by the time they'd assembled it.
Layered on top of that was a harder problem: with thousands of sellers and no shared signal for urgency, prioritization was largely gut-feel. There was no consistent way to know which sellers actually needed attention today, and no scalable way for a manager to know whether a call went well or a seller's concerns were actually addressed.
Salemate was built to collapse all of that into one workflow: one page to understand a seller, one ranked list to know what to do next, and one quality loop to know whether it worked.
Same four systems on both sides - what changes is the AM's connection count: four direct hops before, one after.
The Seller 360 Dashboard: one view, aggregated at the source
The Go backend behind Salemate sits between the dashboard and a dozen upstream systems - BigQuery-synced performance metrics, a MongoDB store for platform-owned data, and gRPC clients covering ads, subscriptions, leads, and financial services - and merges all of it into a single seller record on request. A three-tier cache (an in-memory layer for seller performance, Redis for daily segment data, and MongoDB as a fallback store) keeps that aggregation fast even at 300,000-seller scale, where a naive live fetch across a dozen upstream calls per page load simply wouldn't hold up.
The rule engine: two paths into the same daily list
Solving "what should I do today" turned out to need two different engines feeding the same list, not one.
FLOW A is the platform's own rule engine: admin-configured segment and task expressions evaluated every night against seller metrics - a spending drop, an expiring subscription, days since last contact. These rules are also history-aware: functions like daysSinceTask() and daysSinceTag() let a segment automatically release a seller once an AM has already acted, so the same "call this seller" flag doesn't reappear the next morning just because the underlying metric hasn't refreshed yet.
FLOW B belongs to the Business Analytics team, not engineering. BAs run their own segmentation algorithm in BigQuery on their own cadence - daily, weekly, whenever the business priority shifts - and the output syncs directly into the same seller record every AM already reads from. These BA-defined fields are discovered dynamically, not hardcoded: if BA adds a new field to their BigQuery output tomorrow, it shows up in the admin UI automatically, no engineering release required. And where a field is defined by both flows, the BA-computed value always wins.
That second flow is the quieter but more important design decision: it means the definition of "which sellers matter right now" isn't frozen into code engineering wrote once - it's a surface the business side can update as often as their own analysis changes.
Two flows, different owners and release cadences, one list - and one silent tie-breaker when they overlap.
Call transcript & AI evaluation: closing the quality loop
The other half of the manual-work problem was what happened after an AM reached out. Calls - and more recently, in-app messaging conversations - are automatically transcribed, then scored by an LLM against a structured QA rubric covering sentiment, topics discussed, and action items. The result lands back in the same Seller 360 view as both a readable summary and a quality score, without anyone typing up notes by hand.
That closes a loop that didn't exist before: a manager can now see call and chat quality across an entire team consistently, instead of relying on spot-checking a handful of recordings. And because the evaluation writes back into the seller's record, a poor interaction can itself become a signal that feeds back into prioritization - not just a note nobody revisits.
AI assist: from "here's the data" to "here's what to say"
Because the platform already produces one unified, freshly-scored view of every seller, an AI agent layered on top can turn that view directly into a suggested call script or chat message, tailored to that seller's actual current situation - and, for outreach at scale, can draft and personalize outbound messages for entire campaign segments. It's the last step from "the AM has the full picture" to "the AM knows exactly what to say next."
Impact and what's next
Since AMs started working from Salemate's daily list instead of a scattered set of tools, quality outreach - calls that last more than 10 seconds, the bar we use to separate an actual conversation from an unanswered or immediately-dropped call - has grown by 30%.
The same idea - one place to see a seller and act on it - is now extending to new channels: reply-tracking on outbound messages sent through the in-app messaging channel is in progress, with support for additional messaging apps scoped as a next step. We're also extending Salemate itself beyond Chotot - the platform is being brought to Carousell next, to give their AMs the same single-dashboard workflow.