@toloka-platform/sdk 0.11.2 → 0.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/cli/toloka.js +157 -154
  2. package/dist/cli/toloka.js.jsc +0 -0
  3. package/dist/cli/toloka.js.jsc.sha256 +1 -1
  4. package/dist/cli/toloka.js.sha256 +1 -1
  5. package/docs/authoring.md +6 -4
  6. package/docs/cli.md +30 -11
  7. package/docs/limitations.md +2 -2
  8. package/docs/testing.md +4 -2
  9. package/examples/README.md +11 -0
  10. package/examples/app-crowdtesting/README.md +41 -0
  11. package/examples/app-crowdtesting/fields.ts +6 -0
  12. package/examples/app-crowdtesting/nodes/app-flow-test/node.ts +381 -0
  13. package/examples/app-crowdtesting/nodes/collection/node.ts +8 -0
  14. package/examples/app-crowdtesting/pipeline.browser.integration.spec.ts +77 -0
  15. package/examples/app-crowdtesting/pipeline.ts +17 -0
  16. package/examples/egocentric-video-collection/README.md +35 -0
  17. package/examples/egocentric-video-collection/fields.ts +24 -0
  18. package/examples/egocentric-video-collection/nodes/collection/node.ts +5 -0
  19. package/examples/egocentric-video-collection/nodes/record-activity/node.ts +760 -0
  20. package/examples/egocentric-video-collection/pipeline.browser.integration.spec.ts +65 -0
  21. package/examples/egocentric-video-collection/pipeline.ts +17 -0
  22. package/examples/product-moderation/README.md +49 -0
  23. package/examples/product-moderation/fields.ts +37 -0
  24. package/examples/product-moderation/nodes/collection/node.ts +16 -0
  25. package/examples/product-moderation/nodes/moderate-product/instruction.ts +77 -0
  26. package/examples/product-moderation/nodes/moderate-product/node.ts +368 -0
  27. package/examples/product-moderation/pipeline.browser.integration.spec.ts +48 -0
  28. package/examples/product-moderation/pipeline.ts +33 -0
  29. package/examples/video-pair-rating/fields.ts +16 -4
  30. package/examples/video-pair-rating/nodes/adjudicate/node.ts +78 -3
  31. package/examples/video-pair-rating/nodes/adjudicate_op/node.ts +28 -3
  32. package/examples/video-pair-rating/nodes/overall_preference_pick/node.ts +28 -3
  33. package/examples/video-pair-rating/nodes/rate_pair/node.ts +65 -2
  34. package/openapi/gen/api.ts +22 -0
  35. package/openapi/gen/models/generationBudget.ts +8 -0
  36. package/openapi/gen/models/generationBudgetReasoningEffort.ts +2 -0
  37. package/openapi/gen/models/generationModel.ts +12 -0
  38. package/openapi/gen/models/generationModelDefaultReasoningEffort.ts +2 -0
  39. package/openapi/gen/models/generationModelId.ts +2 -0
  40. package/openapi/gen/models/index.ts +8 -0
  41. package/openapi/gen/models/invalidFieldSchema.ts +6 -0
  42. package/openapi/gen/models/listGenerationModels200.ts +7 -0
  43. package/openapi/gen/models/listGenerationModels200DefaultGenerationModelId.ts +2 -0
  44. package/openapi/gen/models/pipelineGraphSnapshot.ts +2 -0
  45. package/package.json +2 -2
  46. package/skills/catalog.json +16 -12
  47. package/skills/toloka-build/SKILL.md +44 -58
  48. package/skills/toloka-build/references/human-work.md +156 -0
  49. package/skills/toloka-build/references/local-setup.md +136 -0
  50. package/skills/toloka-build/references/node-checks.md +11 -0
  51. package/skills/toloka-build/references/node-semantics.md +22 -213
  52. package/skills/toloka-build/references/task-ui.md +61 -0
  53. package/skills/toloka-build/references/workflow-and-cli.md +29 -229
  54. package/skills/toloka-fine-tuning/SKILL.md +1 -1
  55. package/skills/toloka-get-started/SKILL.md +1 -1
  56. package/skills/toloka-gisting/SKILL.md +1 -1
  57. package/src/authoring/index.ts +26 -7
  58. package/src/checks/task-ui-typecheck.ts +3 -3
  59. package/src/cli/analytics.ts +1 -0
  60. package/src/cli/check.ts +83 -12
  61. package/src/cli/commands/generation-model.ts +18 -0
  62. package/src/cli/commands/pipeline.ts +1 -1
  63. package/src/cli/commands/source.ts +14 -3
  64. package/src/cli/generation-models.ts +46 -0
  65. package/src/cli/program.ts +2 -0
  66. package/src/cli/project.ts +288 -138
  67. package/src/cli/trainings.ts +12 -0
  68. package/src/cli/ui.ts +3 -1
  69. package/src/client.ts +5 -0
  70. package/src/graph-rules.json +11 -0
  71. package/src/importer.ts +46 -40
  72. package/src/index.ts +4 -0
  73. package/src/validate.ts +183 -0
