The problem
Management kept asking versions of one question: what are merchants actually saying about us, and how do we compare with the competition? Nobody could answer it at scale. Feedback was spread across complaint sites, forums, app store reviews, marketplaces and social media.
The usual answer was a person reading a sample and summarising it in a deck that was out of date the day it shipped. No trend, no comparison, no early warning when sentiment moved. That required a system, not a deck.
How it works
- Listen. Public mentions of PayTR and nine competitors, collected every day, so every number has a share of voice context.
- Clean. Markup stripped, Turkish characters normalised, duplicates removed, so a post that appears twice is counted once.
- Classify. Each post gets a sentiment, an emotion and one of 14 business themes. When enough volume gathers around a topic the taxonomy does not cover, the platform proposes a new theme on its own.
- Summarise. A four stage Python pipeline, with a three agent CrewAI crew and Gemini in the analysis stage, writes daily, weekly and monthly digests in plain Turkish.
- Merge. Support tickets and NPS responses join the public posts, so the same themes describe what customers say outside and inside the company. Every negative mention, ticket or detractor becomes a case with an owner.
What changed
- A question became a routine. What used to take a research cycle now arrives every morning, with the trend and the comparison attached.
- Share of voice, not sentiment in isolation. Themes and sentiment are compared with the same nine competitors every day.
- One view of the customer. Public posts, tickets and NPS speak the same language, which is what turned an insight tool into complaint management.
Under the hood
Classified posts land in a PostgreSQL star schema. A Power BI model with 44 DAX measures sits on top, from the board summary down to the text of a single post. I chose models on cost and quality: a fast model for high volume classification, a stronger one for the low volume digest where the Turkish has to read well.
What I would do differently
Tickets and NPS joined after launch, which meant mapping the themes twice. I would bring every source in from day one.
The platform belongs to PayTR, so the code and the production data stay private. The screens on the home page show the real interface with invented sample data. Happy to walk through the architecture in an interview.