AITW Mobile Trajectory Review
Step-by-step review of Android device-control episodes in the style of Android in the Wild (AITW; Rawles et al., NeurIPS 2023). Each step shows the screen and the action taken (tap, scroll, type, system button, or status action), with tap coordinates rendered as a grounding marker; annotators judge each action's correctness and grounding against the natural-language instruction, then give an episode-level verdict. Complements agentic/androidworld-mobile-agent-eval: AndroidWorld is a live-environment benchmark, while AITW is a static corpus of human demonstrations.
About this dataset
Android in the Wild (AITW) is a large-scale dataset for Android device control: 715,142 episodes of humans performing natural-language tasks on emulated Android devices, spanning 30,378 unique instructions. Each episode is a sequence of screenshots and precisely logged actions in a compact action space of dual-point gestures (taps and scrolls represented by start/end touch positions), typed text, the Home/Back/Enter buttons, and the status actions task_complete and task_impossible.
AITW is a demonstration corpus rather than a labeling corpus: paid raters carried out the tasks on emulators, guided by the prompt 'Imagine a friend is asking you to perform the task on their phone...', and were asked to interact naturally, avoid clicking on anything unrelated to the task, and avoid unnecessary scrolling. A second stage used hindsight language relabeling, in which raters watched recorded trajectories and wrote descriptive labels for short single-step sub-sequences.
This showcase task adapts that collection protocol into a review task over AITW-style episodes, the quality-control step needed whenever such demonstrations are collected or replayed by agents. The gui_trajectory scheme presents each step's screenshot and action together, draws the tap coordinate as a grounding marker on the screenshot, and records a per-step verdict (correct, wrong element, wrong action, or hallucinated) with notes, followed by an episode-level radio verdict that mirrors AITW's task_complete / task_impossible status semantics.
The sample data uses placeholder screenshot URLs and self-authored episodes covering AITW's task categories (Google apps, app install, web shopping, general Q&A), including deliberately flawed steps — an ad tapped instead of a search result, an unnecessary Force stop, an unverified answer — so reviewers have realistic judgments to make. Compare the agentic/androidworld-mobile-agent-eval task, which evaluates agents in a live AndroidWorld environment rather than reviewing static demonstrations.
- Released
- 2023 (arXiv:2307.10088); NeurIPS 2023 Datasets & Benchmarks
- Episodes
- 715,142
- Screens
- 5,689,993
- Unique prompts
- 30,378
- Subsets
- GoogleApps, Install, WebShopping, General, Single
- Action space
- dual-point gesture, type, go_back, go_home, enter, task_complete, task_impossible
Configuration Fileconfig.yaml
This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.
# Android in the Wild (AITW) Mobile Trajectory Review
# Based on: Christopher Rawles, Alice Li, Daniel Rodriguez, Oriana Riva, and
# Timothy Lillicrap (2023). "Android in the Wild: A Large-Scale Dataset for
# Android Device Control." Advances in Neural Information Processing Systems
# 36 (NeurIPS 2023), Datasets and Benchmarks Track. arXiv:2307.10088.
# Paper: https://arxiv.org/abs/2307.10088
# Dataset: https://github.com/google-research/google-research/tree/master/android_in_the_wild
#
# Task: review an AITW-style Android device-control episode step by step. Each
# step shows the screenshot the device displayed and the action taken (AITW's
# action space: dual-point gesture (tap/scroll), type, go_back, go_home,
# enter, task_complete, task_impossible), with tap coordinates rendered as a
# grounding marker on the screenshot. The annotator judges whether each
# action was correct and well-grounded for the natural-language instruction,
# then gives an episode-level verdict. AITW itself is a demonstration corpus
# (paid raters performed the tasks rather than labeling them); this config
# adapts its collection protocol into a quality-review task over such
# episodes. Compare agentic/androidworld-mobile-agent-eval: AndroidWorld is a
# live-environment benchmark with programmatic reward signals, while AITW is a
# static corpus of human demonstrations.
#
# Annotation instructions adapted from Sections 3, 3.1 and Appendix A.1; the
# paper states raters received "a detailed instructional document and a video
# tutorial" but does not publish the verbatim rater guidelines. The quoted
# rater prompt and behavioral rules from Section 3.1 are reproduced verbatim
# inside the instructions below.
annotation_task_name: "AITW Mobile Trajectory Review"
task_dir: "."
data_files:
- sample-data.json
item_properties:
id_key: "id"
text_key: "instruction"
output_annotation_dir: "annotation_output/"
output_annotation_format: "json"
port: 8000
server_name: localhost
annotation_instructions: |
You are shown an Android device-control episode: a natural-language
instruction, followed by the sequence of screenshots the device displayed
and the action performed at each step. Episodes follow the collection
protocol of Android in the Wild (AITW), where raters were prompted:
"Imagine a friend is asking you to perform the task on their phone..." and
were asked "to interact with the device in a natural way, to avoid clicking
on anything unrelated to the task, and to avoid unnecessary scrolling."
Raters ended every episode with a status action: task_complete, or
task_impossible "when an invalid or unavailable instruction is given"; for
instructions that result in verification rather than a state change (e.g.,
"Turn wifi off" when WiFi is already off), the task is marked successful.
Your job is to review each step of the episode against the instruction:
1. For every step, judge the action taken on the screen shown:
- correct: the action is a reasonable, well-grounded step toward
completing the instruction, and any tap lands on the right element.
- wrong_element: the right kind of action, but the tap/gesture landed on
the wrong UI element (check the grounding marker on the screenshot).
- wrong_action: the wrong kind of action for this screen (e.g., typing
when a tap was needed, unnecessary scrolling, unrelated clicking).
- hallucinated: the action refers to an element or state not present on
the screen at all.
2. Then give an episode-level verdict: whether the episode faithfully
completes the instruction, ends with an appropriate status action
(task_complete / task_impossible), and avoids unrelated detours.
Use the notes field on a step to explain any verdict other than correct.
annotation_schemes:
- annotation_type: gui_trajectory
name: step_review
description: "For each step: was the action correct and did the tap land on the right element?"
steps_key: steps
screenshot_key: screenshot
action_key: action
coord_space: normalized
verdict_options: [correct, wrong_element, wrong_action, hallucinated]
- annotation_type: radio
name: episode_verdict
description: "Overall, does this episode correctly demonstrate the instruction?"
labels:
- "Successful demonstration — instruction achieved, appropriate status action"
- "Achieved with flaws — instruction achieved, but with unrelated or wasted steps"
- "Not achieved — episode ends without completing the instruction"
- "task_impossible correctly used — instruction invalid or unavailable in this environment"
keyboard_shortcuts:
"Successful demonstration — instruction achieved, appropriate status action": "1"
"Achieved with flaws — instruction achieved, but with unrelated or wasted steps": "2"
"Not achieved — episode ends without completing the instruction": "3"
"task_impossible correctly used — instruction invalid or unavailable in this environment": "4"
html_layout: |
<div style="padding: 15px; max-width: 860px; margin: auto;">
<div style="background: #f1f5f9; border: 1px solid #cbd5e1; border-radius: 8px; padding: 6px 12px; margin-bottom: 8px; font-size: 13px; color: #475569;">
<strong>Device:</strong> {{device}} · <strong>Android version:</strong> {{android_version}}
</div>
<div style="background: #eef2ff; border: 1px solid #c7d2fe; border-radius: 8px; padding: 16px 20px; margin-bottom: 10px;">
<h3 style="margin: 0 0 6px 0; color: #3730a3; font-size: 15px;">Instruction</h3>
<p style="font-size: 16px; line-height: 1.6; margin: 0; color: #1e1b4b;">{{instruction}}</p>
</div>
<p style="color: #6b7280; font-size: 13px; margin: 0;">The episode's per-step screenshots and actions are shown below. Judge each action, then give the episode-level verdict.</p>
</div>
allow_all_users: true
instances_per_annotator: 25
annotation_per_instance: 3
allow_skip: true
Sample Datasample-data.json
[
{
"id": "aitw_001",
"instruction": "Turn on airplane mode.",
"device": "Pixel 4 emulator",
"android_version": "Android 12",
"steps": [
{
"screenshot": "https://example.com/aitw/aitw_001/step_01.png",
"action": "dual-point gesture (scroll down from status bar to open Quick Settings)",
"x": 0.5,
"y": 0.02
},
{
"screenshot": "https://example.com/aitw/aitw_001/step_02.png",
"action": "dual-point gesture (tap 'Airplane mode' tile)",
"x": 0.62,
"y": 0.24
},
{
"screenshot": "https://example.com/aitw/aitw_001/step_03.png",
"action": "task_complete"
}
]
},
{
"id": "aitw_002",
"instruction": "Open the Clock app and set an alarm for 7:00 AM.",
"device": "Pixel 6 emulator",
"android_version": "Android 13",
"steps": [
{
"screenshot": "https://example.com/aitw/aitw_002/step_01.png",
"action": "dual-point gesture (tap Clock app icon on home screen)",
"x": 0.38,
"y": 0.71
},
{
"screenshot": "https://example.com/aitw/aitw_002/step_02.png",
"action": "dual-point gesture (tap 'Alarm' tab in bottom bar)",
"x": 0.21,
"y": 0.94
},
{
"screenshot": "https://example.com/aitw/aitw_002/step_03.png",
"action": "dual-point gesture (tap '+' button to add alarm)",
"x": 0.5,
"y": 0.85
},
{
"screenshot": "https://example.com/aitw/aitw_002/step_04.png",
"action": "dual-point gesture (tap '7' on the hour dial)",
"x": 0.36,
"y": 0.55
},
{
"screenshot": "https://example.com/aitw/aitw_002/step_05.png",
"action": "dual-point gesture (tap 'AM' selector)",
"x": 0.79,
"y": 0.47
},
{
"screenshot": "https://example.com/aitw/aitw_002/step_06.png",
"action": "dual-point gesture (tap 'OK' to confirm)",
"x": 0.82,
"y": 0.78
},
{
"screenshot": "https://example.com/aitw/aitw_002/step_07.png",
"action": "task_complete"
}
]
}
]
// ... and 8 more itemsGet This Design
Clone or download from the repository
Quick start:
git clone https://github.com/davidjurgens/potato-showcase.git cd potato-showcase/agentic/aitw-mobile-trajectory-review potato start config.yaml
Dataset & paper
Rawles et al., NeurIPS 2023 Datasets & Benchmarks
Citation (BibTeX)
@inproceedings{rawles2023android,
title={Android in the Wild: A Large-Scale Dataset for Android Device Control},
author={Rawles, Christopher and Li, Alice and Rodriguez, Daniel and Riva, Oriana and Lillicrap, Timothy},
booktitle={Advances in Neural Information Processing Systems 36 (NeurIPS 2023), Datasets and Benchmarks Track},
year={2023}
}Details
Annotation Types
Domain
Use Cases
Tags
Found an issue or want to improve this design?
Open an IssueRelated Designs
AndroidWorld: Mobile Agent Task Evaluation
Evaluation of autonomous agents performing tasks in dynamic Android environments. Annotators assess task completion, identify interaction types and touch gestures, evaluate UI understanding, and describe mobile-specific issues across diverse Android apps.
OSWorld: Desktop Agent Task Evaluation
Evaluation of multimodal agents performing open-ended tasks in real desktop environments. Annotators assess task success, identify OS-level actions, rate efficiency, and analyze failures across Ubuntu, Windows, and macOS environments.
VisualWebArena: Visual Web Agent Evaluation
Evaluation of multimodal web agents on visually grounded web tasks. Annotators assess task completion, visual grounding accuracy, and visual reasoning capabilities by reviewing screenshot sequences and agent trajectories.