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

# Team, data and AI steps

> Tags, owners, notes, tasks, team notifications, goals, Transform data and Ask AI.

Besides LinkedIn and email steps, a campaign can do work for your team. Click **+** on the canvas and look in the **Team**, **AI** and **Other steps** sections.

## Team steps

| Step | What it does |
| - | - |
| **Add tag** / **Remove tag** | Adds or removes tags on the contact (separate several with commas). |
| **Assign to teammate** | Makes a workspace member the contact's owner, or picks one from a list: **Round robin (each in turn)** or **Fewest open contacts**. The owner shows on the contact page and can get its tasks and notifications. See [Who gets new contacts, and hot contacts](/help/leads/routing-and-engagement.md). |
| **Add note** | Writes a note on the contact page, with variables. Only your team sees it; it's never sent to the contact. |
| **Create task** | Creates a task (due in N days) for the contact's owner, a teammate or anyone. Tasks show on the contact page and in **My tasks**. |
| **Notify the team** | Sends a notification to chosen teammates (or the contact's owner): in Kerux, under **My tasks**, and by email if you tick it. |
| **Notify on Slack** | Posts in a Slack channel or to a person. See [Slack](/help/integrations/slack.md). |

> [!NOTE]
>
> \*\*Pro plan.\*\***Notify on Slack** is part of Pro and Agency (and the free trial). The other team steps, the data steps and the **Ask AI** step (not the same as the Ask AI assistant) are on every plan. See [Plans and billing](/help/account/billing.md).

If a step names a teammate who has left the workspace, the contact stops with **Stopped: the step names a teammate who left the workspace** and waits for you to pick someone else and click **Retry**. A notification for "the contact's owner" on a contact without one goes to the workspace owner, so it's never lost.

## My tasks

**My tasks** (**Home > My tasks**) lists the tasks for you and for anyone in the team, with their contact and due date (late ones in red), and your notifications. Tick a task to mark it done. Everyone's tasks are one click away.

## Remove from campaign

**Remove from campaign** ends the contact's run here, with the reason you write (it shows in the contact's history). You can also pick another campaign: the contact leaves that one (if it's in it) and goes on in this one. To move a contact into another campaign, use **Move to campaign**; it does nothing if the contact is already there.

## Goal

A **Goal** is a step the contact jumps to as soon as something becomes true, from wherever it is in the campaign, skipping the rest. For example: "Has the tag *interested*", "Replied", or "Email is not empty". Anything queued for the contact's old step (a message waiting to go out) is canceled. Each contact reaches a goal once. A goal needs no arrow into it; connect what should happen after it.

Goals are checked when the contact moves, when an event arrives (a reply, an accepted invitation) and when someone changes the contact's tags or fields in Kerux or through the API.

## Transform data

**Transform data** takes one value (usually a variable) and runs it through formatters, in order:

* Text: trim spaces, UPPER, lower, Capitalize Words, replace, first word.
* Lists: split into a list, first item, last item, join.
* Numbers: add, subtract, multiply, divide, round.
* Dates: format (for example `D MMMM YYYY` or `YYYY-MM-DD`) and add or subtract minutes, hours, days, weeks or months, in your workspace's timezone.

The result is saved in a contact field (or a custom field) or kept as the step's result, `{{steps.<step>.value}}`. If the value can't be read (not a date, not a number), the step's **couldn't read it** outcome is taken; with nothing connected there, the contact stops with the reason and **Retry**.

## Ask AI

**Ask AI** gives the AI one instruction with the contact's variables and uses the answer:

* **Classify**: pick one of your labels (for example "Decision maker, Influencer"). Each label gets its own path on the canvas; anything else goes to **other**.
* **Summarize** or **Write a text**: later steps use the answer as `{{steps.<step>.text}}`.
* **Extract values**: pull named values out of the data, each one a variable for later steps.

Ask AI also reads your workspace's [business profile](/help/account/business-profile.md), so a fit check or a first line is about what you really sell, and a text it writes follows your selling style's tone (the wording only, never who gets a message or when). Ask AI uses your team's AI credits (about 1 per contact). If the AI is down, the contact waits and Kerux tries again a few times, then stops with the reason and **Retry**; if the AI declines the request, the contact stops so you can change the instruction. It never passes a contact silently.

A **Summarize** or **Write a text** answer can't contain a link, email address or phone number that isn't in your instruction, your variables or the contact's company website. If it does, the answer isn't used: the contact stops with **Stopped: the AI declined this request** and **Retry**. Kerux doesn't retry it by itself, because the same contact would give the same answer. Put the link you want in the instruction or in a variable, then click **Retry**. For looking people up on the web, use [Research with AI online](/help/campaigns/research-with-ai-online.md).

## API

Owners, notes and tasks have API endpoints: `PUT /v1/leads/{id}/owner`, `GET`/`POST /v1/leads/{id}/notes`, `GET`/`POST /v1/leads/{id}/tasks`, `GET /v1/tasks` and `PATCH /v1/tasks/{id}`. The latest research of a contact is at `GET /v1/leads/{id}/ai-findings`. See [API](/help/developers/api.md).


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