Inspiration
Screenwriters and indie filmmakers constantly break their creative flow to fact-check details — is this location accurate, did this technology exist in this era, has this story been done before? Every pause to Google something kills momentum. I wanted an agent that could sit inside the writing process and answer those questions instantly, grounded in real search results instead of guesses.
What it does
Script Research Agent takes a scene description or project brief from a writer and returns grounded research: location details, historical or technical accuracy checks, comparable films, and basic licensing considerations. It's built for the moment a writer thinks "wait, is this right?" — answering without forcing them to leave the page.
How we built it
The agent runs on Gemini (gemini-3.6-flash) using native function-calling to decide when it needs external facts, and calls out to Parallel's Search API to pull grounded, current results rather than relying on the model's own knowledge. The core logic lives in two pieces: search_context(), which wraps the Parallel search call, and run_script_research(), the Gemini agent loop that orchestrates the research. It's exposed through a simple Flask endpoint (/agent/research) and hosted on PythonAnywhere.
Challenges we ran into
Google Cloud's full billing setup required a $30 prepayment, so I pivoted to a Google AI Studio API key instead, which was on the hackathon's accepted-SDK list. PythonAnywhere's free tier also blocks outbound calls to most external APIs by default, so api.parallel.ai was silently failing — I had to file an allowlist request with PythonAnywhere support to get outbound access approved before the agent could reach Parallel at all.
Accomplishments that we're proud of
Getting a real, working end-to-end pipeline live: a query hits the Flask endpoint, Gemini decides it needs facts, Parallel returns grounded search results, and Gemini synthesizes a usable answer — all confirmed working on real queries like indie film grant research.
What we learned
Building this reinforced how much agent reliability depends on grounding, not just prompting — letting Gemini decide when to call Parallel's search rather than hardcoding it made the responses far more useful. I also learned to plan around platform restrictions early: both the Google Cloud billing wall and PythonAnywhere's outbound network block cost real time, and checking those constraints upfront next time would save a debugging cycle.
What's next for Script Research Agent
Adding memory across a writing session so the agent can track a project's established facts (character ages, timeline, locations already used) and flag inconsistencies automatically, plus a lighter-weight browser extension so writers can query it without leaving their script editor.
Log in or sign up for Devpost to join the conversation.