AI-Powered Customer Feedback Analysis at Scale
github · Tech · 2024 · source Agentic: no · promotional bias: low · source-backed · extracted with prompt 0.5.4 (schema v2)
Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.
Problem
Domain: Developer-platform customer feedback analytics
GitHub needed to analyze large volumes of support-ticket feedback, discover recurring customer pain points, and communicate trends to product teams without manual classification bottlenecks.
Constraints:
- Support-ticket feedback is high-volume, multilingual, and text-heavy
- Customer feedback must respect strict security and privacy requirements
- Product teams need human-readable, business-contextual insights rather than raw clusters
Architecture
GitHub's internal feedback analytics system clusters support-ticket text with BERTopic, BERT embeddings, and HDBSCAN, then uses GPT-4 prompt and parameter tuning to turn topic clusters into human-readable customer pain statements. The delivery layer evolved from an ADX dashboard prototype into a tailored internal web app with business-context filters, visualization choices, and feedback loops for product teams.
Diagram confidence: reconstructed (reconstructed from prose).
flowchart LR support-ticket-feedback["support-ticket-feedback"] bertopic-topic-modeler["bertopic-topic-modeler"] bert-embedding-model["bert-embedding-model"] hdbscan-clustering["hdbscan-clustering"] gpt4-summarizer["gpt4-summarizer"] prompt-parameter-optimizer["prompt-parameter-optimizer"] adx-dashboard-prototype["adx-dashboard-prototype"] insight-delivery-application["insight-delivery-application"] human-feedback-loop["human-feedback-loop"] support-ticket-feedback --> bertopic-topic-modeler bertopic-topic-modeler --> bert-embedding-model bertopic-topic-modeler --> hdbscan-clustering bertopic-topic-modeler --> gpt4-summarizer bert-embedding-model --> hdbscan-clustering hdbscan-clustering --> gpt4-summarizer gpt4-summarizer --> prompt-parameter-optimizer gpt4-summarizer --> insight-delivery-application prompt-parameter-optimizer --> human-feedback-loop adx-dashboard-prototype --> human-feedback-loop insight-delivery-application --> human-feedback-loop
Components
| Component | Role | Interacts with |
|---|---|---|
support-ticket-feedback |
Raw textual customer feedback from GitHub support tickets. | bertopic-topic-modeler |
bertopic-topic-modeler |
Open-source topic modeling framework used to create interpretable topics from feedback text. | bert-embedding-model, hdbscan-clustering, gpt4-summarizer |
bert-embedding-model |
Embedding model that represents ticket text using surrounding context and multilingual language understanding. | hdbscan-clustering |
hdbscan-clustering |
Density-based clustering layer that groups similar documents before topic words are aggregated. | gpt4-summarizer |
gpt4-summarizer |
LLM summarization layer that turns representative cluster words into full customer-pain statements. | prompt-parameter-optimizer, insight-delivery-application |
prompt-parameter-optimizer |
Prompt, temperature, max-token, top-p, frequency, and presence-penalty tuning for GPT-4 summaries. | human-feedback-loop |
adx-dashboard-prototype |
First-trial visualization surface used to collect internal feedback on useful views. | human-feedback-loop |
insight-delivery-application |
Tailored internal web app that presents filtered trends, visuals, and product-specific business context. | human-feedback-loop |
human-feedback-loop |
Product-team and internal-user feedback cycle that improves prompts, visuals, filters, and insight presentation. | — |
Data flow
Support-ticket feedback is collected from GitHub's support portal, embedded and clustered with BERTopic/BERT/HDBSCAN, summarized by GPT-4 into readable pain statements, then surfaced through dashboards and an internal web application. Product and engineering teams consume the output as filtered business-context stories about recurring customer pain points.
3 supporting quotes
Why this architecture
GitHub combined open-source clustering and GPT-4 summarization because raw ticket volume was too large for manual classification, topic clusters alone were not human-actionable, and generic market tools could not satisfy GitHub's security, privacy, business-metric, and storytelling requirements. The internal app emerged after the dashboard prototype exposed what users actually needed.
Models used: BERTopic · BERT · HDBSCAN · GPT-4
Scale
- GitHub receives countless pieces of support feedback every day.“We receive countless pieces of feedback through our support portal every day.”article, stated
- The article cites data scientists spending about 80% of their time on collection and organization work.“data scientists spend about 80% of their time on tasks like data collection and organization, including manual classification”article, stated
- The ADX prototype was shared across the company to collect feedback.“We developed multiple visuals and shared them across the company to collect feedback.”article, stated
- The internal app was expected to surface top-10 pain points for a product or feature.“tell stories such as “Here are the top 10 customer pain points in support tickets for X product/feature.””article, stated
Alternatives considered (roads not taken)
Manual support-ticket classification
Rejected because: Manual classification was time-consuming, error-prone, fatiguing, and too slow for broad customer feedback analysis.
Market AI analytics solutions
Rejected because: The team needed strict security/privacy alignment and GitHub-specific business metrics for product-team storytelling.
Training models on support-ticket feedback
Rejected because: GitHub applied pre-trained models to analyze ticket text rather than training on customer feedback.
Keeping the initial ADX dashboard as the product surface
Rejected because: Internal feedback showed they needed a tailored tool with business-specific context, advanced filters, and links to internal systems.
Patterns
retrieval-ranking (feedback-clustering)
BERTopic, BERT embeddings, and clustering group related support-ticket feedback so recurring pain points can be ranked and surfaced.
prompt-chaining (cluster-summarization)
The pipeline first discovers clusters, then uses GPT-4 prompting and parameter settings to turn topic words into readable customer-pain summaries.
prompt-versioning (summarization-control)
GitHub treats prompt crafting and inference parameters as tunable controls for GPT-4 summaries rather than retraining.
data-quality-loop (dashboard-iteration)
The team shipped an MVP dashboard, gathered internal feedback on visuals, and iterated toward a tailored tool with business context.
privacy-preserving-processing (support-ticket-analysis)
GitHub applies pre-trained models to analyze ticket text while explicitly not training models on customer support feedback.
Tradeoffs
How to use customer-support feedback with models.
Chose apply pre-trained models without training on ticket feedback over training models on customer support tickets.
Rationale: This preserves privacy posture while still extracting themes and summaries from feedback text.
How to deliver insights to product teams.
Chose a tailored internal web application with business-specific context over generic dashboards from the first trial.
Rationale: Product teams needed stories such as top pain points for a specific product/feature, not only generic visualizations.
Gotchas (what bit them)
Raw topic clusters were not actionable for humans.
Root cause: Representative words from clustering do not communicate a full sentence of customer pain.
Resolution: GitHub added GPT-4 summarization to produce clearer, human-readable insights.
Market AI analytics tools did not fit GitHub's governance and storytelling needs.
Root cause: The team needed strict security/privacy compliance plus business metrics that could persuade product teams.
Resolution: GitHub built an internal AI analytics tool tailored to product areas and business context.
Manual classification drained data-science capacity and delayed insight discovery.
Root cause: Humans reviewing large text volumes face fatigue, inconsistency, and high collection/organization overhead.
Resolution: Automated trend identification replaced much of the manual classification workflow.
Evaluation
GitHub evaluates by human/internal-user feedback, A/B testing, prompt/parameter tuning, visual usefulness, and whether generated insights support product prioritization and self-service opportunities.
Metrics: internal user feedback · A/B testing · visual usefulness · trend identification · self-service opportunity discovery
Outcomes
- GitHub moved from manual classification toward automated trend identification.
- The tool identifies recurring support-ticket pain points more quickly.
- Product teams gain better feature-prioritization signals.
- The analysis discovers self-service opportunities that can reduce direct support dependency.
The source describes countless daily support-portal feedback items and multilingual analysis through pre-trained BERT/BERTopic capabilities.