@@ -0,0 +1,760 @@
1
+ import { generation } from "@toloka-platform/sdk";
2
+
3
+ import { recordedVideo, slotId, taskCategories, taskCategory } from "../../fields";
4
+
5
+ export const recordActivity = generation("record_activity", {
6
+ about: {
7
+ description:
8
+ "Crowd participants use a head-mounted phone camera to record ~2-minute first-person videos of themselves performing household tasks, then tag the video with one of 13 category enums.",
9
+ projectType: "data_collection",
10
+ },
11
+ publicName: "🎥 Record your regular activity at home",
12
+ audienceAndPricing: {
13
+ audienceType: "human",
14
+ verifiedExperts: false,
15
+ audience: {
16
+ languages: { type: "and", values: [{ value: "English" }] },
17
+ specializations: { type: "and", values: [] },
18
+ countries: { type: "or", values: [] },
19
+ },
20
+ pricePerTask: 1.5,
21
+ timeForTask: 1800,
22
+ perExpertCapEnabled: true,
23
+ perExpertCapValue: 2,
24
+ },
25
+ entities: {
26
+ input: [
27
+ {
28
+ field: slotId,
29
+ entityType: "METADATA",
30
+ description: "Unique identifier for each collection slot",
31
+ },
32
+ ],
33
+ output: [
34
+ {
35
+ field: recordedVideo,
36
+ entityType: "VIDEO",
37
+ jsonPath: "$.video_file[0].sasLink",
38
+ description:
39
+ "Egocentric household task video recorded by participant (head-mounted, landscape, ≥ 2 minutes).",
40
+ minDurationSeconds: 120,
41
+ maxDurationSeconds: 600,
42
+ relations: [{ field: slotId, rel_type: "context" }],
43
+ },
44
+ {
45
+ field: taskCategory,
46
+ entityType: "SINGLE_LABEL",
47
+ jsonPath: "$.task_category",
48
+ description: "Category of household task performed in the video.",
49
+ allowedLabels: taskCategories,
50
+ relations: [{ field: recordedVideo, rel_type: "depends_on" }],
51
+ },
52
+ ],
53
+ },
54
+ qualityCriteria: [
55
+ {
56
+ id: "ef459982-3285-4e86-8018-55f5352121d9",
57
+ qualityElement: "Footage Stability",
58
+ thresholds: {
59
+ pass: "The camera is stabilized for at least 90% of the video duration. Brief lapses of shake, tremble, bounce, or jitter are acceptable as long as they add up to no more than 10% of the total duration AND no single unstable stretch lasts longer than 10 consecutive seconds. The hands and objects in use stay sharp and clearly visible for most of the video. Slow, deliberate head movements to change viewpoint are acceptable if the image returns to a stable, sharp state quickly.",
60
+ fail: "The camera is stable for less than 90% of the video duration. Add up every stretch that shows shake, tremble, bounce, jitter, or motion blur caused by camera shake — including sudden jerks, walking bounces, unsteady mount moments, or shake during quick reaches. If unstable time is more than 10% of the total duration, the video fails. Also fails if any single unstable stretch lasts more than 10 consecutive seconds, even when the overall unstable share is under 10% — a long unstable segment is disqualifying by itself.",
61
+ },
62
+ targetEntity: recordedVideo,
63
+ },
64
+ {
65
+ id: "c0f3acef-c696-4b2f-83c0-dc0cd0c1c711",
66
+ qualityElement: "Hand Visibility",
67
+ thresholds: {
68
+ pass: "BOTH human hands (wrists to fingertips) are fully in frame for at least 90% of the video duration. Brief lapses — reaching off-frame for a tool, transitioning between steps, resting a hand out of view, or a moment where one hand is cropped by the frame edge — are acceptable as long as they add up to no more than 10% of the total duration AND no single lapse lasts longer than 10 consecutive seconds. The hands stay clearly observable while the core manipulation is being performed.",
69
+ fail: "Both hands are fully in frame for less than 90% of the video duration. Add up every stretch where at least one hand is out of frame, cropped at the frame edges (wrist or fingertips cut off), or fully hidden behind an object. If that missing-hand time is more than 10% of the total duration, the video fails. Also fails if any single stretch of missing-hand time lasts more than 10 consecutive seconds, even when the overall missing-hand share is under 10% — a long lapse is disqualifying by itself.",
70
+ },
71
+ targetEntity: recordedVideo,
72
+ },
73
+ {
74
+ id: "97a10c0e-9a22-480d-842b-6c9a19ac240d",
75
+ qualityElement: "Valid Physical Task",
76
+ thresholds: {
77
+ pass: "The video shows a productive household physical task involving genuine hand-object manipulation that produces a tangible, accumulating domestic result — a cleaner surface, a growing stack of folded clothes, prepared food, an organized space, a repaired item, etc. Single-focus repetitive tasks fully qualify: folding a laundry pile from start to finish, washing a stack of dishes, ironing a stack of shirts, sweeping a floor, or vacuuming a room all PASS, even when the same motion is repeated for most of the video, as long as the work is productive and progress toward the result is visible.",
78
+ fail: "One or more of: (a) NOT A PRODUCTIVE HOUSEHOLD TASK — the video shows idle time, sitting, eating, drinking, personal grooming, watching TV, phone/computer use, exercising, playing games, or any other activity that is not a productive household task; (b) NO HAND-OBJECT MANIPULATION — the performer does not meaningfully interact with physical household objects using their hands; (c) STAGED OR FAKE — the actions produce no visible or accumulating result (wiping an already-clean surface for the full duration, stirring an empty pot, scrubbing one spot continuously with no change, or mimicking task motions without real objects). Genuinely repetitive productive tasks (folding laundry, washing dishes, sweeping, ironing, vacuuming) are NOT staged and do NOT fail here — repetition alone is never a reason to fail.",
79
+ },
80
+ targetEntity: recordedVideo,
81
+ },
82
+ {
83
+ id: "dfe26133-ce7e-4c20-9072-40db9cc1d5e5",
84
+ qualityElement: "Residential Setting",
85
+ thresholds: {
86
+ pass: "Recording takes place in a residential environment — kitchen, bathroom, bedroom, living room, laundry room, home office, home studio, yard, garden, driveway, garage, or a similar space inside or immediately around a private home. Normal household conditions with varied lighting, surfaces, and everyday clutter are acceptable. This criterion evaluates ONLY the physical location shown in the video; do not consider whether the footage is original or a re-recording — that is handled by the 'Original recording' criterion.",
87
+ fail: "Recording takes place in a non-residential setting — a public street, commercial space (shop, restaurant, salon), workplace or office not in a home, hotel room, school, gym, or other institutional environment. This criterion evaluates ONLY the physical location shown in the video; do not consider whether the footage is original or a re-recording — that is handled by the 'Original recording' criterion.",
88
+ },
89
+ targetEntity: recordedVideo,
90
+ },
91
+ {
92
+ id: "e13f7006-b8b8-4648-b28a-a6091ce75169",
93
+ qualityElement: "Camera Angle (Top-Down View)",
94
+ thresholds: {
95
+ pass: `The video is recorded from a first-person point-of-view (POV) perspective — the camera is mounted on the performer's head, pointing straight down at the hands and workspace. The view must replicate what the performer's own eyes would see while working. The camera must be worn on the performer's head — using a headband, hat clip, or similar mount. Chest-mounted cameras are not acceptable, even if the resulting footage appears to look downward. The performer's forearms must extend forward from the bottom of the frame, with the top (dorsal) surface of the hands and forearms visible — as if looking down at your own arms. Ideally, both hands are positioned in the central area of the frame, working on the surface below, with wrists closest to the camera (bottom of frame) and fingertips extending away toward the workspace. The workspace surface (table, counter, sink) must be seen from directly above or at a steep downward angle, occupying most of the frame. The performer's lap, upper legs, upper arms, elbows, or upper torso may be partially visible at the edges of the frame when leaning forward — this is acceptable if the camera still primarily points downward at the hands and workspace. The performer's head, face, or shoulders must not be visible at any point during the task.
96
+ How to confirm POV from the video evidence: All three of the following must be true: (1) arms enter the frame from the bottom, with wrists at the lower edge and fingertips extending forward into the workspace, (2) the top (dorsal) surface of the hands and forearms is primarily visible, and (3) the workspace is seen from a downward or overhead angle, occupying most of the frame. If all three are present and the performer's head, face, and shoulders are not visible, the video passes.`,
97
+ fail: `The video fails if any of the following conditions are observed:
98
+ CHEST-MOUNTED CAMERA: The camera is mounted on the chest or body below the head. The angle is too horizontal — the workspace appears in front of the performer rather than below. Arms typically enter from the middle or sides of the frame rather than the bottom edge. Fail regardless of hand visibility.
99
+ FIXED OVERHEAD / NOT HEAD-MOUNTED: The camera is mounted on a fixed surface (tripod, lamp, shelf, wall) rather than worn on the performer's head. This includes both directly overhead setups and steep-angle setups above the workspace. Indicators include: camera does not move naturally with the performer's head movements, performer's head or shoulders are visible from above, or arms enter from the top or sides of the frame. Fail even if the footage looks downward, unless it is genuinely indistinguishable from head-mounted POV with none of these indicators present.
100
+ SIDE VIEW: The camera is positioned to the left or right of the performer, capturing them in profile. The arms enter the frame from a corner or side edge rather than from the bottom. The inner or side profile of the forearms is visible. Any degree of side view is a fail regardless of hand visibility within the frame.
101
+ FRONT-FACING: The camera is positioned across from the performer, facing them. The performer's face or front of body is visible. Hands may appear with fingertips pointing toward the bottom of the frame and wrists at the top. The workspace is seen from a horizontal angle rather than from above.
102
+ THIRD-PERSON REAR: The camera is behind the performer, showing the back of their head, neck, shoulders, or body. The arms do not originate from the camera's position — they belong to a person visible in the scene.
103
+ OVERHEAD BUT NOT POV: The camera is above and behind the performer, producing a steep downward angle but still showing the performer's shoulders or head. The arms enter from the top or top-corner rather than from the bottom. A steep angle alone does not confirm POV if the performer's body is visible from an external viewpoint.
104
+ BODY VISIBILITY — HEAD, FACE, OR SHOULDERS: The performer's head, face, or shoulders is visible at any point during the task — even briefly. Their visibility confirms the camera is not on the performer's head. Note: upper arms, elbows, forearms, upper torso when leaning, lap, or legs are acceptable.
105
+ NON-POV HAND ORIENTATION: The hands are seen from the underside or side profile rather than the top (dorsal) surface, or the arms enter the frame from the top, side, or corner rather than from the bottom — indicating the camera is not in a POV position.`,
106
+ },
107
+ targetEntity: recordedVideo,
108
+ },
109
+ {
110
+ id: "4d684a10-c25f-4679-9ca6-5e9eab4a76fa",
111
+ qualityElement: "No Personal Information (PII)",
112
+ thresholds: {
113
+ pass: 'All four of the following conditions are true: (1) No human faces are detected anywhere in the video, including in the primary scene, in reflective surfaces such as mirrors, windows, glass doors, appliance surfaces, or phone/tablet screens, and in photographs or framed images on walls or other surfaces. Faces on product packaging, book covers, CD/album artwork, posters of famous people, or other commercially produced media are acceptable and do not constitute a failure. Images or photographs without human faces are also acceptable. (2) No identity documents or cards are visible at any point, even briefly or partially, including government IDs, driver\'s licenses, passports, credit/debit cards, bank cards, insurance cards, employee badges, or membership cards, whether held, placed on a surface, or visible inside an open wallet. (3) Documents, papers, or labels may be visible on surfaces, but no personally identifying information is legible on them, such as full names (first and last), addresses, or account numbers. The presence of documents alone is not a failure as long as no identifying details can be read. A first name alone (e.g., "Maria") without accompanying identifying details does not constitute a failure. (4) Audio content is not evaluated for PII and does not affect the pass/fail determination.',
114
+ fail: 'Any one or more of the following is detected: (1) Any visible human face of a real person present in the scene or appearing in reflective surfaces, personal photographs, framed personal images, screens, or another person entering the frame at any point. Faces on commercially produced media such as product labels, book covers, CD artwork, or posters of famous people are not a failure. (2) Any identity document or card visible (even if not legible) at any point, even partially or briefly. (3) Any document, label, envelope, or screen displaying legible personally identifying details such as full names (first and last), addresses, or account numbers. Documents visible without legible identifying information are not a failure. A first name alone (e.g., "Maria") without accompanying identifying details is not a failure. (4) Audio content is not evaluated and does not constitute a failure regardless of what is spoken.',
115
+ },
116
+ targetEntity: recordedVideo,
117
+ },
118
+ {
119
+ id: "6f386481-840c-4628-bf88-6afdf270ea39",
120
+ qualityElement: "Original recording",
121
+ thresholds: {
122
+ pass: "The video is original footage captured live by the performer's head-mounted camera during this session. It is not a re-recording of another video playing on any screen, and it is not downloaded from or lifted from a professional video source (YouTube, Vimeo, stock-footage libraries, TV, film, or similar). This criterion evaluates ONLY whether the footage is original vs re-recorded/lifted; do not consider the physical setting (residential vs commercial) — that is handled by the 'Residential Setting' criterion.",
123
+ fail: "The video is a re-recording of another video being played on a screen (phone, tablet, monitor, TV) — including cases where the zoom has been adjusted to hide the screen bezel — or the footage was clearly downloaded from or lifted from a professional/commercial video source rather than freshly recorded by the performer. Screen re-recording indicators include moiré patterns, static bezel-like framing, refresh-rate banding, or unnatural camera stillness inconsistent with head-mounted capture. This criterion evaluates ONLY whether the footage is original vs re-recorded/lifted; do not consider the physical setting (residential vs commercial) — that is handled by the 'Residential Setting' criterion.",
124
+ },
125
+ targetEntity: recordedVideo,
126
+ },
127
+ {
128
+ id: "1989a434-874c-4cb8-a791-c26a2a6808b3",
129
+ qualityElement: "Category matches recorded activity",
130
+ thresholds: {
131
+ pass: "The selected task_category value matches the primary household activity actually performed in the recorded video, based on the 13-category taxonomy defined in the instruction (Food Preparation, Repair & Assembly, Home Organization, Desk & Office Tasks, Craft / Hobby / Fine Manipulation, Personal Care (Bathroom), Cleaning, Laundry & Garment Care, Miscellaneous Object Interaction, Dining Table Tasks, Plant Care Activities, Animal Care Activities, Yard & Landscaping Operations).",
132
+ fail: "The selected task_category does not match the primary activity in the video, or an obviously more specific category applies (e.g., 'Cleaning' selected while the person is chopping vegetables for a meal, which is 'Food Preparation'). Also fails if multiple unrelated categories are performed and the selected label describes only a minor part of the video.",
133
+ },
134
+ targetEntity: taskCategory,
135
+ },
136
+ ],
137
+ instruction: `# Egocentric Video Recording — Project Guidelines
138
+
139
+ ## What This Is
140
+
141
+ Record first-person videos of yourself doing household tasks to help train AI to understand hand movements at home.
142
+
143
+ ---
144
+
145
+ ## Steps
146
+
147
+ 1. Mount your phone so it captures a first-person, looking-down view — as if seeing what your eyes see. Use a headband, hat clip, or head strap. The camera should point downward toward your hands. 👉 [How to mount your phone](https://example.com/egocentric/phone-mount-guide)
148
+ 2. Tap to open camera, lock screen to landscape (horizontal) mode and start recording.
149
+ 3. Do your household task naturally for at least 2 minutes. Stick to one task category for the entire recording. Do not stop recording — stopping will reset recording.
150
+ 4. After finishing recording wait until video uploads and check preview of it against the rules below or in the Quality tab.
151
+ 5. Re-record video if it is incorrect or select your task category and submit task.
152
+
153
+ ---
154
+
155
+ ## Video Requirements
156
+
157
+ - **Orientation:** Landscape (horizontal) only
158
+ - **Length:** at least 2 minutes of task work, at most 10 minutes
159
+
160
+ ---
161
+
162
+ ## Quality Standards (All Must Be Met)
163
+
164
+ | Standard | Details |
165
+ |----------|---------|
166
+ | **Horizontal orientation** | wider than tall |
167
+ | **Downward camera angle** | hands and workspace clearly visible |
168
+ | **Stable footage** | camera is stabilized for at least **90%** of the recording; brief shake is fine as long as the unstable time totals ≤ 10% AND no single unstable stretch is longer than 10 seconds |
169
+ | **Hands visible throughout** | **both** hands fully in frame (wrists to fingertips) for at least **90%** of the recording; brief off-frame moments (reaching for a tool, transitioning between steps) are fine as long as they total ≤ 10% AND no single lapse lasts longer than 10 seconds |
170
+ | **Valuable household task** | real productive work (see categories below) — one category per video — pick a single task and focus on it for the full 2 minutes |
171
+ | **Category match** | the activity in the video must clearly match the task category you select |
172
+
173
+ ---
174
+
175
+ ## Do NOT Record
176
+
177
+ - ❌ No idle time, eating, drinking, or non-productive activities
178
+ - ❌ No commercial or public spaces — record only at your residential property (indoors or in your yard/garden)
179
+ - ❌ No personal or identifying information — no visible faces (including in reflections or photos on walls), no ID or bank cards, car plates, no documents with names or addresses
180
+
181
+ ---
182
+
183
+ ## Accepted Task Categories
184
+
185
+ | Category | Examples |
186
+ |----------|----------|
187
+ | **Food Preparation** | preparing meals, mixing ingredients, slicing fruits or vegetables, preparing hot drinks, preparing grill ingredients, skewering food, seasoning meat or vegetables |
188
+ | **Repair & Assembly** | assembling shelves, tightening screws, changing light bulbs, hanging pictures, replacing batteries, disassembling devices, assembling outdoor furniture, repairing fence panels, sanding wood, installing hooks or brackets |
189
+ | **Home Organization** | organizing closet, organizing drawers, unpacking groceries, packing boxes, organizing shoes, organizing tools |
190
+ | **Desk & Office Tasks** | filing documents, packaging items for shipping, opening mail, stapling papers, binding documents, sorting paperwork — **no PII visible** (names, addresses, IDs, account numbers, signatures) |
191
+ | **Craft / Hobby / Fine Manipulation** | sewing fabric, sorting beads, wrapping gifts, stringing beads, threading, assembling decorations |
192
+ | **Personal Care (Bathroom)** | organizing bathroom cabinet, cleaning grooming tools, restocking supplies, preparing bath products |
193
+ | **Cleaning** | vacuuming, sweeping, mopping, washing dishes, cleaning windows, cleaning bathroom sink, cleaning toilet, cleaning bathtub/shower, washing a car/bike, vacuuming car interior |
194
+ | **Laundry & Garment Care** | folding clothes and towels, hanging clothes, loading/unloading washing machine, ironing clothes, sorting laundry |
195
+ | **Miscellaneous Object Interaction** | setting up electronics, polishing shoes, sorting coins, untangling cords, labeling containers |
196
+ | **Dining Table Tasks** | setting the table, clearing the table, folding napkins, arranging flowers, placing dishes, preparing outdoor dining setups, arranging picnic items |
197
+ | **Plant Care Activities** | watering plants, repotting plants, pruning plants, planting seeds, planting flowers, harvesting vegetables, tying plants, filling seed trays, transplanting seedlings |
198
+ | **Animal Care Activities** | preparing animal feed, refilling water containers, brushing animals, collecting eggs, preparing bedding |
199
+ | **Yard & Landscaping Operations** | mowing lawn, raking leaves, edging grass lines, spreading mulch, trimming hedges/bushes |
200
+
201
+ > ⚠️ Pick exactly **one** category per video and stick to it for the full 2 minutes. Mixing categories or recording an activity that doesn't match the selected category will result in rejection.
202
+
203
+ ---
204
+
205
+ ## Examples
206
+
207
+ - ✅ **Pass:** the phone is strapped to your head and points down at the sink; both hands stay in frame while you wash a stack of dishes for 2½ minutes; category **Cleaning**.
208
+ - ❌ **Fail:** the phone sits on a shelf and films you from the side while you fold laundry; category **Laundry & Garment Care**. The task and category are fine, but the camera is not head-mounted, so the Camera Angle standard fails.
209
+
210
+ ---
211
+
212
+ ## Pre-Submit Checklist
213
+
214
+ 1. No personal information — no faces, IDs, cards
215
+ 2. Horizontal (landscape) video
216
+ 3. Camera stayed stabilized for at least 90% of the recording, with no single unstable stretch longer than 10 seconds
217
+ 4. Both hands fully in frame for at least 90% of the recording, with no single off-frame lapse longer than 10 seconds
218
+ 5. Real household task performed at your residential property
219
+ 6. Video is at least 2 minutes
220
+ 7. Correct task category selected
221
+ 8. Activity matches the selected category
222
+
223
+ ---
224
+
225
+ ## Questions?
226
+
227
+ If you have any questions or run into issues, let us know through this short [survey](https://example.com/egocentric/support-survey). We're happy to help you get set up and recording.
228
+ `,
229
+ ui: {
230
+ code: `<View.Flex vertical gap={'1rem'}>
231
+ <View.Alert
232
+ variant={'warning'}
233
+ title={'Complete this task in the Toloka app on your phone'}
234
+ description={'Update the app to the latest version before you start, and allow camera access when asked. Record the video while completing this task.'}
235
+ />
236
+ <View.Link url={'https://example.com/egocentric/video-instructions'}>
237
+ {'Watch the video instructions'}
238
+ </View.Link>
239
+ <View.Card title={'Task category'}>
240
+ <Field.Select
241
+ path={'task_category'}
242
+ label={'Which category does your recorded activity belong to?'}
243
+ hint={'Pick one category. The activity in your video must clearly match it.'}
244
+ placeholder={'Choose a category'}
245
+ options={CONST.TASK_CATEGORIES}
246
+ validation={[{ required: true, message: 'Select a task category' }]}
247
+ />
248
+ </View.Card>
249
+ <View.Card title={'Video recording'}>
250
+ <Field.VideoRecord
251
+ path={'video_file'}
252
+ label={'Record your activity'}
253
+ hint={'Landscape orientation, at least 2 minutes. Keep recording until you finish: stopping resets the recording.'}
254
+ linkType={'sasLink'}
255
+ nativeCamera={true}
256
+ orientation={'landscape'}
257
+ minDurationSec={120}
258
+ maxDurationSec={600}
259
+ audio={false}
260
+ />
261
+ </View.Card>
262
+ </View.Flex>`,
263
+ data: '{"id":6}',
264
+ preprocess: "return {}",
265
+ postprocess: "return {};",
266
+ constants: JSON.stringify({ TASK_CATEGORIES: taskCategories }),
267
+ },
268
+ qualityAssurance: { qaMode: "llm_only", llmQaModelId: "gpt-5.4" },
269
+ onboarding: {
270
+ enabled: true,
271
+ steps: [
272
+ {
273
+ id: "step-1",
274
+ blocks: [
275
+ {
276
+ id: "intro-text",
277
+ type: "text",
278
+ title: "Welcome to Egocentric Video Collection",
279
+ content: [
280
+ {
281
+ type: "markdown",
282
+ value: `## Your Role
283
+
284
+ You will record **first-person (egocentric) videos** of yourself performing household tasks using a head-mounted phone or camera. Your recordings will help train AI systems to understand how humans perform physical tasks in home environments.
285
+
286
+ ## What You'll Submit
287
+
288
+ Each submission includes:
289
+ - **One video recording** (at least 2 minutes) captured directly in the Toloka app on your mobile device
290
+ - **Task category** — one of 13 household activity categories that matches the primary activity in your video
291
+
292
+ ## Why This Matters
293
+
294
+ Egocentric video is uniquely valuable because it captures:
295
+ - Exactly what you see while doing a task
296
+ - Natural hand movements and object manipulation
297
+ - Real-world home environments
298
+
299
+ ## What You'll Learn in This Onboarding
300
+
301
+ 1. **Camera Setup** — how to mount and angle your camera correctly
302
+ 2. **The Quality Standards** — the requirements every video must meet (stability, hand visibility, valid physical task, residential setting, top-down camera angle, no PII, original recording)
303
+ 3. **Valid vs Invalid Tasks** — what activities count as productive household work
304
+ 4. **Environment Requirements** — where you can and cannot record
305
+ 5. **Task Category** — how to pick the right category from the 13-value list
306
+
307
+ Let's get started!`,
308
+ },
309
+ ],
310
+ },
311
+ ],
312
+ },
313
+ {
314
+ id: "step-2",
315
+ blocks: [
316
+ {
317
+ id: "concepts-camera",
318
+ type: "text",
319
+ title: "Camera Setup & Quality Standards",
320
+ content: [
321
+ {
322
+ type: "markdown",
323
+ value: `## Camera Mounting
324
+
325
+ ### Mounting Position
326
+ - Securely attach your phone to your **head** using a head strap, headband, hat clip, or similar mount.
327
+ - The mount must be **tight and stable** — loose mounts cause bouncy, shaky footage.
328
+ - Chest-mounted cameras are **not** acceptable, even if the resulting footage looks downward.
329
+ - Fixed setups (tripod, lamp, shelf) are **not** acceptable — the camera must move with your head.
330
+ - Test your mount by nodding and shaking your head before recording.
331
+
332
+ ### Camera Angle (CRITICAL)
333
+
334
+ | ✅ CORRECT | ❌ INCORRECT |
335
+ |-----------|--------------|
336
+ | Tilted **downward** toward hands and workspace | Pointed straight ahead at eye level |
337
+ | Both hands visible from wrists to fingertips | Cropped hands — wrists or fingertips cut off |
338
+ | Wide field of view showing task context | Too zoomed in on a single spot |
339
+ | Head, face, shoulders NOT visible | Face or shoulders visible in reflections or frame |
340
+
341
+ **How to confirm POV from the video:** arms enter from the bottom of the frame, wrists at the lower edge, fingertips extending forward into the workspace; the top (dorsal) surface of your hands and forearms is visible; the workspace is seen from directly above or a steep downward angle.
342
+
343
+ ### Orientation
344
+ - **Landscape (horizontal) ONLY** — wider than tall. The mobile recorder locks orientation, but verify before submitting.
345
+
346
+ ### Duration
347
+ - **Minimum 2 minutes** of task work. Stopping recording resets the video, so keep it running.
348
+
349
+ ---
350
+
351
+ ## The Quality Standards (All Must Be Met)
352
+
353
+ 1. **Footage Stability** — steady and easy to watch. Natural head movement is fine; constant shaking, blur, or bouncing is not.
354
+ 2. **Hand Visibility** — both hands fully visible (wrists to fingertips) for at least 90% of the task duration. Brief single-hand moments during reaching or transitioning are fine.
355
+ 3. **Valid Physical Task** — genuine, productive household manipulation. Idle time, eating, grooming, phone/computer use, exercise, or games are rejected. Show a real task with visible progress; staged or fake work fails (wiping an already-clean spot, stirring an empty pot, miming motions without real objects). Repetition alone is fine — folding a whole laundry pile or washing a stack of dishes passes.
356
+ 4. **Residential Setting** — a real residential setting (kitchen, bathroom, bedroom, living room, laundry room, office, studio, yard, garden, driveway). Not a commercial space, public street, staged set, or a screen recording.
357
+ 5. **Camera Angle (Top-Down View)** — head-mounted POV pointing straight down at your hands and workspace. See the table above.
358
+ 6. **No Personal Information (PII)** — no visible human faces (real people in scene, mirrors, personal photos, or screens), no ID cards / bank cards / passports / badges, and no legible full names, addresses, or account numbers on documents. Faces on product packaging and celebrity posters are OK. Audio is not evaluated for PII.
359
+ 7. **Original Recording** — original footage only. Never point your camera at another screen and re-record.
360
+
361
+ ---
362
+
363
+ ## Common Mistakes to Avoid
364
+
365
+ - Loose head mount → bouncy footage → rejected.
366
+ - Camera aimed at eye level or the far wall → workspace not captured → rejected.
367
+ - Hands cut off at the edges because the camera is too close → rejected.
368
+ - Idle scrolling, eating, or grooming mixed into the recording → rejected.
369
+ - Face visible in a mirror or on a phone screen you glance at → rejected under PII.
370
+ - Recording another video playing on a laptop / TV → rejected under Original recording.
371
+ - Selecting the wrong task category (e.g. picking "Cleaning" for chopping vegetables) → rejected.
372
+
373
+ ---
374
+
375
+ ## Task Category — Pick Exactly One
376
+
377
+ Every video must be tagged with **one** of the 13 categories, and it must clearly match the primary activity in the video:
378
+
379
+ - **Food Preparation** — meals, chopping, mixing, seasoning.
380
+ - **Repair & Assembly** — screws, bulbs, furniture assembly, sanding, brackets.
381
+ - **Home Organization** — closets, drawers, boxes, groceries.
382
+ - **Desk & Office Tasks** — filing, stapling, packaging — with **no PII** visible.
383
+ - **Craft / Hobby / Fine Manipulation** — sewing, beads, gift wrapping.
384
+ - **Personal Care (Bathroom)** — organizing the cabinet, cleaning grooming tools, restocking.
385
+ - **Cleaning** — vacuuming, sweeping, mopping, washing dishes, cleaning surfaces or car interior.
386
+ - **Laundry & Garment Care** — folding clothes and towels, hanging, ironing, loading laundry.
387
+ - **Miscellaneous Object Interaction** — electronics setup, polishing shoes, untangling cords, labeling.
388
+ - **Dining Table Tasks** — setting or clearing table, folding napkins, arranging flowers.
389
+ - **Plant Care Activities** — watering, repotting, pruning, planting, harvesting.
390
+ - **Animal Care Activities** — feeding, water, grooming, collecting eggs.
391
+ - **Yard & Landscaping Operations** — mowing, raking, edging, mulching, trimming hedges.
392
+
393
+ Stick to one category for the full 2 minutes. Mixing categories or picking a category that doesn't match is a rejection.`,
394
+ },
395
+ ],
396
+ },
397
+ ],
398
+ },
399
+ {
400
+ id: "step-3",
401
+ blocks: [
402
+ {
403
+ id: "quiz-1",
404
+ type: "quiz",
405
+ title: "Camera Setup & Quality Standards Quiz",
406
+ questions: [
407
+ {
408
+ id: "q1",
409
+ type: "single-choice",
410
+ question: "What is the correct camera angle for egocentric video recording?",
411
+ options: [
412
+ {
413
+ value: "a",
414
+ label: "Pointed straight ahead at eye level to capture what you see",
415
+ },
416
+ { value: "b", label: "Tilted downward toward your hands and workspace" },
417
+ { value: "c", label: "Pointed slightly upward to capture the room" },
418
+ { value: "d", label: "Any angle is fine as long as the video is stable" },
419
+ ],
420
+ correctAnswer: "b",
421
+ correctAnswerFeedback:
422
+ "Correct! The camera must be tilted downward to capture your hands and workspace, not pointed straight ahead or upward.",
423
+ incorrectAnswerFeedback:
424
+ "Not quite. The camera should be tilted DOWNWARD toward your hands and workspace so it captures hand-object interactions, not what you're looking at in the distance.",
425
+ hint: "Think about what the AI needs to see — your hands interacting with objects.",
426
+ },
427
+ {
428
+ id: "q2",
429
+ type: "multiple-choice",
430
+ question:
431
+ "Which of the following would cause a video to be REJECTED? (Select all that apply)",
432
+ options: [
433
+ { value: "a", label: "Video recorded in portrait (vertical) orientation" },
434
+ { value: "b", label: "Hands briefly exit frame during a natural transition" },
435
+ { value: "c", label: "Camera shaking and bouncing throughout the video" },
436
+ { value: "d", label: "Natural clutter visible in the background" },
437
+ {
438
+ value: "e",
439
+ label: "Hands cropped at the wrist / fingertips for most of the video",
440
+ },
441
+ ],
442
+ correctAnswer: ["a", "c", "e"],
443
+ correctAnswerFeedback:
444
+ "Correct! Portrait orientation, constant shaky footage, and hands cropped or not visible during manipulation all violate quality standards. Brief hand exits during transitions and natural clutter are acceptable.",
445
+ incorrectAnswerFeedback:
446
+ "Portrait orientation violates the landscape rule, constant shaking violates Footage Stability, and cropped or missing hands violate Hand Visibility. Brief transitions and natural clutter are fine.",
447
+ hint: "Review the quality standards — which ones are being violated?",
448
+ },
449
+ {
450
+ id: "q3",
451
+ type: "single-choice",
452
+ question:
453
+ "Your video shows you folding laundry, but the footage is bouncy because your head mount was loose. What should you do?",
454
+ options: [
455
+ { value: "a", label: "Submit it anyway — the task itself is valid" },
456
+ { value: "b", label: "Re-record with a tighter, more secure head mount" },
457
+ { value: "c", label: "Submit it but mention the shakiness in the description" },
458
+ { value: "d", label: "Edit the video to stabilize it before submitting" },
459
+ ],
460
+ correctAnswer: "b",
461
+ correctAnswerFeedback:
462
+ "Correct! Footage Stability is a required quality standard. Tighten your mount and re-record.",
463
+ incorrectAnswerFeedback:
464
+ "Bouncy footage violates the Footage Stability standard. Re-record with a secure head mount.",
465
+ hint: "All quality standards must be met for acceptance.",
466
+ },
467
+ {
468
+ id: "q4",
469
+ type: "single-choice",
470
+ question: "What is the minimum video length for each recording?",
471
+ options: [
472
+ { value: "a", label: "30 seconds" },
473
+ { value: "b", label: "1 minute" },
474
+ { value: "c", label: "2 minutes" },
475
+ { value: "d", label: "Any length is fine" },
476
+ ],
477
+ correctAnswer: "c",
478
+ correctAnswerFeedback: "Correct! Videos must be at least 2 minutes of task work.",
479
+ incorrectAnswerFeedback:
480
+ "The minimum is 2 minutes of task work. Anything shorter is rejected.",
481
+ hint: "The instruction has a minimum duration banner.",
482
+ },
483
+ ],
484
+ },
485
+ ],
486
+ },
487
+ {
488
+ id: "step-4",
489
+ blocks: [
490
+ {
491
+ id: "quiz-2",
492
+ type: "quiz",
493
+ title: "Valid Tasks, Environment & Category Quiz",
494
+ questions: [
495
+ {
496
+ id: "q5",
497
+ type: "single-choice",
498
+ question: "Which of these is a VALID task for recording?",
499
+ options: [
500
+ { value: "a", label: "Eating breakfast at the kitchen table" },
501
+ { value: "b", label: "Chopping vegetables for dinner preparation" },
502
+ { value: "c", label: "Brushing your teeth in the bathroom" },
503
+ { value: "d", label: "Watching a cooking show on TV" },
504
+ ],
505
+ correctAnswer: "b",
506
+ correctAnswerFeedback:
507
+ "Correct! Chopping vegetables is Food Preparation — a valid productive household task. Eating, grooming, and watching TV are all rejected.",
508
+ incorrectAnswerFeedback:
509
+ "Eating, grooming, and watching TV are all INVALID. Only chopping vegetables (Food Preparation) involves productive physical manipulation.",
510
+ hint: "Valid tasks involve productive physical manipulation of household objects — not eating, grooming, or passive activities.",
511
+ },
512
+ {
513
+ id: "q6",
514
+ type: "multiple-choice",
515
+ question:
516
+ "Which of these would fail the 'Valid Physical Task' quality standard? (Select all that apply)",
517
+ options: [
518
+ { value: "a", label: "Wiping the same clean table repeatedly for 2 minutes" },
519
+ { value: "b", label: "Folding a full pile of laundry from start to finish" },
520
+ { value: "c", label: "Scrolling your phone for 30 seconds during the recording" },
521
+ { value: "d", label: "Washing a stack of dinner dishes" },
522
+ ],
523
+ correctAnswer: ["a", "c"],
524
+ correctAnswerFeedback:
525
+ "Correct! Wiping an already-clean table for the full recording (staged — no visible result) and scrolling your phone (non-productive) both fail. Folding a full pile of laundry and washing a stack of dishes are valid productive tasks.",
526
+ incorrectAnswerFeedback:
527
+ "Staged work that produces no visible result and non-productive activities like phone scrolling fail this criterion. Repetition alone is fine: a full folding session and washing a stack of dishes are valid.",
528
+ hint: "Staged work with no visible result and non-productive activities are rejected; repetition alone is not.",
529
+ },
530
+ {
531
+ id: "q7",
532
+ type: "single-choice",
533
+ question:
534
+ "You record yourself wiping kitchen counters, then pause for 30 seconds to check your phone, then continue wiping. Is this acceptable?",
535
+ options: [
536
+ { value: "a", label: "Yes — the cleaning portions are valid" },
537
+ { value: "b", label: "No — the phone scrolling is non-productive and rejected" },
538
+ { value: "c", label: "Yes — brief pauses are always acceptable" },
539
+ { value: "d", label: "No — you can only record one continuous action" },
540
+ ],
541
+ correctAnswer: "b",
542
+ correctAnswerFeedback:
543
+ "Correct! Phone scrolling is a non-productive activity and makes the video invalid. Re-record without the idle phone time.",
544
+ incorrectAnswerFeedback:
545
+ "The cleaning portions are valid, but scrolling your phone for 30 seconds is non-productive and rejected. Re-record without the idle phone time.",
546
+ hint: "Think about non-productive activities during the video.",
547
+ },
548
+ {
549
+ id: "q8",
550
+ type: "single-choice",
551
+ question:
552
+ "You folded a stack of towels for 2 minutes. Which category should you select?",
553
+ options: [
554
+ { value: "a", label: "Personal Care (Bathroom)" },
555
+ { value: "b", label: "Laundry & Garment Care" },
556
+ { value: "c", label: "Home Organization" },
557
+ { value: "d", label: "Miscellaneous Object Interaction" },
558
+ ],
559
+ correctAnswer: "b",
560
+ correctAnswerFeedback: "Correct! Folding towels is Laundry & Garment Care.",
561
+ incorrectAnswerFeedback:
562
+ "Folding towels is Laundry & Garment Care — the category dedicated to folding and other clothing / linen tasks.",
563
+ hint: "Match the category to the PRIMARY activity in the video.",
564
+ },
565
+ {
566
+ id: "q9",
567
+ type: "single-choice",
568
+ question: "Where can you record your household task videos?",
569
+ options: [
570
+ { value: "a", label: "Any indoor location including offices and stores" },
571
+ { value: "b", label: "Only in kitchens and bathrooms" },
572
+ {
573
+ value: "c",
574
+ label:
575
+ "Real residential settings only — kitchen, bathroom, bedroom, living room, laundry room, yard, garden, driveway, etc.",
576
+ },
577
+ { value: "d", label: "Anywhere, including public streets" },
578
+ ],
579
+ correctAnswer: "c",
580
+ correctAnswerFeedback:
581
+ "Correct! Videos must be recorded in real residential environments only — indoors or in your yard / garden / driveway.",
582
+ incorrectAnswerFeedback:
583
+ "Videos must be recorded in a residential environment only. Offices, commercial spaces, and public streets are rejected.",
584
+ hint: "The goal is to capture natural residential environments.",
585
+ },
586
+ {
587
+ id: "q10",
588
+ type: "single-choice",
589
+ question:
590
+ "Your camera captures your hands folding clothes, but a family photo with your face is visible on the wall behind you. Is this acceptable?",
591
+ options: [
592
+ { value: "a", label: "Yes — the photo is not the subject of the video" },
593
+ {
594
+ value: "b",
595
+ label: "No — a visible face in a personal photo fails the PII standard",
596
+ },
597
+ { value: "c", label: "Yes — as long as the face is small" },
598
+ { value: "d", label: "Only a problem if the face is your own" },
599
+ ],
600
+ correctAnswer: "b",
601
+ correctAnswerFeedback:
602
+ "Correct! Any real human face — including in personal photos on the wall — fails the PII standard.",
603
+ incorrectAnswerFeedback:
604
+ "Personal photos with visible human faces violate the PII standard. Remove or reframe so the face is not in the shot.",
605
+ hint: "Read the No Personal Information (PII) standard carefully.",
606
+ },
607
+ ],
608
+ },
609
+ ],
610
+ },
611
+ {
612
+ id: "step-5",
613
+ blocks: [
614
+ {
615
+ id: "practice-1",
616
+ type: "practice",
617
+ title: "Video Assessment Practice",
618
+ content: [
619
+ {
620
+ type: "markdown",
621
+ value: `## Practice Scenario
622
+
623
+ Imagine you are reviewing your own recording before submission. Read the scenario below and evaluate whether this video meets all requirements.
624
+
625
+ ---
626
+
627
+ **Video Description:**
628
+ A participant recorded themselves in their kitchen. The video shows:
629
+ - Landscape (horizontal) orientation.
630
+ - Camera mounted on their head, but angled forward at eye level — mostly showing the kitchen wall, window, and upper cabinets.
631
+ - Footage is stable with no shaking.
632
+ - The participant is washing dishes at the sink.
633
+ - Hands are occasionally visible at the bottom edge of the frame when reaching up, but mostly cut off below the frame.
634
+ - Duration: 2 minutes 30 seconds.
635
+
636
+ **Submitted Metadata:**
637
+ - Task category: \`cleaning\`
638
+
639
+ ---
640
+
641
+ **Your Task:**
642
+
643
+ 1. Does this video pass or fail? Identify which quality standards are met and which are violated.
644
+ 2. Is the \`cleaning\` category correct for this activity?
645
+ 3. What specific advice would you give this participant to fix the issues?`,
646
+ },
647
+ ],
648
+ validators: [
649
+ {
650
+ id: "v1",
651
+ name: "Quality Standards Assessment",
652
+ description: "Correctly identifies which quality standards pass and fail.",
653
+ criteria:
654
+ "The response must identify that the video FAILS overall. It should correctly note: (1) Landscape orientation — PASS, (2) Camera Angle (Top-Down View) — FAIL (angled forward at eye level rather than downward toward hands), (3) Footage Stability — PASS, (4) Hand Visibility — FAIL (hands mostly cut off below the frame, not visible during manipulation), (5) Valid Physical Task — PASS (washing dishes is a valid cleaning task), (6) Residential Setting — PASS (kitchen). At minimum, must identify Camera Angle and Hand Visibility as the failing standards.",
655
+ },
656
+ {
657
+ id: "v2",
658
+ name: "Category Evaluation",
659
+ description: "Correctly evaluates the selected category.",
660
+ criteria:
661
+ "The response must confirm that the `cleaning` category is correct for washing dishes — washing dishes is listed under the Cleaning category examples in the instruction.",
662
+ },
663
+ {
664
+ id: "v3",
665
+ name: "Actionable Feedback",
666
+ description: "Provides correct, actionable advice for fixing the issues.",
667
+ criteria:
668
+ "The response must give specific, practical advice that addresses BOTH: (1) tilting the camera DOWNWARD toward the hands and sink instead of pointing straight ahead at the wall / window, AND (2) adjusting the mount so both hands are fully visible (wrists to fingertips) during scrubbing, rinsing, and stacking. Generic advice like 'fix the angle' without naming the direction (downward) or the hand-visibility fix does not pass.",
669
+ },
670
+ ],
671
+ },
672
+ ],
673
+ },
674
+ {
675
+ id: "step-6",
676
+ blocks: [
677
+ {
678
+ id: "consent-text",
679
+ type: "text",
680
+ title: "Ready to Start Recording",
681
+ content: [
682
+ {
683
+ type: "markdown",
684
+ value: `## You're Almost Ready!
685
+
686
+ You've learned how to:
687
+
688
+ ✅ Mount your camera correctly (secure head mount, tilted downward, not chest-mounted, not fixed)
689
+
690
+ ✅ Meet all the quality standards (stability, hand visibility, valid physical task, residential setting, top-down POV, no PII, original recording)
691
+
692
+ ✅ Record in real residential environments only
693
+
694
+ ✅ Pick the correct task category from the 13-value list
695
+
696
+ ---
697
+
698
+ ## Quick Reference Checklist
699
+
700
+ Before every submission, verify:
701
+
702
+ 1. ↔️ Is my video in landscape format?
703
+ 2. 📐 Is my camera angled downward toward my hands?
704
+ 3. 🎥 Is the footage stable without shaking?
705
+ 4. 🙌 Are my hands fully visible (wrists to fingertips) throughout?
706
+ 5. ✅ Is the task a real household activity with visible progress — not idle, not staged?
707
+ 6. 🏠 Am I in a real residential environment?
708
+ 7. 🔒 Are there no faces, IDs, or legible personal details on screen?
709
+ 8. 🏷️ Does the task category match the primary activity in my video?
710
+
711
+ ---
712
+
713
+ Please confirm below that you understand and will follow these guidelines.`,
714
+ },
715
+ ],
716
+ },
717
+ {
718
+ id: "consent-block",
719
+ type: "consent",
720
+ consentLabel:
721
+ "I understand the video recording requirements and will follow all guidelines including proper camera setup, quality standards, valid task selection, and matching the task category to the recorded activity.",
722
+ },
723
+ ],
724
+ },
725
+ ],
726
+ info: {
727
+ estimatedTime: "12-15 min",
728
+ role: "Video Collection Participant",
729
+ goal: "Learn how to properly mount your camera, identify valid household tasks, meet all quality standards, and select the correct task category.",
730
+ successCriteria:
731
+ "Pass both quizzes and complete the practice scenario demonstrating understanding of recording requirements.",
732
+ },
733
+ },
734
+ checks: {
735
+ annotation_qa: [
736
+ {
737
+ id: "craft-hobby-valid",
738
+ name: "Valid submission — craft/hobby manipulation",
739
+ input: {
740
+ taskInput: JSON.stringify({ id: 6 }),
741
+ taskOutput: JSON.stringify({
742
+ recorded_video: "https://example.com/recordings/craft-hobby.mp4",
743
+ task_category: "craft_hobby_fine_manipulation",
744
+ }),
745
+ },
746
+ },
747
+ {
748
+ id: "cleaning-valid",
749
+ name: "Valid submission — cleaning task",
750
+ input: {
751
+ taskInput: JSON.stringify({ id: 7 }),
752
+ taskOutput: JSON.stringify({
753
+ recorded_video: "https://example.com/recordings/cleaning.mp4",
754
+ task_category: "cleaning",
755
+ }),
756
+ },
757
+ },
758
+ ],
759
+ },
760
+ });