Skip to main content

Predictions management

Project → Settings → Predictions.

The Predictions tab lets you manage model-produced pre-annotations on your tasks — separately from the ML backend connection settings.

Visible to Owner, Admin, Manager.

What's a prediction​

A prediction is a model-produced annotation, stored on task.predictions[] alongside the human annotations[]. They share the same JSON shape (see Task format) plus a model_version string identifying which model produced them, and an optional score.

Predictions surface in the labeller as pre-filled regions the annotator can accept / edit / discard. They don't count toward the task's annotation count.

What the tab shows​

One card per model version that has predictions in this project:

  • the model_version string (undefined means predictions were imported without one)
  • the number of predictions from that version
  • when the last prediction from that version was created

There is no source column and no side-by-side compare view.

What you can do​

Delete a model version's predictions​

Card menu → Delete → confirm. Removes every prediction tagged with that model_version across the project's tasks (the API call is DELETE /api/projects/<id>/model-versions with {"model_version": "..."}). Tasks stay; only their predictions[] entries go. If the deleted version was the project's active one, the project's model_version is cleared.

Use cases:

  • You retrained a model and want to clear old predictions before re-running
  • Predictions came from a misconfigured run and need to go
  • You're prepping a project for human-only labelling and don't want models biasing annotators

Re-run predictions on selected tasks​

For projects with a connected ML backend:

  1. Open the Data Manager
  2. Filter / select the tasks you want re-predicted
  3. Selection footer → Retrieve Predictions

The backend's /predict is called for the selected tasks and the responses are stored as new predictions.

Turn predictions into annotations​

Data Manager → select tasks → Create Annotations From Predictions (pick the model version). Useful to accept a trusted model's output wholesale, or to seed a review pass.

Importing predictions via API​

Beyond ML-backend-driven generation, predictions can be imported directly with the tasks:

{
"data": { "text": "..." },
"predictions": [
{
"model_version": "whisper-tiny-2026-05",
"score": 0.87,
"result": [
{
"from_name": "transcript",
"to_name": "audio",
"type": "textarea",
"value": { "text": ["Sannu da zuwa"] }
}
]
}
]
}

POST this to /api/projects/<id>/import with the standard task import. Useful when you're running models outside AfriAnnotate and just want to surface predictions to annotators.

Predictions in the labeller​

When Annotation → Use predictions to prelabel tasks is on, the selected model version's prediction is loaded as the starting point for a new annotation. The annotator can accept it as-is, edit, or clear it and label from scratch. On submit, the annotation is the human's version; the prediction stays in task.predictions[].

Predictions and agreement metrics​

Predictions play no role in agreement. The agreement scorer compares human annotations only — it loads each task's non-cancelled, non-ground-truth annotations and needs at least two of them; predictions[] is never read. There is no setting to change this.

To measure "human vs model" agreement, import the model output as an annotation from a dedicated account (same JSON result shape, posted via the annotations API) instead of a prediction — it then participates in agreement scoring like any other annotator's work.

Predictions in exports​

Exports carry predictions[] alongside annotations in the JSON formats; flat formats (CSV, CoNLL, …) are annotation-only. See Data export.

What's next​