Photo and video proof
Kid captures real-world evidence as completion proof: either as a camera task (runMode: camera) or inside a canvas via sprout.uploadAsset(). Both Soon.
What you'll build
The kid finishes a real-world thing (cleaned room, finished art piece, practiced an instrument, did the chore) and captures evidence on the iPad: a photo, a short video. The artifact attaches to the task as completion proof. The parent sees the picture, not just a checkmark.
Both shapes below are Soon. The platform-level decisions are locked; the surfaces are landing in stages. We're publishing the pattern early so you can plan against it.
Pieces you'll combine
Two routes, pick the one that fits the activity:
- Camera task (
runMode: "camera"withcameraTaskSpec): native iPad camera surface managed by Sprout. No canvas authoring. Best when the entire task is the capture moment. - Canvas with upload (
sprout.uploadAsset()): a regular interactive canvas with a capture step inside it. Best when the capture is one step inside a richer activity (a drawing tool that saves the final piece, a quiz where the last question is "show me your work").
Build it (planned shape)
Route A: Camera task (runMode: "camera")
A new task runMode alongside self-check, conversation, and canvas. Sprout owns the camera surface end-to-end: opens the iPad camera, captures photo or short video, lets the kid retry, hands the asset to Sprout as completion proof. Your home agent never touches the file.
task.create({
name: "<capture name>",
assignChildIds: ["<kidId>"],
runMode: "camera",
cameraTaskSpec: {
captureKind: "photo", // "photo" | "video"
prompt: "<What the kid sees on the camera screen>",
maxDurationSeconds: 15, // video only
retryAllowed: true,
requireParentReview: true // pause completion in review state
},
scheduleSpec: { taskType: "schedule", days: ["Mon","Tue","Wed","Thu","Fri"], startMinutes: 1020 },
rewardSpec: { gems: 3 }
})
# Returns { taskId }
# Asset stored in Sprout. Read via task.describe: returns asset id + signed URL.Route B: Canvas with sprout.uploadAsset()
The existing Interactive canvas pattern, plus a new SDK call. The canvas opens the camera (or photo picker) when the kid taps a capture button; the captured asset flows back to Sprout via sprout.uploadAsset(). The completion call (sprout.score / sprout.complete) fires after the upload resolves.
// In the canvas body:
captureButton.onclick = async () => {
const result = await sprout.uploadAsset({
kind: "photo", // or "video"
purpose: "completion-proof",
maxBytes: 8_000_000
});
// result: { assetId, signedUrl, mime, sizeBytes }
showThumbnail(result.signedUrl);
};
submitButton.onclick = () => {
sprout.complete({
summary: "Submitted with photo proof",
assetIds: [latestAssetId]
});
};An authoring helper skill (analogous to Screen reader) ships alongside uploadAsset: it teaches your agent the canvas constraints around capture buttons, retry handling, thumbnail rendering, and the upload-then-complete sequence. Slug: photo-capture. Status: Soon, lands when uploadAsset lands.
When to use it
- Camera task: the activity is "capture this moment". Daily chore proof, "show me your finished homework", a quick practice clip. The camera is the task.
- Canvas with upload: capture is one step inside a richer activity. A drawing app that saves the finished piece. A reading reflection where the kid photographs their journal page. A multi-stage quiz with a final "show your work" step.
- Anti-pattern: kid privacy moments (bath, bedroom changing, anything sensitive). Sprout will not author or accept these tasks; design for non-sensitive proof only.
- Anti-pattern: storage-hungry video archives. Cap durations short; the platform enforces a ceiling regardless.
Tools touched (planned)
task.createwithrunMode: "camera"+cameraTaskSpec(Soon).canvas.create+sprout.uploadAsset()SDK method (Soon).task.describe: returns asset ids + signed URLs for read-back.
Recommended skills
No skills in the catalog pair with this pattern yet. Browse the catalog.
Roadmap
- Soon Camera task mode.
runMode: "camera"withcameraTaskSpec. Sprout-owned capture surface. - Soon Canvas asset upload.
sprout.uploadAsset()SDK method. Capture inside a richer activity. - Soon Photo capture authoring skill. Authoring helper that teaches your agent the capture-then-complete pattern (analogous to Screen reader).
- Soon Parent-review gate. Optional
requireParentReview: trueholds completion until a parent thumbs the photo through.
Seen in walkthroughs
Related patterns
- Interactive canvas: the host for Route B.
- Reports and briefs: digest a week of captured photos into a single card.
- Autonomous loop: cadence the capture task daily; cadence the digest weekly.