# Classify and tag customer reviews at scale

**Use case:** 

Runs every review through the same rubric and returns sentiment, a topic tag, an urgency flag and a one line summary as separate columns. Temperature is held low so the labels stay consistent across the batch, which is what makes the output usable in a spreadsheet or a dashboard rather than only readable.

## Input

```json
{
  "prompts": [
    "Review: 'Arrived two days late and the box was crushed, but the product itself works fine.' Return sentiment (positive, neutral, negative), topic (shipping, quality, price, support, other), urgency (low, medium, high) and a one line summary.",
    "Review: 'Third time the app has logged me out this week. Support has not replied in 5 days.' Return sentiment (positive, neutral, negative), topic (shipping, quality, price, support, other), urgency (low, medium, high) and a one line summary.",
    "Review: 'Honestly the best value I have found at this price point. Would buy again.' Return sentiment (positive, neutral, negative), topic (shipping, quality, price, support, other), urgency (low, medium, high) and a one line summary.",
    "Review: 'Fabric started pilling after two washes. Disappointed for the money.' Return sentiment (positive, neutral, negative), topic (shipping, quality, price, support, other), urgency (low, medium, high) and a one line summary."
  ],
  "system_prompt": "You are a precise review classifier. Use only the label values offered. Return the keys sentiment, topic, urgency and summary. Do not add commentary.",
  "model": "anthropic/claude-haiku-4.5",
  "enable_web_search": false,
  "enable_file_parser": false,
  "temperature": 10,
  "max_tokens": 512,
  "response_format": "json_object",
  "reasoning_effort": "default",
  "provider_sort": "default",
  "max_retries": 2,
  "concurrency": 8
}
```

## Output

```json
{
  "prompt": {
    "label": "Prompt",
    "format": "string"
  },
  "model": {
    "label": "Model",
    "format": "string"
  },
  "response": {
    "label": "Response",
    "format": "string"
  },
  "tools_used": {
    "label": "Tools used",
    "format": "array"
  },
  "cost_usd": {
    "label": "Cost (USD)",
    "format": "number"
  },
  "usage": {
    "label": "Tokens",
    "format": "object"
  },
  "error": {
    "label": "Error",
    "format": "string"
  }
}
```

## About this Actor

This example demonstrates how to use [Bulk LLM Runner GPT, Claude, Perplexity, Kimi (No API Key)](https://apify.com/fayoussef/bulk-llm-runner.md) with a specific input configuration. Visit the [Actor detail page](https://apify.com/fayoussef/bulk-llm-runner.md) to learn more, explore other use cases, and run it yourself.


## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
This Task's input is already configured above — use it as-is rather than inventing a new one.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For full API examples (JavaScript, Python, CLI, MCP, OpenAPI), see this Task's Actor page: https://apify.com/fayoussef/bulk-llm-runner.md

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).
