Turning Customer Feedback Into Product Signals
Problem
B2B marketing agencies aggregate customer feedback by hand: copy-pasting G2 reviews, scanning Reddit threads, eyeballing competitor mentions. There's no scalable way to track share-of-voice or turn raw sentiment into decisions a product team can act on.
Process
I built an open-source sentiment intelligence dashboard that ingests Reddit API data, G2 and Capterra reviews, and CSV uploads. Every architecture choice traded against a constraint: DistilBERT over BERT-base for roughly 5x faster inference at under 3% accuracy loss, because the dashboard had to feel real-time; GoEmotions 27-category classification over binary polarity, because in B2B feedback the difference between frustration and disappointment implies a different product action; Selenium for G2 and Capterra, since both render client-side and block simple scrapers.
Solution
The tool runs multi-model NLP classification to surface product gaps and generates LLM-drafted ad copy from the sentiment it finds. I moved inference to ONNX Runtime to drop PyTorch as a deploy dependency, and used Streamlit to iterate on the BI layer without pulling in a frontend engineer.
Impact
80% classification accuracy, 0.35s inference latency.
Learnings
The DistilBERT trade-off was right for a live dashboard, but the sub-3% accuracy gap is real. For a batch report where latency doesn't matter, I'd run the heavier model instead. The point was matching the tool to the constraint, not the benchmark.