Mari is not one chatbot. It is a pipeline of specialized AI steps, each
with a narrow job, a fixed output shape, and guardrails so the UI always
gets predictable data. The interface walks the user through four screens.
Behind the scenes, three steps use Gemini and one step is pure logic
(no AI).
Think orchestrated workflow, not "the AI figures everything out in one
message." Each agent returns structured JSON the UI can trust. The user
reviews context, then the matrix, then assignments, before the board
appears. AI proposes. The human approves.
The Four Agents
1. Context
Reads the PRD from a Notion link, file upload, or notes and
turns messy input into a structured project summary: goals,
constraints, and team snapshot. The agent is grounded on the
actual document content so it cannot invent requirements that
are not there.
2. Analysis
Takes that summary and produces 8 to 15 tasks scored by effort
and impact. Prioritization logic (quick wins, major projects)
is enforced in code after the model responds, not left to the
model to guess.
3. Assignment
Maps each task to an available team member by role, with a match
percentage and a plain-language reason. Availability rules
(for example, David on PTO) are enforced in code before anything
reaches the UI.
4. Kanban
Deterministic only. No AI. It turns the assignment plan into a
board with every card in To Do. In Progress, Review, and Done stay
empty. Sprint has not started yet, and the board reflects that.
Why This Matters for Design
Specialization over one mega-prompt.
Each step has a small scope, which means clearer screens and
easier debugging when something goes wrong.
Structured outputs.
Zod schemas act as a contract between the AI and the UI
components. The matrix, table, and Kanban always get the fields
they expect.
Human-in-the-loop.
The user reviews context, matrix, and assignments before the
board appears. AI proposes. The user approves.
Guardrails outside the model.
Availability, quadrant math, and board state are code rules,
not model decisions. Behavior stays consistent even when the
model drifts.
Three Gemini calls. One logic step. React and Zustand on the frontend,
Hono API on Vercel, Vercel AI SDK with schema-constrained outputs.