🎬 ROYA | رؤية — AI Film Production Manager

See your entire film. Before you shoot it.

Inspiration

I come from the world of film production in Morocco — a country that hosts dozens of international shoots every year with a vibrant local industry. Yet I watched producers coordinate 10+ departments through spreadsheets, phone calls, and paper call sheets. A single weather change could trigger hours of re-planning calls.

I asked: what if the producer's AI agent could do this coordination directly — deterministically, instantly, reliably? That question is exactly what WebMCP enables. ROYA (رؤية = "vision" in Arabic) gives every filmmaker the vision of their entire production — from script to screen — before the camera rolls.

What it does

  1. Script Analysis — paste a screenplay (Arabic/English/French); the agent calls analyze_script to extract scenes, cast, props, locations, and per-department notes.
  2. Weather-aware scheduling — get_weather_forecast + generate_schedule build a calendar that auto-moves outdoor scenes indoors when rain probability is high.
  3. Department task board — assign_task distributes work to 8 departments.
  4. Live status dashboard — get_production_status returns completion rates and weather alerts.
  5. Call sheet export — export_call_sheet produces the daily briefing.
  6. Scene control — get_scene_breakdown + reschedule_scene.

Why WebMCP

Film logistics is the perfect agent-native problem: structured actions (schedule, assign, reschedule, export) that must execute deterministically instead of being guessed through a UI. Any agent — ChatGPT's in-app browser, a producer's assistant bot, or another production tool — can operate ROYA directly through its 8 registered tools.

Human + agent workflow

👤 Producer pastes a raw screenplay 🤖 Agent → analyze_script (12 scenes, 6 cast, 5 locations) 🤖 Agent → get_weather_forecast ×3 shooting days 🤖 Agent → generate_schedule (priority: weather) 🤖 Agent → assign_task ×8 departments 👤 Producer approves one change 🤖 Agent → reschedule_scene + export_call_sheet 👤 Crew receives the briefing instantly

6–8 hours of manual coordination → under 5 minutes.

How I built it

  • Frontend: Next.js 14 App Router, React, TypeScript, Tailwind CSS (charcoal #0a0a0f + amber-gold identity, Arabic/English)
  • AI: OpenAI GPT-4o-mini, JSON mode for screenplay extraction
  • Weather: OpenWeatherMap with graceful mock fallback (zero-key demo)
  • WebMCP: 8 tools via document.modelContext.registerTool() with navigator.modelContext fallback
  • State: client-side React context + localStorage; server routes stateless
  • Hosting: Vercel auto-deploy on every push; MIT license
  • Verification: Puppeteer E2E launching Chrome 152 with --enable-features=WebMCP,WebMCPAPI,WebModelContext, asserting 8/8 tools register and executing two against the live URL (report: e2e/results.json)

Challenges & what I learned

  • WebMCP availability: stable Chrome didn't expose modelContext; I feature-detected both surfaces and built an E2E harness with cached Chrome 152 + flags to prove registration AND execution.
  • React #418 hydration: reading localStorage during render broke SSR parity; fixed by seeding identical demo state and hydrating in useEffect.
  • Shared-state leak: an early server singleton mixed visitors' data; per-session client state + Reset button + "Demo data / Your analysis" badges now keep every judge's session pristine.

The opportunity

Production-management software is a $6.66B market (2026, +9%/yr), yet no Arabic-first, weather-aware, agent-native tool exists. MENA produces 200+ films/year with almost no tailored tooling. ROYA is the first.

Try it

Built for the OpenAI WebMCP Challenge 2026 — Arabian Company for Production & Digital Services.

Built With

Share this project:

Updates

Submission history