{"schema_version":"1","site":"https://decosa.ai","id":"our-story-film","num":"172","name":"Our story film","tool_name":"Make a film of your story together","short":"Our story","blurb":"A 60-second film of the two of you, cut to your song. Each partner records their own consent clip, you both write three memories in your own words, and Studio makes an opening shot, the three memories in order with a line from your own words on screen, and a closing shot of the two of you now, cut on the beat. Both faces come only from your consent clips; adults only; nobody else in focus. Private by default: share it with the people you name, or download it.","status":"preview","labels":{"industry":["creative-media","entertainment"],"job":["generate"],"input":["files","text"],"deploy":["hosted","selfhost"],"status":"preview","output":["media"],"data":["pii"],"hardware":"gpu-96","licence":"permissive"},"industries":["creative-media","entertainment"],"runs_in":["hosted","selfhost"],"part_of":["studio-film"],"built_from":["studio-render","content-credentials"],"models":"MiniMax H3 (reference mode, two subjects) · FLUX.2 klein 4B (storyboard) · Qwen3.8-27B · Qwen3-ASR-1.7B","where":"Hosted (moving shots when a render GPU is attached); self-host with your own H3 licence","hardware":"1x 96 GB card for MiniMax H3 shots; the storyboard runs on FLUX.2 klein and the edit on CPU","final_artifact":"A 60-second film of the two of you in 16:9 and 9:16, labelled AI video, with a content credential.","self_host_first":false,"verification":{"receipt_coverage":"partial","summary":"Two consent clips checked; frame safety and likeness checks; cuts measured on the beat; C2PA in every export","manual_qa":{"hosted":{"date":"2026-09-29","result":"pass","p50_ms":142540,"p95_ms":274860,"runs":3,"receipts_per_run":5,"cost_per_run_usd":0.0405},"selfhost":null,"known_limits":["Moving shots need a render GPU, which is off until launch: the hosted demo makes a storyboard (drawn stills with camera moves).","No lip-sync to the vocal.","Likeness is checked by the text model on each frame; ArcFace numbers are internal QC only.","The adult check is a vision estimate from the consent frames, not an ID check.","Moving H3 shots aren't ready: blind testers rejected them (faces lost or someone else's); the likeness gate keeps about half and still lets some wrong faces through.","The likeness check is a yes/no from the text model on each picture; it caught 1 unlike picture in the couple test after the fix, and missed one before it (only the first partner was checked).","Measured with synthetic sample performers and one sample song."],"nightly_covers":null},"nightly":"https://api.decosa.ai/verify/status"},"eval_summary":{"metrics":[{"name":"Planned cuts found on the beat in the exports","value":"30 / 30","unit":null,"n":30,"split":"synthetic","note":"3 storyboard renders of the sample song; median 5.2 ms, max 16.0 ms from the beat grid (half a frame at 30 fps is 16.7 ms)."},{"name":"Storyboard frames flagged by the frame safety check","value":"0 / 33","unit":null,"n":33,"split":"synthetic","note":"Sample performers are synthetic adults; the check fails closed."},{"name":"Storyboard video done (p50)","value":"142.5 s","unit":null,"n":3,"split":"synthetic","note":"122-275 s (p50 142.5 s); first picture drawn after 15-17 s; shared GPU."},{"name":"Cost per storyboard video","value":"$0.040-0.074","unit":null,"n":3,"split":"synthetic","note":"Text model at list price plus GPU time at $1.32/h."},{"name":"MiniMax H3 time per moving shot","value":"about 80 s (two references)","unit":null,"n":11,"split":"synthetic","note":"Sketch tier 864x480, fp8, one 96 GB card, peak 49.6-52 GiB; recorded in a GPU window on 29 Sep."},{"name":"MiniMax H3 cost per shot","value":"$0.022-0.029","unit":null,"n":27,"split":"synthetic","note":"GPU time at $1.32/h; 27 shots including 6 re-rolls."},{"name":"Face likeness to the consent clip (ArcFace cosine, storyboard / H3)","value":"0.43 / 0.40","unit":null,"n":null,"split":"synthetic","note":"Internal QC with a non-commercial model, not shipped. H3 shots were often wide or turned away (faces found in 15 of 80 sampled frames); frontal re-rolls reached 0.51."},{"name":"Moving shots that kept the face (likeness gate)","value":"5 / 11","unit":null,"n":11,"split":"synthetic","note":"One middle frame per moving shot checked against each person's reference; the rest fell back to the still. Some wrong faces still pass."},{"name":"Blind partner: gives it / would pay (storyboard; moving)","value":"yes after one fix, $29; no, $0","unit":null,"n":1,"split":"synthetic","note":"An Opus sub-agent buying an anniversary gift. The fix it asked for (his partner's face changed in one shot) is why both partners are now checked."}],"dataset":"Synthetic sample performers (consent clips made from designed faces and voices; no real person), one sample song made with MiniMax-Music3, 3 storyboard renders per mode, and 27 MiniMax H3 shots (10 artist, 11 couple, 6 re-rolls) rendered in a GPU window on 29 Sep 2026.","held_out":false,"caveats":["Synthetic performers and one song; real selfies and real tracks are not measured.","Beat offsets are against the detected beat grid, not a human one.","Visual quality is not scored; some H3 sketch shots show artefacts (gold squiggles in one look, a banding glitch).","ArcFace (buffalo_l) is non-commercial and used only as internal QC.","The same builder wrote the pipeline and the eval."],"date":"2026-09-29","doc_url":"https://decosa.ai/metrics/evals/music-video-starring-you"},"stack":{"summary":"Each partner records a 15-second consent clip, you both write three memories in your own words, and Studio plans an opening shot, the three memories in order with a line of your words on screen, and a closing shot of the two of you now, cut on the beat of your song. Both faces come only from the consent clips: no photo upload, adults only, and nobody else in focus. Private by default.","tagline":"A 60-second film of the two of you, told through three of your own memories and cut to your song.","deployment":"hosted-or-self-host","regulatory_note":"Not legal advice; written 29 Sep 2026. Consent: a live consent clip with three fresh words, one moving face and an adult check (fails closed) goes into the consent ledger for the purpose music_video only, with the performer's own revocation link, which deletes their references and videos. There is no photo upload anywhere in the tool, so it can't be pointed at someone else's face. Children: Studio keeps children out of every video: a minor can't be enrolled for this purpose (tested), and memories that describe a child are refused. Disclosure: every frame carries a visible AI video label and every export a C2PA credential; EU AI Act (Regulation (EU) 2024/1689) Art. 50(2) asks providers to mark generated video in a machine-readable way from 2 Aug 2026 (EUR-Lex link under Tools). Use each platform's own AI-content toggle as well. Music: you confirm you have the rights to the track, and the end card credits it; the statement is not verified.","components":[{"id":"asr","role":"Consent read-back: hears whether the clip says the sentence and its three fresh words","name":"Qwen3-ASR-1.7B (language pack speech service)","hf_repo":"Qwen/Qwen3-ASR-1.7B","license":"Apache-2.0","params":"1.7B","quant":"BF16","vram_gb":null,"memory_gb_estimate":null,"engine":"decosa language pack speech service (services/lang)","receipt_coverage":"partial","in_hosted_demo":null,"tiers":["standard","best"],"alternative_to":null},{"id":"faces","role":"Face detection only (boxes): exactly one face, present and moving through the clip; its three sharpest frames become the only face references","name":"Ultra-Light-Fast-Generic-Face-Detector-1MB (version-RFB-320)","hf_repo":null,"license":"MIT","params":null,"quant":"FP32 ONNX (bundled)","vram_gb":0,"memory_gb_estimate":null,"engine":"onnxruntime on CPU","receipt_coverage":"none","in_hosted_demo":null,"tiers":["standard","best"],"alternative_to":null},{"id":"llm","role":"Adult check on the consent frames (vision), the shot list per song section from your three memories, and the frame safety and likeness checks","name":"Qwen3.8-27B (NVFP4)","hf_repo":"nvidia/Qwen3.8-27B-NVFP4","license":"Apache-2.0","params":"27.8B","quant":"NVFP4 (MLP NVFP4, GDN/attention FP8) + FP8 KV cache; MTP head, 3 draft tokens","vram_gb":20,"memory_gb_estimate":null,"engine":"vLLM 0.29.0, thinking off; treatment at temperature 0.3 (one retry at 0), checks at 0","receipt_coverage":"strong","in_hosted_demo":true,"tiers":["standard","best"],"alternative_to":null},{"id":"analyzer","role":"Beat grid, bars and sections of the song (CPU; the music-video studio's analyzer): cuts land on bar downbeats","name":"decosa-mvideo-analyze (services/mvideo)","hf_repo":null,"license":"AGPL-3.0-or-later (decosa-api)","params":null,"quant":null,"vram_gb":0,"memory_gb_estimate":null,"engine":"Python 3.12, librosa 1.0.0 (ISC), numpy, scipy; 8-16 threads","receipt_coverage":"none","in_hosted_demo":null,"tiers":["standard","best"],"alternative_to":null},{"id":"stills","role":"Storyboard: one still per shot drawn from the consent-clip references, then a camera move (push, pan, drift)","name":"FLUX.2 klein 4B","hf_repo":"black-forest-labs/FLUX.2-klein-4B","license":"Apache-2.0","params":"4B","quant":"fp8_e4m3fn transformer, Qwen3-4B NVFP4 text encoder","vram_gb":6,"memory_gb_estimate":null,"engine":"ComfyUI v0.34.0-36-g30bdda1e, core Flux2 nodes (ReferenceLatent), through the studio queue","receipt_coverage":"partial","in_hosted_demo":true,"tiers":["standard"],"alternative_to":null},{"id":"h3","role":"Moving shots: MiniMax H3 reference mode with the performer's consent-clip frames (two subjects), Turbo v4 LoRA, sketch tier 864x480","name":"MiniMax-H3 (reference mode, Turbo v4)","hf_repo":"MiniMaxAI/MiniMax-H3","license":"MiniMax H3 licence: our commercial licence covers hosted renders (official 28 Sep 2026, US customers included); to self-host you need your own licence (the public community licence excludes the US, EU, UK and Korea)","params":"33.1B (transformer) + 33.4B (text encoder)","quant":"fp8 rowwise transformer; the text encoder (fp8, 37 GiB) runs first and is unloaded","vram_gb":52,"memory_gb_estimate":null,"engine":"diffusers ModularPipeline (MiniMax-H3 blocks), SDPA, no compile; one warm worker","receipt_coverage":"partial","in_hosted_demo":false,"tiers":["best"],"alternative_to":null},{"id":"edit","role":"The edit (CPU): shots cut on the bar downbeats at 30 fps, the AI video label on every frame, an end card crediting the music, exports in 16:9, 9:16 and a Spotify Canvas loop; cut timing measured back from the pixels; C2PA per file","name":"decosa-api starring module + FFmpeg + c2pa-python","hf_repo":null,"license":"AGPL-3.0-or-later","params":null,"quant":null,"vram_gb":0,"memory_gb_estimate":null,"engine":"FFmpeg (libx264), c2pa-python","receipt_coverage":"partial","in_hosted_demo":null,"tiers":["standard","best"],"alternative_to":null}],"tiers":[{"id":"standard","label":"Standard · the hosted demo, a storyboard cut on the beat","summary":"A drawn still per shot from your consent clip, with a camera move, cut on the beat: a planning cut and a keepsake, not yet a moving video.","components":["asr","faces","llm","analyzer","stills","edit"],"hardware":"One card with about 6 GB free for the stills, the text model (about 20 GB, or remote), CPU for the edit","quality_evidence":[{"metric":"Planned cuts found on the beat (3 renders)","value":"30 / 30; median 5.2 ms, max 16.0 ms","source":"decosa-api docs/evals/music-video-starring-you.md, 2026-09-29"},{"metric":"Frames flagged by the frame safety check","value":"0 / 33","source":"decosa-api docs/evals/music-video-starring-you.md, 2026-09-29"},{"metric":"Visual quality","value":"not scored; drawn stills with camera moves","source":null}],"latency_note":"measured on our server: done in a few minutes","in_hosted_demo":true,"receipt_coverage":"partial","receipt_note":null,"hosting":null},{"id":"best","label":"Best · moving shots on MiniMax H3, one 96 GB card","summary":"The same shot list with each shot moving, from your consent-clip references. Not ready: blind testers rejected the moving shots, and the likeness gate keeps about half. Hosted once a render GPU is attached; self-host with your own H3 licence.","components":["asr","faces","llm","analyzer","h3","edit"],"hardware":"1x RTX PRO 6000 96 GB with about 60 GB free (fp8 H3, peak 49.6-52 GiB measured)","quality_evidence":[{"metric":"Time per moving shot (sketch 864x480)","value":"about 80 s with two references","source":"decosa-api docs/evals/music-video-starring-you.md, 2026-09-29"},{"metric":"Face likeness to the consent clip (ArcFace, internal QC)","value":"0.40","source":"decosa-api docs/evals/music-video-starring-you.md, 2026-09-29; faces often small or turned"},{"metric":"Blind testers who would pay for moving shots","value":"0 of 2 (both would for the storyboard)","source":"decosa-api docs/evals/music-video-starring-you.md, 2026-09-29"}],"latency_note":"measured in a GPU window on 29 Sep 2026","in_hosted_demo":false,"receipt_coverage":"partial","receipt_note":"Render receipts signed by the box; not a community-provider model.","hosting":null}],"alternates":[],"services":[{"name":"decosa-api","port":8445,"image":"${DECOSA_REGISTRY}/decosa-api:<tag>","purpose":"GET /studio/starring/info; POST /studio/projects/{pid}/performers/challenge, /performers/clip, /tracks, /videos; GET /studio/videos/{vid}; POST /studio/videos/{vid}/shots (edit or re-roll), /move (MiniMax H3 shots), /share, /unshare; POST /studio/starring/revoke. Needs FFmpeg and c2pa-python in the image."},{"name":"decosa-lang (speech)","port":8492,"image":null,"purpose":"Qwen3-ASR hears the consent sentence."},{"name":"comfyui","port":8188,"image":null,"purpose":"FLUX.2 klein storyboard stills for the studio worker, one job at a time."},{"name":"H3 render worker","port":null,"image":null,"purpose":"MiniMax H3 reference-mode shots on a 96 GB card; off until a render GPU is attached (the tool then makes a storyboard)."},{"name":"vLLM","port":8114,"image":"vllm/vllm-openai@sha256:c2914767605584b6d8f45686b82de173ecc99e781897aa3d0a66dacd72c51ae1","purpose":"Qwen3.8-27B NVFP4, behind our gateway (hosted) or called directly (self-host)."}],"tools":[{"name":"FFmpeg","url":"https://ffmpeg.org","license":"LGPL-2.1+ / GPL for some builds","purpose":"Cuts, camera moves, labels, the end card, and measuring the cuts back from the pixels."},{"name":"c2pa-python","url":"https://github.com/contentauth/c2pa-python","license":"MIT OR Apache-2.0","purpose":"The C2PA content credential on every export."},{"name":"ComfyUI","url":"https://github.com/comfyanonymous/ComfyUI","license":"GPL-3.0","purpose":"Runs the FLUX.2 klein storyboard graph for the studio worker."},{"name":"EU AI Act, Regulation (EU) 2024/1689 (Art. 50)","url":"https://eur-lex.europa.eu/eli/reg/2024/1689/oj","license":"EU law (EUR-Lex)","purpose":"Primary source for the machine-readable marking duty the C2PA credential answers."}],"hardware":[{"tier":"1x RTX PRO 6000 Blackwell 96 GB, shared","fits":true,"notes":"Measured on our server 2026-09-29: storyboard stills on GPU0 beside other services; MiniMax H3 shots in a GPU window with the speech and translation servers paused (peak 49.6-52 GiB); the text model on GPU1."},{"tier":"1x 24-32 GB card","fits":null,"notes":"Not tested. The storyboard path (FLUX.2 klein, about 6 GB) should fit with a remote text model; MiniMax H3 does not."}],"latency":[{"lane":"First picture drawn (shown once every picture is checked)","typical_ms":15450,"source":"measured on our server 2026-09-29: 15-17 s over 3 runs"},{"lane":"Storyboard video done (11 shots, 58.5 s)","typical_ms":142540,"source":"measured on our server 2026-09-29: 122-275 s (p50 142.5 s)"},{"lane":"One MiniMax H3 moving shot (sketch tier)","typical_ms":80000,"source":"measured on our server 2026-09-29 in a GPU window: about 80 s with two references"}],"benchmark":null,"notes":["Moving MiniMax H3 shots need a render GPU, which is switched on at launch; until then each shot is a drawn still with a camera move, cut on the beat.","No lip-sync to the vocal yet."]},"buyer_facts":[{"label":"Data retention","value":"The consent clip, face references, track and videos stay in your private Studio project until you delete it or the performer takes consent back with their own link (which deletes their references and videos). The consent entry expires after one year. Logs hold ids, counts and hashes."},{"label":"What leaves the box","value":"On the hosted route, speech, the text model and renders run on Decosa's hosted service. Self-hosted, nothing leaves your machine."},{"label":"Whose face","value":"Only the two faces from your own consent clips, adults only. There is no photo upload anywhere, so it can't be pointed at someone else."},{"label":"Cost per video","value":"Several cents per storyboard video in the eval; a moving MiniMax H3 shot costs a few cents of GPU time."},{"label":"Typical time","value":"Every picture is checked before you see it, so the shots appear together with the storyboard video, a few minutes after you start (measured); each moving H3 shot takes more than a minute."},{"label":"Outputs","value":"MP4s in 16:9 and 9:16 and a Spotify Canvas loop, with an AI video label on every frame, an end card crediting the music and a C2PA credential; private share links you can turn off."}],"hosted_now":{"needs":["qwen3.8-27b","studio-renders"],"off":["studio-renders"],"live_by_default":false,"live_status":"https://api.decosa.ai/status"},"data_handling":{"page":"/data#our-story-film","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":"The consent clip, face references, track and videos stay in your private Studio project until you delete it or the performer takes consent back with their own link (which deletes their references and videos). The consent entry expires after one year. Logs hold ids, counts and hashes.","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":"/apps/our-story-film","input":"our-story","lanes":[{"id":"memories","title":"Your three memories","kind":"list"},{"id":"shots","title":"Shots","kind":"list"},{"id":"exports","title":"The film","kind":"list"}],"samples":[{"n":1,"id":"couple","title":"Couple","deep_link":"/apps/our-story-film?sample=1&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/our-story-film-hosted.md","selfhost":"/prompts/our-story-film-selfhost.md","assemble":"/prompts/our-story-film-assemble.md","mac":null},"rehearsal":{"bundle":"/samples/our-story-film.zip","bundle_url":"https://decosa.ai/samples/our-story-film.zip","folder":"/samples/our-story-film/","expected":"/samples/our-story-film/expected.json","files":["/samples/our-story-film/expected.json"],"bytes":1412,"checks":["moving H3 shots are refused while no render GPU is attached","the video finishes","the shot list has 11 shots","all 10 planned cuts are found on the beat in the file","no cut appears that wasn't planned","the worst cut is within 17 ms of the beat","no frame is flagged by the safety check","the 16:9 export carries a C2PA credential","the credits say the video is AI","every model call has a signed receipt"],"licence":"No local inputs. The sample performers are synthetic (designed faces and voices, no real person); the sample song was made with MiniMax-Music3 through music-gen-cleared and carries its licence certificate.","about":"Two synthetic sample performers (adults, consent clips on the server) and a sample song made with MiniMax-Music3. Asking for moving H3 shots while no render GPU is attached must be refused; the storyboard must finish with 11 shots, every planned cut found on the beat in the file, no frame flagged, and a C2PA credential on every export. About 2-3 minutes on a shared GPU.","run":{"containers":"docker compose exec api python scripts/rehearse.py our-story-film","checkout":"python scripts/rehearse.py our-story-film --bundle our-story-film.zip --base-url http://127.0.0.1:8445","mac":".venv/bin/python scripts/rehearse.py our-story-film"},"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=our-story-film","data":"/api/hardware.json","tiers":[{"id":"standard","gpu_gb":68.7,"basis":"estimate","unknown":[]},{"id":"best","gpu_gb":52,"basis":"measured","unknown":[]}],"mac":null},"links":{"page":"/apps/our-story-film","json":"/use-cases/our-story-film.json","metrics":"/metrics/our-story-film","console":"/apps/our-story-film","console_sample":"/apps/our-story-film?sample=1&autorun=0","stack":"/apps/our-story-film#stack","try_live":"/apps/our-story-film#live","watch":"/apps/our-story-film#watch","build":"/apps/our-story-film#build","self_host":"/apps/our-story-film#self-host","prompts":{"hosted":"/prompts/our-story-film-hosted.md","selfhost":"/prompts/our-story-film-selfhost.md","assemble":"/prompts/our-story-film-assemble.md","mac":null}}}