Inspiration
Choosing a night out can mean balancing two different worlds. A recommendation that suits one person may give the other little to enjoy. Afterglow starts with both people's public cultural favorites and makes their shared options easier to discuss.
What it does
Each person selects cultural favorites, then chooses a city, budget, mood and start time. Afterglow asks Qloo for place recommendations separately for each profile, finds the overlap, and balances the shared results. Its ranking gives extra weight to the less well-served profile.
The live experience returns a three-place discovery shortlist with source explanations. Scores are Afterglow list-rank indices, not Qloo probabilities or relationship-compatibility predictions. The budget applies a restaurant price-tier filter; total costs, hours, availability and travel still need verification. Mood remains a planning note. Nothing is booked or paid for.
A separate, clearly labeled fictional sample supports itinerary editing, budget-preserving swaps, browser saves and text export.
How we built it
The interface uses semantic HTML, responsive CSS and vanilla JavaScript. A Node.js backend runs through Vercel functions and calls the official Qloo harness pinned at 0.1.26.
A shared Redis counter reserves usage before each uncached request. Profile requests run sequentially, so an initial failure stops further spending. Credentials remain on the server, and live failures never silently become fictional recommendations.
MCP servers expose status, search and planning tools over stdio and Streamable HTTP. An external agent host can use these tools to search, plan and replan. Afterglow does not bundle an LLM. Real MCP clients have exercised the protocol in tests; a model-directed external-host live run has not been demonstrated and is not claimed.
Challenges
The main challenges were preserving both profiles' influence, explaining aggregate cultural affinity honestly, and enforcing a shared request budget across hosted instances. We also needed to prevent stale search responses from changing a reopened profile chooser.
Accomplishments
A genuine hosted demonstration using synthetic profiles based on Nina Simone and Nina Hagen in New York City returned four shared candidates and three proposed stops. Exactly two upstream requests were used for that planning check. Automated checks cover planning logic, HTTP behavior, real MCP clients, quota enforcement, harness contracts and browser interactions, alongside syntax and build checks.
The protected judge link was checked in a separate browser session. Without it, the deployment required Vercel login; with it, the application and live-mode form opened. The finite shared usage cap and access expiry are disclosed privately in the testing instructions.
What we learned
Useful recommendations need clear boundaries. Separating Qloo's results from Afterglow's ranking explanations makes the output inspectable without presenting cultural affinity as compatibility or predicted enjoyment.
What's next
Evaluate the experience with pairs, improve mobile accessibility, add venue-detail and travel verification, and demonstrate model-directed external agent workflows. No measured user-satisfaction or time-saving claim is made yet.
Built With
- javascript
- node.js
- qloo
- vercel
Log in or sign up for Devpost to join the conversation.