# Processing Rows with AI

Processing is where Lists come alive. When you process a list, your assigned AI agent researches each row — using web search, website visits, tech stack inspection, CRM lookups, and more — and fills every AI-enabled column with structured results.

{% hint style="success" %}
**Hands-Off Enrichment**: Click Process, then watch your agent work through hundreds of rows in real time. Each row is researched, qualified, and enriched automatically.
{% endhint %}

## How Processing Works

When you start processing, the system:

1. Identifies all AI-enabled columns and their prompt templates
2. Fetches rows that need processing (pending, failed, or paused)
3. Sends rows to the AI agent in optimized batches
4. The agent researches each row using its available tools
5. Results are written directly into the list columns
6. Progress updates stream to your browser in real time via WebSocket

{% @mermaid/diagram content="graph LR
A\[Start Processing] --> B\[Load AI Columns<br/>& Prompts]
B --> C\[Fetch Pending<br/>Rows]
C --> D\[Process Each<br/>Row with Agent]
D --> E\[Write Results<br/>to Columns]
E --> F\[Complete /<br/>Failed / Disqualified]
F --> G\[Next Row<br/>or Done]" %}

## Starting Processing

{% stepper %}
{% step %}
**Open Your List** Navigate to the list you want to process.
{% endstep %}

{% step %}
**Verify Your Setup** Ensure you have:

* At least one AI-enabled column with a prompt template
* Rows with seed data (company name, website, etc.)
* An AI agent assigned to the list
  {% endstep %}

{% step %}
**Click Process** Click the **Process** button in the toolbar. You can process all rows or select specific rows to process.
{% endstep %}

{% step %}
**Monitor Progress** Watch the real-time progress bar and row status updates. Each row transitions through statuses as the agent works.
{% endstep %}
{% endstepper %}

## Row Statuses

Each row has a status that indicates where it is in the processing pipeline:

| Status           | Icon | Description                                         |
| ---------------- | ---- | --------------------------------------------------- |
| **Pending**      | ⏳    | Not yet processed — waiting in the queue            |
| **Processing**   | 🔄   | Currently being researched by the AI agent          |
| **Complete**     | ✅    | Successfully enriched — all AI columns filled       |
| **Failed**       | ❌    | Processing encountered an error (see error details) |
| **Disqualified** | 🚫   | Agent determined the row doesn't meet criteria      |
| **Submitted**    | 📤   | Row data was submitted to an external system        |

{% hint style="info" %}
**Failed rows can be retried.** Fix any issues with the seed data and reprocess the row. The agent will attempt enrichment again.
{% endhint %}

## Processing Controls

Manage processing runs with these controls:

| Control     | Action                                                                  |
| ----------- | ----------------------------------------------------------------------- |
| **Process** | Start processing all pending rows or selected rows                      |
| **Pause**   | Pause the current processing run — resume later without losing progress |
| **Resume**  | Continue processing from where you paused                               |
| **Status**  | View current processing status, progress, and queue size                |

## What the AI Agent Does

During processing, the agent has access to powerful research tools depending on its configuration:

| Tool                      | Capability                                                    |
| ------------------------- | ------------------------------------------------------------- |
| **Web Search**            | Search the internet for company information, news, and data   |
| **Visit Webpage**         | Read and analyze specific web pages and company websites      |
| **Tech Stack Inspection** | Identify technologies, frameworks, and cloud providers in use |
| **CRM Lookup**            | Pull existing data from connected CRMs (Salesforce, etc.)     |
| **Knowledge Base**        | Reference your organization's internal documents and data     |
| **MCP Integrations**      | Access any MCP tools configured on the agent                  |

The agent follows each AI column's prompt template, researches the information, and writes structured results into the appropriate column.

### Smart Disqualification

The agent can automatically disqualify rows that don't meet your criteria. For example, if you're building a list of active B2B SaaS companies and the agent discovers a row is a defunct company or a B2C business, it marks the row as **Disqualified** with a reason.

## Changing the AI Agent

The AI agent assigned to a list determines how rows are processed — what personality the agent uses, what tools it has access to, and how it interprets your column prompts.

### Why Change Agents

* **Different expertise**: Switch to an agent with specialized knowledge for the list's domain
* **Different tools**: Use an agent with specific MCP integrations (CRM, database, API access)
* **Different instructions**: Agents with tailored system prompts produce different enrichment styles
* **Template alignment**: Match the agent to the list template's intended workflow

### How to Change the Agent

{% stepper %}
{% step %}
**Open List Settings** Click the **Settings** icon or gear menu on your list to open the Edit List Settings dialog.
{% endstep %}

{% step %}
**Select a New Agent** Use the Agent Picker to browse available agents from your organization. You can search by name to find the right one.
{% endstep %}

{% step %}
**Save** Click Save to apply the change. The new agent will be used for all future processing runs.
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
**Changing the agent does not reprocess existing rows.** Previously completed rows retain their results. Only new processing runs will use the updated agent. To re-enrich rows with the new agent, select the rows and process them again.
{% endhint %}

### What the Agent Brings

When you assign an agent to a list, the agent contributes:

| Agent Property         | Effect on Processing                                              |
| ---------------------- | ----------------------------------------------------------------- |
| **System Prompt**      | Shapes how the agent interprets column prompts and writes results |
| **MCP Integrations**   | Determines what external tools and data sources are available     |
| **Personality & Tone** | Influences the writing style of enriched text columns             |
| **Calibration Form**   | Used by the Find Rows chat to collect discovery criteria          |

## Real-Time Updates

Processing provides live feedback through WebSocket connections. You'll see:

| Event                   | What You See                                           |
| ----------------------- | ------------------------------------------------------ |
| **Row Start**           | Row status changes to Processing                       |
| **Column Update**       | Individual columns populate as the agent fills them    |
| **Row Complete**        | Row status changes to Complete with all columns filled |
| **Row Failed**          | Row status changes to Failed with error details        |
| **Row Disqualified**    | Row marked as Disqualified with the agent's reasoning  |
| **Progress Update**     | Overall progress bar and count update                  |
| **Processing Complete** | Summary of results when all rows are done              |

## Completion Notifications

When processing finishes, you can receive an email notification with a summary of results — how many rows were completed, failed, or disqualified.

## Best Practices

| Practice                       | Recommendation                                                                  |
| ------------------------------ | ------------------------------------------------------------------------------- |
| **Test with a small batch**    | Process 5–10 rows first to validate your column prompts                         |
| **Provide good seed data**     | Rows with a company name and website URL produce much better results            |
| **Match agent to purpose**     | Use a sales-focused agent for lead lists, a technical agent for vendor research |
| **Monitor the first few rows** | Watch early results to catch prompt issues before processing hundreds           |
| **Retry failed rows**          | Fix seed data and reprocess — transient errors often resolve on retry           |
| **Use pause strategically**    | Pause to review mid-run results and adjust prompts if needed                    |

{% hint style="info" %}
**Pro Tip**: Create dedicated agents for different list types. A "Lead Researcher" agent with CRM integrations is ideal for sales lists, while a "Technical Analyst" agent with web inspection tools excels at vendor evaluation grids.
{% endhint %}
