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.

Built With

Share this project:

Updates

Submission history