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

# Qualifying inbound leads automatically with Default

> How to qualify inbound leads automatically before they reach sales with Default: check for a work email, enrich the lead, test fit with Multi-Branch or Rules of Engagement, classify free text with AI Prompt, and show the scheduler only to qualified leads.

Default qualifies inbound leads automatically inside a workflow. The workflow checks each lead
against your criteria as soon as it arrives, sends qualified leads to a rep or a booking page, and
sends everyone else down a different path, such as a resources page or a nurture sequence.

## How automatic lead qualification works in Default

A qualification workflow in Default runs these steps:

1. **A lead arrives.** A [**Form Submission**](/workflows/triggers#form-submission) trigger starts
   the workflow when someone submits a tracked form. The **API**, **CRM Record Created**, and
   **Website Intent Signal** triggers work too.
2. **Default checks the cheap signals first.** A **Multi-Branch** node checks the form answers and
   whether the email address is a work email.
3. **Default fills in what the form did not ask.** An [**Enrich Data**](/workflows/steps-enrichment#enrich-data)
   node adds details such as company size and job title.
4. **Default decides.** A **Multi-Branch** node, a [Rules of Engagement](/rules-of-engagement)
   ruleset, or an [**AI Prompt**](/workflows/steps-ai#ai-prompt) node sorts the lead into qualified
   or not qualified.
5. **Each lead gets the right next step.** Qualified leads get a rep and a booking page. Other leads
   get a redirect, a nurture sequence, or a CRM record without a sales owner.

Every run is recorded in the workflow's [run log](/workflows/run-logs), including each condition
with a **TRUE** or **FALSE** result, so you can see why a lead qualified or not.

## Qualification checks Default can run

| Check | How to build it in Default | Example |
| - | - | - |
| Work email | A **Multi-Branch** condition on the email field with **is work domain** or **is not work domain**. Free and personal email providers count as not work domains. | Keep personal email addresses away from the booking page. |
| Form answers | A **Multi-Branch** condition on the submitted field. | Company size is `1-10`, or the budget answer is `Not yet`. |
| Company and person fit | **Enrich Data**, then a **Multi-Branch** condition on the result. | Number of employees is at least 50, and the title contains `Director`. |
| Existing customer or account | **Match Record** for the Account, then a condition on its fields. See [Match an account by company domain](/workflows/steps-crm#match-an-account-by-company-domain). | Send existing customers to their account owner instead of a new-business rep. |
| Free-text intent | **AI Prompt** returns 1 label, and **Multi-Branch** branches on it. | Sort "How can we help?" into Sales, Support, Partnership, or Job seeker. |
| Live web research | [**Deep Research**](/workflows/steps-research) (Beta) returns typed fields, and **Multi-Branch** branches on them. | A fit verdict of `Strong Fit`, `Disqualified`, or `Human Check`. |
| Shared fit rules | A Rules of Engagement ruleset that routes qualified leads and sends disqualified ones to **No one**. | The same rules run in your form, API, and CRM workflows. |

## Build a qualification workflow for a demo form

This example qualifies demo requests from a form, shows the booking page only to qualified leads,
and sends the rest to a resources page.

<Steps>
  <Step title="Start from the form">
    In **Workflows**, create a workflow and add the **Form Submission** trigger. Set
    **Connected Form** to your demo form. The form must be approved and mapped first. See
    [Your forms](/forms/your-forms#use-a-form-in-a-workflow).
  </Step>

  <Step title="Filter out personal email addresses">
    Add **Multi-Branch**. Add a branch named `Personal email` with the condition: the form's email
    field **is not work domain**. Connect it to a **Redirect** node that sends the visitor to a page
    asking for a work email.

    Checking the email before **Enrich Data** means you don't spend enrichment credits on personal
    addresses.
  </Step>

  <Step title="Enrich the lead">
    On the **Multi-Branch** node's **Else** branch, add **Enrich Data**. Set **Enrichment target**
    to **Both** and choose a provider or waterfall in **Enrichment source**.
  </Step>

  <Step title="Check fit">
    Add a second **Multi-Branch** with a branch named `Qualified`. Add the conditions your team uses,
    for example the enriched number of employees is at least 50 and the country is any of the
    markets you sell to. Leads that fail the conditions take **Else**.
  </Step>

  <Step title="Book qualified leads">
    On `Qualified`, add [**Display Scheduler**](/workflows/steps-routing-scheduling#display-scheduler)
    with your demo event. The node waits for the visitor and continues on **Booked** or
    **Not booked**. See [Connect a scheduler to your form](/forms/scheduler).
  </Step>

  <Step title="Send other leads somewhere useful">
    On **Else**, add **Redirect** to a resources page. To keep in touch, add a sequencing node such
    as **Add to Outreach Sequence**. See [Sequencing nodes](/workflows/steps-sequencing).
  </Step>

  <Step title="Test and publish">
    Select **Test**, run a few representative submissions, and check each run's path in the run
    log. Then select **Publish** and turn on the
    [deployment switch](/workflows#the-enabled-switch) so the status reads **Live**.
  </Step>
</Steps>

<Warning>
  A workflow test performs real actions, including CRM writes, sequence enrollments, and
  notifications. Use test records and test destinations.
</Warning>

Record every lead in your CRM, qualified or not, so reporting stays complete. Use **Match Record**
first and create a record only on **No Match**, so a repeat form fill does not create a duplicate or
change an existing owner. See [Match record](/workflows/steps-crm#match-record).

Every node between the form and **Display Scheduler** delays the booking page. Keep the checks
before it short, and move slow steps such as **Deep Research** after the booking, unless the
decision depends on them.

## Qualify and route with Rules of Engagement

A Rules of Engagement ruleset in Default can qualify and route in 1 step: disqualifying rules send
leads to **No one**, and the rules below them send qualified leads to the right queue. Because rules
run from top to bottom and the first match wins, put the disqualifying rules first.

Example ruleset that routes to account executive (AE) queues, with a number of employees input
from **Company enrichment**:

| Order | Rule | Criteria | Route to |
| - | - | - | - |
| 1 | `Too small` | Number of employees is less than 10 | **No one** |
| 2 | `Enterprise` | Number of employees is at least 1,000 | **Queue**: `Enterprise AEs` |
| 3 | `Mid-market` | Number of employees is at least 10 | **Queue**: `Mid-Market AEs` |

In the workflow, place the Rules of Engagement node after **Enrich Data**. Connect **Resolved** to
**Display Scheduler**, turn off **Use event hosts**, and set the host to **Latest resolved user**.
Connect **Else** to your not-qualified path.

**Resolved** carries no user when the matched queue has no active members, and a scheduler with an
empty host can't show times. Put a **Multi-Branch** node between **Resolved** and
**Display Scheduler** that checks **Latest resolved user** exists, and send the rest to a
**Round-Robin** node on a catch-all queue, or keep every qualifying queue staffed.

**Else** runs both when a rule routes to **No one** and when no rule matches. A lead with no
employee count, for example because enrichment found nothing, matches none of the 3 rules, because a
blank value is neither less than 10 nor at least 10, so it lands on **Else** too.
**Matched Rule** is set only when a rule decided, so a **Multi-Branch** node on **Else** can
send disqualified leads to the not-qualified path and uncovered leads to a person for review. See
[Rules of Engagement](/rules-of-engagement).

## Classify free-text answers with AI Prompt

Form answers such as "How can we help?" are free text. The **AI Prompt** node in Default sends them
to a language model with your instructions and returns the model's reply as text.

<Steps>
  <Step title="Add AI Prompt">
    After the trigger, add **AI Prompt**. Choose a **Model**.
  </Step>

  <Step title="Ask for exactly 1 label">
    In **Dynamic prompt**, list the labels the model may return and ask for the label only. Type
    `{{` to insert the form answer:

    ```text theme={null}
    Classify this demo request into exactly 1 of these labels:
    Sales, Support, Partnership, Job seeker.
    Reply with the label only.

    Request: {{ How can we help? }}
    ```
  </Step>

  <Step title="Branch on the label">
    Add **Multi-Branch** with 1 branch per label, each checking that the AI Prompt **Output**
    equals the label. Send `Sales` to your qualification or routing path.
  </Step>

  <Step title="Handle everything else">
    Point **Else** at a path a person reviews. It catches replies that match no label and failed
    requests, because AI Prompt reports a failure without stopping the workflow.
  </Step>
</Steps>

AI Prompt works only with data already in the workflow. It sends the prompt, including any lead
data you insert, to a third-party model provider. For facts from the live web, use
[Deep Research](/workflows/steps-research) (Beta).

## Qualify leads that start in your CRM

Leads can also arrive through list imports, integrations, or sales reps creating them in Salesforce
or HubSpot. Start a workflow with **CRM Record Created** and add a **Condition**, for example
`Lead Source` is `Inbound`, then run the same checks. To re-check a lead when its data changes, use
**CRM Record Updated** with a **Fields Updated** condition, so the workflow runs only when the
fields you qualify on change. See [Triggers](/workflows/triggers#crm-record-created).

## Check why a lead did or did not qualify

* **Run log**: open the workflow, select **Runs** in the top bar, and open the run. Each
  **Multi-Branch** step lists every condition with the value it found and **TRUE** or **FALSE**.
  The **AI Prompt** step shows the model's reply under **Show data**. See
  [Run logs](/workflows/run-logs).
* **Rules of Engagement**: the evaluation log shows which rule matched and why the rules above it
  did not. See [Review a routing decision](/rules-of-engagement#review-a-routing-decision).

To score leads on a scale instead of a yes or no, see
[Lead scoring with Default](/lead-routing/lead-scoring).

Related: [Lead routing software from Default](https://www.default.com/product/lead-routing-software)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.