---
title: Furniture details by category
description: The details Leitagu records for each furniture category, such as a table's top shape, a dresser's drawers or which side a corner sofa's corner is on, how they are stored and what is built so far.
section: product
order: 6
updated: 2026-10-21
---

# Furniture details by category

Leitagu describes every product in two ways. The **look** (wood, tone, finish, style, upholstery, handles) says what a piece looks like and drives most of the matching. The **details** on this page say what a piece is and what it does: how many legs a table has, whether a sofa opens into a bed, which side a corner sofa's corner is on. Each category has its own list of details, so a sofa is never asked for drawers and a dresser is never asked for a corner side.

## How the details work

- **One list per category.** The list is in `packages/core/src/shared/taxonomy.ts`. Each detail has a name in Estonian and English, a kind of value and the categories it belongs to.
- **Kinds of value.** A detail is a yes or no, a count, a size in centimetres or inches, or one word from a fixed list. A value outside the list or range is dropped, never stored.
- **Details that depend on others.** A corner side is kept only when the sofa is a corner, chaise or U-shaped sofa, and a bed mechanism only when the sofa opens into a bed. If the other detail is not known, the value is kept.
- **Where they are stored.** Details live in one JSON column, `products.specs`, so a new detail needs no database change. Five older details keep their own columns (shape, sofa bed, storage box, seat height, seat depth); the product reads all of them as one set.
- **Store corrections.** A store's corrections to details are kept in `products.overrides.specs` and win over synced data, like the other corrections.
- **Not a ranking signal.** Details are shown on the product and, where marked below, become filters. Nothing paid changes how they are used.
- **Yes or no.** A "no" and an empty value look the same on a product page. Matching never treats a missing detail as a "no".

## What is built and what is planned

