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:
- Retrieve the continuation message with
GetContinuationMessageForRow - View the HITL prompt (form, buttons, or text input)
- Submit a response with
ContinueWorkflowForRow - 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
- Upload a file (CSV, XLSX) with
upload-and-run-rows - Each row is automatically created and triggered
- Poll
get-row-resultorget-all-row-resultsfor completion
Manual Row Management
- Add rows individually with
add-roworAddDashboardRow - Trigger processing with
trigger-roworTriggerWorkflowForRow - Update row values with
update-roworUpdateDashboardRow - Delete rows with
delete-rowsorDeleteDashboardRows
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.
curl -X POST .../upload-and-run-rows \
-H "Authorization: Bearer <token>" \
-F "[email protected]" \
-F "callback_url=https://your-server.com/webhook/dashboard-result"
Related
- Dashboard Data Model -- Row, column, and schema structures
- Dashboard HTTP API -- REST endpoints
- Dashboard RPC Calls -- gRPC-Web endpoints
- Workflow Overview -- How workflows process dashboard rows