> Source: https://builder-docs.ema.ai/api-reference/dashboard/overview
> Title: Dashboard Overview

# Dashboard Overview

Dashboards provide a batch-processing interface for AI Employees. Instead of real-time chat, dashboards process tabular data row by row through workflows. Each row can trigger a workflow execution, and results are written back to the dashboard as new columns.

## Core Concepts

### Dashboard Structure

A dashboard is a structured table associated with an AI Employee:

```
Dashboard
├── Schema (column definitions)
├── Rows[]
│ ├── Input Columns (user-provided data)
│ ├── Output Columns (workflow-generated results)
│ └── Row State (processing status)
└── Sub-Dashboards (filtered views)
```

### Rows

Each row represents a single unit of work. A row has:

-   **Input columns** -- Data provided by the user (uploaded or manually entered)
-   **Output columns** -- Results generated by the workflow
-   **State** -- The processing status of the row
-   **Metadata** -- Timestamps, user info, workflow run references

### Columns

Columns are defined by the workflow's input/output schema. Each column has:

-   A name and display name
-   A data type (string, number, boolean, date, URL, file, etc.)
-   A category (input vs. output)
-   Optional display configuration

### Row States

State

Description

`NOT_STARTED`

Row has not been processed

`IN_PROGRESS`

Workflow is currently executing

`COMPLETED`

Workflow finished successfully

`FAILED`

Workflow encountered an error

`PAUSED`

Workflow paused for human-in-the-loop input

Complete list of DashboardRowState values.

### Human-in-the-Loop (HITL) Support

When a workflow action requires human input, the dashboard row enters a `PAUSED` state. The user can:

1.  Retrieve the continuation message with `GetContinuationMessageForRow`
2.  View the HITL prompt (form, buttons, or text input)
3.  Submit a response with `ContinueWorkflowForRow`
4.  The workflow resumes processing from where it paused

### Sub-Dashboards

Sub-dashboards are filtered views of the main dashboard. They allow users to organize rows by criteria such as status, date range, or custom filters without duplicating data.

## Use Cases

-   **Data enrichment** -- Upload a list of companies, enrich each with research data
-   **Document review** -- Upload documents, extract key information from each
-   **Lead qualification** -- Upload leads, score and qualify each one
-   **Compliance checking** -- Upload records, check each against compliance rules
-   **Bulk processing** -- Any repetitive task that processes items individually

## Interaction Patterns

### Upload and Process

1.  Upload a file (CSV, XLSX) with `upload-and-run-rows`
2.  Each row is automatically created and triggered
3.  Poll `get-row-result` or `get-all-row-results` for completion

### Manual Row Management

1.  Add rows individually with `add-row` or `AddDashboardRow`
2.  Trigger processing with `trigger-row` or `TriggerWorkflowForRow`
3.  Update row values with `update-row` or `UpdateDashboardRow`
4.  Delete rows with `delete-rows` or `DeleteDashboardRows`

### Callback-Based Processing

The HTTP API supports callback URLs. When provided, Ema sends the processing result to your callback URL upon completion instead of requiring polling.

```bash
curl -X POST .../upload-and-run-rows \
 -H "Authorization: Bearer <token>" \
 -F "file=@data.xlsx" \
 -F "callback_url=https://your-server.com/webhook/dashboard-result"
```

## Related

-   [Dashboard Data Model](/legacy-docs/api-reference/dashboard/data-model) -- Row, column, and schema structures
-   [Dashboard HTTP API](/legacy-docs/api-reference/dashboard/http-api) -- REST endpoints
-   [Dashboard RPC Calls](/legacy-docs/api-reference/dashboard/rpc-calls) -- gRPC-Web endpoints
-   [Workflow Overview](/legacy-docs/api-reference/workflows/overview) -- How workflows process dashboard rows
