As granular as the catalog needs. Magento layered navigation handles multi-attribute filters without performance hit at 8,000+ variant catalogs.
Texture facets: straight (1A), body wave (2A–2B), deep wave / wavy (2C), curly (3A–3B), tight curly (3C), kinky straight, kinky curly (4A–4B), coily / Z-pattern (4C). Andre Walker hair-typing system is the de facto industry standard.
Origin facets: Brazilian (mid-tier, ~$150–$400, body wave / deep wave dominant), Indian (mid-tier, ~$180–$450, naturally fine and straight, takes color well), Russian (premium, ~$400–$1,200, fine and naturally light, lasts longest), Eurasian (premium, ~$450–$1,500, blended for thickness and durability), Cambodian (premium, ~$350–$900, naturally textured), Burmese (mid-tier), Mongolian (premium). Some retailers also tag “raw” vs “virgin” vs “remy” vs “double-drawn” — quality grades within origin.
Why this matters for textured-hair customers: 4A–4C customers were underserved by mainstream retailers for decades. Mayvenn built a $100M+ business serving them properly with a clean texture filter and educational content (texture-matching guide, install methods). The lesson: get the filter granular, get the photography honest (not over-processed straight-hair models), get the install method content educational. Magento handles all three: filter via layered nav, photography via product gallery, install method via CMS pages linked from PDP.
Architecturally: each origin + texture combination is a separate simple_product variant tied to a configurable_product parent. EAV attributes texture and origin are filterable in layered nav. Customer can stack filters (e.g. “Indian, coily, 18”, lace front”) without query timeouts.