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
| Word | What it means |
|---|---|
| declared | you set it; it stands over anything measured |
| measured · {n} days | attribution read this curve from that many clean days |
| auto | attribution filled this band |
| Not yet measured | attribution has never run for your catalogue |
| Refused | attribution looked and would not curve it; the reason is on hover |
| Too few sales · Category too small · No size option | why a curve or a band is absent |
| No band | no price band stands |
| Not on your plan | the plan does not include the engine |
| You · Connector's · Not in this family | who 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.