Table of Contents

👉 Try the demo: https://github.com/LM-Kit/lm-kit-net-samples/tree/main/console_net/text-analysis/sentiment-analysis/customer_feedback_sentiment

Customer Feedback Sentiment Dashboard for C# .NET Applications


🎯 Purpose of the Demo

An interactive console application that classifies a batch of customer reviews and turns the per-review verdicts into an actionable dashboard: per-product and per-source segmentation, sorted worst-first, with the strongest negatives surfaced for follow-up. Built on LM-Kit.NET's fine-tuned lmkit-sentiment-analysis classifier.

All inference runs on-device. No cloud round-trip, no per-token billing.


👥 Industry Target Audience

  • Product teams tracking weekly NPS and app-store reviews.
  • Customer experience triaging support survey comments.
  • Marketing monitoring channel-by-channel sentiment.
  • Healthcare / education analysing patient or student feedback at scale.

🚀 Problem Solved

A weekly stream of hundreds of reviews is impossible to triage manually. Existing keyword scoring drifts on sarcasm and slang; general-purpose LLMs are slow and expensive at this scale. The fine-tuned LM-Kit classifier produces a calibrated verdict per review (and an optional 3-class neu/pos/neg breakdown), and the demo turns those verdicts into a segmented dashboard the team can act on.


💻 Application Overview

Interactive menu — no command-line arguments — with three input modes plus an opt-in 3-class toggle:

Mode What it does
Live Type one review at a time; immediate verdict + confidence.
Sample Run the built-in 12-review mixed dataset (2 products × 3 sources) end-to-end.
File Path-prompt for either a flat .txt (one review per line) or a structured .csv (id,product,source,date,text).
Quit Exit.

At startup the demo asks whether to enable the 3-class mode (positive / neutral / negative). Binary mode is the default.

After any batch the dashboard prints:

  • Overall pos / neu / neg counts and percentages.
  • Per-product table sorted by negative rate (worst first).
  • Per-source table sorted by negative rate.
  • Top 5 strongest negatives with product/source tag and confidence.

Optional CSV export writes both a per-row file (<name>_classified.csv) and a per-segment summary (<name>_summary.csv).

✨ Key Features

  • SentimentAnalysis.GetSentimentCategory + .Confidence: one call per review.
  • NeutralSupport: toggleable 3-class output for nuance-sensitive use cases.
  • Interactive, no flags: every input is a console prompt.
  • CSV outputs ready to drop into a BI dashboard or auto-triage queue.
  • Segmented dashboard so the team knows where to focus this week.

🧠 Model

  • lmkit-sentiment-analysis — fine-tuned for English binary + 3-class sentiment.

🛠️ Getting Started

📋 Prerequisites

  • .NET 8.0 or later
  • ~1 GB free disk for the model download on first run

▶️ Running the Application

git clone https://github.com/LM-Kit/lm-kit-net-samples
cd lm-kit-net-samples/console_net/text-analysis/sentiment-analysis/customer_feedback_sentiment
dotnet run

The app prompts for everything; no arguments are required.

💡 Example Session

╔══════════════════════════════════════════════════╗
║      Customer Feedback Sentiment Dashboard       ║
╚══════════════════════════════════════════════════╝
Classifier mode: binary (pos / neg)

  1 / live     Classify one review at a time
  2 / sample   Run the built-in 12-review dataset
  3 / file     Classify a flat .txt or a structured .csv file
  q / quit     Exit

> 2

--- Built-in sample (12 reviews) ---
  classified 12/12

Dashboard
  Overall: 12 reviews   pos=6 (50.0%)   neu=0 (0.0%)   neg=6 (50.0%)

  By product (worst first):
    Segment              Total    Pos    Neu    Neg    Neg%
    Web App                  6      2      0      4   66.7%
    Mobile App               6      4      0      2   33.3%
  ...
  Strongest negatives:
    #  3 [Web App/Survey] (98%)  Pricing tripled overnight and the new tier ...
Share