Inspiration
A group chat can agree on a date and still spend an hour deciding where to go. The loudest preference wins, one friend does all the research, and a long list of recommendations hides who is compromising. Common Ground makes those trade-offs visible.
What it does
Common Ground helps two to four people choose an outing from their explicit interests. It uses real Qloo cultural-affinity signals to compare the same shortlist against each interest profile, then shows a relative-rank matrix and a balanced starting point. The balance rule minimizes the worst rank, then the rank sum, so the reasoning can be inspected. Affinity is a cultural signal, not a prediction of an individual's enjoyment.
A bounded planning agent inspects candidate identities, runs the Qloo comparison, reviews unknown constraints, and offers a suggestion drawn only from inspected places. Groups can exclude options, change direction, choose a plan, and save it in a browser-owned private collection. A clearly labeled fictional Prishtina sample is available separately from live Qloo results.
How we built it
The app uses Next.js, React, TypeScript, shadcn/Radix, Prisma and PostgreSQL, hosted on Vercel. Qloo's official workflow harness connects to the hackathon API. The OpenAI Agents SDK provides read-only tools for inspecting places, comparing group interests, and reviewing constraints. Server validation rejects selected IDs that were not inspected. The Qloo-only comparison also works without a language model.
Guest names stay outside provider and model requests; API keys stay on the server. Model tracing and response storage are disabled. Shared database reservations, per-browser/IP limits, bounded tool calls, and bounded outputs constrain public demo consumption across server instances.
Challenges we ran into
Words such as Coffee can refer to several Qloo tag meanings. Rather than silently choosing one, the interface asks for clarification and keeps unsupported interests unresolved. Location names can identify a state rather than a city, so precise city queries and Qloo's strict locality boundary matter. We also had to use the hackathon host for the event key.
The other challenge was separating evidence from fluent invention. Qloo facts, relative rankings, and the agent's editorial suggestions are visibly distinct. Prices, opening hours, access, quietness, dietary suitability and availability remain unverified. Nothing is booked or purchased.
Accomplishments and what we learned
We shipped a public product with real Qloo calls, inspectable group comparisons, bounded agent tools, and plans that survive save, reload and reopen. Twenty-two automated tests and eight HTTP/database checks covered the release, alongside desktop and mobile browser checks. In one verified run, the agent inspected three Qloo entities and explicitly noted that the descriptions did not establish a jazz offering.
The main lesson: a useful agent should help people reason about incomplete evidence, while making uncertainty easy to see.
What's next
Improve group feedback and explanations, evaluate the balance rule with real groups, and add verified hours or accessibility sources before making claims about practical suitability.
Try it
- Open https://common-ground-agent.vercel.app without signing in.
- Choose Try a real comparison, then Find common ground.
- Inspect the relative-rank matrix; choose Agent · inspect and compare to see Qloo lookups and constraint review.
- Choose Make this the plan, save, refresh, and reopen from Saved plans. Collections are private to each browser.
- Change interests or exclude a place; clarify ambiguous meanings when asked.
Source code: https://github.com/shpetimhaxhiu/common-ground-agent (MIT). The public demo has a finite shared model allowance; Qloo-only comparison does not consume model tokens.
Built With
- next.js
- openai
- postgresql
- qloo
- typescript
Log in or sign up for Devpost to join the conversation.