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

# Examples

> Build a dashboard end to end — your prompts, and what your agent does.

A worked example: a **team training dashboard** — completion rates, a couple of charts, filterable by department and office over a date range. Connect in [Builder mode](/mcp/modes) first.

## 1. Describe it

```text theme={null}
Build a training dashboard. I want overall completion rate, a bar chart of
completion by department, filters for department and office, and a date range.
Use the data in Jedify.
```

You don't need function names, SQL, or the SDK — your agent works those out.

## 2. Review the functions it creates

Your agent reuses what exists and creates what's missing. When it shows you a result, confirm it:

```text theme={null}
Before you save it, call the completion-by-department function for R&D
and show me the numbers.
```

It ends up with functions like:

| Function                    | Filters                        |
| --------------------------- | ------------------------------ |
| `_COMPLETION_RATE`          | department, office, date range |
| `_COMPLETION_BY_DEPARTMENT` | office, date range             |

`_COMPLETION_BY_DEPARTMENT` has no `department` filter — you don't filter by the field you're breaking down by. Each breakdown is [its own function](/mcp/builder/semantic-functions#what-your-agent-can-filter-on).

## 3. Let it build the app

Your agent generates the dashboard and wires your filter controls to the function parameters through the SDK. The published app authenticates with its own [API key](/mcp/authentication) — set it as your platform's app secret, or the dashboard loads blank.

```typescript theme={null}
const data = await jedify.call('_COMPLETION_BY_DEPARTMENT', {
  office: filters.office,          // optional — omit for all offices
  start_date: filters.startDate,
  end_date: filters.endDate,
});
```

## 4. Review and iterate

Adjust in plain language:

```text theme={null}
Make the office filter optional so the default shows all offices.
Add a chart for completion by office, and show the rate as a percentage.
```

Check that filters change the numbers, that clearing an optional filter shows everything, and that the charts read from the right fields.

## 5. Ship it

Ask your agent to confirm its [pre-ship check](/mcp/builder/tools-reference#process_verification): functions reused, runtime SDK-only, loading and error states present. Once it passes, each function call returns quickly with no AI in the loop.
