> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://onepin.ai/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://onepin.ai/docs/_mcp/server.

# Normalizer

> The Onepin Normalizer node (operator_normalizer) — expands numbers, dates, and symbols into their spoken form before generation.

**Family: Operator · `type: operator_normalizer`**

The Normalizer rewrites text into spoken form so it reads naturally — expanding numbers, dates, and symbols ("\$5" → "five dollars"). Place it between the [Script](/docs/workflow/script) (or [Translator](/docs/workflow/translator)) and the [Generator](/docs/workflow/generator). Pronunciation control — your workspace dictionary and phonetic fixes — is a separate concern handled at generation, not here: see [Fix pronunciations](/docs/guides/fix-pronunciations).

## Config

| Config key | Default | Values                                                                                     |
| ---------- | ------- | ------------------------------------------------------------------------------------------ |
| `engine`   | `llm`   | `llm` — a model rewrites each line, reading context to resolve ambiguity (the only engine) |

```python
node["config"] = {"engine": "llm"}
```

Normalization is billed per input character regardless of content.

## Inspect this node

#### Python

```python
client.nodes.get_node_detail(node_type="operator_normalizer").data
```

#### CLI

```bash
onepin nodes show operator_normalizer
```

#### API

```bash
curl https://api.onepin.ai/api/v2/nodes/operator_normalizer \
  -H "Authorization: Bearer $ONEPIN_API_KEY"
```

## Related

* [Generator](/docs/workflow/generator) — the next node
* [Script](/docs/workflow/script) — where the text comes from