| Part | State |
| --- | --- |
| The list of details per category, with Estonian and English labels, validation and tests | Built |
| Storage on products, including store corrections in the product's overrides | Built |
| Reading details from store data (feeds, Shopify, WooCommerce, CSV) | Partly built: shape, sofa bed, storage box and seat size, and from the product's text a table's top shape and base, rounded ends on TV units and sideboards, and an armchair's recliner, swivel base and open frame (`detectSpecs()` in `normalize.ts`). Reading details from photos is planned as stage 3 of the [product pipeline](../platform/product-pipeline.md) |
| Editing details in the admin and partner apps | Partly built: the [details that change the drawing](#details-that-change-the-drawing) can be edited in the admin product form and corrected in the partner app; the rest are planned |
| Showing details on product cards and pages | Planned |
| Filters in the catalogue and in the chat ("a round table for six", "a corner sofa with the corner on the left") | Planned; the details marked "planned" in the Filter column are the first candidates |
| Details on room pieces, so a kept corner sofa keeps its side in the 3D room | Built for the details that change the drawing (`room_items.specs`); the room editor offers them under "Material and style" |

## Details that change the drawing

The 3D room and product cards draw a piece from its avatar (`shared/avatar.ts`), which reads these details. They are the only ones kept on room pieces (`DRAWN_SPECS` in `taxonomy.ts`):

| Category | Details |
| --- | --- |
| Tables | Top shape, base, lower shelf |
| Sideboard, chest of drawers, cabinet, TV unit | Drawers among the doors, rounded ends |
| Armchair | Frame, back shape, recliner, swivel |
| Sofa | Corner side, corner reach |

**One home for each idea.** A table's round or oval top, its pedestal, cross or tripod base, rounded storage ends, an armchair's open frame, recliner or swivel base, and doors with drawers used to be look values (`shape`, `legs` and `door`). They are details now, and the look values are gone. Migration `020_retire_shape_values` moved existing products, their corrections and room pieces. `shape` is a sofa's only.

## The details

Every category can also have the look attributes from [How Leitagu works](how-it-works.md). The tables below are the extra details. "Filter: planned" marks the details meant to become filters first; the rest are shown only.

### Sideboard

| Detail | Estonian | Values | Filter |
| --- | --- | --- | --- |
| Number of legs | Jalgade arv | 1–12 |  |
| Number of doors | Uste arv | 0–8 |  |
| Drawers | Sahtleid | 0–16 | planned |
| Shelves | Riiuleid | 0–16 |  |
| Drawers among the doors | Sahtlid uste kõrval | above the doors, between the doors, below the doors |  |
| Rounded ends | Ümarate otstega | yes / no |  |
| Open compartments | Avatud sektsioone | 0–12 |  |
| Adjustable shelves | Reguleeritavad riiulid | yes / no |  |
| Soft-close | Sujuvsulgurid | yes / no |  |
| Anti-tip fitting included | Ümberkukkumiskaitse kaasas | yes / no | planned |

### Chest of drawers

| Detail | Estonian | Values | Filter |
| --- | --- | --- | --- |
| Number of legs | Jalgade arv | 1–12 |  |
| Drawers | Sahtleid | 0–16 | planned |
| Shelves | Riiuleid | 0–16 |  |
| Drawers among the doors | Sahtlid uste kõrval | above the doors, between the doors, below the doors |  |
| Rounded ends | Ümarate otstega | yes / no |  |
| Soft-close | Sujuvsulgurid | yes / no |  |
| Lockable | Lukustatav | yes / no |  |
| With mirror | Peegliga | yes / no |  |
| Anti-tip fitting included | Ümberkukkumiskaitse kaasas | yes / no | planned |

### Cabinet

| Detail | Estonian | Values | Filter |
| --- | --- | --- | --- |
| Number of legs | Jalgade arv | 1–12 |  |
| Number of doors | Uste arv | 0–8 |  |
| Drawers | Sahtleid | 0–16 | planned |
| Shelves | Riiuleid | 0–16 |  |
| Drawers among the doors | Sahtlid uste kõrval | above the doors, between the doors, below the doors |  |
| Rounded ends | Ümarate otstega | yes / no |  |
| Adjustable shelves | Reguleeritavad riiulid | yes / no |  |
| Soft-close | Sujuvsulgurid | yes / no |  |
| Lockable | Lukustatav | yes / no |  |
| With mirror | Peegliga | yes / no |  |
| Anti-tip fitting included | Ümberkukkumiskaitse kaasas | yes / no | planned |
| Cabinet type | Kapi tüüp | display cabinet, shoe cabinet, bar cabinet, corner cabinet, utility cabinet, other | planned |

### TV unit

| Detail | Estonian | Values | Filter |
| --- | --- | --- | --- |
| Number of legs | Jalgade arv | 1–12 |  |
| Number of doors | Uste arv | 0–8 |  |
| Drawers | Sahtleid | 0–16 | planned |
| Shelves | Riiuleid | 0–16 |  |
| Drawers among the doors | Sahtlid uste kõrval | above the doors, between the doors, below the doors |  |
| Rounded ends | Ümarate otstega | yes / no |  |
| Open compartments | Avatud sektsioone | 0–12 |  |
| Soft-close | Sujuvsulgurid | yes / no |  |
| Cable opening | Kaablite läbiviik | yes / no |  |
| Largest TV | Suurim teler | 20–120 inch | planned |

### Shelf / bookcase

| Detail | Estonian | Values | Filter |
| --- | --- | --- | --- |
| Number of legs | Jalgade arv | 1–12 |  |
| Drawers | Sahtleid | 0–16 | planned |
| Shelves | Riiuleid | 0–16 |  |
| Adjustable shelves | Reguleeritavad riiulid | yes / no |  |
| Anti-tip fitting included | Ümberkukkumiskaitse kaasas | yes / no | planned |
| With back panel | Tagaseinaga | yes / no |  |
| Shelf type | Riiuli tüüp | bookcase, ladder shelf, wall shelf, room divider, cube shelf | planned |

### Dining table

| Detail | Estonian | Values | Filter |
| --- | --- | --- | --- |
| Number of legs | Jalgade arv | 1–12 |  |
| Top shape | Laua kuju | rectangular, rounded rectangle, square, round, oval, organic shape | planned |
| Base | Aluse tüüp | four legs, pedestal, trestle, panel legs, tripod, cross base | planned |
| Top material | Plaadi materjal | wood, glass, ceramic, marble, stone, metal, laminate |  |
| Extendable | Pikendatav | yes / no | planned |
| Width when extended (only when extendable is true) | Laius pikendatult | 60–500 cm |  |
| Seats | Istekohti | 1–14 | planned |
| Seats when extended (only when extendable is true) | Istekohti pikendatult | 1–20 |  |
| Lower shelf | Alumine riiul | yes / no |  |

### Coffee table

| Detail | Estonian | Values | Filter |
| --- | --- | --- | --- |
| Number of legs | Jalgade arv | 1–12 |  |
| Top shape | Laua kuju | rectangular, rounded rectangle, square, round, oval, organic shape | planned |
| Base | Aluse tüüp | four legs, pedestal, trestle, panel legs, tripod, cross base | planned |
| Top material | Plaadi materjal | wood, glass, ceramic, marble, stone, metal, laminate |  |
| Lower shelf | Alumine riiul | yes / no |  |
| Storage space | Hoiuruum | yes / no | planned |
| Lift-up top | Tõstetav plaat | yes / no |  |
| Adjustable height | Reguleeritav kõrgus | yes / no |  |
| Nesting set | Laudade komplekt (sissetõstetavad) | yes / no |  |
| Tables in the set (only when nesting is true) | Laudu komplektis | 2–5 |  |

### Side table

| Detail | Estonian | Values | Filter |
| --- | --- | --- | --- |
| Number of legs | Jalgade arv | 1–12 |  |
| Top shape | Laua kuju | rectangular, rounded rectangle, square, round, oval, organic shape | planned |
| Base | Aluse tüüp | four legs, pedestal, trestle, panel legs, tripod, cross base | planned |
| Top material | Plaadi materjal | wood, glass, ceramic, marble, stone, metal, laminate |  |
| Lower shelf | Alumine riiul | yes / no |  |
| Storage space | Hoiuruum | yes / no | planned |
| Adjustable height | Reguleeritav kõrgus | yes / no |  |
| Nesting set | Laudade komplekt (sissetõstetavad) | yes / no |  |
| Tables in the set (only when nesting is true) | Laudu komplektis | 2–5 |  |
| Tray top | Alusega plaat | yes / no |  |
| C-shaped (slides under a sofa) | C-kujuline (diivani alla) | yes / no |  |

### Sofa

| Detail | Estonian | Values | Filter |
| --- | --- | --- | --- |
| Number of legs | Jalgade arv | 1–12 |  |
| Shape | Kuju | straight, corner sofa, U-shaped, with chaise, modular | planned |
| Corner side (seen from the front) (only when shape is corner / chaise / u_shape) | Nurga pool (eestvaates) | left, right, reversible | planned |
| Corner reach (only when shape is corner / chaise / u_shape) | Nurgaosa sügavus | 100–400 cm |  |
| Seats | Istekohti | 1–8 | planned |
| Opens into a bed | Muutub voodiks | yes / no | planned |
| Bed mechanism (only when sleeps is true) | Voodi mehhanism | fold-out, click-clack, pull-out, sliding seat |  |
| Sleeping area width (only when sleeps is true) | Magamispinna laius | 50–250 cm |  |
| Sleeping area length (only when sleeps is true) | Magamispinna pikkus | 100–250 cm |  |
| Bedding storage | Voodipesukast | yes / no | planned |
| Armrests | Käetoed | both sides, one side, none |  |
| Back | Seljatugi | fixed, loose cushions |  |
| Removable covers | Eemaldatavad katted | yes / no |  |
| Recliner | Lamamisfunktsioon | yes / no |  |
| Ottoman included | Pufiga | yes / no |  |
| Seat height | Istme kõrgus | 10–100 cm |  |
| Seat depth | Istme sügavus | 10–200 cm |  |

### Armchair

| Detail | Estonian | Values | Filter |
| --- | --- | --- | --- |
| Number of legs | Jalgade arv | 1–12 |  |
| Opens into a bed | Muutub voodiks | yes / no | planned |
| Bed mechanism (only when sleeps is true) | Voodi mehhanism | fold-out, click-clack, pull-out, sliding seat |  |
| Sleeping area width (only when sleeps is true) | Magamispinna laius | 50–250 cm |  |
| Sleeping area length (only when sleeps is true) | Magamispinna pikkus | 100–250 cm |  |
| Bedding storage | Voodipesukast | yes / no | planned |
| Armrests | Käetoed | both sides, one side, none |  |
| Back | Seljatugi | fixed, loose cushions |  |
| Removable covers | Eemaldatavad katted | yes / no |  |
| Recliner | Lamamisfunktsioon | yes / no |  |
| Frame | Raam | upholstered, open wooden frame, open metal frame |  |
| Back shape | Seljatoe kuju | straight, curved, wrap-around, tilted, high, with headrest |  |
| Swivel | Pöörlev | yes / no |  |
| Rocker | Kiiktool | yes / no |  |
| Wing back | Tiibseljatugi | yes / no |  |
| Footstool included | Jalapingiga | yes / no |  |
| Seat height | Istme kõrgus | 10–100 cm |  |
| Seat depth | Istme sügavus | 10–200 cm |  |

