Inspiration
Independent filmmakers often begin with an ambitious scene but have limited time, budget, crew and equipment. Turning a script into a practical shooting plan normally requires several separate production decisions. I created ScenePilot to bring those decisions together and help filmmakers determine what is realistically achievable before arriving on set.
What it does
ScenePilot converts a scene description and production constraints into a practical production plan.
The user provides:
- A scene description
- Budget ceiling
- Crew size
- Available shooting hours
- Available equipment
- Indoor, outdoor or mixed location type
ScenePilot returns:
- Scene summary
- Cast, props, location and lighting breakdown
- Production risks
- Structured shot list
- Shooting schedule
- Estimated production time
- Itemised illustrative budget
- Constraint status and warnings
- Adaptations made to keep the scene achievable
- A printable plan that can be saved as a PDF
How I built it
ScenePilot is a Flask web application built with Replit Agent and deployed directly on Replit for the Replit partner track.
Gemini 2.5 Flash runs through Google’s Agent Development Kit. Gemini handles the creative tasks: analysing the scene, identifying production requirements and producing the structured shot plan.
Deterministic Python tools handle calculations and validation. They calculate shooting time, create an illustrative cost breakdown and check the plan against the user’s budget, crew, time and equipment limits.
The workflow is:
- Analyse the scene.
- Generate a draft shot plan with Gemini.
- Validate it using deterministic Python functions.
- If constraints are violated, send the warnings back to Gemini for one revision.
- Validate again and return the final production plan.
The interface was built with HTML, CSS and JavaScript. It shows the workflow stages without exposing private model reasoning. A visible Gemini or fallback indicator also makes the generation source transparent.
The application does not use a database or external data source. Plans are generated from the user’s brief and constraints.
Challenges
One challenge was making generative output work reliably with deterministic validation. Gemini could create specific equipment names that did not exactly match the user’s inventory. I improved the prompt and normalised equipment names while preserving legitimate specifications such as lens focal lengths.
Another challenge was cost estimation. AI-generated prices changed between runs and were difficult to explain. I moved the calculation into Python and created an itemised illustrative budget covering labour, locations and permits, transport, meals, props, consumables and contingency.
I also resolved deployment routing issues on Replit, added a fallback planner for temporary Gemini failures and displayed the generation source so users can distinguish Gemini output from fallback output.
Accomplishments
I am proud that ScenePilot combines creative AI generation with transparent rule-based validation. It does more than produce an imaginative answer: it checks whether the proposed production can actually fit the available resources.
The final application is responsive, publicly deployed, constraint-aware and capable of producing a plan that filmmakers can print or save for use on set.
What I learned
I learned that agentic applications work best when generative and deterministic components have clearly separated responsibilities. Gemini is effective at interpreting creative intent and designing coverage, while Python is more reliable for arithmetic, validation and enforcing hard constraints.
I also learned how to build an agent with Google ADK, connect a Flask backend to a browser interface, manage API secrets, diagnose routing problems and deploy a complete application through Replit.
What’s next
Future versions could support editable regional production rates, saved projects, collaboration between crew members and more detailed schedule optimisation. ScenePilot could also integrate location, weather or supplier information while continuing to keep final production decisions transparent and reviewable.
Built With
- css3
- flask
- google-agent-development-kit
- google-cloud
- google-gemini
- html5
- javascript
- python
Log in or sign up for Devpost to join the conversation.