Tutorial

Build your first map from scratch.

A complete Mainline story map with personas, activities, steps, stories, and a release slice.
What you are building: personas across the top, activities below them, steps under each activity, stories under each step, and a release slice cutting horizontally.
1

Create personas

Think about who uses your product. A persona is a role, not a name, e.g. "Customer", "Support Agent".

Every activity on the map belongs to at least one persona. If you cannot assign a persona to an activity, ask yourself: who benefits from this work? If the answer is nobody, don't build it.

The Personas tab showing two persona cards: Customer and Support Agent.
What you should see: two persona cards on the Personas tab. No activities yet.
2

Lay out activities

Activities are what your personas do. They form the backbone of the map, reading left to right like a user's journey through the product.

For an e-commerce product, a Customer's activities might be: Discover → Browse → Cart → Checkout → Track Order. Keep them broad. You are describing what the user does, not how the system works. Add activities for each persona, then arrange them in the order the user experiences them.

Map view with five activities laid out left to right: Discover, Browse, Cart, Checkout, Track Order. Persona badges visible on each. Steps still empty.
Activities laid out across the top, persona badges on each. Steps not yet added.
3

Break down steps

Each activity breaks down into steps, in the order someone takes them. Under "Checkout" you might have: Enter address, Choose payment, Review order, Confirm.

Steps sit below their parent activity on the map. Don't overthink these. They are organisational, not deliverable. You will not assign people to steps. You assign people to stories.

Same map with steps filled in under each activity: Search products, View category, Enter address, Choose payment, Review order, Confirm, etc.
Steps fill in under each activity.
4

Write stories

Stories are the work. Each story sits under a step and delivers a thin vertical slice of value.

Write from the user's perspective. "Customer can save a shipping address for next time" not "Add address CRUD." If you cannot explain who benefits and why, the story is not ready to write yet.

Keep them small. A story should be something a pair can pick up, finish, deploy, and release without it dragging on. Mainline will flag stories that have been active longer than your team's historical cycle time - but that only works once you have history. For now, aim for stories you can finish in a day or two.

Bugs are stories too. "Customer sees stale price after updating quantity" belongs on the map under the activity where it happens. Tech work is a story framed as the user outcome it enables. Refactoring is not a card - it is how the pair writes code.

Three planned story cards sitting under the Enter address step. All in PLAN state.
Three planned stories under one step. Each story is a thin vertical slice the user can experience.
5

Slice a release (optional)

Release slices cut horizontally across the map. A slice is the smallest set of stories across activities that delivers a coherent, usable increment to the user. You can create slices while building the map or add them later once work is underway.

This is not a sprint - there is no time box. The slice is done when every story in it is released. Start with the thinnest slice that is still useful.

The same map with an MVP Cart release slice cutting horizontally across, separating stories above from below.
A release slice cuts horizontally across the map.
6

Start a story

Pick a story and assign two people. The story becomes active when both are assigned - this is the kick-off moment where both people read the story, agree on what done looks like, and start together.

One person works on one story at a time. No spreading yourself across four cards. The Teamwork view tracks who has paired with whom.

Solo teams and solo kick-off

One-member teams work solo automatically. Every story is solo by default.

For larger teams that prefer to allow one person to start a story alone, solo kick-off can be enabled in Settings.

Close-up of a story card now in PAIR state with two assignees, Bob Park and Carol Diaz. History badge shows 1 deployment.
The story flips to PAIR the moment two people are assigned.
7

Deploy

When the code is in production, mark the story as deployed. This is a technical event - code reached production, but users may not have the change yet.

Optionally, configure a deploy webhook so deploys are recorded automatically from your pipeline.

If you deploy but do not release, the story appears in the Inventory view. It will age there - in flight for the first three business days, aging from four to nine business days, stale after ten. The goal is an empty inventory.

8

Release

When users can see the change, mark the story as released. This is a human decision, not a technical event. Deploy and release are separate actions because they are separate events.

If your team deploys directly to users, mark deploy and then release straight away.

Once a story is released, it is done. Users have the feature. Move on to the next story.

The same story card now in DONE state, grey treatment, no more action links beyond Edit and History.
Once released, the card goes grey. The story is done.

That is the full cycle: personas → activities → steps → stories → slice → start → deploy → release.

Now do it for real. Create a team →

Next: Story Mapping - the full reference for everything on the map.