The workflow before#
Exelon serves 10.7 million customers through six utilities, and those customers talk to it constantly: on calls, in emails and web chats, in the news and on social media. Each of those channels lived in its own system. Marketing and communications leaned on periodic surveys and people reading through samples by hand. Leadership had theories about what moved the company's reputation, whether billing, outages, service or rates, but no way to test them, and no way to tell which territory a problem was growing in. By the time an issue showed up in a survey, it had usually been building for weeks.
What we built#
We built an NLP application that reads everything customers say to and about Exelon, in one place. It pulls call transcripts, emails, chats, transaction data, news coverage and social posts into a single data lake, then tags each item by topic, sentiment and the entities it mentions. The communications team sees which issues are moving sentiment, in which territory, while there's still time to act.
Every channel in one data lake
Call center transcripts, email and chat logs, earned media and posts from Twitter, Facebook and LinkedIn land side by side with transaction data. We joined them in one lake because a billing complaint on social and the same complaint on a call are one signal, and they only look like one when they sit together.
Topic and sentiment scoring
Models classify each item by topic, score its sentiment and cluster related conversations. Sentiment scoring runs at 87% accuracy and topic tagging at 92% precision. We combined rules with machine learning, so utility terms the team already knew were caught reliably while the models picked up the language customers actually use.
Dashboards and alerts for communications
Executives and the communications team work from Kibana dashboards that break sentiment down by issue and territory. Alerts fire when sentiment shifts, so a growing problem reaches a person who can respond instead of waiting for the next survey. Time to spot and respond to a reputation issue fell 40%.
How we delivered it
We built the collection layer first, then the classification models, and tuned them against items the team had labeled so accuracy was measured, not assumed. Dashboards and alerting went to the communications team once the scores held up. Marketing used the same topic data to target campaigns, which improved campaign effectiveness by about 20%.
Before and after#
| Measure | Before | After |
|---|---|---|
| Time to spot and respond to an issue | Baseline | 40% faster |
| Sentiment read | Lagging surveys and manual reading | Every channel classified, 87% accuracy |
| Topic tagging precision | Manual | 92% |
| Marketing campaign effectiveness | Baseline | 20% better targeting |
What's next#
The next step is an agent that acts on the alerts. When sentiment shifts on an issue, it would draft the response or customer outreach and route it to communications for approval. People keep the final say on anything that goes out under Exelon's name. The agent removes the blank page.






