This is a submission for the Algolia Agent Studio Challenge: Consumer-Facing Non-Conversational Experiences
Beyond the Chatbot
Not every intelligent experience needs to be a conversation.
When you're building a PC, you don't want to chat about compatibility—you want the system to just know that your AMD motherboard won't work with an Intel CPU. When you're creating a fashion look, you don't want to ask "does this match?"—you want suggestions that already complement your choices.
The Adventurer's Codex applies this philosophy to Dungeons & Dragons. While the Oracle module offers conversational discovery, three other modules demonstrate how contextual data retrieval can proactively assist users within existing workflows—no dialogue required.
The Three Non-Conversational Experiences
1. The Forge: Guided Character Building with Smart Compatibility
The Problem: Building a D&D character requires making interdependent choices. Your race should complement your class. Your subclass should fit your playstyle. But traditional builders just show you lists—they don't tell you what works well together.
The Solution: The Forge is a step-by-step wizard that uses Algolia's filtering to proactively surface compatible options at each stage.
2. DM Mode: Contextual Encounter Suggestions
The Problem: Dungeon Masters improvise constantly. A player goes off-script, and suddenly you need a monster. You're writing a scene description and realize you need a trap. Stopping to search breaks creative flow.
My Solution: DM Mode watches what you're writing and proactively suggests relevant encounters—no explicit query needed.
How It Works
The DM has a split-pane interface: text editor on the left, contextual suggestions on the right.
Context-Aware Filtering
The key is the filter: type:Enemy OR type:Trap. DM Mode doesn't show classes, races, or spells—only threats. The system understands the context of what a DM needs.
When the DM writes "spider webs," they don't have to search for spider monsters. The suggestions panel automatically shows Giant Spiders, Phase Spiders, Ettercaps, and Web Traps.
The Creative Flow
The DM keeps writing. Suggestions update silently in the periphery. When they need an encounter, the perfect option is already waiting. No explicit search. No breaking concentration. No dialogue.
This is intelligence injected into the creative workflow, not replacing it.
3. Party Builder: Proactive Composition Analysis
The Problem: A D&D party needs balance. Without a healer, everyone dies. Without damage, combat takes forever. Without a tank, the squishy wizard gets targeted. But most groups don't realize they have a problem until they're mid-dungeon.
My Solution: Party Builder proactively analyzes group composition and surfaces warnings before the adventure begins.
Try It Yourself
Experience smart, non-conversational assistance:
Build a character. Run an encounter. Assemble a party. See how contextual intelligence enhances every step—without a single chat bubble.
The Technical Pattern
All three experiences share a common technical approach:
1. Observe User Context
// The Forge: Track selected class
const [selectedClass, setSelectedClass] = useState(null);
// DM Mode: Watch text content
const [sceneText, setSceneText] = useState('');
// Party Builder: Monitor party roster
const [party, setParty] = useState([]);
2. Derive Intent from Context
// The Forge: User selected Wizard → they want Wizard subclasses
const subclassFilter = `type:Subclass AND parentClass:${selectedClass}`;
// DM Mode: User is writing a scene → they might need encounters
const encounterFilter = 'type:Enemy OR type:Trap';
// Party Builder: User has 4 characters → analyze their composition
const roleAnalysis = analyzePartyRoles(party);
3. Proactively Retrieve Relevant Data
// The Forge: Fetch compatible races sorted by stat bonus
<Configure
filters="type:Race"
optionalFilters={[`statBonuses:${primaryStat}`]} // Boost matching stats
/>
// DM Mode: Search monsters matching scene keywords
<SearchBox defaultValue={debouncedSceneText} hidden />
// Party Builder: No search needed—analysis is computed from indexed data
const recommendations = getRecommendationsForMissingRoles(roleAnalysis);
Future
I think this could be fun to keep building the codex and the Algolia features, it's been very exciting learning about how the platform works
Top comments (0)