Inspiration
SceneKeeper started from a problem that seems simple until you think about how films are actually made.
Scenes are often shot out of order. A character can be injured in one scene, holding something in another, wearing something specific, or standing in a particular place. Days later, the production may shoot a scene that is supposed to happen only minutes later in the story.
Someone has to remember all of that.
I started wondering whether AI could help keep track of those details instead of relying only on people going back through scripts and production notes. That became SceneKeeper.
What it does
SceneKeeper is an AI continuity assistant for film productions.
You give it screenplay and production information, and it builds a structured memory of the production. It keeps track of things such as scenes, characters, character states, props and shots.
It can then audit the production and look for details that don't match.
For example, if something about a character is established in one scene but appears differently later when it should still be the same, SceneKeeper can flag it for the production team to review.
It doesn't make the final decision for the filmmaker. Its job is to remember, compare and point out things that might otherwise be missed.
How we built it
SceneKeeper is built in Python with a Streamlit interface.
I used Gemini as the reasoning layer and ClickHouse Cloud to store the production data. SceneKeeper also communicates with ClickHouse through the official mcp-clickhouse server.
The basic flow is:
screenplay → structured production data → ClickHouse → continuity audit → Gemini reasoning → findings
I also spent time making the Gemini side more reliable. The app handles things like temporary service errors, rate limits and quota problems instead of blindly retrying requests.
There are automated tests around those parts of the system as well.
Challenges we ran into
Getting all the pieces to actually work together was probably the hardest part.
One of the first problems was ClickHouse trying to connect to localhost instead of my cloud service. That turned out to be an environment configuration problem, but it took some debugging before the application was actually talking to ClickHouse Cloud.
Gemini limits were another problem. A normal retry system isn't enough because some errors should be retried and others shouldn't. If the daily quota is exhausted, for example, retrying the same request over and over just wastes time.
I ended up adding more careful handling for those situations.
MCP was another learning curve because I didn't want it there just so I could say the project used MCP. I wanted it to have a real purpose in how SceneKeeper accesses production data.
Accomplishments that we're proud of
I'm most proud that SceneKeeper actually became a working system instead of staying as an idea or becoming another chatbot.
The app can work with production data stored in ClickHouse Cloud, communicate through the official MCP server and use Gemini for the reasoning part of a continuity audit.
I also built tests for some of the less exciting things that matter when an application actually has to work: retries, quota errors, service failures and making sure production data stays properly scoped.
Seeing the full application running with Gemini, ClickHouse Cloud and MCP connected was a big milestone.
What we learned
I learned that building the AI part is only one piece of building an AI product.
The model needs the right information, and that information needs somewhere reliable to live. You also have to think about what happens when an API fails, when a quota runs out, or when the model shouldn't be allowed to access something.
I also came away thinking that continuity is a really interesting problem for AI because so much of it comes down to memory and comparison.
AI doesn't need to replace the person responsible for continuity to be useful. Even catching one detail that a person missed can save trouble later.
What's next for SceneKeeper
There is a lot more I want SceneKeeper to remember.
Right now the focus is structured screenplay and production information. Eventually I'd like it to work with more of what a real production creates: continuity photos, costumes, makeup details, locations, revised scripts and more detailed shot information.
I'd also like filmmakers to be able to review a flagged issue, resolve it and keep that decision as part of the production's history.
The bigger idea is simple: as a production grows, SceneKeeper grows with it and remembers what has already happened in the story.
That way, the people making the film don't have to keep every tiny detail in their heads.
Log in or sign up for Devpost to join the conversation.