DEV Community

Mike Demo
Mike Demo

Posted on Edited on AI-assisted

QueerCade (Part 1): Ship an Agent That Queries Real Content

Sanity Challenge Path One Submission

QueerCade (Part 1): Ship an Agent That Queries Real Content

This is a submission for the Sanity Challenge, Path One: Ship an Agent That Queries Real Content

What I built

QueerCade is an arcade featuring LGBTQ+ video games — titles that have
been carefully selected on the basis of their queer characters, stories,
themes, and creators. For Path One I created the QueerCade Discovery
Guide, which is an AI agent designed to assist people in finding

games, characters, developers, studios, and aspects of queer gaming
history, and it only responds based on the current Sanity dataset. It
never makes up a game, a developer, a character, or a fact; if something
is not in the dataset it states this and instead provides the nearest
actual alternative.

The dataset

One Sanity project (tzh8tziu, production dataset) holds the entire
corpus:

Content type Documents Description
game 746 Titles, IGDB metadata, editorial status, relationships
company 930 Developers, publishers, involved companies
platform 79 Consoles, PC, mobile
genre 22 Taxonomy
gameCollection 4 Curated lists (cozy games, visual novels, …)
importRecord 1,754 Every pipeline operation, tracked
contentPage / siteSettings 2 Editorial pages, global config

Three thousand and five hundred documents, linked together by
references: game.developer refers to the company, game.genres[] refers
to the genre, game.platforms[] refers to the platform, and
gameCollection.games[] refers to the game. The agent does not carry
out keyword searches; instead, it navigates this graph.

How the agent connects

Hitting the wall is something everyone encounters: the Sanity Knowledge
Base has a limit of 150 documents, and this collection has over 3,500.
Therefore, I completely bypassed the Knowledge Base and went straight to the Sanity Context MCP endpoint, enclosing it in a custom
Superhuman GO pack:

  • MCP server: Sanity Context MCP endpoint

  • The pack makes the endpoint available to the agent through a chat
    skill that gives strict instructions: use initial_context to discover
    the schema, schema_explorer to get the details about the fields,
    groq_query to retrieve the documents — and always base your answers
    on what the tools have returned, not on the training data.

The agent serves as a comprehensive discovery guide: it first asks for your name and pronouns, then learns about the platforms you use and your preferences before creating a series of recommendations across the network—from games to developers to related games, then to characters, and finally to your history.

The agent in action

What follows is an actual session: after the user names two games they
loved, watch what happens.

Demo: I loved We Are OFK

>

QueerCade: That helps a lot, Demo! Your best next game is
Goodbye Volcano High — like We Are OFK, it follows young
musicians navigating romance, friendship, and creative ambition. The
protagonist, Fang, uses they/them pronouns.

>

Demo: Also played and loved that.

>

QueerCade: You've already played the two closest matches —
excellent taste. 🌈 My pick for you: Afterlove EP. You play Rama,
a young musician in modern Jakarta navigating grief and relationships
— your choices branch the story. Or Stray Gods, where your choices
literally shape the musical numbers.

There is no result from a keyword search like that. The agent traced the
lineage from representation through theme to developer and then to
character identity
across the relevant documents. After exhausting the
two most similar entries, it moved along a different branch of the graph
rather than repeating the same process. In a previous part of the same
session, it also knew when not to overstate: when asked about a
blockbuster's queer representation, it noted that the dataset did not
specify it instead of making up information.

Why this only works because the content is structured

  • The recommendations do not focus on text similarity but instead follow
    references (for example, the developer of a game → the other games
    from that studio → the characters in those games).

  • The agent gives a reason for each selection—shared developers, shared
    themes, and shared representation—since it treats these relationships
    as first-class data.

  • The editorial status (imported → under Review → approved → featured)
    indicates that the agent will always recommend only those games which
    humans have curated.

Links

Demo:

QueerCade — a curated arcade of games

Hand-picked games with LGBTQ+ characters and stories: featured picks, curated collections, and a library you can track.

favicon queercade.mikedemo.dev

Sanity Project Details: Project ID: tzh8tziu

Note: I tried to use the knowledge base, but it had a limit on the number of documents. I contacted Sanity support and Discord support, and unfortunately, using the knowledge base MCP wasn't possible, which is why I connected to the standard dataset MCP instead.

GitHUb Gist Below:

Top comments (1)

Collapse
 
mpmike profile image
Mike Demo •

I did try and get help on the KB limit on the Discord and support: discord.com/channels/1304483263171...