Jonathan Dickerson
Case study · Bank of America

The feedback nobody was reading

Customer feedback was reaching every Experience Design project team at Bank of America, and almost nobody was reading it. I designed and built an agent in the Microsoft 365 Copilot agent builder. It turns a raw export of customer comments into a short readout. Every quote in it can be checked against the spreadsheet in seconds.

The problem

Teams were expected to know what customers thought of their product before starting work. The feedback arrived as a raw Excel export averaging 3,000+ rows, full of blanks, non-answers and off-topic comments. Synthesizing one file took days, so most teams skipped it.

The goal was never to save time. It was to make a skipped step happen.

Every insight shows its receipts

The readout has four parts: a summary, user quotes, insights and XD recommendations. An insight only counts if it says why the agent suspects something, gives an approximate count and percentage, quotes exactly two customers, and names the impact.

Every quote carries its row and cell location. Anyone can verify it in the spreadsheet in seconds.

E F · COMMENT 210 211 212 213 214 “I paid on Friday and my balance still hasn't changed. Did it go…” VERIFY QUOTE 1 ROW 212, CELL F212 “I paid on Friday and my balance still hasn't changed. Did it go through?”
Every quote in the readout carries its row and cell, so a reviewer can jump straight to the source. Illustration with synthetic comments.
Sample insightIllustration · synthetic comments, no real customer data
Insight
Customers can't tell whether a card payment went through.
Why
Comments describe paying, seeing no confirmation, then paying again or calling.
Evidence
Approx. 60 of 500 comments (about 12%)
Quote 1
"I paid on Friday and my balance still hasn't changed. Did it go through?"Row 212, cell F212
Quote 2
"There was no confirmation screen, so I paid twice."Row 388, cell F388
Impact
Duplicate payments and avoidable calls.
Evidence rating
High: all four elements are present.

How it was built

It started as one prompt that returned a wall of text. I set three requirements: the agent checks itself, a user can verify it fast, and it stays short enough to get read.

I refined it with Copilot. It proposed and I decided. Five quotes per insight became two. A caveats note earned its place in testing. Guardrails against invented quotes and counts went in.

It is built for real files. It finds the comment column by its name, then by its contents, whatever the layout. It keeps row numbers intact through cleaning, redacts personal information in quotes, and stops and says so when a file has nothing usable.

What it changed

The agent was never mandated, so I took it on a roadshow to get teams to try it. Several found it matched problems they had already identified and funded. It also surfaced ones they had not.

In credit cards, the option to pay a Bank of America card through bill pay had been removed, and customers did not understand why. The team had heard about the confusion. The readout showed how often it came up, in customers' own words, and gave the team the evidence to act.

The fix was not an explanation. Customers who choose to pay a card in bill pay are now moved straight into the new payment flow.

Back to all work