---
title: User stories
description: Why shoppers come to Leitagu, and what they must be able to do in the chat and the catalogue, as numbered stories with what "done" means and how far each one is built.
section: product
order: 4
updated: 2026-10-20
---

# User stories

This page says why someone opens Leitagu at all, and what they must be able to do once they are there, written as stories that can be checked. Each story has an ID (C1–C16 for the chat, K1–K6 for the catalogue), what has to be true for it to be done, and how far it is built today. Plans, pull requests and browser tests can refer to the IDs. The people are the personas from [Who Leitagu is for](users.md).

This is a working draft: the stories will be refined, and their status updated as features are built. What is not built yet is also listed in [What is not built yet](how-it-works.md#what-is-not-built-yet).

## Why people come to Leitagu

People rarely shop for furniture for fun. Something happens first. These are the moments we expect to bring people to Leitagu, what they would do without it, and where in Leitagu they would start.

| The moment | What they do today | Where they start | Who |
| --- | --- | --- | --- |
| **"It has to go with what I have."** A piece broke, or a room is being redone. | Open ten store websites and guess wood tones from photos. | Chat, with a saved room or a photo | Toomas, the redecorator |
| **"We just moved."** Keys on Saturday, several empty rooms, a budget. | Drive to the big stores and buy whatever is in stock. | Chat, with a room per space | Kadri, the new-flat mover |
| **"It has to fit this spot."** An alcove, or the wall between the door and the window. | Measure, filter each site by width if it can, forget the windowsill. | Chat, with a room | Everyone |
| **"I need it this week, in Tartu."** | Phone the stores, or drive there and hope. | Chat or catalogue, with "take it home today" | Everyone |
| **"Something's missing in this room."** | Browse Pinterest, then hunt for something similar for sale locally. | Chat: "What should I add?" | Anna, Kadri |
| **"I saw this somewhere. Is there something like it here, in stock, for less?"** | Search by image, which doesn't cover Estonian stores. | Chat, with a photo | Everyone |
| **"Just looking."** What sofas are there under €800, or what a particular store sells. | Each store's own website. | Catalogue, often from a search engine | Anna, Liis and Marko |
| **"I'm watching a price."** | Bookmark it and check back. | Favourites | Anna, the sale hunter |

**Chat or catalogue?** The chat is worth it when a need has many soft conditions, refers to things the person already owns, or comes with dislikes and "it depends". The catalogue is worth it for open browsing, comparing and sorting by price. Each one links to the other, so people can switch.

How people first hear of Leitagu (search engines finding catalogue pages, stores linking to their own page, word of mouth) belongs to the go-to-market plan, not to this page.

## Chat stories

Every story reads "As a shopper, I can …". Unless a story says otherwise, it works in Estonian and in English.

### C1. Say what I want in my own words

> As a shopper, I can describe what I want in one sentence, such as "hele tammest puhvet alla 400 €, max 160 cm", so that I don't have to learn any filters.

- **Done when:** the category, size, budget, look and timing are understood; the chat shows what it assumed ("Assumed: no size limit"); and each setting appears as a chip I can change.
- **Today:** built. Both the keyword parser and the Claude connection read these. See [Typing in your own words](how-it-works.md#typing-in-your-own-words).

### C2. Rule things out

> As a shopper, I can say what I don't want, such as "I don't like glass", "no white", "anything but IKEA" or "no flat-pack", so that I never see those again in this chat.

- **Done when:** excluded products never appear; the exclusion shows as a chip I can remove; it lasts for the rest of the chat; and "actually glass is fine" undoes it.
- **Today:** partly built. Stores can be excluded ("ilma JYSKita"). Excluding materials, colours and other attributes is being built.

### C3. Say what is acceptable

> As a shopper, I can say what I'm fine with, such as "wood and black metal are fine", "oak or walnut" or "brass handles or none", so that I only see those.

- **Done when:** only products within the allowed values appear, and combinations hold together: "black metal" means metal that is black, not anything black.
- **Today:** planned and being built. Today these attributes only rank results; they don't limit them.

### C4. Adjust relative to what I see

> As a shopper, I can say "a bit lighter", "not so dark", "cheaper" or "a little smaller", so that I can steer without starting again.

- **Done when:** the change is made from the current reference or results, and everything else stays as it was.
- **Today:** partly built. "Cheaper" lowers the price limit by about 20%, and "darker" or "lighter" moves the tone one step. "Smaller", "bigger" and "not so dark" are not understood yet.

### C5. Point at what I own

> As a shopper, I can say "like my dining table" (a piece in my saved room) or send a photo, so that results match what I already have.

- **Done when:** results match tone, undertone, finish, style, legs and handles, and each result says why in one line.
- **Today:** built, using attributes and one average colour per piece. Comparing images is planned. See [How matching works](how-it-works.md#how-matching-works).

### C6. Have it fit

> As a shopper, I can say "between the door and the window" or "it has to fit my living room", so that I only see pieces that fit.

- **Done when:** the chat uses the room's free wall space, windowsill heights and door clearance, and says so when it can't know.
- **Today:** partly built. With a room linked, the size question offers "Fits your room: up to N cm" from the longest free stretch of wall. Naming a particular spot isn't understood, and radiators and sockets aren't modelled. See [Rooms](how-it-works.md#rooms).

### C7. Get it in time

> As a shopper, I can say "I need it on Saturday in Tartu", so that I only see what I can actually get by then.

- **Done when:** availability works as a filter, not a hint, and every card shows stock, display and delivery honestly.
- **Today:** built: take it home today, see it in a store first, or delivered within two weeks, per city. See [Availability](how-it-works.md#availability).

### C8. Be flexible about limits

> As a shopper, I can say "under 400, but I could go to 450", or "it doesn't have to be cheap", so that the limits work the way I mean them.

- **Done when:** a stated stretch is honoured; dropping a limit removes it; and pieces just over a limit appear as labelled near misses that say how much they are over.
- **Today:** partly built. Near misses up to 12% over a size or price limit are shown and labelled. Saying "no limit" removes the limit the chat is currently asking about. A stated stretch ("could go to 450") isn't understood yet.

### C9. Change my mind

> As a shopper, I can say "make it walnut", "forget the budget" or "start over" in the middle of a chat, so that I don't have to start a new one.

- **Done when:** only the setting I named changes, everything else stays, and "start over" clears the search but keeps the chat and its room.
- **Today:** partly built. With the Claude connection, corrections such as "it's walnut, not oak" work, and "Back to the original reference" undoes "More like this". The keyword parser doesn't handle corrections, and "start over" isn't understood.

### C10. Ask about the results

> As a shopper, I can ask "which of these are solid wood?", "is the second one in stock in Tallinn?" or "what's the difference between these two?", so that I can decide without opening every product.

- **Done when:** answers come only from the product data, and anything unknown is called unknown.
- **Today:** planned. With the Claude connection, the chat answers short general questions about furniture and Leitagu, but not about the results on screen.

### C11. Know why nothing matches

> As a shopper, when nothing matches, I am told which setting is in the way and the smallest change that would help, such as "3 options if you allow 10 cm wider, or drop 'no veneer'".

- **Done when:** the setting that rules most products out is named, and changing it takes one tap.
- **Today:** partly built. The chat says "Nothing matches these filters. Try removing or widening one", and the chips let me remove a filter, but it doesn't say which one is in the way.

### C12. Find pieces that go together

> As a shopper, I can ask for "a sofa and a coffee table that go together", or ask what else goes with a piece, so that the room looks coherent.

- **Done when:** the suggestions share the look and fit the room together.
- **Today:** partly built. "What should I add?" suggests other kinds of furniture that match the room's look and free space. Asking for two pieces at once, and "goes with it but isn't the same" within one category, are planned.

### C13. Skip the questions

> As a shopper, I can say "just show me", so that I get results without answering anything.

- **Done when:** results appear at once, and the chat lists what it assumed.
- **Today:** built ("Show results now").

### C14. Keep and come back

> As a shopper, I can favourite a product, keep it in a room, and come back days later to find everything as I left it, so that a slow decision doesn't get lost.

- **Done when:** chats, rooms and favourites are saved, and favourites show any price change since I saved them.
- **Today:** built, for shoppers with an account. Price-drop alerts are planned.

### C15. Get to the store

> As a shopper, I can open the product on the store's own site, or see where it's on display, so that I can buy it or look at it in person.

- **Done when:** "Open in store" goes to the product page, and display cities are on the card.
- **Today:** built. Leitagu sends people to the store and never sells anything itself. See [Going to the store](how-it-works.md#going-to-the-store).

### C16. Be told the limits

> As a shopper, I am told honestly what Leitagu can't do: it doesn't sell anything, it doesn't know when stock was last checked, and its products are example data until stores connect.

- **Done when:** questions such as "can I buy it here?" get a straight answer, and example data and unknown facts are always labelled.
- **Today:** partly built. Example data, the colour caveat and unknown facts are labelled everywhere. Answering such questions depends on the Claude connection. "Last checked" times are planned.

## Catalogue stories

Every story reads "As a shopper, I can …". The catalogue needs no account. See [The catalogue](how-it-works.md#the-catalogue).

### K1. Browse a category or a store

> As a shopper, I can browse all sofas, or everything one store sells.

- **Today:** built: category chips and a page per store.

### K2. Filter strictly, with several values

> As a shopper, I can filter by any attribute, with several values at once (oak or ash, light or medium), and trust that everything shown passes.

- **Today:** partly built. Category, store (several), price, largest size, tone, wood, material, upholstery, style, availability and sale are filters, with one value each for the look filters. More filters (finish, undertone, legs, handles, door type, flat-pack, child-safe), several values and minimum sizes are being built.

### K3. Search by name or brand

> As a shopper, I can type a name or brand, such as "Lumi" or "puhvetkapp", and find it.

- **Today:** planned and being built.

### K4. Sort plainly

> As a shopper, I can sort by price, newest or soonest available, and know that nothing paid changes the order.

- **Today:** built.

### K5. Share a view

> As a shopper, I can send someone a link to exactly what I'm looking at.

- **Today:** built: every filter is kept in the page address.

### K6. Move to the chat from a product

> As a shopper, I can start from a product in the catalogue and say "something like this, but…", or try it in my room.

- **Today:** built: "More like this" and "Try in my room" start a chat from the product, after logging in. From a chat, "See all in the catalogue" opens the catalogue with the chat's strict filters. See [Between the chat and the catalogue](how-it-works.md#between-the-chat-and-the-catalogue).

## Open questions

These are for working on the stories later:

- **What matters for the beta?** Which stories must work well before stores and shoppers are invited, and which can wait.
- **How do we know a story works?** A measure for each, for example how often C2 exclusions are undone straight away, or how often a "nothing matches" message (C11) leads to results.
- **Which stories are missing?** For example couples deciding together (shared lists are planned), shoppers without an account using the chat, and the store side: what a store's staff want from the partner app.

## Related pages

- [Who Leitagu is for](users.md): the personas behind the stories.
- [Problems Leitagu solves](problems.md): the problems the stories come from.
- [How Leitagu works](how-it-works.md): how the built stories work today.
- [Product principles and non-goals](principles.md): the rules every story has to follow.
