Common Ground

Name a favorite work, put what you love about it into short words, and bring everyone's cards to one shared board.

Inspiration

When people introduce themselves through a favorite movie, artist, or book, the conversation often stops at the title. "I like this film" says little about what someone actually enjoys. Common Ground gives each person a focused moment to put that into words before the group talks. It is built for online workshops and runs in a browser tab beside a video call or Miro board.

What it does

  • Small private rooms. A host creates a room for 3–6 people, chooses how the group knows each other, and shares a full participant invitation link. The familiarity setting adjusts the input prompt. No accounts are needed, and each browser keeps its own role.
  • Your words first. Each participant names one favorite movie, artist, or book and adds 1–10 short words about what draws them to it.
  • Compare cards. Green cards show the participant's own words. Get related cards from Qloo searches by title, and the participant chooses the exact match. The app then shows up to five feature tags for that work (rust) and up to six related works from two other domains (blue-gray), each with its category, source work, and Qloo tags.
  • You decide. Participants include words, attach related works, and add their own. Nothing from Qloo reaches the final card unless selected, and a card made only from one's own words is complete.
  • Publish when ready. Work and words stay private—even from the host—until Publish to everyone places the name, work, final words, and attached works on the Shared Card Board. Participants can use Unpublish card and then Edit card again to revise their card while the room is open.
  • Light facilitation. The host can use Start discussion, Highlight speaker, and Close this room while the conversation continues on the call or whiteboard.
  • Bilingual UI. English by default, with a Japanese toggle.

How Qloo contributes

Qloo turns one title into a wider vocabulary: descriptive features of the work and culturally associated works from other domains. Participants get fresh words and references to react to, keep, or ignore.

Feature tags are offered as prompts rather than explanations of why someone likes a work, and a related work's tags describe that work rather than the reason for the match. Missing data is labeled (No feature tags) instead of filled in, and results vary by work. Every Qloo card keeps its source work and original tag. Only the work search text and the chosen Qloo entity ID are sent; nicknames and personal words never leave the room.

How we built it

  • Cloudflare Workers and one SQLite-backed Durable Object holding rooms, sessions, and a single Qloo usage ledger.
  • A vanilla HTML, CSS, and JavaScript front end using native, accessible buttons.
  • Native fetch to the Qloo API: one GET request to a fixed origin, no redirects or retries, a 7.5-second timeout, a 1 MiB response cap, and schema validation, with the API key held as a Worker secret.
  • Cost guards: every outbound call reserves a budget slot before sending, with no retries or refunds, under a 200-call daily cap, a 30-call per-room cap, and a cumulative lifetime ceiling. Hosted session mode caps cumulative calls at 1,000 for up to two hours and switches off on restart or deploy. On the hosted review deployment, an operator-activated, version-bound invited-review grant runs through November 17, 2026, 15:00 JST (06:00 UTC)—covering the judging period ending November 17, 2026, 13:45 JST—under a 2,000-call cumulative ceiling including all historical calls; it persists across normal restarts of the same Worker version and stops without automatic resume on a new or missing version, expiry, explicit stop, unresolved execution, or a failed post-arm ledger row.
  • Access controls: single-use host invitations valid for one hour, bounded review invitations for hosted judging (the existing judge key allows up to 8 rooms in total and has been extended in place without replacement or room-count replenishment through November 17, 2026, 15:00 JST / 06:00 UTC), 256-bit participant invitations (a room code alone opens nothing), salted scrypt host passwords, strict cookies, CSRF and same-origin checks, and rate limits. Rooms expire after two hours, and participants and hosts can delete their data.

Challenges we ran into

  • Keeping Japanese IME composition stable while other participants' updates arrive.
  • Ensuring a late response never lands in another room or overwrites a newer edit.
  • Preserving an invited-review API grant across normal restarts of the same Worker version while still failing closed on version changes, unresolved calls, or budget exhaustion.
  • Reducing Cloudflare read costs from polling and room maintenance.

Accomplishments that we're proud of

  • A complete workshop flow from room creation to the shared board, with or without Qloo.
  • Clear provenance: every Qloo prompt traces back to the exact lookup that produced it.
  • Regression tests covering role boundaries, private drafts, publishing, cache reuse, and API budget enforcement.

What we learned

Putting people's own words ahead of optional cultural prompts keeps the exercise personal, and showing data gaps honestly works better than forcing a common theme.

What's next

  • Running sessions with real workshop groups to see how the shared cards shape conversation.
  • Adding draft recovery across devices and host password reset.
Share this project:

Updates

Submission history