All posts
Amay Aggarwal
Amay Aggarwal
Co-founder, Anglera

Demand forecasting in Furniture & Home: the attribute layer your models are missing

Furniture forecasts fail on new SKUs and thin attributes, not bad models. Here's how attribute quality drives cold-start accuracy and markdown risk.

Demand forecasting in Furniture & Home: the attribute layer your models are missing

A sectional with no sales history is not actually unknown. It has a fill type, a frame material, a seat depth, a fabric grade. A forecasting model that can read those attributes cleanly can borrow a demand curve from something similar and get close. A model that sees "Fabric: Grey" in a free-text field where the real spec is "Performance Chenille, Crypton-treated, medium-tone" gets nothing. The gap between those two states is not a modeling problem. It is a data problem, and in furniture and home it is bigger than most planning teams admit.

Why furniture forecasting starts at a disadvantage

Furniture carries structural handicaps that apparel and grocery forecasters do not deal with. Lead times run months, not weeks, because most of the category is still made to order or shipped from overseas factories. Order minimums are large. And the category's return economics are brutal: furniture's online return rate runs around 22.7%, roughly three points above the all-category average, and a single furniture return costs $72 to $80 once reverse freight is included, compared to about $30 for apparel. That's enough to erase most of a unit's gross margin on a single wrong guess.

Layer newness on top. Roughly 84% of furniture brands confirmed a planned product launch in Q1 2025 alone, and swatch and finish changes multiply that further, since the "same" sofa in six fabric options is six SKUs with six different demand curves. Every one of those launches starts with zero sales history. A model built purely on trailing sales is blind on exactly the SKUs that matter most for next season's buy.

What the model is actually asking of your data

Strip away the algorithm and a demand forecast is a set of joins. It groups historical SKUs by shared traits, measures how each group performed, and projects that pattern onto new or thin-history items. In furniture and home, three of those joins matter more than most planning teams realize:

Like-item matching for new introductions. When a new recliner or console table launches, the forecast has to find its closest historical analog before it can borrow a curve. That match runs on attributes: frame material, upholstery type, seat height, case good finish, dimensional footprint. If "material" is populated as a marketing string ("Rich Espresso Finish") instead of a normalized value (finish family: espresso, wood species: oak, sheen: matte), the matching engine either can't find a comparable or matches it to the wrong one. Attribute-based forecasting exists specifically to solve this cold-start gap, but it only works if the attributes doing the matching are structured and consistent, not free text a merchandiser typed once for a product page.

Attribute-level rollups. Planners don't forecast style number 8841 in isolation. They roll up demand by category, by material family, by price band, to sanity-check the model and to plan buys at the level a vendor can actually produce. If "upholstery fabric" has forty spellings across a catalog (leatherette, faux leather, PU leather, vegan leather, pleather) that rollup silently fragments. Total demand for the fabric family looks smaller and choppier than it is, because the system thinks it's tracking five categories instead of one.

Seasonality by product characteristic. Furniture seasonality isn't uniform. Outdoor and patio move with weather windows. Dorm and small-space furniture spikes around back-to-school and lease turnover. Case goods track housing turnover and renovation cycles more than a calendar month. A forecast that only knows "category: furniture" can't apply the right seasonal curve. A forecast that knows room type, indoor/outdoor designation, and size class can.

Where thin attributes quietly corrupt the number

The failure mode here isn't a system crash. It's a forecast that looks reasonable and is wrong in a way nobody catches until the markdown rack fills up.

Attribute stateWhat the model doesDownstream effect
Fabric/material as clean, normalized valuesMatches new SKU to true historical analogsCold-start forecast tracks actual demand curve
Fabric/material as free-text marketing copyFails to match, or matches wrong analogNew SKU under- or over-forecast, wrong opening buy
Dimensions structured and unit-consistentRolls up correctly by size class (e.g. apartment-scale vs. standard)Accurate size-tier demand splits inform assortment
Dimensions missing or mixed units (in vs. cm)Size class miscategorized or dropped from rollupSize-tier signal disappears into "unknown," planners fly blind on scale mix
Room/use-case tagged consistentlySeasonality curve applied correctly (patio vs. indoor)Inventory timed to the right selling window
Room/use-case inconsistent or missingGeneric seasonality applied to everythingPatio sits in a warehouse in October, indoor lines short in Q4

None of this shows up as a data quality alert. It shows up as a forecast miss that gets blamed on "the model," when the model was never given the inputs to succeed.

A concrete example

Say a case goods brand launches a new dresser in three finishes: espresso, natural oak, and matte white. If the PIM field for finish is a single free-text description per SKU, a forecasting tool sees three unrelated strings and can't tell it's one frame with three surface treatments. It also can't compare the espresso finish to the brand's twelve other espresso-finish case pieces that have three years of sell-through history.

Split that finish field into structured components: finish family, wood species, sheen level, and now the match is trivial. The model finds the closest analog by finish family, borrows its early-life sell-through curve, and adjusts for price point. That's the difference between an opening buy that's within 15-20% of actual demand and one built on a guess.

Diagram: a new SKU with no sales history borrowing a demand curve from attribute-similar historical SKUs

Being honest about what AI forecasting can and can't do

It's worth saying plainly: no forecasting tool, however sophisticated, turns bad attribute data into a good prediction. Modern planning platforms (Toolio, Blue Yonder, o9, Anaplan, and Impact Analytics all publish work on this) have gotten genuinely better at handling cold-start and thin-history items using similarity models and hierarchical rollups. But every one of those techniques still consumes attributes as its raw material. Garbage attributes in, garbage matches out, no matter how advanced the model wrapped around them is.

That's the layer that tends to get skipped when retailers invest in forecasting software. The model gets attention. The fields it reads from, the ones a merchandiser typed by hand at 4pm on a launch deadline, don't.

Anglera doesn't build forecasts. It builds the layer underneath them: it extracts structured attributes like finish family, upholstery type, dimensional class, and room designation from tech packs, spec sheets, and product imagery, normalizes them into consistent values, flags conflicts across sources instead of silently picking one, and keeps them current as new SKUs launch. It plugs into whatever PIM, ERP, or planning system already exists, additive, not a replacement, so the forecasting tools your team already trusts finally get the inputs they were designed to use.

Amay Aggarwal

About the author

Amay AggarwalCo-founder, Anglera

Amay is a co-founder of Anglera, where he's building the AI pipeline that turns messy supplier catalogs into structured, AI-readable product data for distributors and answer engines. He built the catalog AI systems at Uber Eats on top of research from Stanford's AI lab.

See it on your own SKUs.

A 30-minute walkthrough on your categories and your supplier data.

Book a demo