Inspiration

A group can have a great average recommendation and still leave one person out. Common Ground makes that tradeoff inspectable: a movie-night tool for small groups, and a structured tool that agents can call.

What it does

Each person confirms one to three cultural anchors from real Qloo search. Common Ground queries Qloo separately for each participant and ranks shared films by the weakest per-person reciprocal rank, then coverage and mean rank score. The browser shows each person's actual returned rank. A hard veto triggers a fresh plan without dropping anyone. When bounded retrieval has no shared evidence, it says so instead of inventing a compromise.

Try the live app: https://common-ground-y3pk.onrender.com/ . Select a film anchor for each of the two people, then find a shared film and veto a result. For a reproducible two-person example, select Interstellar (Film / 2014) and Inception (Film / 2010). Results are live and can change. The free server may take roughly a minute to wake after inactivity. No login or API key entry is needed by visitors.

How it is built

Python, FastAPI, the official MCP Python SDK, React and Vite. Qloo's hackathon /search resolves identities and /v2/insights returns independent per-person movie candidates. The browser app and two stdio MCP tools share the same planner. A bounded second page broadens retrieval only when shared evidence is absent. Keys stay server-side; failed live queries never fall back to fictional data. Render hosts the working demo on its free plan.

This is an agentic tool, not a standalone LLM chatbot. A conversational MCP host can call search_cultural_anchors and plan_movie_night; no embedded paid LLM is required. The separate real stdio server has been verified with the official MCP SDK client against live Qloo. An external conversational-host UI session has not been verified.

Challenges and lessons

The live search schema omitted a top-level success flag, so the client was corrected to validate the endpoint's actual results while rejecting explicit failures and malformed identities. Entity type and film year help distinguish similarly named films, artists and albums. Missing recommendation evidence is not proof of dislike, and 61/(60+rank) is a transparent rank score, not an enjoyment probability. Upstream exclusions are also enforced locally.

Verified accomplishments

59 automated tests, successful hosted GitHub CI, real Qloo search, eight full-evidence candidates for a tested two-person example, veto/replanning and both live MCP tools. A deliberately divergent three-person example correctly returned no_common_ground. Local desktop/mobile browser QA passed, and real search/planning/veto flows also passed on the public URL. The MIT source and dated QA notes are public at https://github.com/darshanahirrao/common-ground . No real Qloo response datasets or API credentials are published in the source.

What's next

Test whether groups prefer weakest-first choices to average-first choices. No user-study outcome, traction, revenue or prize win is claimed. Catalog retrieval is bounded; a no-match result does not prove no possible compromise exists. Streaming availability, runtime and suitability are not independently verified. The separate Preview mode uses clearly labelled fictional films and generated artwork, never proof of real Qloo behavior. The MIT license does not relicense Qloo data or third-party movie posters.

AI assistance

Development, testing, visual design and submission drafting used AI assistance. Synthetic preview artwork was generated with native ImageGen. Live film identities, rankings and posters come from Qloo, not an image or language model.

Built With

Share this project:

Updates

Submission history