promptdojo_

Write pick_video_model(task) that takes a brief and returns the right model name as a string. Routing rules, evaluated in order (FIRST matching rule wins):

  1. If task["needs_camera_control"] is True: return "Higgsfield".
  2. Else if task["budget_max_per_sec"] < 0.06: return "Hailuo 02" (cheap tier — Hailuo at $0.045/sec is the only one that fits).
  3. Else if task["needs_audio"] is True AND task["budget_max_per_sec"] >= 0.40: return "Veo 3" (audio-native premium).
  4. Else if task["needs_audio"] is True: return "Veo 3.1 Lite" (audio at the cheap tier — $0.05/sec at 720p).
  5. Else if task["needs_image_input"] is True AND task["budget_max_per_sec"] < 0.20: return "Kling 3.0" (best price-performance for image-to-video at $0.084/sec).
  6. Else if task["duration_sec"] >= 20: return "Sora 2 Pro" (only model with 25-sec single-shot durations).
  7. Else: return "Sora 2" (default premium choice).

Five briefs run. Expected output:

Higgsfield
Hailuo 02
Veo 3
Veo 3.1 Lite
Sora 2 Pro

this step needs the editor

on desktop today; in the app (coming soon). save your spot and we'll bring you back here when you're ready.

open this same url on a laptop to keep going today.