> For the complete documentation index, see [llms.txt](https://support.parvenu.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.parvenu.io/features/flows/conditions-control-and-transforms.md).

# Conditions, Control and Transforms

Branching, repeating, waiting and tidying up fields.

These steps decide which leads carry on, and get the data into the right shape before it leaves Parvenu.

## Conditions

### If / else (one check)

Checks one field and sends the lead down the **yes** or the **no** branch.

Available checks: is, is not, is more than, is less than, is at least, is at most, contains, doesn't contain, has a value, is one of.

> **Example**: if `icp.is_match` is `true`, carry on to Work Email Lookup.

### If / else (multiple checks)

Checks two or more things at once, then branches the same way. Under **Match**, choose **Every check must pass** or **Any one check is enough**.

> **Example**: `icp.is_match` is `true`, and `base.email` has a value.

## Control

### Stop after N leads

Lets the first N leads of a run carry on. Every lead after that ends at this step, so nothing after it spends credits on them. Set **How many leads carry on** (15 by default). The count is per run.

To count only leads that get past a later step (for example, only people **Find Hiring Manager** actually found), pick that step under **Count leads that get past**. The list only offers steps that come after this one.

> **Example**: after a job search and your filters, **Stop after N leads** set to 25 keeps a list to 25 companies before **Find Hiring Manager** and **Mobile Phone** run.

### Repeat

Repeats earlier steps until a check passes, or until it hits the repeat limit. Pick the step to go back to under **Repeat from step** (the list only offers steps that come before this one), set **Max repeats** (1 to 20, 3 by default) and the check that ends the repeating.

### Wait

Pauses that lead for a set time before continuing - days, hours or minutes. You can also wait until a date held in a field.

## When the Check button finds a problem

**Check** in the Flow builder lists anything that would stop the Flow working, in plain words and with the step's name - for example "If / else needs a yes branch: connect it to the step leads go to when the check passes" or "Pick the step to repeat from in this Repeat step's settings." Fix each one, then press **Check** again.

## Transforms

### Clean Company Name

Repairs the company name for the rest of the Flow. It drops leftover website text and taglines, removes the legal suffix, and fixes capitalisation - `Cs Genetics` becomes `CS Genetics`. It reads the company description when one is available. No settings.

### Clean Contact Name

Repairs the lead's name - strips titles, suffixes and the rest. No settings.

### Clean Title

Cleans the lead's job title for the rest of the Flow. It cuts LinkedIn headline text after the title, drops the company name and emojis, and fixes capital letters - `Vice President Of Sales` becomes `Vice President of Sales`. The title stored on the list is not changed. No settings.

### Clean Hiring Title

Cleans the job the lead's company is hiring for (`base.hiring_title`) for the rest of the Flow. It drops bracketed text, job numbers and extras after the title - `Senior Performance Auditor (Performance Auditor II)` becomes `Senior Performance Auditor`. The title stored on the list is not changed. No settings.

### Copy / Rename Fields

Copies values from one field to another, for example `email_work.business_email` into `base.email`.

{% hint style="info" %}
Email exports send to `base.email`. **Work Email Lookup** fills that in for you when it is empty, but if the address you want came from somewhere else, copy it across with this step before the export.
{% endhint %}

### Set a Field

Sets a field to fixed text, or to a template such as `{{profile.city}}`.

### Set a Custom Column

Writes a value into one of the list's own [custom columns](/features/lists/custom-columns.md) for each lead, so a Flow can tag, score or mark the leads it ran on. The value is saved on the list, so it shows in the table and in every download.

| Setting                                    | What it does                                                                                      |
| ------------------------------------------ | ------------------------------------------------------------------------------------------------- |
| **Custom column**                          | The column's name, as it shows in the table.                                                      |
| **Value**                                  | Fixed text, or a template such as `{{ai.generated_text}}`.                                        |
| **Empty the cell when the value is blank** | Off by default, so a blank value leaves the cell as it was. Turn it on to empty the cell instead. |

The value has to fit the column: `true` or `false` for a Checkbox, one of the choices for a Select, a number for a Number, a date like `2026-10-20` for a Date. A value that doesn't fit stops that lead at this step and says why.

Earlier steps can read a lead's custom columns as `base.custom_fields`.

> **Example**: after **ICP Score**, an **If / else** on `icp.is_match`, then **Set a Custom Column** with column `Tier` and value `Tier 1` on the yes branch.
