Real catalogue prices are not uniformly distributed — they cluster hard at .99 and .95, and a price column that ignores that looks wrong in a listing grid. Prices here use charm-pricing endings, and stock levels include a deliberate share of zeroes.
What you can control
- Prices land on the endings real shops use, weighted toward
.99. - Stock levels include out-of-stock rows, so the badge and the disabled add-to-cart button both get exercised.
- Ten selectable columns covering everything from brand to URL slug.
- Prices convert into the selected currency at a fixed rate, so a multi-currency catalogue stays coherent.
What this is not
Currency conversion uses fixed indicative rates, not live ones. Product names are recombined adjectives, materials and nouns, so a batch will contain the occasional odd pairing.
Questions
Why do so many prices end in .99?
Because that is how retail pricing works, and a listing page built on round numbers looks subtly wrong. The generator weights endings toward .99 and .95 for that reason.
Are the image URLs real images?
They point at a placeholder service that renders the product noun as text. Fine for layout, not for anything that needs actual photography.
Can I get products in one category only?
Yes. The category control is a multi-select — pick one and every row falls into it.