Skip to main content
Toots transforms project ideas into structured, actionable tickets using Google’s Gemini AI. Describe your project, answer a few clarifying questions, and get a complete set of Jira/Linear-style tickets ready for your team.

How it works

The AI-powered ticket generation follows a conversational workflow:
  1. Describe your project — Start with your project name and description
  2. Answer clarifying questions — The AI asks 2-4 targeted questions about goals, stakeholders, timeline, and deliverables
  3. Generate tickets — AI creates detailed tickets with priorities, effort estimates, and dependencies
  4. Refine as needed — Use the project chat to add, remove, or modify tickets
Ticket generation works for any type of project — product launches, marketing campaigns, events, process improvements, HR initiatives, and more.

Starting a new project

When you create a project, the AI automatically begins the clarifying interview:
Project name: "Mobile app onboarding redesign"
Description: "Improve first-time user experience and increase activation rate"
The AI analyzes your project type and asks relevant questions:
  • What are your success criteria or activation goals?
  • Who’s involved (designers, engineers, product)?
  • What are the key user pain points you’re addressing?
  • What’s your target timeline for launch?
You can answer questions conversationally or skip directly to ticket generation.

Ticket structure

Each generated ticket includes: Core fields:
  • Title — Clear, action-oriented
  • Type — Story, Task, Epic, Milestone, or Deliverable
  • Priority — P0 (critical), P1 (high), P2 (medium), P3 (low)
  • Description — What needs to be done and why
Planning fields:
  • Acceptance criteria — 2-3 items that define done
  • Estimated effort — XS, S, M, L, or XL
  • Dependencies — IDs of tickets that must complete first
  • Labels — Relevant tags for filtering and organization

Example generated ticket

{
  "id": "ticket-1",
  "title": "Conduct user research on current onboarding flow",
  "type": "Task",
  "priority": "P1",
  "description": "Interview 10-15 users who recently signed up to identify friction points in the current onboarding experience. Document pain points and opportunities.",
  "acceptanceCriteria": [
    "Completed interviews with at least 10 users",
    "Documented key themes and pain points",
    "Shared findings with product and design team"
  ],
  "estimatedEffort": "M",
  "dependencies": [],
  "labels": ["research", "onboarding", "discovery"]
}

Smart ticket ordering

The AI generates tickets in logical order based on project type:
  1. Planning and discovery — Research, requirements, stakeholder alignment
  2. Core work streams — Design, development, content creation
  3. Key milestones — Launch readiness, testing, reviews
  4. Launch and handoff — Deployment, documentation, training
  5. Follow-up — Monitoring, iteration, retrospectives
Tickets include dependencies that reflect real-world workflows — for example, “Design mockups” must complete before “Implement UI components”.

AI tools under the hood

The ticket generation system uses four AI tools that power the chat interface:

setClarifyingQuestions

Displays an interactive question card in the UI:
setClarifyingQuestions: {
  description: "Ask 2-4 clarifying questions with optional multiple-choice options",
  inputSchema: z.object({
    questions: z.array(clarifyingQuestionSchema)
  })
}
Each question includes:
  • id — Unique identifier (e.g., “q1”, “q2”)
  • text — The question to ask
  • options — Optional array of multiple-choice answers

generateTickets

Creates the full set of tickets:
generateTickets: {
  description: "Generate Jira/Linear-style tickets for a work project",
  inputSchema: z.object({
    projectDescription: z.string().describe(
      "Project description: goals, stakeholders, deliverables, timeline, and context"
    )
  })
}
The tool uses Gemini 2.5 Flash with structured output to ensure consistent ticket format. All generated tickets are saved to PostgreSQL and appear immediately on your Kanban board.

listTickets

Retrieves current tickets when the user references them by name:
listTickets: {
  description: "List current tickets to find IDs by title",
  inputSchema: z.object({})
}
Used before updating or removing tickets — for example, when you say “remove the onboarding ticket”, the AI first lists tickets to find the matching ID.

updateTickets and removeTickets

Modify or delete tickets based on your feedback:
updateTickets: {
  description: "Update one or more tickets",
  inputSchema: z.object({
    updates: z.array(ticketUpdateSchema)
  })
}

removeTickets: {
  description: "Remove one or more tickets by ID",
  inputSchema: z.object({
    ticketIds: z.array(z.string())
  })
}
Ticket deletions are permanent. Make sure you want to remove a ticket before confirming.

Skipping the interview

If you already have a clear project scope, skip directly to ticket generation:
  • Click “Skip to ticket generation” in the chat interface
  • Type “skip”, “proceed”, or “generate tickets now”
  • The AI will generate tickets based on your initial project description
You can always refine tickets afterward using the project chat.

Best practices

The more detail you include upfront, the better your tickets will be. Mention goals, stakeholders, timeline, and key deliverables in your initial description.
The AI tailors tickets based on your answers. Be specific about success metrics, constraints, and who’s involved.
Generated tickets are a starting point. Use the project chat to adjust priorities, split large tasks, or add missing tickets.
After generation, customize labels, effort estimates, and ticket types to match your team’s conventions.

Powered by Gemini

Ticket generation uses Google’s Gemini 2.5 Flash model with structured output:
  • Fast response times (typically 2-5 seconds)
  • Consistent JSON schema for all tickets
  • Context-aware follow-up questions
  • Handles diverse project types (not just software)
The system uses the Vercel AI SDK with oRPC for type-safe streaming and tool calls.

Next steps

Kanban board

Organize and track your generated tickets

Project chat

Refine tickets with conversational AI

Build docs developers (and LLMs) love