Recto Verso
Recto Verso is a multi-agent filmmaking pipeline.
Core trick
Coordinates specialist agents through a shared JSON manifest with contract validation before each dispatch, so handoffs go through state transitions only.
Description
Recto Verso is a multi-agent filmmaking pipeline. Brief in, short film out, produced autonomously by a Producer agent coordinating specialists through a shared manifest.
The bet: AI video doesn't fail at single-shot generation anymore, it fails at coordination. Continuity drifts, aesthetic intent gets lost, nothing minds the whole film. rectoverso treats film production as an agent coordination problem.
A Producer Managed Agent owns a keystone JSON manifest, the single source of truth. Specialist agents (Shot Judge, Creative Director, Audio, Editor) handle distinct roles. Stateless work drops to plain Messages API; deterministic work has no LLM at all. Agents never talk directly, every handoff goes through manifest state transitions, which makes the pipeline resumable and auditable. Contract validation before every dispatch catches silent breakage. A role-based router selects across Wan, Kling, Veo, and ElevenLabs with hard rules enforced as tested invariants.
Claude Design generated the architecture diagram in the demo and the site frontend, keeping the visual layer consistent with the system it documents.
README excerpt
<p align="center">
<img src="site/assets/wordmark.svg" alt="Recto Verso Productions" width="420">
</p>
<p align="center">
<img src="screenshots/Screenshot%202026-04-26%20at%2022.07.45.png" alt="rectoverso screenshot" width="48%">
<img src="screenshots/Screenshot%202026-04-26%20at%2022.08.04.png" alt="rectoverso screenshot" width="48%">
</p>
# rectoverso
**A multi-agent AI filmmaking pipeline built for the "Built with Opus 4.7" Hackathon.**
`rectoverso` takes a creative brief and autonomously produces an assembled short film. It orchestrates shots, voiceovers, sound effects, and deterministically renders a final composition to MP4 using specialized agents coordinated by a primary orchestrator.
```mermaid
flowchart TB
Brief[Creative brief<br/>inputs/brief.md]
subgraph T1 [Tier 1 — Orchestrator]
Producer([Producer<br/>Managed Agent])
end
subgraph T3 [Tier 3 — Stateless LLM]
Screenwriter([Screenwriter])
PromptSmith([PromptSmith])
end
subgraph T2 [Tier 2 — Specialists]
ShotJudge([Shot Judge])
AudioAgent([Audio Agent])
EditorAgent([Editor Agent])
CreativeDirector([Creative Director])
end
subgraph T4 [Tier 4 — Deterministic workers]
Router{{Router}}
Renderer[Renderer]
FFmpeg[ffmpeg glue]
end
Manifest[(state/manifest.json)]
Events[(state/events.db)]
Brief --> Producer
Producer <-->|reads & writes| Manifest
Producer --> Screenwriter
Producer --> Prom