🎬 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
- Script Analysis — paste a screenplay (Arabic/English/French); the
agent calls
analyze_scriptto extract scenes, cast, props, locations, and per-department notes. - Weather-aware scheduling —
get_weather_forecast+generate_schedulebuild a calendar that auto-moves outdoor scenes indoors when rain probability is high. - Department task board —
assign_taskdistributes work to 8 departments. - Live status dashboard —
get_production_statusreturns completion rates and weather alerts. - Call sheet export —
export_call_sheetproduces the daily briefing. - 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()withnavigator.modelContextfallback - 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
- Live: https://roya-seven.vercel.app — no signup; Reset button included
- Verify locally:
node e2e/webmcp.test.mjs
Built for the OpenAI WebMCP Challenge 2026 — Arabian Company for Production & Digital Services.
Built With
- css
- gpt-4o
- next.js
- node.js
- openai
- puppeteer
- react
- tailwind
- typescript
- vercel
- webmcp
Log in or sign up for Devpost to join the conversation.