Inspiration
Over 20 years ago, I made a mildly successful indie movie. It got some genuine popularity in a very niche Italian subculture, and I joined a few indie film festivals. That gave me firsthand exposure to just how extractive some of these festivals can be.
Fast-forward to this hackathon: I started testing the Parallel SDK and was honestly blown away by how good it is at factual verification and extracting verbatim evidence. That sparked the idea. I decided to build Screened as an agent mostly because I imagine it can load multiple tools in future, and solve other headaches filmmakers have to deal with all in the same interface. I have also built MCP for it so you can control it from your usual Gemini or Antigravity chat.
What It Does
- Conversational Research Desk: You give it a festival name, a link, or upload an invitation email. It extracts the claims and investigates them in seconds.
- Fact-Checking Against Real Data: Dispatches agents to check official company registers (like UK Companies House), physical cinema leases, and community feedback. I use parallel search, task and extraction to get loads of data that is tamper-proof and always trackable to a source.
- Spotting Contradictions: Catches discrepancies side-by-side, like an event promising "screenings in iconic venues" when official filings show an unlisted mailbox. Also launch more advanced audits.
- 4 Simple Views: Toggle between a 10-second verdict, a visual D2 graph of connections between companies, key people and Jury, full evidence with exact quotes, or raw data for your agent.
- Model Context Protocol (MCP) & WebMCP: In addition to the built-in Agent tab (and experimental in-browser WebMCP support), Screened exposes an official MCP server. Power users and external agents (Gemini, Antigravity) can connect directly to bypass pre-interpreted dossiers and run custom audit logic against the raw, verbatim data extracted by the Parallel SDK. (Type
/mcpin the Screened chat for connection details).
How I Built It
- Google Agent Development Kit (ADK): Used ADK's
LlmAgent,SequentialAgent, andParallelAgentto run research tasks in a reliable, predictable order. - Gemini 2.5 (Vertex AI): Gemini 2.5 Pro handles conversational tool calling and contradiction checks; Gemini 2.5 Flash handles fast entity lookups.
- Parallel Search API: The factual backbone. Gemini is strictly prohibited from guessing facts—it only reasons over what Parallel finds and quotes verbatim.
- Backend & Cloud: FastAPI with Server-Sent Events (SSE) hosted on Google Cloud Run, backed by Cloud Firestore for logs and Cloud Tasks for queueing.
- Frontend: React 19, TypeScript, Tailwind CSS, and
@xyflow/reactfor the interactive entity graph.
Challenges & What I Learned
- Zero Tolerance for Hallucinations: In due diligence, a made-up claim could unfairly hurt an honest festival or let a scam pass through. I separated reasoning from evidence: every claim must have a verbatim quote extracted by the Parallel API, or it gets thrown out.
- Keeping Multi-Agent Systems in Line: Google ADK made state management and agent handoffs much more predictable than stitching together loose LLM prompt chains.
What's Next
My goal is to turn Screened into a more complete product. Next up:
- Tri-Agent Consensus Architecture: Dispatch three independent agents in parallel to cross-verify findings, requiring a 2-of-3 majority consensus before any venue or fee contradiction is formally flagged as a risk.
- Better connecting Parallel’s Monitor API so filmmakers can set alerts for when festivals change their fees, venues, or terms.
- Turning the Opportunity Scout for real customers from a chat-based fake door test into a full grant and festival deadline tracker.
- Find a way to pay for the servers so they keep running while I polish the product.
Built With
- fastapi
- gemini-2.5-flash
- gemini-2.5-pro
- google-adk
- google-cloud-firestore
- google-cloud-run
- google-cloud-secret-manager
- google-cloud-tasks
- lucide-react
- opentelemetry
- parallel-search-api
- pydantic
- pytest
- python
- react-19
- server-sent-events
- sha-256
- tailwind-css
- typescript
- vertex-ai
- vite
- vitest
- web-audio-api
- xyflow-react
Log in or sign up for Devpost to join the conversation.