> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voxworks.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# LLM Data

> Extract a single typed value from the current conversation — a name, email, number, date, appointment time, reference number, or category.

## Description

Use **LLM Data** when you need to extract one value from the current conversation. It is best for a single name, email, number, date, appointment time, reference number, or category.

Use [LLM Custom](/tools/llm/llm-custom) instead when you need several fields from the same answer.

***

## Manual Inputs

| Name        | Data Type | Required | Description                                                       |
| ----------- | --------- | -------- | ----------------------------------------------------------------- |
| Type        | string    | Yes      | What kind of answer to look for and how to format it              |
| Reasoning   | string    | No       | LLM reasoning effort (`low`, `medium`, `high`). Defaults to `low` |
| Label       | string    | Yes      | Short, noun-like name of the value being extracted                |
| Description | string    | Yes      | The extraction rule — what counts, what doesn't, and the format   |
| Options     | json      | No       | Allowed choices (required only for `struct-enum`)                 |
| Destination | string    | No       | Variable to write the extracted value into                        |

### Type

Tells the tool what kind of answer to look for and how to format it.

| Type              | Use for                                                           | Output                                                                                            |
| ----------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| `struct-text`     | Names, emails, registrations, reference numbers, notes, summaries | Free-form text                                                                                    |
| `struct-num`      | Numeric values                                                    | A float. Normalizes "fifty thousand", "50k", "1.5 million"; ranges use the midpoint               |
| `struct-date`     | A date only                                                       | `YYYY-MM-DD`. Relative dates resolve from the call date; ambiguous numeric dates use `DD/MM/YYYY` |
| `struct-datetime` | A date **and** time                                               | Full ISO datetime with the team timezone offset. Caller must give both clearly                    |
| `struct-enum`     | An answer that must match one of your options                     | The matched option `value`                                                                        |

### Reasoning

How hard the model works to interpret the answer.

* `low` — direct answers ("My email is [jane@example.com](mailto:jane@example.com)")
* `medium` — the caller may imply the value or answer less directly
* `high` — genuinely subtle answers needing careful interpretation (can be slower)

### Label

The short name of the value being extracted. Keep it noun-like; put rules in **Description**.

```text theme={null}
Customer Email
Claim Number
Incident Date
Appointment Time
Customer Sentiment
```

### Description

The main instruction. State exactly what counts, what does not, and how to format the result. This takes priority over the general type rules.

```text theme={null}
Extract the customer's email address exactly as stated.
Extract the insurance claim number. Exclude policy numbers and phone numbers.
Extract the incident date in YYYY-MM-DD format. Resolve relative dates from the current call date.
Only pass when the caller gives both a date and a time.
```

For dates and datetimes, be explicit about whether partial answers are allowed. For reference numbers, say what similar values should be ignored.

### Options

Used only for `struct-enum`. Provide the allowed choices the tool can return. Use stable, machine-friendly values:

```text theme={null}
positive, neutral, negative
eligible, not_eligible, unknown
booked, declined, needs_follow_up
```

If you use labels or descriptions for the options, keep them short and distinct.

### Destination

Optional variable to write the extracted value into. Leave blank if you only need the `result` boolean.

```text theme={null}
{{contact.email}}
{{custom.claim_number}}
{{custom.appointment_datetime}}
```

***

## Manual Outputs

| Name   | Data Type | Description                                                               |
| ------ | --------- | ------------------------------------------------------------------------- |
| result | bool      | `true` if a valid value was found and written (when a destination is set) |

***

## Conditions

### Success (true)

A valid value was found and, if a destination was configured, written successfully.

### Failure (false)

The value was missing, unclear, irrelevant, invalid for the selected type, or could not be written.

***

## Example Usage

Extract an email:

```text theme={null}
Type: struct-text
Reasoning: low
Label: Customer Email
Description: Extract the customer's email address exactly as stated.
Destination: {{contact.email}}
```

Extract an appointment time:

```text theme={null}
Type: struct-datetime
Reasoning: medium
Label: Appointment Time
Description: Extract the appointment date and time only when the caller gives both.
Destination: {{custom.appointment_datetime}}
```

Extract sentiment:

```text theme={null}
Type: struct-enum
Reasoning: medium
Label: Customer Sentiment
Description: Select the sentiment that best matches the customer's most recent answer.
Options: positive, neutral, negative
Destination: {{custom.customer_sentiment}}
```

***

## Common Issues

* **Enum extraction fails** — check that Options is filled in and the answer can reasonably match one option.
* **Date or datetime fails** — check whether the caller actually gave enough information.
* **Returns `false` even though the value was extracted** — check the Destination variable reference.
* **Inconsistent results** — make Description more specific.

***

## Next Steps

* [LLM Custom](/tools/llm/llm-custom) — Extract several flat fields in one call
* [LLM Tools overview](/tools/llm/overview) — When extraction passes vs fails
* [Variables](/flows/variables) — See all available variables
