Kokudankokuya — identity on one product record, counting at the sellable unit
In perfume retail a scent is one product record while the volumes are separate sellable units. The split has a practical result: counting and pricing run at volume level, yet the identity in the catalogue stays on a single record, so one scent never multiplies down a list. A second axis runs alongside it — scent family and note open their own path beside the category tree, and because a perfume can hang off more than one note it turns up under different search intents. The stack was kept narrow: Laravel and MySQL carry the store, with no separate search or cache layer.
Read the case study →