Inspiration

Every group chat has the same fight: five people, one movie night, nobody agrees. Averaging scores picks something everybody tolerates and nobody loves. We wanted the pick that is fairest to the least-happy person, and we wanted the compromise to be visible.

What it does

Each person lists a few things they like and dislike. Common Ground asks the Qloo Insights API how well each candidate fits each person, then ranks options by group fit and by how the least-happy member does. It names who gives up the most, shows the best alternative for that person, and shows what the pick would be without each member (the price of every compromise). A "Not for me" button re-ranks after a veto. A compare view measures an LLM-only guess against the Qloo-grounded picks, using Qloo data, not a claim of ground truth. Eight categories: movies, TV, books, artists, places, destinations, podcasts, video games.

How we built it

  • Qloo Insights API for entity search and group-fit scoring (taste data, not model guesses).
  • A stdlib Python core: Qloo client with retries, a circuit breaker and a hard cap of 14 Qloo calls per request; group reconciliation; counterfactuals; a rejection learner.
  • AWS Lambda (python3.12) behind a Function URL, reserved concurrency 10, in-memory 15-minute private cache, one audit log line per request with no personal data.
  • Narration and baseline through Amazon Bedrock, with a deterministic template if no model answers.
  • Built by 3Dogs Nexus with a spec-first, test-first process: a locked test suite (12 tests) and independent model review.

Challenges

The live Qloo API wants urn:entity:movie (and similar) for entity types; bare kinds are rejected. Our mocked tests could not see this, the live deploy did. One small fix at the HTTP boundary, found by testing the real service.

Accomplishments

A live public service, open code, and a comparison that is honest about what it measures.

What we learned

Group fairness is a ranking problem, not an averaging problem. Showing the counterfactual makes the trade-off discussable.

What's next

More members, saved groups, and calendar-aware suggestions.

Links

Built With

  • amazon-bedrock
  • aws-lambda
  • python
  • qloo-api
Share this project:

Updates

Submission history