Help

Help›The engines›The families and attributes engine

The families and attributes engine

Reviewed Sep 26, 2026

View as Markdown
Words

What the families and attributes engine is ​

The families and attributes engine keeps each product's own facts: its family, how that family varies, the attributes the family asks for, and two measured figures, a price band and a size curve. It is one of Tightly's four named engines. On a face it is three jobs: Attribution, every sync; Analogs, each night at 04:30 UTC; Image matching, each night at 03:30 UTC, reading the product pictures. Analogs are matched on text; a matching picture is shown as a reason, not as part of what decided it. Its pages are Catalogue, Families and Analogs, and a product's Attributes drawer.

What a family is and what a join changes ​

A family is a group of products that vary the same way. On Families a family declares its shape, one of Colours only, Sizes only, Colours × sizes, One of a kind, or another way you name, such as lengths or packs, with its steps in order. A family also carries a template: the attributes every product in it must have. Placing a product, a store listing or an account's order line is a join.

What a join changes downstream:

  • Catalogue can say what a product is missing. A product in no family reads No family set, and nothing can be called missing.
  • On Tightly Pro, a family's shape is the columns of the buy grid on a Commitment, in the family's order, and a broken size run is judged against the family's declared steps only.
  • The baseline engine's third rung reads the account's sell-out of the other styles in the same family.
  • An order line placed on a product joins the money on it to that product.

A family does not change the forecasting engine's figures, and analogs are matched within a category, not a family.

How attribution measures a price band and a size curve ​

Attribution runs inside every sync, and never fails it.

  • Price band. Good, better or best: the thirds of price within the product's category. A category with fewer than five priced products or no spread in price cannot band, nor can the catch-all category. The band is written as auto, only where nobody declared one, and cleared when its reason goes.
  • Size curve. The share of a style's units each size took over the last year, counted only on days when the whole size run was in stock, and on full-price sales where there are enough. It needs at least two such days and thirty units; short of that no curve is published, and where the style sold enough to be worth a curve the refusal is recorded with its reason. It is kept beside, and never over, a size curve you declared.
  • Missing attributes. Each product's count of required attributes its family asks for and it does not have yet, refreshed every sync.

The words on the face ​

WordWhat it means
declaredyou set it; it stands over anything measured
measured · {n} daysattribution read this curve from that many clean days
autoattribution filled this band
Not yet measuredattribution has never run for your catalogue
Refusedattribution looked and would not curve it; the reason is on hover
Too few sales · Category too small · No size optionwhy a curve or a band is absent
No bandno price band stands
Not on your planthe plan does not include the engine
You · Connector's · Not in this familywho owns an attribute, in the Attributes drawer

Who owns an attribute, and what you can edit ​

Typing over a value the connector filled claims it: the attribute reads You and the connector leaves it alone. Hand back to the connector gives it back, and the next sync refills it. You can set a product's family, declare its price band and size curve, and type any attribute its family asks for. A viewer reads; a member or an admin edits.

The engine's state sentences ​

Attribution is Late four hours after a sync it should have followed and Stale after twenty-six; analogs are Late six hours past their window and Stale after thirty. Character for character:

Never ran · Attribution has not run for this catalogue yet. Stale · Last measured {as_of}; no sync has completed since. Partial · Measured {as_of}; some styles could not be measured. Failed · Attribution did not finish today; showing {as_of}'s values. Nothing yet · Nothing to measure yet: no sized variants, no priced lines. Not on your plan · Not on your plan.

Never ran · Analogs have not run for this catalogue yet. Stale · Analogs were last refreshed {as_of}. Partial · Analogs were refreshed {as_of}; some lines were not proposed. Failed · Last night's analog run did not finish; showing {as_of}'s. Nothing yet · No new product is waiting for an analog.

What each plan sees ​

Catalogue and Families are included with Tightly Essentials+ and Tightly Pro; on Essentials the rail marks both for sale with Essentials+. Analogs is on the Pro rail, and on Essentials and Essentials+ the rail marks it for sale with Pro. Lite carries none of them. A refused read of Catalogue or Families says:

This organisation's plan does not include Product data. It is sold with Essentials+.

See also Forecasts for products that have never sold, Families and Analogs.

Glossary line ​

The families and attributes engine keeps each product's family, shape and attributes, and measures its price band and size curve, saying which it measured.