Inspiration

One film falls through. Two nights are already agreed. What survives?

A small adult film club has several interests to accommodate, a runtime limit and decisions its organiser has already made. When a film becomes unavailable, finding a replacement means preserving those agreements while understanding whose tastes lose support.

ReelBalance focuses on that moment: help the organiser keep good decisions, inspect the trade-offs and approve a repair.

What it does

ReelBalance builds and repairs two- or three-night programmes from a vetted pool of 20 films. Three declared music interests provide the taste references. Qloo ranks the same film pool independently for each reference, giving the organiser inspectable evidence for a choice.

The organiser sets a per-film runtime limit, reviews a draft and approves it. If a film becomes unavailable, they can lock the surviving nights and ask Luna for a repair. The planner preserves locked films in their approved positions, excludes the cancelled title and checks the current limit. When full taste support is unavailable, the interface shows the shortfall. A separate runtime option can be proposed where it helps; changing the limit requires explicit approval.

Every proposed replacement awaits approval. A change receipt and downloadable HTML programme sheet preserve the approved night order, original ranks, runtime notes and source caveats.

How we built it

The application uses JavaScript and Node.js, with Qloo Taste AI Insights accessed through the official Qloo harness. The organiser confirms canonical artist matches before explicitly collecting one movie ranking per artist against the same fixed 20-film pool. Completed responses are cached privately on the server.

An explicit support policy asks whether each music reference has at least one selected film in its original Qloo top five. Original ranks survive filtering, missing ranks stay unknown, and affinity magnitudes are never compared across requests. This policy measures support in the ranking evidence; it does not predict audience enjoyment.

A deterministic solver enforces runtime, exclusions and locked night positions. Repairs first maximise known reference support, then minimise replacements, with deterministic tie-breaking. GPT-6 Luna uses a bounded OpenAI Responses tool loop to inspect the brief, invoke planning tools and explain proposals. Planning, repair and export reuse the completed Qloo evidence without further Qloo requests.

The app offers a genuine saved example, live Luna interactions and an explicitly labelled recorded walkthrough. Anonymous visitors can choose their own artists, explicitly collect Qloo rankings, plan, repair, approve and export through a signed browser session, without a login. Optional judge sign-in adds reserved provider capacity; its popup explains that all features are already public. Owner administration and provider credentials remain private. The full public workflow and reserved judge access passed live checks on 12 October. The public MIT repository includes the complete application and clearly labelled synthetic setup fixtures; genuine Qloo responses, saved model replies and credentials remain private.

Challenges we ran into

The difficult part was keeping the evidence, proposal and approved programme consistent. Removing a film must preserve the original Qloo ranks and any locked night positions. A useful runtime alternative must remain pending until the organiser accepts it. The planner, approval flow and exported sheet all preserve those distinctions.

Provider availability also needs an honest product state. Explicit collection actions, bounded model calls and persistent request guards keep usage controlled. Failed live requests remain visible, while manual planning can continue with completed evidence.

Accomplishments we're proud of

The hosted live-call session on 11 October 2026 completed three fresh Qloo movie rankings and two live Luna interactions, using four OpenAI requests. It used no saved Luna replay.

Luna first proposed Moonrise Kingdom, Whiplash and Frances Ha. After approval, Nights 1 and 3 were locked and Whiplash was marked unavailable for the demo scenario. The repair replaced it with Short Term 12, whose original rank for the Anoushka Shankar reference was five. Both locked nights stayed in place, the 110-minute per-film limit stayed unchanged, and all three references regained original top-five support. The organiser explicitly approved the repair and downloaded its programme sheet.

The 11 October interface revision passed 80 portable tests locally and in Linux under the then-deployed resource caps. Its clean-copy rehearsal verified the source allowlist, manifest and synthetic manual workflow without external API requests. The 12 October judge-access revision passed 102 tests locally and in offline Linux checks under the original 256 MiB cap and 0.5 CPU. Public example and authenticated judge sessions then passed live planning, approvals, preserved locks, repair and export checks. The judge check made one fresh Qloo artist lookup and two live Luna interactions using four OpenAI requests, reusing genuine 11 October rankings without consuming the public model pool. These historical checks are distinct from the final public verification below.

The full public backend subsequently passed 139 offline Linux tests and was deployed healthy, retaining existing private evidence and provider counts. A separate compatibility revision passed 54 tests for reading the updated browser ledger and expanded cache, and the final UI passed 25 offline Linux UI tests under 512 MiB and 0.5 CPU. Desktop and mobile checks verified the prominent judge button and its extra-capacity explanation.

The final public live check collected one fresh Joni Mitchell ranking after a canonical artist search, reused genuine Radiohead and Bill Evans rankings, and completed two Luna interactions for planning and repair. It used two public Qloo requests and six OpenAI attempts, with no provider retries. Explicit approvals kept the 110-minute per-film limit, preserved Nights 1 and 3, replaced Night 2 and produced an HTML export matching the local renderer. Public calls left reserved judge capacity unchanged; a separate live judge explanation used only its reserved pool.

What we learned

Taste evidence becomes useful when an organiser can see how it changes a decision. Original ranks make the replacement inspectable, preserved locks protect prior agreements, and explicit approval keeps a proposal separate from a commitment. Missing evidence and support shortfalls need to stay visible throughout that workflow.

What's next

Collect feedback from film-club organisers and explore accepting their own vetted film pools. Screening rights, actual copy availability and exact film-copy runtimes still need organiser confirmation; enjoyment and attendance have not been measured.

Built With

Share this project:

Updates

Submission history