Inspiration

Growing up, I loved Ace Attorney: grilling suspects, catching contradictions, and chasing truth. But classic dialogue trees (a GameBoy-era constraint) limit freedom. Noir AI is my attempt at the mystery game we always wanted: a detective courtroom drama where you can ask anything, while the case stays fair, coherent, and solvable. The twist: I don’t know how to code. Gemini 3 made it possible for me to build my childhood dream with essentially zero technical background.

What it does

Noir AI is an “infinite cross-examination” mystery game. Each case has 5 suspects and a structured case bible (facts, timeline, relationships, evidence). You interrogate suspects freely via text or voice. Gemini 3 roleplays each character in real time, bounded by what they should know. You uncover contradictions, unlock leads/evidence, and identify the culprit. A hint system nudges high-signal next steps (e.g., “Ask Suspect B about the 9:15 receipt.”).

How we built it

Gemini-driven roleplay with persona + knowledge boundaries. A game-master state tracker for discoveries, evidence, and contradictions. A hint agent that reads transcript + case file to suggest actions (not spoilers). Dev mode self-play to test cases end-to-end and audit logs. Gemini-based STT/TTS for voice interrogation.

Challenges we ran into

Stopping hallucinated “new facts,” enforcing who-knows-what, keeping it game-like (not chat), designing non-spoiler hints, and validating cases under open-ended questioning.

Accomplishments that we're proud of

Unlimited interrogation without brittle trees, a working multi-agent stack, a scalable case loop (generate → self-test → audit → iterate), and immersive voice-driven questioning.

What we learned

Orchestration (state, constraints, verification) makes freedom playable. Hints work best as concrete actions. Self-play finds edge cases fast.

What's next for Noir AI

A multimodal interactive crime scene sandbox built with Genie 3, a “Case Factory” pipeline with validation + difficulty scoring, UGC case creation with guardrails, and streamer-friendly recaps/contradiction highlights.

Built With

Share this project:

Updates