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

# Pull the details out of every call

> Set up extraction fields so Brilo pulls named values like an email address, a budget, or a yes or no answer out of every call automatically.

**Extract Important Call Information** turns a conversation into fields. Instead of reading a transcript to
find out whether the caller wanted a call back, you get a value called `callback_requested` on every
single call record, ready to filter, count, or send to your own system. You set it up in your agent's
**Post Call Analysis** tab.

## Before you start

* An agent that is taking calls. See [Turn your agent on](/go-live/turn-your-agent-on).
* Ten minutes for the first field, two minutes for each one after that.
* A list of the questions you currently answer by reading transcripts. Those are your fields.
* You will be working in your agent's **Post Call Analysis** tab.

## Steps

<Steps>
  <Step title="Open Post Call Analysis">
    Open your agent and go to **Post Call Analysis**, then find **Extract Important Call Information**.
  </Step>

  <Step title="Add a field and choose its type">
    There are three types, and picking the right one matters more than anything else you do here.

    * **Identify Yes or No Questions.** A clear question Brilo can answer with yes or no. Best for
      confirming that something happened.
    * **Select from Predefined Choices.** You supply the options and Brilo picks the closest match. Best
      for anything you want to group or count.
    * **Extract Specific Information.** Free text, for pulling out a specific piece of information such as
      an email address.
  </Step>

  <Step title="Give it a unique name">
    This is the name your systems will see, so it has rules: lowercase letters and underscores only. For
    example `callback_requested`, `user_interest_level`, or `user_email`.

    Name it after the thing, not the question. `user_email` is a good name, `what_is_their_email` is not.
  </Step>

  <Step title="Write what Brilo should extract">
    Phrase it as the question you would ask somebody who listened to the call. "Did the user request a call
    back". "What is the user interest level". "What is the user's email".

    Be specific about which value you want when a call mentions several. "The email address the caller gave
    for confirmation" beats "their email".
  </Step>

  <Step title="Add choices or examples">
    For **Select from Predefined Choices**, list the options. Keep them few and clearly different, and add
    an option for none of the above.

    For **Extract Specific Information**, fill in **Output examples**. This is the single biggest lever on
    accuracy, and skipping it is the usual reason a field comes back empty or in the wrong format.
  </Step>

  <Step title="Save, then take a real test call">
    Save and call your agent, deliberately saying the thing you want extracted. Open the call record and
    check the field. See [Test your agent yourself](/go-live/test-your-agent-yourself).
  </Step>
</Steps>

## You will know it worked when

You open a call record and the field is filled in with the right value, and on a call where the subject
never came up it is empty rather than guessed.

## Which type to use

| What you want                  | Type                           | Example name          |
| ------------------------------ | ------------------------------ | --------------------- |
| Did something happen           | Identify Yes or No Questions   | `callback_requested`  |
| Which of these applies         | Select from Predefined Choices | `user_interest_level` |
| A specific value they said     | Extract Specific Information   | `user_email`          |
| How urgent it is               | Select from Predefined Choices | `urgency`             |
| What service they asked about  | Select from Predefined Choices | `service_requested`   |
| Their postcode or address      | Extract Specific Information   | `service_address`     |
| Whether they agreed to a visit | Identify Yes or No Questions   | `visit_booked`        |

Prefer choices over free text whenever you can list the options. Choices give you clean values you can
count, and free text gives you thirty spellings of the same thing.

## Fields worth setting up first

Start with four, not fourteen:

1. **Did they get what they wanted.** Yes or no. This is the one number that tells you whether your agent
   is working.
2. **What did they want.** Choices, listing your main services plus other.
3. **Do they need a person.** Yes or no. This is your follow up list.
4. **The one detail you always chase.** An email, a postcode, a policy number, whatever your team asks for
   twice a day.

Add more once those four are reliable.

## Where the values go

Extracted fields are on the call record, and they are included in the webhook sent after each call, so
your own system gets them without anybody copying anything. See
[Send data to your systems](/actions/send-data-to-your-systems) and
[Post-Call Webhook](/api-reference/webhooks/post-call).

That makes extraction the right tool when software is going to act on the value. When a person is going to
read it, a summary is better. See [Personalised call summaries](/reports/personalised-call-summary).

## What else you can do here

* Have calls tagged automatically for grouping without setting up fields. See
  [Tag your calls automatically](/reports/tag-your-calls-automatically).
* Write extracted values into your CRM against the contact. See
  [Update your CRM](/actions/update-your-crm).
* Ask your agent to collect the detail during the call, so there is something to extract. See
  [Write what your agent says](/agents/write-what-your-agent-says).

## If it did not work

**The field is always empty.** The detail was never said on the call. Extraction reads the conversation, it
cannot invent. Tell your agent to ask for it. That fixes far more empty fields than rewording the
extraction does.

**The value is in the wrong format.** Add **Output examples** showing the exact shape you want. A field
without examples is guessing at your format.

**Choices come back as the wrong option.** Your options overlap. "Interested" and "Very interested" are
hard to separate from a phone call. Cut to three clearly different options.

**It picks the wrong one of two values in the call.** Say which one you mean in the extraction question,
for example "the mobile number the caller asked to be called back on".

**Your unique name will not save.** Lowercase letters and underscores only. No spaces, digits, or dashes.

**Nothing appeared on older calls.** Extraction runs as each call ends, so it applies to new calls only.

## FAQ

<AccordionGroup>
  <Accordion title="Can Brilo pull an email address out of a phone call automatically?">
    Yes. Add an extraction field of type **Extract Specific Information** in your agent's **Post Call
    Analysis** tab, name it `user_email`, and ask for the email the caller gave. Fill in **Output examples**
    so it comes back in the format you expect.
  </Accordion>

  <Accordion title="What is the difference between the three extraction types?">
    **Identify Yes or No Questions** answers yes or no, for confirming something happened. **Select from
    Predefined Choices** picks from options you supply, for anything you want to count or group. **Extract
    Specific Information** returns free text, for a specific value such as an email or a postcode.
  </Accordion>

  <Accordion title="Why is my extraction field empty?">
    Almost always because the detail was never mentioned on the call. Extraction reads what was said and
    does not guess. Instruct your agent to ask for it during the conversation.
  </Accordion>

  <Accordion title="What are output examples for?">
    They show Brilo the shape you want the answer in, and they are the biggest single factor in accuracy
    for free text fields. A field without examples will come back in whatever format it likes.
  </Accordion>

  <Accordion title="Can I send extracted call data to my CRM?">
    Yes. Extracted fields are included in the webhook after each call, so your system receives them
    directly. See [Send data to your systems](/actions/send-data-to-your-systems) and
    [Post-Call Webhook](/api-reference/webhooks/post-call).
  </Accordion>

  <Accordion title="What are the rules for the unique name?">
    Lowercase letters and underscores only. That name is what your systems see in the webhook, so name it
    after the value, like `service_address`, rather than after the question.
  </Accordion>

  <Accordion title="How many extraction fields should I set up?">
    Start with four: whether the caller got what they wanted, what they wanted, whether they need a person,
    and the one detail your team always chases. Get those reliable before adding more.
  </Accordion>
</AccordionGroup>

## Related

* [Personalised call summaries](/reports/personalised-call-summary) for prose a person reads
* [Tag your calls automatically](/reports/tag-your-calls-automatically) for grouping calls
* [Send data to your systems](/actions/send-data-to-your-systems) to receive the values
* [Post-Call Webhook](/api-reference/webhooks/post-call) for the exact payload
* [Update your CRM](/actions/update-your-crm) to file values against a contact
