{"schema_version":"1","site":"https://decosa.ai","id":"kids-content-preflight","num":"61","name":"Made-for-kids content pre-flight","tool_name":"Check if a video is made for kids","short":"Made for kids","blurb":"Before a video, short or app listing goes out, checks whether it is directed to children. Each of the FTC's COPPA factors (subject matter, characters, music, the age of the people on screen, language, ads) gets its own typed answer and probability, with the lines that show it. The call is compared with your made-for-kids setting: kids-directed but set not-for-kids by a channel default is the pattern in the FTC's $10M Disney order. When it is kids-directed, it lists what has to change: comments, personalised ads, links, requests for children's details, undisclosed paid promotion, AI labels, and for apps purchases, third-party ads and analytics. A named reviewer makes the designation, sealed in a signed review record. A back-catalogue audit checks many uploads at once. Not a COPPA compliance determination.","status":"live","labels":{"industry":["creative-media","compliance-trust"],"job":["review","attest"],"input":["text","files"],"deploy":["hosted","selfhost"],"status":"live","output":["record","data"],"data":["confidential"],"hardware":"gpu-96","licence":"permissive"},"industries":["creative-media","compliance-trust"],"runs_in":["hosted","selfhost"],"part_of":["studio-checks"],"built_from":["typed-judgment","diarize","signed-record"],"models":"Qwen3.8-27B (typed answers per factor; optional frame descriptions) · MOSS-Transcribe-Diarize for video audio","where":"Hosted or self-host; unreleased episodes and app builds on your own machine","hardware":"Qwen3.8-27B (1× RTX 5090 32 GB or larger); speech to text for videos needs MOSS-Transcribe-Diarize on a GPU; OCR and the record run on CPU","final_artifact":"The audience call with a probability per factor and the lines behind it, the setting check, what to change, and a signed review record with the reviewer's designation.","self_host_first":false,"verification":{"receipt_coverage":"full","summary":"Receipt per model call; signed ASR receipt for video audio; signed review record naming the reviewer and their designation","manual_qa":{"hosted":{"date":"2026-09-26","result":"pass","p50_ms":7200,"p95_ms":null,"runs":null,"receipts_per_run":15,"cost_per_run_usd":0.0045},"selfhost":{"date":"2026-09-26","result":"pass","method":"Fresh clone into a clean directory, docker build of the api image (85 s), the api with a named volume on host networking against the running local vLLM (Qwen3.8-27B) and diarizer; then torn down.","notes":"The puppet sample gave made for kids, a high mismatch and the expected flags in 3.6 s (11 attested calls); the review record verified and failed once the designation was changed; the video sample was transcribed (6 lines, signed ASR receipt) and OCR'd in the container; the rehearsal bundle passed 13 of 13; no titles or transcript text in the logs. The model server's own startup was not re-verified (no new GPU load)."},"known_limits":["Hosted verification ran on the pre-release server (decosa-api the pre-release branch on our server, gateway route); production gets this tool when the branch merges.","Measured on 64 synthetic uploads written and labelled by the building agent; not on real channel metadata or with an independent reviewer's labels.","Mixed-audience uploads with a stated child age range are usually called primary; the made-for-kids designation is still right.","The audience probability comes from sampling and moves between runs; one sample trailer landed at 0.41 on one run and 0.93 on another.","The frame check was measured on 12 public-domain stills, not on real kids' video."],"nightly_covers":null},"nightly":"https://api.decosa.ai/verify/status"},"eval_summary":{"metrics":[{"name":"Made for kids or not (full check)","value":"39 / 40","unit":null,"n":40,"split":"test","note":"Dev: 24 / 24. The miss was a close call (p = 0.59)."},{"name":"Audience, 4-way (primary / mixed / general / mature)","value":"37 / 40","unit":null,"n":40,"split":"test","note":"Two mixed-audience uploads called primary"},{"name":"Setting mismatches found","value":"15 / 15, 0 false","unit":null,"n":15,"split":"test","note":null},{"name":"Made for kids or not, audience-only audit","value":"39 / 40","unit":null,"n":40,"split":"test","note":"5 calls per upload instead of 15"},{"name":"Planted requests for children's details flagged","value":"3 / 3","unit":null,"n":3,"split":"test","note":null},{"name":"Frame check: picture-only stills, vision on","value":"10 / 12","unit":null,"n":12,"split":"heldout","note":"6 / 12 with vision off. Public-domain images labelled by the building agent; never used for tuning"}],"dataset":"64 synthetic uploads (24 dev, 40 test) written from the FTC's factors, YouTube's made-for-kids guidance and the Disney complaint, with the uploader's setting and planted data requests and sales pitches; 12 public-domain stills (6 children's-book illustrations, 6 not for children) for the frame check.","held_out":true,"caveats":["The same author wrote the uploads, the labels and the prompts; one prompt change was made on dev before the test split ran.","The test split ran twice: the first run overlapped a gateway outage (one upload unanswered; otherwise the same scores) and was re-run unchanged; the complete run is reported.","Short synthetic uploads that are on the nose; real channels, long vlogs and non-English videos will do worse.","The frame check used historical illustrations, not modern kids' video. Not a COPPA compliance determination."],"date":"2026-09-26","doc_url":"https://decosa.ai/metrics/evals/kids-content-preflight"},"stack":{"summary":"Send an upload's title, description, tags and transcript (or the video), or an app listing, with your current made-for-kids setting and what is switched on. Qwen3.8-27B lists the lines that bear on each of the FTC's factors in 16 CFR 312.2, answers a typed audience question (primary, mixed, general or mature) with probabilities, and a typed yes/no for each factor; code keeps only quotes it can find. The setting is never shown to the model. Code compares it with the assessment: a kids-directed upload set 'not made for kids', especially by a channel default, is the pattern in the FTC's $10M Disney order, which requires a programme to review made-for-kids designations. When the upload is kids-directed, code lists what has to change (comments, personalised ads, links, requests for children's details, undisclosed paid promotion, AI labels; for apps, purchases without a parental gate and third-party ads and analytics). A named reviewer makes the designation, sealed with the receipts into a signed review record. A back-catalogue audit checks up to 25 uploads at once. For videos, speech to text and frame OCR read what is said and shown; frame descriptions by the vision model are an option. Not a COPPA compliance determination.","tagline":"Before a video, short or app listing goes out: is it directed to children, factor by factor with the lines that show it; does your made-for-kids setting match; what has to change if it does; and a named reviewer's designation in a signed review record.","deployment":"hosted-or-self-host","regulatory_note":"Not legal advice and not a COPPA compliance determination; checked against the primary texts on 26 Sep 2026. COPPA Rule, 16 CFR 312.2 (as amended by 90 FR 16918, published 22 Apr 2025, effective 23 Jun 2025, compliance by 22 Apr 2026): to decide whether a website or online service, or a portion of one, is directed to children under 13, the FTC considers its subject matter, visual content, animated characters or child-oriented activities and incentives, music or other audio, the age of models, child celebrities or celebrities who appeal to children, language, and whether ads promoting or appearing on it are directed to children, plus evidence of audience composition and of the intended audience (the 2025 amendment adds marketing materials, representations, reviews and the age of users of similar services). A mixed-audience service is directed to children under those factors without targeting them as its primary audience, and must not collect personal information before determining age neutrally. 16 CFR 312.5 requires verifiable parental consent before collecting personal information from children. United States v. Disney (FTC complaint and proposed order 2 Sep 2025; court-approved order announced 31 Dec 2025): $10M civil penalty for child-directed videos on channels set 'not made for kids' at channel level, and a programme to review whether videos posted to YouTube should be designated made for kids, unless YouTube implements age assurance for all users or stops letting creators label videos. YouTube's help pages (undated; read 26 Sep 2026) treat content as made for kids when children are the primary audience, or a secondary audience that the content is still directed at, list the features turned off on made-for-kids content (comments, personalised ads, the notification bell, live chat, end screens and others), and say YouTube may override a setting. Apple App Review Guidelines 1.3, 2.3.8 and 5.1.4 and Google Play's Families policies govern kids' apps and their listings. 16 CFR 255.6: endorsements addressed to children may be of special concern. Model licences: Apache-2.0 (Qwen3.8-27B, MOSS-Transcribe-Diarize); Tesseract Apache-2.0.","components":[{"id":"llm","role":"Evidence lines per FTC factor (quotes), a typed audience choice with probabilities, a typed yes/no per factor (typed-judgment, vertical 24); with vision on, a description of four frames","name":"Qwen3.8-27B (NVIDIA NVFP4)","hf_repo":"nvidia/Qwen3.8-27B-NVFP4","license":"Apache-2.0","params":"27.8B","quant":"NVFP4 (MLP) + FP8 (attention/GDN), FP8 KV cache, MTP speculative decoding k=3","vram_gb":57,"memory_gb_estimate":null,"engine":"vLLM 0.29.0","receipt_coverage":"strong","in_hosted_demo":true,"tiers":["lite","standard","best"],"alternative_to":null},{"id":"asr","role":"Speech to timed lines for a video sent without a transcript, with a speech receipt signed by the instance","name":"MOSS-Transcribe-Diarize 0.9B","hf_repo":"OpenMOSS-Team/MOSS-Transcribe-Diarize","license":"Apache-2.0","params":"0.9B","quant":"BF16","vram_gb":null,"memory_gb_estimate":null,"engine":"transformers (trust_remote_code) + moss_transcribe_diarize package (decosa-api services/diarize)","receipt_coverage":"partial","in_hosted_demo":true,"tiers":["lite","standard","best"],"alternative_to":null},{"id":"ocr","role":"Reads on-screen text from six sampled frames of a video","name":"Tesseract OCR 5 (English)","hf_repo":null,"license":"Apache-2.0","params":null,"quant":null,"vram_gb":0,"memory_gb_estimate":null,"engine":"tesseract CLI, --psm 11, on CPU","receipt_coverage":"none","in_hosted_demo":true,"tiers":["lite","standard","best"],"alternative_to":null},{"id":"preflight","role":"The pre-flight: intake, quote checks, word-list cues, the setting check, the kids-directed flags, the batch audit, sign-off and the signed review record (no model; CPU)","name":"decosa-api kids module (decosa_api/verticals/kids)","hf_repo":null,"license":"AGPL-3.0-or-later","params":null,"quant":null,"vram_gb":0,"memory_gb_estimate":null,"engine":"Python 3.12; ffmpeg for video","receipt_coverage":"partial","in_hosted_demo":true,"tiers":["lite","standard","best"],"alternative_to":null}],"tiers":[{"id":"lite","label":"Lite · audience only (the catalogue audit)","summary":"One typed audience question per upload (5 calls on the gateway, 1 with logprobs self-hosted) and the setting check; no factor answers, evidence or content flags. Feature flags still come from what you declare.","components":["llm","ocr","preflight"],"hardware":"1x RTX PRO 6000 96 GB (measured) or 1x RTX 5090 32 GB (not measured)","quality_evidence":[{"metric":"held-out test, 40 synthetic uploads: made for kids or not / setting mismatches found","value":"39 / 40 / 15 of 15, 0 false","source":"decosa-api docs/evals/kids-content-preflight.md, measured on our server 2026-09-26, gateway route"},{"metric":"planted requests for children's details / sales pitches flagged (word lists only)","value":"2 of 3 / 0 of 3","source":"decosa-api docs/evals/kids-content-preflight.md, 2026-09-26"}],"latency_note":"measured: seconds for an audit of a handful of uploads","in_hosted_demo":true,"receipt_coverage":"strong","receipt_note":"Gateway receipt per call on the hosted route.","hosting":null},{"id":"standard","label":"Standard · full check on text (hosted demo)","summary":"Evidence lines per FTC factor, the typed audience call, nine typed factor answers, the setting check and every flag; speech to text and frame OCR for videos.","components":["llm","asr","ocr","preflight"],"hardware":"1x RTX PRO 6000 96 GB (measured); the diarizer on a second GPU in the hosted setup","quality_evidence":[{"metric":"held-out test, 40 synthetic uploads: made for kids or not / 4-way audience","value":"39 / 40 / 37 / 40","source":"decosa-api docs/evals/kids-content-preflight.md, measured on our server 2026-09-26, gateway route; prompts frozen on a separate 24-upload dev split"},{"metric":"setting mismatches found / false mismatches / close calls on correct uploads","value":"15 of 15 / 0 / 2","source":"decosa-api docs/evals/kids-content-preflight.md, 2026-09-26"},{"metric":"planted requests for children's details / sales pitches flagged","value":"3 of 3 / 2 of 3","source":"decosa-api docs/evals/kids-content-preflight.md, 2026-09-26"},{"metric":"demo samples: audience and setting check as planted","value":"7 of 7","source":"decosa-api docs/evals/kids-content-preflight.md, 2026-09-26"}],"latency_note":"measured: seconds per text upload on a quiet gateway","in_hosted_demo":true,"receipt_coverage":"strong","receipt_note":"Gateway receipt per model call; signed ASR receipt for video audio.","hosting":null},{"id":"best","label":"Best · adds the frame check (vision)","summary":"Everything in Standard, plus four frames of a video described by Qwen3.8-27B's image input (one more receipted call, about 3,500 more prompt tokens), so the picture counts, not only the words.","components":["llm","asr","ocr","preflight"],"hardware":"1x RTX PRO 6000 96 GB with the model served with its vision tower (measured through the hosted gateway)","quality_evidence":[{"metric":"12 public-domain stills, picture only: made-for-kids call agrees with the label, vision off / on","value":"6 of 12 / 10 of 12","source":"decosa-api docs/evals/kids-content-preflight.md, measured on our server 2026-09-26, gateway route (children's-book illustrations 0 of 6 / 4 of 6; other stills 6 of 6 both ways)"},{"metric":"frame check on real kids' video","value":"not measured yet","source":null}],"latency_note":"measured: one extra call of a few seconds per video","in_hosted_demo":true,"receipt_coverage":"strong","receipt_note":"Image calls are receipted by the gateway like text calls.","hosting":null}],"alternates":[],"services":[{"name":"decosa-api","port":8445,"image":"${DECOSA_REGISTRY}/decosa-api:0.1.0","purpose":"GET /kids/info, /kids/samples; POST /kids/check (SSE or JSON), POST /kids/batch (NDJSON), POST /kids/runs/{id}/signoff, GET /kids/runs/{id}/export?format=md|json|record. No GPU; ffmpeg and Tesseract inside. Uploaded videos are deleted when the run ends; reports are kept in memory for one hour."},{"name":"decosa-llm","port":8000,"image":"${DECOSA_REGISTRY}/decosa-llm:0.1.0","purpose":"vLLM OpenAI endpoint for Qwen3.8-27B. Internal to the compose network."},{"name":"decosa-diarize","port":8092,"image":null,"purpose":"Optional: MOSS-Transcribe-Diarize for videos sent without a transcript (DECOSA_DIARIZE_URL). No published image yet; built from services/diarize."}],"tools":[{"name":"eCFR: 16 CFR 312.2 and 312.5 (COPPA Rule, as amended)","url":"https://www.ecfr.gov/current/title-16/chapter-I/subchapter-C/part-312","license":"US government work (public domain)","purpose":"The factors, the mixed-audience definition, personal information, parental consent."},{"name":"Federal Register 90 FR 16918 (2025 COPPA amendments)","url":"https://www.federalregister.gov/documents/2025/04/22/2025-05904/childrens-online-privacy-protection-rule","license":"US government work (public domain)","purpose":"Effective 23 Jun 2025; compliance by 22 Apr 2026."},{"name":"FTC: court approves the Disney order (31 Dec 2025)","url":"https://www.ftc.gov/news-events/news/press-releases/2025/12/court-approves-order-requiring-disney-pay-10-million-settle-ftc-allegations-firm-enabled-unlawful","license":"US government work (public domain)","purpose":"$10M and the programme to review made-for-kids designations."},{"name":"YouTube Help: made for kids (9528076) and set your audience (9527654)","url":"https://support.google.com/youtube/answer/9528076","license":"Read for reference","purpose":"Primary and secondary audiences, the creator's factors, the features turned off."},{"name":"Apple App Review Guidelines 1.3, 2.3.8, 5.1.4; Google Play Families policies","url":"https://developer.apple.com/app-store/review/guidelines/","license":"Read for reference","purpose":"Kids' apps and their listings."},{"name":"decosa typed-judgment (vertical 24)","url":"https://decosa.ai/apps/typed-judgment","license":"AGPL-3.0-or-later (decosa-api)","purpose":"The audience choice and the factor yes/no questions with calibrated probabilities; imported, not copied."},{"name":"decosa disclosure pre-flight (vertical 49)","url":"https://decosa.ai/apps/disclosure-preflight","license":"AGPL-3.0-or-later (decosa-api)","purpose":"Declared performers (synthetic, replica, real) and their consent-ledger checks, and the profanity word list."},{"name":"decosa record (vertical 07) and POST /record/verify","url":"https://decosa.ai/apps/record","license":"AGPL-3.0-or-later (decosa-api)","purpose":"The hash chain and the Ed25519-signed review record; anyone can re-check it."},{"name":"scripts/kids_eval.py","url":null,"license":"Apache-2.0","purpose":"64 synthetic uploads labelled from the public factor lists (24 dev, 40 held-out test), and 12 public-domain stills for the frame check."}],"hardware":[{"tier":"1x RTX PRO 6000 Blackwell 96 GB","fits":true,"notes":"Measured: the hosted demo's Qwen3.8-27B runs on one of these cards on our server, the diarizer on the other; the self-host check ran against the same model server."},{"tier":"1x RTX 5090 32 GB","fits":null,"notes":"Not measured. Qwen3.8-27B NVFP4 needs about 20 GB of weights; titles, descriptions and short transcripts need little KV cache."},{"tier":"CPU only","fits":true,"notes":"Intake, OCR, the setting check, the flags, the batch bookkeeping, the record and verification need no GPU; the audience call needs the model (use_model: false gives code cues only)."}],"latency":[{"lane":"text upload (title, description, transcript), full check, hosted gateway route","typical_ms":7200,"source":"measured on our server 2026-09-26 on the pre-release server: median of 11 single runs 6.0-12.8 s when the gateway was quiet; 30-45 s while evals and other workloads loaded it"},{"lane":"24 s video without a transcript (speech to text, frame OCR, full check), hosted","typical_ms":16500,"source":"measured on our server 2026-09-26: 16.5 s and 44.4 s (the second with the frame check, under load); speech to text about 1.9 s, OCR 0.6-0.7 s"},{"lane":"back-catalogue audit, 6 uploads, audience only","typical_ms":9500,"source":"measured on our server 2026-09-26, hosted gateway route (30 calls)"},{"lane":"text upload, self-host direct route (logprobs)","typical_ms":3600,"source":"measured on our server 2026-09-26: fresh-clone api image against the local vLLM, 11 attested calls"}],"benchmark":{"title":"How often is the made-for-kids call right, and are mismatches caught?","intro":"64 synthetic uploads (titles, descriptions, transcripts, app listings) were labelled primary, mixed, general or mature from the public factor lists, with a made-for-kids setting each; hard cases include children on screen in content for parents and cartoons for adults. Prompts were tuned on 24 and frozen; 40 were held out. The frame check used 12 public-domain stills.","rows":[{"label":"Made for kids or not (held-out 40)","value":"39 of 40","detail":"the miss came back as a close call for a reviewer"},{"label":"Setting mismatches found","value":"15 of 15","detail":"no false mismatch"},{"label":"Audience, 4-way","value":"37 of 40","detail":"two mixed-audience uploads called primary"},{"label":"Audience-only audit","value":"39 of 40","detail":"a third of the calls"},{"label":"Frame check, picture only","value":"10 of 12","detail":"6 of 12 without it"}],"points":[{"heading":"Where it fails","text":"A stated child age range ('ages 6 and up') makes the model call a mixed-audience upload primary. A family road-trip vlog came back as a close call. Two turn-of-the-century engravings were not recognised as children's books from the picture alone."},{"heading":"What this does not show","text":"The uploads are short and synthetic, written and labelled by the same author. No real channel metadata, no independent labels and no legal judgement are measured."}],"source":"decosa-api docs/evals/kids-content-preflight.md, 2026-09-26"},"notes":[]},"buyer_facts":[{"label":"What it checks","value":"Whether an upload is directed to children under 13 (one typed answer per FTC factor, with the lines that show it), whether your made-for-kids setting matches, and, when it is kids-directed, comments, personalised ads, links, requests for children's details, undisclosed paid promotion, AI labels, and for apps purchases without a parental gate, third-party ads and analytics, chat and the data collected."},{"label":"What it does not do","value":"It is not a COPPA compliance determination or legal advice, and a named person makes the designation. Feature flags come from what you declare; audience analytics are not read unless you put them in the text. Without the vision option, the picture itself is read only by OCR."},{"label":"Data retention","value":"An uploaded video is deleted when its run ends. Reports and records are kept in memory for one hour, for the token or key that made them. Logs carry run ids, statuses and counts, never titles, transcripts, names or links. You keep the signed review record."},{"label":"What leaves the box (hosted demo)","value":"The upload's text (and, with the vision option, four frames) goes to Qwen3.8-27B through our gateway, which Decosa operates; video audio is transcribed on Decosa's hosted service. The gateway's receipts hold hashes, not text. Self-hosted, nothing leaves."},{"label":"Children's data","value":"None is needed. The pre-flight reads what a channel publishes about the upload, never viewers' data; the demo samples are synthetic."},{"label":"Cost per upload","value":"A fraction of a cent for the full check, and less in the audience-only audit, at the gateway list price (measured on the test set)."},{"label":"Output","value":"The audience call with probabilities, nine factors with their lines, the setting check, what to change, and a signed review record naming the reviewer and their designation (Markdown and JSON exports; verify at /record/verify)."}],"data_handling":{"page":"/data#kids-content-preflight","self_host":{"level":"confidential","leaves":"nothing","summary":"Runs on your machine; nothing is sent to Decosa or a third party by default."},"hosted":{"level":"operator-processed","demo_only":false,"summary":"TLS to Decosa's server, then decrypted and processed by Decosa's API server, with the open models run by NEAR AI through OpenRouter, with Reka AI as the only fallback under Decosa's account.","gpus":"operator-contracted","third_parties":[],"retention":"An uploaded video is deleted when its run ends. Reports and records are kept in memory for one hour, for the token or key that made them. Logs carry run ids, statuses and counts, never titles, transcripts, names or links. You keep the signed review record.","used_for_training":false,"encrypted_while_processed":false},"sealed_tier":{"applies":false,"note":"The sealed tier (raw chat only, never use-case pipelines) is paused at launch (/docs/sealed-tier)."},"external_calls":[]},"console":{"href":"/tools/media/kids-content-preflight","input":"kids","lanes":[{"id":"assessment","title":"Audience and setting","kind":"list"},{"id":"factors","title":"FTC factors","kind":"list"},{"id":"flags","title":"What to change","kind":"list"},{"id":"record","title":"Review record","kind":"json"}],"samples":[{"n":1,"id":"preschool-puppet","title":"Preschool puppet","deep_link":"/tools/media/kids-content-preflight?sample=1&autorun=0"},{"n":2,"id":"momo-video","title":"Momo video","deep_link":"/tools/media/kids-content-preflight?sample=2&autorun=0"},{"n":3,"id":"parenting-vlog","title":"Parenting vlog","deep_link":"/tools/media/kids-content-preflight?sample=3&autorun=0"},{"n":4,"id":"game-trailer","title":"Game trailer","deep_link":"/tools/media/kids-content-preflight?sample=4&autorun=0"},{"n":5,"id":"adult-cartoon","title":"Adult cartoon","deep_link":"/tools/media/kids-content-preflight?sample=5&autorun=0"},{"n":6,"id":"kids-app-listing","title":"Kids app listing","deep_link":"/tools/media/kids-content-preflight?sample=6&autorun=0"},{"n":7,"id":"toy-unboxing","title":"Toy unboxing","deep_link":"/tools/media/kids-content-preflight?sample=7&autorun=0"},{"n":8,"id":"ai-science-host","title":"Ai science host","deep_link":"/tools/media/kids-content-preflight?sample=8&autorun=0"},{"n":9,"id":"catalogue-audit","title":"Catalogue audit","deep_link":"/tools/media/kids-content-preflight?sample=9&autorun=0"}],"deep_link_params":{"sample":"1-based index into samples, or a sample id","autorun":"1 = start the run once the sample is loaded; 0 (default) = only preselect","reduce-motion":"1 = turn off animations"}},"api":{"base":"https://api.decosa.ai","contract":"/api/contract.json","contract_markdown":"/api/contract.md","reference":"/docs/api","keys":"/account/keys"},"prompts":{"hosted":"/prompts/kids-content-preflight-hosted.md","selfhost":"/prompts/kids-content-preflight-selfhost.md","assemble":"/prompts/kids-content-preflight-assemble.md","mac":null},"rehearsal":{"bundle":"/samples/kids-content-preflight.zip","bundle_url":"https://decosa.ai/samples/kids-content-preflight.zip","folder":"/samples/kids-content-preflight/","expected":"/samples/kids-content-preflight/expected.json","files":["/samples/kids-content-preflight/expected.json","/samples/kids-content-preflight/inputs/catalogue.json","/samples/kids-content-preflight/inputs/upload.json","/samples/kids-content-preflight/inputs/vlog.json"],"bytes":4455,"checks":["the counting song is assessed as made for kids","the channel-default 'not made for kids' setting is a high-severity mismatch","the mismatch is rated high","comments, personalised ads and the request for names and ages are flagged","every factor answer carries a probability","the parenting vlog with a toddler on screen is not made for kids","the vlog's setting is consistent","an upload with nothing to read is refused","the signed review record verifies","a record with the designation changed no longer verifies","the back catalogue finds the video with no setting","the back catalogue finds at least one mismatch","every model call has a signed receipt"],"licence":"Synthetic: every channel, person and product is fictional, written for Decosa from the FTC's factors (16 CFR 312.2) and YouTube's made-for-kids guidance. No minors' data. Part of decosa-api, AGPL-3.0-or-later.","about":"A preschool counting song with a puppet, uploaded under a channel default of 'not made for kids', with comments and personalised ads on and a sign-up link. The pre-flight must call it made for kids, raise the setting mismatch as high (the channel-default pattern from the FTC's Disney case), and list the comments, personalised-ads and data-request flags. A parenting vlog with a toddler on screen must come back not made for kids and consistent. A reviewer signs; the review record must verify, and fail once the designation is changed. The back catalogue must find the unset video and at least one mismatch.","run":{"containers":"docker compose exec api python scripts/rehearse.py kids-content-preflight","checkout":"python scripts/rehearse.py kids-content-preflight --bundle kids-content-preflight.zip --base-url http://127.0.0.1:8445","mac":".venv/bin/python scripts/rehearse.py kids-content-preflight"},"guidance":"Set up with a coding agent (we recommend Claude Code with Claude Opus 5.5; any capable coding agent works) on mock data only, run the rehearsal until every check passes, then run your own data locally yourself. Never give the agent real data during setup."},"hardware_fit":{"check":"/self-host/hardware?use=kids-content-preflight","data":"/api/hardware.json","tiers":[{"id":"lite","gpu_gb":57.6,"basis":"stack","unknown":[]},{"id":"standard","gpu_gb":61.6,"basis":"estimate","unknown":[]},{"id":"best","gpu_gb":61.6,"basis":"estimate","unknown":[]}],"mac":null},"links":{"page":"/tools/media/kids-content-preflight","json":"/use-cases/kids-content-preflight.json","metrics":"/metrics/kids-content-preflight","console":"/tools/media/kids-content-preflight","console_sample":"/tools/media/kids-content-preflight?sample=1&autorun=0","stack":"/tools/media/kids-content-preflight#stack","try_live":"/tools/media/kids-content-preflight","watch":"/tools/media/kids-content-preflight","build":"/tools/media/kids-content-preflight#build","self_host":"/tools/media/kids-content-preflight#self-host","prompts":{"hosted":"/prompts/kids-content-preflight-hosted.md","selfhost":"/prompts/kids-content-preflight-selfhost.md","assemble":"/prompts/kids-content-preflight-assemble.md","mac":null}}}