---
title: "Task template"
description: "Content groups, input and output columns, cascading select, visual vs JSON editor, and CSV parse settings."
---

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

# Task template

The template tells BergFlow what your CSV looks like and what annotators fill in. Choose a [task type](/projects/create) first, then configure the pieces below.

## Content groups

On Custom and customisable templates, a **content group** bundles related media (image, audio, or video) into one viewer instead of scattering fields.

Examples:

- “Before / After”: two images side by side
- “Product gallery”: several images for one listing
- “Evidence”: audio and video together

Click **+ Add group**, name it, optional description. On `image_url` / `audio_url` / `video_url` inputs, assign the group from the column dropdown.

> **Note**
>
> Only `image_url`, `audio_url`, and `video_url` columns can join a group. Text, number, and dropdown columns cannot.

## Input columns

Inputs are columns that arrive in the uploaded CSV/Excel.

| Property | Description |
| --- | --- |
| **Name** | Column header. |
| **Type** | `string`, `number`, `boolean`, `object`, `dropdown`, `image_url`, `image_name`, `audio_url`, `video_url`, `resource_url`. |
| **Required** | Must be present on every row. |
| **Description** | Hint for annotators / field-mapping at upload. |
| **Dropdown options** | Required when type is dropdown. Comma-separated values. |
| **Group** | Only for `image_url`, `audio_url`, `video_url`. |

Click **+ Add input column**, or drag to reorder.

## Output columns

Outputs are what annotators fill in:

- **string:** single line
- **textarea:** multi line
- **number**
- **boolean:** true/false
- **dropdown:** single select
- **checklist:** multi select
- **cascading_select:** dependent dropdowns

Dropdown and checklist need an options list. Any output can be **required** (cannot submit empty).

## Cascading select and bounding boxes

**Cascading select** renders linked dropdowns (for example Country, then State, then City). Each level becomes its own column in the delivery CSV. Configure:

- **Option tree**
- **Export keys** (for example `country`, `state`, `city`)
- **Level labels** shown to annotators

**Bounding box** is an output flag: the annotator draws a rectangle on a linked image. Coordinates export as JSON on delivery.

## Visual vs JSON editor

Toggle **Visual / JSON** at the top of the editor:

- **Visual** is the form UI for columns and groups.
- **JSON** lets you edit the template JSON (paste from another project; useful for power users).

**Export** next to task type downloads the current template as JSON.

## CSV settings

Above the editor:

- **Delimiter:** comma, semicolon, tab, or pipe
- **Encoding:** UTF-8, UTF-16, or Latin-1
- **Header row:** first row is a header
- **Skip empty lines**

Source: https://bergflow-docs.pages.dev/projects/template/index.mdx
