# Choose Best

> Turn many results into one. An AI judge picks the best image or text against your criteria, or the node joins, counts, votes on or merges the results.

Source: https://nodaro.ai/docs/nodes/automate/choose-best

The **Choose Best** node turns many candidate results into one. Connect the results of a batch, or of several nodes through [Collect](https://nodaro.ai/docs/nodes/automate/collect). An AI judge then picks the best one against your criteria, or the node joins, counts, votes on or merges the results instead. The node shows the chosen result, its position among the candidates and the judge's reason.

- Found in: Automate › Lists & Batching
- Output: text
- API type: `reduce`

## When to use it
- You generate five variants of a cover and want only the best one to continue, for example to [Telegram Post](https://nodaro.ai/docs/nodes/publish/telegram-post).
- You ask the same question several times and want the most common answer.
- You want to know how many results of a batch actually arrived.
- You want the texts of a batch joined into one text, or JSON objects merged into one object.

## Quick start
### Add the node

Press Tab on the canvas and choose **Automate › Lists & Batching › Choose Best**.

### Connect the candidates

Wire the candidates into the **Candidates** input. They can come from a node that runs once per row of a [List](https://nodaro.ai/docs/nodes/automate/list), such as [Generate Image](https://nodaro.ai/docs/nodes/image/generate-image), or from a [Collect](https://nodaro.ai/docs/nodes/automate/collect) that gathers several separate nodes.

### Choose what to do

Open the settings panel. Under **What to do with the candidates**, keep **AI picks the best**, the default for a new node, or choose another option. For the AI judge, describe the winner under **Judge by**, and set **The candidates are** to **Images** when the candidates are pictures.

### Run it

Choose Best runs once, after all the candidates exist. The node shows the winner and the judge's reason, and the **Candidates** tab lists every candidate.

Workflow: Five prompts make five covers, Choose Best keeps the strongest one, and only that cover is posted.

- List → Generate Image (prompt · Each)
- Generate Image → Choose Best (candidates)
- Choose Best → Telegram Post

## Inputs and outputs
| Input or output | Accepts or sends | What it does |
| --- | --- | --- |
| **Candidates** | Any results: text, links to images, videos or audio, or JSON | Every candidate to consider. The results of several connections are added together into one set. |
| **Result** | One value | The chosen or combined result. An image pick sends the image link, **Merge JSON objects** sends JSON text, and **Count them** sends a number. |

The result is a single value. To start a new batch from it, pass it through [Split Text](https://nodaro.ai/docs/nodes/automate/split-text) or a [List](https://nodaro.ai/docs/nodes/automate/list).

## What to do with the candidates

| Option | Use it when | Credits |
| --- | --- | --- |
| **AI picks the best** | An AI judge should compare every candidate with your criteria and pick one. | 3, 10 or 25, by the judge model's tier |
| **Join into one text** | You want every candidate in a single text, with a separator between them. | Free |
| **First that has content** | You want the first candidate that is not empty. | Free |
| **Count them** | You want to know how many candidates arrived. | Free |
| **Most common answer** | You want the candidate that appears most often. A tie goes to the first. | Free |
| **Merge JSON objects** | You want JSON objects combined into one object. | Free |

The option list shows the price for the judge model that is chosen on the node.

### AI picks the best

The judge compares every candidate with your criteria. It answers with the position of the winner and a one-sentence reason, which appear on the node and in the **Candidates** tab.

| Setting | What it does |
| --- | --- |
| **AI Model** | The judge. The same model list as every AI text node, grouped into Economy, Standard and Premium tiers. A new node uses the Standard-tier default for this job. |
| **Judge by** | What a winner looks like, for example "The most eye-catching cover for a dark editorial Instagram feed — one clear focal point, readable as a thumbnail." |
| **The candidates are** | **Texts**, the default, or **Images**. The same switch is on the node, next to the model. |

Choose **Images** for pictures. With **Texts**, the judge reads only the image links as text and compares those, which looks like a real choice but is not one.

| Judge model tier | Credits per run |
| --- | --- |
| Economy | 3 |
| Standard (default) | 10 |
| Premium | 25 |

Economy models include Gemini Flash and Haiku, and Premium models include Opus. For example, take a List of 5 prompts that runs Generate Image, followed by Choose Best with the default Standard judge. The workflow costs the 5 image runs plus 10 credits. With a Premium judge, the judge costs 25 credits instead, and with an Economy judge, 3 credits.

### The free options

| Option | Setting |
| --- | --- |
| **Join into one text** | **Separator** — the text placed between two candidates. The default is a blank line. |
| **First that has content** | Nothing to set. |
| **Count them** | Nothing to set. |
| **Most common answer** | **Treat different letter case as different answers** — off by default, so `Yes` and `yes` count as the same answer. |
| **Merge JSON objects** | **How to merge** — **Deep (nested objects too)**, the default, merges nested objects field by field. **Shallow (top level only)** replaces whole top-level fields, and later candidates win. |

## What you see on the node

The node shows the chosen option and the judge model, and lets you edit the main setting in place, such as **Judge by** or **Separator**. After a run, it shows the candidates in a grid with the winner marked, followed by the result and the judge's reason.

The settings panel has two tabs. **Config** holds the settings. **Candidates** opens after a run and shows a **Summary**, the judge's reason under **Why it chose this**, and every candidate with the chosen one marked.

## When some candidates failed

A failed run in a batch leaves an empty candidate. Choose Best drops every empty candidate before it decides, so each option works only on the results that arrived. For example, 10 images with 3 failures give **Count them** a result of 7, not 10.

When every candidate is empty, the result depends on the option:

| Option | When every candidate is empty |
| --- | --- |
| **Join into one text** | Returns empty text, without an error. |
| **Count them** | Returns 0, without an error. |
| **First that has content**, **Most common answer**, **Merge JSON objects**, **AI picks the best** | Stops with the error "All upstream iterations failed; nothing to reduce." |

## From the API
Choose Best is available to code and AI assistants under its API type, `reduce`: `POST /v1/reduce`, the MCP tool `reduce`, and `client.reduce` in the SDK. Set `strategyId` to `pick-best-llm`, `concat`, `first-non-empty`, `count`, `vote` or `merge-json`. For the AI judge, `strategyConfig` takes `criteria`, `inputKind` (`text` or `image-url`) and `llmModel`. An unknown model is refused before any credits are reserved. See [Run a single node](https://nodaro.ai/docs/developers/api/nodes) and the [MCP tools](https://nodaro.ai/docs/mcp/tools).

## Tips
- **Describe the winner, not the task.** "One clear focal point, readable as a thumbnail" gives the judge something to compare. "Pick the best" does not.
- **Match the judge to the stakes.** An Economy judge is enough for a quick draft pick. Use a Premium judge for a final choice that matters.
- **Gather separate nodes with Collect.** Several connections into **Candidates** are added together. Route separate nodes through [Collect](https://nodaro.ai/docs/nodes/automate/collect) when you want to see them on one node and set their order.
- **Check text quality instead.** To score a single text against a threshold, use [QA Check](https://nodaro.ai/docs/nodes/automate/qa-check).

## Frequently asked questions

### How do I pick the best of several generated images automatically?

Connect the images to Choose Best, either from a Generate Image node driven by a List or through Collect. Choose AI picks the best, describe the winner under Judge by, and set The candidates are to Images. The judge picks one image and gives a one-sentence reason.

### How many credits does Choose Best cost?

Only AI picks the best costs credits, 3, 10 or 25 depending on whether the judge model is Economy, Standard or Premium. The other five options are free. The nodes that made the candidates are charged as usual.

### Why should I set The candidates are to Images?

With Texts, the judge reads only the image links as text and compares those, which looks like a real choice but is not one. With Images, the judge looks at every picture.

### What happens when some candidates failed?

Empty candidates are dropped first, so Count them counts only the results that arrived. When every candidate is empty, Join into one text returns empty text and Count them returns 0, while the other options stop with an error.

### Can I use Choose Best from the API or MCP?

Yes. The node's API type is reduce. Use POST /v1/reduce, the MCP tool reduce, or client.reduce in the SDK, with the same six options.
