Skip to main content
These blueprints come from Nadia’s online Mafia game, the example product in the Kanaeru episodes: a phone-first, chat-only game for 8 to 15 friends, with private rooms, secret roles, and timed rounds. Watch her Vision, Planning, and Review sessions to see them made. Most examples are from her automated rounds outcome: the game deals roles, runs night and day on a shared clock, and counts votes, so nobody has to sit out as narrator. The screenshots are from her private rooms outcome, as shown in the episodes.
Plan & Review showing a journey's acceptance criteria and a Blueprints row with seven blueprints

A journey in Plan & Review: its acceptance criteria, and the seven blueprints that support them.

Each example has up to three tabs: In Kanaeru is the real editor, Rendered is a simplified view you can read here, and Source is exactly what Kana writes. You can export the source of any blueprint.

Intent Spec

Kana writes the intent spec first. Every other blueprint has to serve it.
Intent: The game runs the night and day rounds itself, on a clock every player can see, so nobody has to sit out and narrate.Why: Somebody currently has to leave the game to deal roles, wake people up and count votes. That person never plays. Every part of this outcome exists so that job disappears rather than rotates.
  • Non-negotiable: a player never receives another player’s role; the server owns the clock; a client only displays it
  • Acceptable tradeoffs: a player who is offline when a phase closes loses that phase’s action; the round history is kept for the game only, not archived
Escalate
  • When two players report seeing different phases of the same game: Freeze the round and raise it with the owner — a split clock silently invalidates every vote after it
  • When a role appears in a response sent to a player who does not own it: Stop the game and rotate the deal — the game is unwinnable and nobody can tell

UX Mockup

A live, clickable prototype of the real route, not a picture. Nadia’s private rooms mockup has 21 screens: the happy path, failures, recovery, privacy, and a full room. Each change is marked, so she can review it in place.
UX mockup editor listing 21 screens beside a live Mafia room prototype

The screen list on the left, the live prototype on the right. Review 38 counts the changes left to review.

Prototype screen: new invitation card, three seats retained

After Nadia decides how invitation rotation works, Kana updates the prototype to show it.

User Journey

The steps a person takes, grouped into phases, with who does each step and how it feels. Higher is better.

Sequence Diagram

How the parts of the system talk to each other, in order. This one shows a night action arriving before or after the deadline.

State Machine

Every state a game can be in, and what moves it from one to the next.

Data Model

The tables, their columns, and the rules the database enforces. Kana writes it in DBML. Notice the unique indexes: one action and one vote per seat per phase is a database rule, not application code.

Domain Model

The business concepts, which ones form a consistent unit (an aggregate), and the rules they keep. Kana writes it in D2, grouped into core, supporting, and generic tiers. @change marks what this outcome adds or modifies.
Domain model canvas with Session, Room, and Invite entities marked ADDED and a review panel

Reviewing a domain model change by change: Room is new, with three attributes. Approve or Flag each one.

Architecture

The components, what each one is responsible for, and how data flows between them. Kana writes it in LikeC4, which has component, deployment, integration, and data views.

API Contract

The endpoints the outcome adds or changes, as an OpenAPI document. The smallest surface a round needs. Note what is absent: there is no endpoint that returns anyone else’s role.

Tech Stack

Each decision names the choice, why it was made, what else was considered, and the tradeoff. In Kanaeru, each card shows the technology’s logo.

Language: TypeScript

One set of phase and role types shared by the server and the screen, so one side cannot drift from the other. Instead of: Python, Go.

Framework: Next.js

The join screen and the round screen come off one runtime, and server-sent events need no extra service. Instead of: Remix, SvelteKit. Tradeoff: Past a few hundred concurrent players this needs a dedicated socket layer.

Database: PostgreSQL (changed)

One action per seat per phase is a unique index, not application code. Instead of: MySQL, DynamoDB.

Hosting: Vercel

Small deploy unit, and straightforward delivery for a link people open on a phone. Instead of: Fly.io, Render.

Auth: Seat tokens, no accounts (new)

A display name is visible to everyone on the call, so it cannot prove a seat. A one-time token issued at join can. Instead of: Auth0, Clerk.

Monitoring: Structured logs + error tracking

Inherited from the workspace default rather than chosen again for this outcome.

Quality Profile

The quality attributes the work must meet: where the product is now, and the target. Kanaeru draws it as a radar chart.