Back to Tools

Review Sentiment Extractor

Use cases

Customer feedback analysis Product improvement insights Review summarisation Voice of customer research

Uses GPT-4o-mini/4o/4.1 with temperature 0.3 for consistency.

Batch processing (1-20 reviews per batch) with configurable inter-batch delays.

Extracts positive praise, negative pain points, and overall sentiment (positive/negative/mixed/neutral).

Reviews truncated at 1,000 characters.

Optional product context field.

Streamlit App Requires API Key

Platform

Browser-based (no installation required)

Input

Reviews CSV

OpenAI API key

Optional: product/service context field

Output

CSV: original reviews plus positive/negative summaries, sentiment classification. Dashboard: sentiment distribution chart, plus the first 10 extracted positive and negative summaries shown as samples.

Launch App View Source

Features

  • GPT-4o-mini, GPT-4o, or GPT-4.1 models
  • Batch size slider (1-20, default 5)
  • Inter-batch delay (0.5-5.0 seconds, default 1.0)
  • 4 sentiment classifications (positive/negative/mixed/neutral)
  • 1,000 character truncation per review
  • Optional product context hint added to the prompt
  • Sample lists of the first 10 positive/negative summaries

How to use

  1. 1 Enter OpenAI API key
  2. 2 Select model (GPT-4o-mini recommended)
  3. 3 Upload review CSV and select text column
  4. 4 Raise maximum reviews to process (defaults to 100)
  5. 5 Configure batch size and delay
  6. 6 Toggle positive/negative extraction
  7. 7 Download CSV with sentiments

Frequently asked questions

Why did only 100 of my reviews get processed?
The Maximum reviews to process box defaults to 100 (or your row count if lower) to protect against accidental API spend while testing. Raise it to your full row count before clicking Extract Sentiments.
Are long reviews analysed in full?
No. Each review is truncated to its first 1,000 characters before being sent to the model, so points made late in a very long review can be missed from the summaries.
Does my CSV need specific column names or an ID column?
No fixed names: you pick the review text column after upload, and the file is read as UTF-8 with a Latin-1 fallback (CSV only, not Excel). The ID column is optional and can be auto-generated, but if you supply your own it must be unique per row, because results are merged back onto your data by that ID and duplicates will multiply rows.
What happens if an API call fails mid-run?
The whole batch (up to 20 reviews depending on your batch size) is recorded with an error and empty sentiment fields, and processing continues with the next batch. There is no automatic retry, so filter the output for the error column and re-run those rows.
When does the overall sentiment classification appear?
Only when both Extract positive and Extract negative are ticked. In that mode each review is labelled positive, negative, mixed or neutral. With a single toggle enabled you get only that one summary column and no classification.
What does the optional product context field actually do?
It appends a line such as 'These reviews are for curtains' to the system prompt, which helps the model judge domain-specific praise and complaints (for example, whether 'thin fabric' is a defect). It changes nothing else about processing.

Need something built for your business?

This tool started as bespoke client work. I build custom scripts, data pipelines, and full apps for SEO and product data problems that off-the-shelf tools don't solve.

Tell Me What You Need