Continuity — Production Memory for the Set

Film productions do not fail because someone forgot a line of code. They fail because nobody can remember what the coat looked like in scene 12 when scene 18 is shooting three weeks later.

Continuity is a Gemini agent that treats ClickHouse as long-term production memory. The agent does not guess. It queries live tables for shots, assets, continuity notes, schedule, and cost events, then recommends what the 1st AD or script supervisor should do next.

Inspiration

Script supervisors still carry that memory in binders, Slack threads, and people's heads. One mismatched trench-coat scuff or a hero watch stopped at 10:17 against dialogue that says "just after midnight" is a pickup day and a budget hit. We wanted an agent that could hold the whole production in one analytical store and reason over it.

What we built

A working agent for a fictional feature, Neon Harbor:

  • Gemini + Google ADK for multi-step reasoning
  • Official ClickHouse MCP server (mcp-clickhouse) at runtime — not a README mention
  • ClickHouse Cloud tables: productions, shots, assets, continuity_notes, schedule_events, cost_events, agent_actions
  • Streamlit UI so judges can ask questions live

The agent can surface open critical notes, explain scene 12 vs scene 18 wardrobe/timeline breaks, break down VFX spend, and recommend a fix before wrap.

How it works

  1. Production state lives in ClickHouse Cloud (production_memory).
  2. The agent starts the official mcp-clickhouse server and calls list_databases / list_tables / run_query.
  3. Gemini reads the result set and returns an actionable brief.
  4. If the agent process cannot start on the host, the UI still queries ClickHouse live so the demo never goes dark.

What we learned

  • Streamlit Cloud health checks port 8501. Pinning 8080 in .streamlit/config.toml kills the app before it boots.
  • Launching MCP with uv fails on Streamlit Cloud. python -m mcp_clickhouse.main is the portable path.
  • Secrets must live in Streamlit Cloud Secrets / .streamlit/secrets.toml, never in the public repo.

Challenges

Getting ClickHouse Cloud provisioned, seeded, and reachable from a hosted Streamlit process in a few hours. The first Cloud deploy died on healthz because Uvicorn bound 8080. After we removed the port pin and wired secrets in the Cloud UI, the hosted demo came up.

Try it

Ask: "Give me a full status of Neon Harbor. Any open critical issues?"

You should hear about the coat scuff, the 10:17 watch, and VFX spend — those rows are in ClickHouse, not hallucinated.

Built With

Share this project:

Updates

Submission history