A product catalogue built to survive being handed over
Most delivered spreadsheets are correct on the day and broken a month later, because nothing stops the next person entering data the wrong way. This one is built so that it cannot happen.
Result
- 40
- products
- 6
- validation rules
- 9
- below re-order
- 3
- sheets
Glowly.id is a fictional skincare store, and these forty products do not exist. The file is a sample I built to show how I structure a catalogue, not work delivered to a client. Everything about how it is put together — the validation, the formulas, the conventions — is exactly what I would hand over on a real job.
The workbook
Interactive preview
40 rows
| GLW-CLN-001 | Gentle Rice Foam Cleanser | Cleanser | Rp 89,000 | Rp 71,200 | 20% | 142 | 150 g |
| GLW-CLN-002 | Green Tea Balancing Gel Wash | Cleanser | Rp 79,000 | Rp 63,200 | 20% | 96 | 120 g |
| GLW-CLN-003 | Centella Cream Cleanser | Cleanser | Rp 95,000 | — | — | 38 | 130 g |
| GLW-CLN-004 | Micellar Cleansing Water 300ml | Cleanser | Rp 110,000 | Rp 93,500 | 15% | 7 | 300 g |
| GLW-CLN-005 | Deep Cleansing Oil | Cleanser | Rp 135,000 | Rp 108,000 | 20% | 54 | 200 g |
| GLW-TNR-001 | Hydrating Rose Toner | Toner | Rp 92,000 | Rp 78,200 | 15% | 118 | 200 g |
| GLW-TNR-002 | BHA 2% Clarifying Toner | Toner | Rp 125,000 | Rp 100,000 | 20% | 23 | 150 g |
| GLW-TNR-003 | Rice Ferment Essence Toner | Toner | Rp 148,000 | — | — | 61 | 180 g |
| GLW-TNR-004 | Soothing Cica Mist | Toner | Rp 68,000 | Rp 54,400 | 20% | 4 | 100 g |
| GLW-SER-001 | Niacinamide 10% + Zinc Serum | Serum | Rp 165,000 | Rp 132,000 | 20% | 204 | 30 g |
| GLW-SER-002 | Vitamin C 15% Brightening Serum | Serum | Rp 215,000 | Rp 172,000 | 20% | 87 | 30 g |
| GLW-SER-003 | Hyaluronic Acid B5 Serum | Serum | Rp 145,000 | Rp 116,000 | 20% | 156 | 30 g |
| GLW-SER-004 | Retinal 0.05% Night Serum | Serum | Rp 289,000 | Rp 231,200 | 20% | 19 | 30 g |
| GLW-SER-005 | Azelaic Acid 10% Suspension | Serum | Rp 175,000 | — | — | 42 | 30 g |
| GLW-SER-006 | Peptide Firming Ampoule | Serum | Rp 265,000 | Rp 212,000 | 20% | 8 | 30 g |
| GLW-SER-007 | Snail Mucin Repair Essence | Serum | Rp 158,000 | Rp 126,400 | 20% | 73 | 100 g |
| GLW-MST-001 | Ceramide Barrier Cream | Moisturizer | Rp 178,000 | Rp 142,400 | 20% | 131 | 50 g |
| GLW-MST-002 | Oil-Free Gel Moisturiser | Moisturizer | Rp 112,000 | Rp 89,600 | 20% | 94 | 50 g |
| GLW-MST-003 | Squalane Overnight Mask | Moisturizer | Rp 195,000 | — | — | 27 | 80 g |
| GLW-MST-004 | Panthenol Recovery Balm | Moisturizer | Rp 132,000 | Rp 105,600 | 20% | 6 | 40 g |
| GLW-MST-005 | Rich Nourishing Night Cream | Moisturizer | Rp 210,000 | Rp 168,000 | 20% | 49 | 50 g |
| GLW-SUN-001 | Daily Fluid Sunscreen SPF50+ PA++++ | Sunscreen | Rp 139,000 | Rp 111,200 | 20% | 312 | 50 g |
| GLW-SUN-002 | Mineral Sunscreen SPF40 PA+++ | Sunscreen | Rp 155,000 | Rp 124,000 | 20% | 68 | 50 g |
| GLW-SUN-003 | Sunscreen Stick SPF50 PA++++ | Sunscreen | Rp 118,000 | — | — | 9 | 20 g |
| GLW-EXF-001 | AHA 8% Glow Peeling Solution | Exfoliant | Rp 168,000 | Rp 134,400 | 20% | 56 | 30 g |
| GLW-EXF-002 | Enzyme Powder Wash | Exfoliant | Rp 125,000 | Rp 100,000 | 20% | 31 | 70 g |
| GLW-EXF-003 | PHA Gentle Exfoliating Pads | Exfoliant | Rp 142,000 | Rp 113,600 | 20% | 3 | 90 g |
| GLW-MSK-001 | Clay Detox Mask | Mask | Rp 108,000 | Rp 86,400 | 20% | 77 | 100 g |
| GLW-MSK-002 | Honey Hydrating Wash-Off Mask | Mask | Rp 98,000 | — | — | 44 | 100 g |
| GLW-MSK-003 | Sheet Mask Variety Box (10pcs) | Mask | Rp 145,000 | Rp 116,000 | 20% | 188 | 250 g |
| GLW-EYE-001 | Caffeine Eye Serum | Eye Care | Rp 135,000 | Rp 108,000 | 20% | 62 | 15 g |
| GLW-EYE-002 | Retinol Eye Cream | Eye Care | Rp 188,000 | Rp 150,400 | 20% | 15 | 20 g |
| GLW-EYE-003 | Hydrogel Eye Patches (60pcs) | Eye Care | Rp 125,000 | — | — | 5 | 100 g |
| GLW-LIP-001 | Vitamin E Lip Sleeping Mask | Lip Care | Rp 85,000 | Rp 68,000 | 20% | 121 | 20 g |
| GLW-LIP-002 | Tinted Lip Balm SPF20 | Lip Care | Rp 72,000 | Rp 57,600 | 20% | 93 | 15 g |
| GLW-LIP-003 | Lip Scrub Sugar Polish | Lip Care | Rp 65,000 | — | — | 2 | 15 g |
| GLW-TRT-001 | Spot Treatment Gel 2% BHA | Treatment | Rp 78,000 | Rp 62,400 | 20% | 147 | 15 g |
| GLW-TRT-002 | Hydrocolloid Patches (36pcs) | Treatment | Rp 55,000 | Rp 44,000 | 20% | 265 | 10 g |
| GLW-TRT-003 | Tranexamic Acid Dark Spot Serum | Treatment | Rp 245,000 | Rp 196,000 | 20% | 34 | 30 g |
| GLW-TRT-004 | Barrier Repair Ampoule | Treatment | Rp 198,000 | — | — | 1 | 30 g |
40 products across 10 categories. The downloadable .xlsx carries the validation rules and formulas, which a web table cannot show.
Summary sheet
Figures the client actually asks for
- Total units in stock
- 2,972
- Stock value at normal price
- Rp 378,658,000
- Stock value at current price
- Rp 309,823,700
- Products on promotion
- 31
- Average discount
- 19.7%
- Below re-order level (10)
- 9
| Category | Items | Stock value |
|---|---|---|
| Cleanser | 5 | Rp 31,892,000 |
| Toner | 4 | Rp 23,031,000 |
| Serum | 7 | Rp 101,480,000 |
| Moisturizer | 5 | Rp 50,193,000 |
| Sunscreen | 3 | Rp 54,970,000 |
| Exfoliant | 3 | Rp 13,709,000 |
| Mask | 3 | Rp 39,888,000 |
| Eye Care | 3 | Rp 11,815,000 |
| Lip Care | 3 | Rp 17,111,000 |
| Treatment | 4 | Rp 34,569,000 |
Craft
What is actually in the file
Validation on every column
SKU must match GLW-XXX-000 and be unique. Category is a dropdown. Prices, stock and weight are whole numbers in range, and a discount price below zero or above the normal price is rejected at entry. Six rules in total, so the next person cannot break the format by accident.
Conditional formatting that means something
Stock below 10 turns the row red — re-order now. Below 25 turns it amber — watch it. The colour encodes an operating rule, so the file answers "what do I need to buy?" without anyone reading it row by row.
A summary of live formulas
Nothing on the summary sheet is a pasted value. Totals, stock value at both price levels, average discount and the per-category breakdown are formulas, so editing one product on the Products sheet updates every figure.
A data dictionary
A third sheet defining every column, its type, its rule, and the file's conventions — including why an empty discount cell means "not on promotion" and a zero would be wrong. This is what makes the file survive being handed to someone else.
Deliverables
The file a client receives
Open the .xlsx to see the parts this page cannot render: the dropdown on the Category column, the rejection message when a discount price goes above the normal price, and the Summary sheet recalculating when you change a stock level. If your team works in Google Sheets, the same catalogue is built there instead and shared to your Drive, rather than sent as an attachment somebody has to import.
Have a file like this?
Send a sample and what you need it to look like. You will get a quote and a turnaround, not a discovery call.
