> For the complete documentation index, see [llms.txt](https://docs.imerit.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.imerit.net/plugins/first-party-ango-plugins/tpt-export.md).

# TPT Export

## Overview

The TPT Export plugin downloads time per task reports for your project. Use it to review labeling and review durations, workflow stage visits, annotation counts, and issues, with summaries by task, assignee, and date.

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center">TPT Export</td><td data-object-fit="contain"><a href="https://angohub-docs-assets.s3.eu-central-1.amazonaws.com/plugin-icons-banners/tpt-export.png">https://angohub-docs-assets.s3.eu-central-1.amazonaws.com/plugin-icons-banners/tpt-export.png</a></td></tr></tbody></table>

## Plugin Functionality

The plugin creates a ZIP file containing four CSV reports:

| File                    | Contents                                                                                                                                                                                       |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **\[TPT]**              | One row per task with included stage activity. Labeling and review durations and visits are totaled separately. Annotation counts come from the last included stage record.                    |
| **\[HIST]**             | One row per included workflow stage visit, showing its assignee, timestamps, duration, and annotation counts. A task can appear in multiple rows, including repeated visits to the same stage. |
| **\[Overall]\[Label]**  | Active labeling duration summed by assignee and completion date, with a Total row and column.                                                                                                  |
| **\[Overall]\[Review]** | Active review duration summed by assignee and completion date, with a Total row and column.                                                                                                    |

The overall reports contain summed durations, not average time per task. Each uses the configured duration unit and is empty if there are no included records of that stage type. If the initial export contains no assets, the plugin returns `empty_export.txt` instead of a ZIP file.

### Which activity is included

The **Stage Filter** and **Batch Filter** select the tasks to export. The date settings then filter individual stage records within those tasks, using each record's completion date. Both date boundaries are inclusive. A stage's full recorded duration is assigned to its completion date, even if work began on an earlier date.

The history report includes Start, Label, Review, and Plugin stage records. Zero-duration Label and Review records in the existing history are skipped, including requeue records. Other stage types are excluded.

Saved work in the current stage can also be included before submission. For this row, the last update supplies the completion timestamp and assignee. When no stage history remains, the plugin attempts to include a row for the current stage, subject to the stage-type and date filters.

The TPT duration totals, visit totals, last labeler/reviewer, and annotation counts reflect the included records. **Current Stage** still shows the task's stage at export time. Annotation counts are snapshots of the annotations present in a stage; they do not measure how many annotations were added, edited, or deleted during that visit.

### Report Columns

Duration column names include the selected unit, such as `Active Duration (sec)`. Idle-duration columns appear only when `extract_idle_duration` is `true`. The current plugin does not export blur-duration columns.

**Page Count** appears in both TPT and HIST when at least one exported asset provides page, frame, or bundled-item information. It represents that asset's page, frame, or item count; it is blank for assets without this information.

Issue-related columns appear only when the project's issue export contains issues. See [Issue Counts](#issue-counts) for the different scopes used by TPT and HIST.

{% tabs %}
{% tab title="\[TPT] File" %}

* Batch (multiple batch names are separated by `|`)
* External ID
* Task ID
* AngoHub URL
* Current Stage
* Page Count (when available)
* **Label Stages**
  * Total Active Label Duration (unit)
  * Total Idle Label Duration (unit; optional)
  * Total Label Stage Visits
  * Last Label Stage
  * Last Labeler
* **Review Stages**
  * Total Active Review Duration (unit)
  * Total Idle Review Duration (unit; optional)
  * Total Review Stage Visits
  * Last Review Stage
  * Last Reviewer
* **Annotations**
  * Classification Count
  * Tool Count
  * Tool Classification Count
  * Relation Count
* **Issues** (when available)
  * Issue Count
  * Error Type: \<type> (one column per exported error type)
  * Error Code: \<code> (one column per exported error code)
    {% endtab %}

{% tab title="\[HIST] File" %}

* Batch
* External ID
* Task ID
* AngoHub URL
* Current Stage
* Stage Name
* Stage Type
* Review Status (`-` when unavailable)
* Stage Visits (the running visit number for this task and stage within the filtered records)
* Assignee (the user who completed the stage, or last updated the current saved stage)
* **Time and Duration**
  * Start Date
  * Started At
  * Completion Date
  * Completed At
  * Active Duration (unit)
  * Idle Duration (unit; optional)
* Page Count (when available)
* **Annotations**
  * Classification Count
  * Tool Count
  * Tool Classification Count
  * Relation Count
* Issue Count (when available)

Dates use `YYYY-MM-DD`; Started At and Completed At contain the time portion as `HH:MM:SS`. The plugin preserves the exported timestamps without converting them to your local timezone. Start Date and Started At show `NA` when the start timestamp is unavailable.
{% endtab %}

{% tab title="\[Overall] Files" %}

* Assignee
* One column per included completion date (`YYYY-MM-DD`)
* Total

Each report also includes a Total row. Values are active durations in the configured unit; idle durations are not included in these totals.
{% endtab %}
{% endtabs %}

### Annotation Counts

* **Classification Count** counts task-level classification entries. With `count_nested_classifications: true`, it includes their nested classifications, whether or not an answer is present.
* **Tool Count** counts tool entries in the exported stage. Video entries marked as having stopped interpolation are excluded. This is not a unique-object count across frames.
* **Tool Classification Count** counts classifications attached to tools, including nested classifications, when `count_nested_classifications` is `true`. When it is `false`, this column is always `0`.
* **Relation Count** counts relation entries in the exported stage.

These counts describe exported annotation entries. The plugin does not calculate pixel counts or the area or volume of brush annotations.

### Issue Counts

In **TPT**, Issue Count includes all exported issues for the task, regardless of the date filter or the stage where the issue was created. The Error Type and Error Code columns count the corresponding entries on those issues. An issue with multiple error codes can contribute to multiple breakdown columns, so their totals need not equal Issue Count. Missing types or codes are grouped under `N/A`.

In **HIST**, Issue Count includes issues for the same task and stage name whose creation timestamps fall between that row's start and completion timestamps, inclusive. If the start timestamp is unavailable, the plugin uses January 1, 2021 as the start of this interval, so the count can include issues from earlier visits.

### Supported Data Types <a href="#supported-data-types" id="supported-data-types"></a>

The plugin reads Ango Hub exports across data types, including video, multi-page, and bundled assets. Page Count is included when the export supplies the relevant information.

### Supported Annotation Tools <a href="#supported-annotation-tools" id="supported-annotation-tools"></a>

The plugin counts exported classifications, tools, and relations as described in [Annotation Counts](#annotation-counts). It does not calculate a separate duration for each annotation or nested classification.

## Plugin Configuration <a href="#plugin-configuration" id="plugin-configuration"></a>

Open **Your Project > Settings > Plugins**, select **TPT Export**, and click **Open**. If the plugin is not available, first [add it to your organization](/plugins/introduction-to-plugins/how-to-add-plugins-to-your-organization.md).

From **Stage Filter**, select the stages containing the tasks you'd like to export. From **Batch Filter**, select one or more batches, or use **All Batches**. Check these selections before running: they determine which tasks are included, while the date settings below determine which of their stage records are reported.

If you wish to receive an email when the export is complete, toggle **Send Email** on. Configure the **Config JSON**, ensure the plugin status is **Live**, and click **Run**. Click the completion notification to download the report. See [How to Use Plugins in Your Project](/plugins/introduction-to-plugins/how-to-use-plugins-in-your-project.md) for the full workflow.

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FrtjpC2TRtbebmcwFUu4D%2Fimage.png?alt=media&amp;token=fa7eb84f-8b27-4954-ad47-aeb6ad98d30f" alt="TPT Export plugin configuration dialog"><figcaption></figcaption></figure>

The plugin's supplied configuration is:

```json
{
  "start_date": "2020-12-31",
  "end_date": "today",
  "duration_unit": "sec",
  "extract_idle_duration": false,
  "include_key_frames_only": true,
  "count_nested_classifications": true,
  "logging_frequency": 0
}
```

| Option                         | Behavior                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `start_date`                   | Inclusive start date for stage completion dates. Accepts a valid `YYYY-MM-DD` date, `"today"`, or `null`. A missing or null start date falls back to `2020-12-31`; see the warning below about leaving both dates unset.                                                                                                                                                                                                                                                   |
| `end_date`                     | Inclusive end date for stage completion dates. Accepts a valid `YYYY-MM-DD` date, `"today"`, or `null`. A missing or null end date falls back to `2100-01-01`. `"today"` uses the date on the machine running the plugin.                                                                                                                                                                                                                                                  |
| `duration_unit`                | Unit for all duration values: `"msec"` (milliseconds), `"sec"` (seconds), `"min"` (minutes), or `"hour"` (hours). Defaults to `"sec"` if omitted. Seconds, minutes, and hours are rounded to two decimal places per stage before aggregation.                                                                                                                                                                                                                              |
| `extract_idle_duration`        | Set to `true` to request idle-time data and add idle-duration columns to TPT and HIST. Defaults to `false`. Active durations use the recorded stage duration in either case; this option does not subtract idle time from that value or add blur-duration columns.                                                                                                                                                                                                         |
| `include_key_frames_only`      | For video assets, controls the additional export requested when `extract_idle_duration` is `true`: `true` requests key frames only; `false` includes interpolated frames. This affects the annotation entries available to count, not recorded durations. When `extract_idle_duration` is `false`, the plugin uses the supplied export without applying this setting itself. The supplied configuration sets it to `true`; if omitted, the additional export uses `false`. |
| `count_nested_classifications` | Defaults to `true`. Includes nested task-level classifications and classifications attached to tools. Set to `false` to count only top-level task classifications; Tool Classification Count will then be `0`. This option affects counts, not durations.                                                                                                                                                                                                                  |
| `logging_frequency`            | A non-negative integer controlling periodic asset-progress messages. For example, `100` logs progress every 100 assets. `0` (the default) disables these periodic messages; session, completion, and error messages can still appear. See [Monitoring Plugin Progress](/plugins/introduction-to-plugins/monitoring-plugin-progress.md).                                                                                                                                    |

{% hint style="warning" %}
Keep at least one date boundary set, as in the supplied configuration. In the current version, leaving both `start_date` and `end_date` missing or `null` can duplicate the first processed stage and inflate visit and duration totals. Use explicit dates or `"today"` to avoid this issue.
{% endhint %}

{% hint style="info" %}
Idle time is reported for historical stage records when available. The row added for the current saved stage reports `0` idle duration, even when idle time has been recorded on the task. Treat idle totals for tasks still in progress accordingly.
{% endhint %}
