Finetuning completed for yolo26n-indian-fmcg-detection and minicpm5-1b-indian-fmcg-normalizer
7b5611f | """ | |
| Task 3.1 — Generate data/fmcg_catalog.json with 200 Indian FMCG SKUs. | |
| Run: | |
| python finetune/build_catalog.py | |
| Output: data/fmcg_catalog.json | |
| """ | |
| import json | |
| from pathlib import Path | |
| # fmt: off | |
| # Columns: product_id, canonical_name, hsn_code, gst_rate, category, brand, [aliases] | |
| # GST rates: 0%=milk, 5%=atta/curd/oil/tea, 12%=butter/cheese/juice, 18%=biscuits/soap/detergent/shampoo, 28%=cola/soda | |
| SKUS = [ | |
| # ── BISCUITS (30) ──────────────────────────────────────────────────────── | |
| ("parle_g_80g", "Parle-G Biscuit 80g", "1905", 18, "biscuits", "Parle", ["PARLE G 80G", "PARLEG 80", "P-G 80GM", "PARLE-G 80G", "PG 80", "PARLE G 80"]), | |
| ("parle_g_250g", "Parle-G Biscuit 250g", "1905", 18, "biscuits", "Parle", ["PARLE G 250G", "PARLEG 250", "PG 250", "P-G 250GM", "PARLE G 250"]), | |
| ("parle_g_500g", "Parle-G Biscuit 500g", "1905", 18, "biscuits", "Parle", ["PARLE G 500G", "PARLEG 500", "PG 500", "P-G 500GM", "PARLE G 500"]), | |
| ("good_day_cashew_100g", "Britannia Good Day Cashew Cookies 100g", "1905", 18, "biscuits", "Britannia", ["GD DAY CSH 100G", "GOOD DAY 100G", "GOODDAY CSH 100", "BRTNA GD 100G", "GD CSH 100"]), | |
| ("good_day_butter_150g", "Britannia Good Day Butter Cookies 150g", "1905", 18, "biscuits", "Britannia", ["GD DAY BTR 150G", "GOOD DAY BTR 150G", "GOODDAY BUTTR 150", "GD BTR 150"]), | |
| ("good_day_choco_75g", "Britannia Good Day Choco Chip Cookies 75g", "1905", 18, "biscuits", "Britannia", ["GD DAY CHOCO 75G", "GOODDAY CC 75", "GD CHOCO 75G", "BRTNA GD CC 75"]), | |
| ("marie_light_100g", "Britannia Marie Light 100g", "1905", 18, "biscuits", "Britannia", ["MARIE LT 100G", "MARIE 100G", "MRL 100", "BRTNA MRL 100G", "MARIE LIGHT 100"]), | |
| ("marie_light_200g", "Britannia Marie Light 200g", "1905", 18, "biscuits", "Britannia", ["MARIE LT 200G", "MARIE 200G", "MRL 200", "BRTNA MRL 200G", "MARIE LIGHT 200"]), | |
| ("bourbon_cream_100g", "Britannia Bourbon Cream Biscuit 100g", "1905", 18, "biscuits", "Britannia", ["BOURBON 100G", "BRBN 100G", "BRTNA BRBN 100", "BOURBON CRME 100", "BRB 100"]), | |
| ("bourbon_cream_150g", "Britannia Bourbon Cream Biscuit 150g", "1905", 18, "biscuits", "Britannia", ["BOURBON 150G", "BRBN 150G", "BRTNA BRBN 150", "BOURBON CRME 150"]), | |
| ("monaco_salted_75g", "Parle Monaco Salted Biscuit 75g", "1905", 18, "biscuits", "Parle", ["MONACO 75G", "MNCO 75", "PARLE MONACO 75", "MON SLT 75G"]), | |
| ("monaco_salted_200g", "Parle Monaco Salted Biscuit 200g", "1905", 18, "biscuits", "Parle", ["MONACO 200G", "MNCO 200", "PARLE MONACO 200", "MON SLT 200G"]), | |
| ("krackjack_100g", "Parle Krackjack Sweet & Salt Biscuit 100g", "1905", 18, "biscuits", "Parle", ["KRACKJACK 100G", "KJ 100G", "KRCK JCK 100", "PARLE KJ 100", "KRKJK 100"]), | |
| ("krackjack_200g", "Parle Krackjack Sweet & Salt Biscuit 200g", "1905", 18, "biscuits", "Parle", ["KRACKJACK 200G", "KJ 200G", "KRCK JCK 200", "PARLE KJ 200"]), | |
| ("hide_n_seek_100g", "Parle Hide & Seek Choco Chip Cookies 100g", "1905", 18, "biscuits", "Parle", ["HIDE N SEEK 100G", "H&S 100G", "HNS 100", "HIDE SEEK 100", "H N S 100G"]), | |
| ("nutrichoice_100g", "Britannia NutriChoice Digestive Biscuit 100g", "1905", 18, "biscuits", "Britannia", ["NUTRICHOICE 100G", "NC DIGT 100", "BRTNA NC 100", "NUTRI CHOICE 100G"]), | |
| ("oreo_original_120g", "Cadbury Oreo Original Biscuit 120g", "1905", 18, "biscuits", "Cadbury", ["OREO 120G", "OREO ORIG 120", "CADBURY OREO 120", "OREO BIS 120G"]), | |
| ("milk_bikis_75g", "Britannia Milk Bikis Biscuit 75g", "1905", 18, "biscuits", "Britannia", ["MILK BIKIS 75G", "MLK BKIS 75", "MK BKIS 75", "BRTNA MB 75G"]), | |
| ("sunfeast_marie_200g", "ITC Sunfeast Marie Biscuit 200g", "1905", 18, "biscuits", "ITC", ["SUNFEAST MARIE 200G", "SF MARIE 200", "ITC MARIE 200G", "SNFST MR 200"]), | |
| ("tiger_glucose_150g", "Britannia Tiger Glucose Biscuit 150g", "1905", 18, "biscuits", "Britannia", ["TIGER 150G", "TGR GLU 150", "BRTNA TIGER 150", "TGR 150G"]), | |
| ("little_hearts_75g", "Britannia Little Hearts Biscuit 75g", "1905", 18, "biscuits", "Britannia", ["LTL HEARTS 75G", "LH 75G", "BRTNA LH 75", "LITTLE HRT 75G"]), | |
| ("50_50_maska_chaska_75g", "Parle 50-50 Maska Chaska Biscuit 75g", "1905", 18, "biscuits", "Parle", ["50 50 75G", "5050 75G", "MASKA CHASKA 75G", "PARLE 5050 75"]), | |
| ("sunfeast_dark_fantasy_75g","ITC Sunfeast Dark Fantasy Choco Fills 75g", "1905", 18, "biscuits", "ITC", ["DARK FANTASY 75G", "DF 75G", "SF DF 75", "DARK FNT 75G"]), | |
| ("digestive_marie_200g", "McVities Digestive Biscuit 200g", "1905", 18, "biscuits", "McVities", ["MCVITIES 200G", "DIGT 200G", "MCVT DIG 200", "DIGESTIVE 200G"]), | |
| ("good_day_dry_fruit_150g", "Britannia Good Day Dry Fruit Cookies 150g", "1905", 18, "biscuits", "Britannia", ["GD DAY DRY FRT 150G", "GOODDAY DF 150", "GD DF 150G"]), | |
| ("parle_fab_64g", "Parle Fab! Kool Biscuit 64g", "1905", 18, "biscuits", "Parle", ["PARLE FAB 64G", "FAB 64G", "FAB KOOL 64", "PARLE FAB! 64"]), | |
| ("glucose_biscuit_250g", "Parle Glucose Biscuit 250g", "1905", 18, "biscuits", "Parle", ["GLUCOSE 250G", "GLU BISC 250", "PARLE GLU 250G", "GLCOSE 250"]), | |
| ("unibic_oatmeal_75g", "Unibic Oatmeal Cookies 75g", "1905", 18, "biscuits", "Unibic", ["UNIBIC OATMEAL 75G", "UNB OAT 75", "OATMEAL 75G", "UNIBIC 75G"]), | |
| ("chocobakes_75g", "ITC Sunfeast Choco Bakes Choco Fills 75g", "1905", 18, "biscuits", "ITC", ["CHOCOBAKES 75G", "CHOCO BAKES 75", "SF CB 75G", "CHOCOBKS 75"]), | |
| ("nice_coconut_100g", "Sunfeast Nice Coconut Biscuit 100g", "1905", 18, "biscuits", "ITC", ["NICE 100G", "NICE COCNT 100", "SF NICE 100G", "NICE BIS 100"]), | |
| # ── NOODLES (10) ───────────────────────────────────────────────────────── | |
| ("maggi_masala_70g", "Nestle Maggi Masala Noodles 70g", "1902", 18, "noodles", "Nestle", ["MAGGI 70G", "MAGGI NDL 70", "MAGGI MSL 70G", "MAGGI MASALA 70", "MGI 70G", "MAGGI 70GM"]), | |
| ("maggi_masala_140g", "Nestle Maggi Masala Noodles 140g", "1902", 18, "noodles", "Nestle", ["MAGGI 140G", "MAGGI NDL 140", "MAGGI MSL 140G", "MAGGI MASALA 140", "MGI 140G"]), | |
| ("maggi_atta_noodles_80g", "Nestle Maggi Atta Noodles 80g", "1902", 18, "noodles", "Nestle", ["MAGGI ATTA 80G", "MAGGI ATT NDL 80", "MGI ATTA 80", "MAGGI ATTA NDL 80G"]), | |
| ("maggi_chicken_70g", "Nestle Maggi Chicken Noodles 70g", "1902", 18, "noodles", "Nestle", ["MAGGI CHKN 70G", "MAGGI CHICKEN 70", "MGI CHK 70G", "MAGGI CHN NDL 70"]), | |
| ("yippee_magic_masala_70g", "ITC Yippee Magic Masala Noodles 70g", "1902", 18, "noodles", "ITC", ["YIPPEE 70G", "YPE MSL 70", "YIPPEE MAGIC 70G", "ITC YIPPEE 70", "YPPE NDL 70"]), | |
| ("yippee_mood_masala_70g", "ITC Yippee Mood Masala Noodles 70g", "1902", 18, "noodles", "ITC", ["YIPPEE MOOD 70G", "YPPE MD 70", "YIPPEE MOOD 70", "ITC YPPE 70G"]), | |
| ("yippee_multipack_240g", "ITC Yippee Noodles Multipack 240g", "1902", 18, "noodles", "ITC", ["YIPPEE 4PK 240G", "YPPE MULTI 240", "YIPPEE PACK 240G", "YPE 240G"]), | |
| ("top_ramen_masala_70g", "Nissin Top Ramen Masala Noodles 70g", "1902", 18, "noodles", "Nissin", ["TOP RAMEN 70G", "TOP RMN MSL 70", "T RAMEN 70G", "TOP RMNN 70"]), | |
| ("knorr_soupy_noodles_43g", "Knorr Chicken Soupy Noodles 43g", "1902", 18, "noodles", "Unilever", ["KNORR SOUPY 43G", "KNORR NOODLES 43", "KNR SOUP NDL 43", "KNORR 43G"]), | |
| ("wai_wai_noodles_75g", "Wai Wai Quick Noodles Masala 75g", "1902", 18, "noodles", "Wai Wai", ["WAI WAI 75G", "WAIWAI 75G", "WAI WAI MSL 75", "WAIWAI NDL 75G"]), | |
| # ── ATTA / FLOUR (10) ──────────────────────────────────────────────────── | |
| ("aashirvaad_atta_1kg", "Aashirvaad Whole Wheat Atta 1kg", "1101", 5, "atta_flour", "ITC", ["AASHIRVAAD 1KG", "ASHIRWAAD ATTA 1KG", "ASHRVD ATTA 1K", "AASHR ATT 1KG", "ASH ATTA 1KG"]), | |
| ("aashirvaad_atta_5kg", "Aashirvaad Whole Wheat Atta 5kg", "1101", 5, "atta_flour", "ITC", ["AASHIRVAAD 5KG", "ASHIRWAAD ATTA 5KG", "ASHRVD ATTA 5K", "AASHR ATT 5KG"]), | |
| ("aashirvaad_atta_10kg", "Aashirvaad Whole Wheat Atta 10kg", "1101", 5, "atta_flour", "ITC", ["AASHIRVAAD 10KG", "ASHIRWAAD ATTA 10KG", "ASHRVD 10K", "AASHR ATT 10KG"]), | |
| ("annapurna_atta_1kg", "Annapurna Atta 1kg", "1101", 5, "atta_flour", "Unilever", ["ANNAPURNA 1KG", "ANNA ATTA 1KG", "ANNAPRNA 1K", "ANN ATT 1KG", "ANAPURNA 1KG"]), | |
| ("annapurna_atta_5kg", "Annapurna Atta 5kg", "1101", 5, "atta_flour", "Unilever", ["ANNAPURNA 5KG", "ANNA ATTA 5KG", "ANNAPRNA 5K", "ANN ATT 5KG"]), | |
| ("pillsbury_atta_5kg", "Pillsbury Chakki Fresh Atta 5kg", "1101", 5, "atta_flour", "General Mills",["PILLSBURY 5KG", "PILSB ATT 5KG", "PILSBURY ATTA 5K", "PILLS ATT 5KG"]), | |
| ("shakti_bhog_atta_5kg", "Shakti Bhog Atta 5kg", "1101", 5, "atta_flour", "Shakti Bhog",["SHAKTI BHOG 5KG", "SB ATTA 5KG", "SHKT BHOG 5K", "SHAKTI ATT 5KG"]), | |
| ("fortune_atta_5kg", "Fortune Chakki Fresh Atta 5kg", "1101", 5, "atta_flour", "Adani Wilmar",["FORTUNE ATTA 5KG", "FRTN ATT 5KG", "FORTUNE CHAKKI 5K", "FRTN ATTA 5KG"]), | |
| ("patanjali_atta_5kg", "Patanjali Atta 5kg", "1101", 5, "atta_flour", "Patanjali", ["PATANJALI 5KG", "PTNJLI ATT 5KG", "PATANJALI ATTA 5K", "PTNJ ATT 5KG"]), | |
| ("aashirvaad_multigrain_1kg","Aashirvaad Multigrain Atta 1kg", "1101", 5, "atta_flour", "ITC", ["AASHIRVAAD MULTI 1KG", "ASHRVD MG ATTA 1K", "AASHR MG ATT 1KG", "ASH MULTI ATT 1KG"]), | |
| # ── DAIRY (20) ─────────────────────────────────────────────────────────── | |
| ("amul_butter_100g", "Amul Butter 100g", "0405", 12, "dairy", "Amul", ["AMUL BTR 100G", "AMUL BUTTER 100", "AMUL BUTR 100G", "BTR 100G AMUL"]), | |
| ("amul_butter_500g", "Amul Butter 500g", "0405", 12, "dairy", "Amul", ["AMUL BTR 500G", "AMUL BUTTER 500", "AMUL BUTR 500G", "BTR 500G AMUL"]), | |
| ("amul_lite_butter_100g", "Amul Lite Low Fat Butter 100g", "0405", 12, "dairy", "Amul", ["AMUL LITE BTR 100G", "AMUL LT BUTTER 100", "AMUL LITE BUTR 100"]), | |
| ("amul_cheese_slices_200g", "Amul Cheese Slices 200g", "0406", 12, "dairy", "Amul", ["AMUL CHSE SLC 200G", "AMUL CHEESE 200", "AMUL SLICED CHSE 200", "AMUL CSE 200G", "AMUL CH SL 200"]), | |
| ("amul_processed_cheese_200g","Amul Processed Cheese Block 200g", "0406", 12, "dairy", "Amul", ["AMUL PROC CHSE 200G", "AMUL CHEESE BLK 200", "AMUL CHSE BLK 200G"]), | |
| ("amul_cheese_spread_200g", "Amul Cheese Spread 200g", "0406", 12, "dairy", "Amul", ["AMUL CHSE SPD 200G", "AMUL CHEESE SPREAD 200", "AMUL CSE SPRD 200G"]), | |
| ("mother_dairy_dahi_400g", "Mother Dairy Fresh Dahi 400g", "0403", 5, "dairy", "Mother Dairy",["MD DAHI 400G", "MOTHER DAIRY CURD 400", "MD CURD 400G", "MTH DRY DHI 400"]), | |
| ("mother_dairy_dahi_1kg", "Mother Dairy Fresh Dahi 1kg", "0403", 5, "dairy", "Mother Dairy",["MD DAHI 1KG", "MOTHER DAIRY CURD 1KG", "MD CURD 1K", "MTH DRY DHI 1KG"]), | |
| ("amul_masti_dahi_200g", "Amul Masti Dahi 200g", "0403", 5, "dairy", "Amul", ["AMUL DAHI 200G", "AMUL CURD 200G", "AMUL MASTI 200", "AMUL DHI 200G"]), | |
| ("amul_masti_dahi_400g", "Amul Masti Dahi 400g", "0403", 5, "dairy", "Amul", ["AMUL DAHI 400G", "AMUL CURD 400G", "AMUL MASTI 400", "AMUL DHI 400G"]), | |
| ("amul_pure_ghee_500ml", "Amul Pure Ghee 500ml", "0405", 12, "dairy", "Amul", ["AMUL GHEE 500ML", "AMUL GHE 500ML", "AMUL PURE GHE 500", "AMUL GHI 500ML"]), | |
| ("amul_pure_ghee_1l", "Amul Pure Ghee 1L", "0405", 12, "dairy", "Amul", ["AMUL GHEE 1L", "AMUL GHE 1LTR", "AMUL PURE GHE 1L", "AMUL GHI 1LTR"]), | |
| ("mother_dairy_paneer_200g", "Mother Dairy Paneer 200g", "0406", 5, "dairy", "Mother Dairy",["MD PANEER 200G", "MTH DRY PNR 200", "MOTHER DAIRY PNEER 200", "MD PNR 200G"]), | |
| ("amul_fresh_paneer_200g", "Amul Fresh Paneer 200g", "0406", 5, "dairy", "Amul", ["AMUL PANEER 200G", "AMUL PNR 200G", "AMUL PANIR 200", "AMUL PNR 200"]), | |
| ("amul_taaza_milk_1l", "Amul Taaza Toned Milk 1L", "0401", 0, "dairy", "Amul", ["AMUL TAAZA 1L", "AMUL MILK 1LTR", "AMUL TAZA MILK 1L", "AMUL TZ 1L"]), | |
| ("amul_gold_milk_1l", "Amul Gold Full Cream Milk 1L", "0401", 0, "dairy", "Amul", ["AMUL GOLD 1L", "AMUL GOLD MILK 1LTR", "AMUL GLD MLK 1L", "AMUL GOLD 1LTR"]), | |
| ("mother_dairy_slim_milk_1l","Mother Dairy Slim Toned Milk 1L", "0401", 0, "dairy", "Mother Dairy",["MD SLIM MILK 1L", "MTH DRY SLIM 1LTR", "MOTHER DAIRY SLIM 1L"]), | |
| ("amul_kool_milk_200ml", "Amul Kool Flavoured Milk 200ml", "0402", 12, "dairy", "Amul", ["AMUL KOOL 200ML", "AMUL KOOL MLK 200", "AMUL COOL 200ML", "AMUL KL 200ML"]), | |
| ("amul_tru_200ml", "Amul Tru Fruit Drink 200ml", "0402", 12, "dairy", "Amul", ["AMUL TRU 200ML", "AMUL TRU DRK 200", "AMUL TRU FRT 200ML"]), | |
| ("nestle_a_plus_milk_1l", "Nestle a+ Toned Milk 1L", "0401", 0, "dairy", "Nestle", ["NESTLE A+ 1L", "NESTLE APLUS 1LTR", "NSTLE A+ MLK 1L", "NESTLE A PLUS 1L"]), | |
| # ── HOME CARE (35) ─────────────────────────────────────────────────────── | |
| ("surf_excel_500g", "Surf Excel Washing Powder 500g", "3402", 18, "home_care", "Unilever", ["SURF EXCEL 500G", "SURF XL 500G", "SURF 500G", "SF XL 500G", "SURF EXCL 500G"]), | |
| ("surf_excel_1kg", "Surf Excel Washing Powder 1kg", "3402", 18, "home_care", "Unilever", ["SURF EXCEL 1KG", "SURF XL 1K", "SURF 1KG", "SF XL 1KG", "SURF EXCL 1KG"]), | |
| ("surf_excel_2kg", "Surf Excel Washing Powder 2kg", "3402", 18, "home_care", "Unilever", ["SURF EXCEL 2KG", "SURF XL 2K", "SURF 2KG", "SF XL 2KG", "SURF EXCL 2KG"]), | |
| ("surf_excel_easy_wash_500g","Surf Excel Easy Wash Detergent Powder 500g", "3402", 18, "home_care", "Unilever", ["SURF EASY WASH 500G", "SURF EZ 500G", "SURF EZWSH 500", "SF EW 500G"]), | |
| ("surf_excel_matic_1kg", "Surf Excel Matic Front Load Powder 1kg", "3402", 18, "home_care", "Unilever", ["SURF MATIC 1KG", "SURF MTIC 1K", "SF MATIC 1KG", "SURF EXCEL MATIC 1KG"]), | |
| ("rin_powder_500g", "Rin Washing Powder 500g", "3402", 18, "home_care", "Unilever", ["RIN 500G", "RIN POWD 500G", "RIN WP 500", "RIN PWD 500G"]), | |
| ("rin_powder_1kg", "Rin Washing Powder 1kg", "3402", 18, "home_care", "Unilever", ["RIN 1KG", "RIN POWD 1KG", "RIN WP 1K", "RIN PWD 1KG"]), | |
| ("rin_bar_250g", "Rin Detergent Bar 250g", "3402", 18, "home_care", "Unilever", ["RIN BAR 250G", "RIN DTRGNT BAR 250", "RIN B 250G", "RIN 250GM BAR"]), | |
| ("wheel_powder_500g", "Wheel Active Washing Powder 500g", "3402", 18, "home_care", "Unilever", ["WHEEL 500G", "WHEEL WP 500", "WHL POWD 500G", "WHEEL ACTIVE 500"]), | |
| ("tide_plus_500g", "Tide Plus Extra Power Washing Powder 500g", "3402", 18, "home_care", "P&G", ["TIDE 500G", "TIDE PLUS 500G", "TIDE WP 500", "TD PLUS 500G"]), | |
| ("ariel_powder_500g", "Ariel Matic Front Load Washing Powder 500g", "3402", 18, "home_care", "P&G", ["ARIEL 500G", "ARIEL WP 500G", "ARL POWD 500", "ARIEL MATIC 500"]), | |
| ("vim_bar_200g", "Vim Dishwash Bar 200g", "3402", 18, "home_care", "Unilever", ["VIM 200G", "VIM BAR 200G", "VIM DW 200", "VIM DSHWSH 200G"]), | |
| ("vim_bar_250g", "Vim Dishwash Bar 250g", "3402", 18, "home_care", "Unilever", ["VIM 250G", "VIM BAR 250G", "VIM DW 250", "VIM DSHWSH 250G"]), | |
| ("vim_liquid_500ml", "Vim Dishwash Liquid 500ml", "3402", 18, "home_care", "Unilever", ["VIM LIQ 500ML", "VIM LIQUID 500", "VIM DSHWSH LQ 500", "VIM LQ 500ML"]), | |
| ("pril_liquid_500ml", "Pril Dishwash Liquid 500ml", "3402", 18, "home_care", "Henkel", ["PRIL 500ML", "PRIL DW 500", "PRIL LIQUID 500ML", "PRL LQ 500"]), | |
| ("exo_bar_200g", "Exo Dishwash Bar 200g", "3402", 18, "home_care", "Jyothy Labs",["EXO 200G", "EXO DW BAR 200", "EXO DSHWSH 200G", "EXO 200GM"]), | |
| ("harpic_pp_500ml", "Harpic Power Plus Toilet Cleaner 500ml", "3808", 18, "home_care", "Reckitt", ["HARPIC 500ML", "HPC PP 500", "HARPIC PP 500ML", "HRPC 500ML", "HARPIC 500"]), | |
| ("harpic_pp_1l", "Harpic Power Plus Toilet Cleaner 1L", "3808", 18, "home_care", "Reckitt", ["HARPIC 1L", "HPC PP 1LTR", "HARPIC PP 1L", "HRPC 1LTR", "HARPIC 1LTR"]), | |
| ("harpic_10x_500ml", "Harpic 10x Toilet Cleaner 500ml", "3808", 18, "home_care", "Reckitt", ["HARPIC 10X 500ML", "HPC 10X 500", "HARPIC TEN X 500", "HRPC 10X 500ML"]), | |
| ("lizol_500ml", "Lizol Disinfectant Floor Cleaner 500ml", "3808", 18, "home_care", "Reckitt", ["LIZOL 500ML", "LIZOL FLOOR 500", "LZL 500ML", "LIZOL DISINF 500"]), | |
| ("domex_500ml", "Domex Toilet Cleaner 500ml", "3808", 18, "home_care", "Unilever", ["DOMEX 500ML", "DOMEX TC 500", "DMX 500ML", "DOMEX TOILET 500"]), | |
| ("dettol_handwash_200ml", "Dettol Handwash 200ml", "3401", 18, "home_care", "Reckitt", ["DETTOL HW 200ML", "DETTOL HAND WASH 200", "DTL HW 200", "DETTOL HWS 200ML", "DTL H/WASH 200"]), | |
| ("dettol_handwash_250ml", "Dettol Handwash 250ml", "3401", 18, "home_care", "Reckitt", ["DETTOL HW 250ML", "DETTOL HAND WASH 250", "DTL HW 250", "DETTOL HWS 250ML"]), | |
| ("lifebuoy_handwash_250ml", "Lifebuoy Total 10 Handwash 250ml", "3401", 18, "home_care", "Unilever", ["LIFEBUOY HW 250ML", "LFB HW 250", "LIFEBUY HND WSH 250", "LIFEBUOY H/WASH 250"]), | |
| ("lifebuoy_handwash_refill_750ml","Lifebuoy Total Handwash Refill 750ml", "3401", 18, "home_care", "Unilever", ["LFB HW RFIL 750ML", "LIFEBUOY REFILL 750", "LFB RFLL 750ML"]), | |
| ("mortein_spray_425ml", "Mortein Insta5 All Insect Killer Spray 425ml", "3808", 18, "home_care", "Reckitt", ["MORTEIN 425ML", "MRTN SPRAY 425", "MORTEIN SPRAY 425ML", "MRTEIN 425ML"]), | |
| ("good_knight_45ml", "Good Knight Fast Card Mosquito Liquid 45ml", "3808", 18, "home_care", "Godrej", ["GOOD KNIGHT 45ML", "GK LIQUID 45", "GD KNIGHT 45ML", "GOOD KNGT 45ML"]), | |
| ("scotch_brite_sponge", "Scotch-Brite Scrub Sponge 1pc", "3402", 18, "home_care", "3M", ["SCOTCH BRITE 1PC", "SB SPONGE 1PC", "SCT BRITE SPONGE", "SCOTCH BRIT 1P"]), | |
| ("odonil_room_freshener_75g","Odonil Room Freshener 75g", "3307", 18, "home_care", "Dabur", ["ODONIL 75G", "ODNL 75G", "ODONIL ROOM 75", "ODONIL FRSH 75G"]), | |
| ("comfort_fabric_220ml", "Comfort Fabric Conditioner 220ml", "3402", 18, "home_care", "Unilever", ["COMFORT 220ML", "CMFT FAB 220ML", "COMFORT FABRIC 220", "COMFT 220ML"]), | |
| ("ezee_liquid_500ml", "Ezee Liquid Detergent 500ml", "3402", 18, "home_care", "Godrej", ["EZEE 500ML", "EZEE LIQUID 500", "EZE DET 500ML", "EZEE LQ 500ML"]), | |
| ("hit_spray_400ml", "Hit Flying Insect Killer Spray 400ml", "3808", 18, "home_care", "Godrej", ["HIT 400ML", "HIT SPRAY 400", "HIT INSECT 400ML", "HIT 400"]), | |
| ("airwick_refill_250ml", "Air Wick Fresh Matic Refill 250ml", "3307", 18, "home_care", "Reckitt", ["AIRWICK 250ML", "AIR WICK 250ML", "AIRWCK RFIL 250", "AIR WCK 250ML"]), | |
| ("prill_liquid_250ml", "Pril Lemon Dishwash Liquid 250ml", "3402", 18, "home_care", "Henkel", ["PRIL 250ML", "PRIL LMN 250ML", "PRL LQ 250", "PRIL LEMON 250"]), | |
| ("robin_blue_125ml", "Robin Blue Fabric Whitener 125ml", "3402", 18, "home_care", "Reckitt", ["ROBIN BLUE 125ML", "ROBIN 125ML", "RBN BLUE 125", "ROBIN BLU 125ML"]), | |
| # ── PERSONAL CARE (50) ─────────────────────────────────────────────────── | |
| ("colgate_strong_100g", "Colgate Strong Teeth Toothpaste 100g", "3306", 18, "personal_care","Colgate", ["COLGATE 100G", "COLGAT STR 100G", "COL STR TEETH 100", "CLG 100G", "COLGAT 100GM"]), | |
| ("colgate_strong_200g", "Colgate Strong Teeth Toothpaste 200g", "3306", 18, "personal_care","Colgate", ["COLGATE 200G", "COLGAT STR 200G", "COL STR TEETH 200", "CLG 200G"]), | |
| ("colgate_maxfresh_150g", "Colgate MaxFresh Cool Mint Toothpaste 150g", "3306", 18, "personal_care","Colgate", ["COLGATE MAXFRESH 150G", "COL MX FRSH 150", "CLG MAXFRSH 150G", "COLGATE MF 150"]), | |
| ("colgate_total_150g", "Colgate Total Toothpaste 150g", "3306", 18, "personal_care","Colgate", ["COLGATE TOTAL 150G", "COL TOTAL 150", "CLG TTL 150G", "COLGATE TTL 150"]), | |
| ("colgate_sensitive_80g", "Colgate Sensitive Toothpaste 80g", "3306", 18, "personal_care","Colgate", ["COLGATE SENSITIVE 80G", "COL SENS 80G", "CLG SNSV 80G", "COLGATE SENST 80"]), | |
| ("pepsodent_150g", "Pepsodent Germicheck Toothpaste 150g", "3306", 18, "personal_care","Unilever", ["PEPSODENT 150G", "PEPSODT 150G", "PPSDNT 150G", "PEPSODANT 150G", "PEPSO 150GM"]), | |
| ("pepsodent_whitening_150g", "Pepsodent Whitening Toothpaste 150g", "3306", 18, "personal_care","Unilever", ["PEPSODENT WHITE 150G", "PPSDNT WH 150", "PEPSO WHTNG 150G"]), | |
| ("close_up_150g", "Close Up Deep Action Toothpaste 150g", "3306", 18, "personal_care","Unilever", ["CLOSE UP 150G", "CLOSEUP 150G", "CLZ UP 150G", "CLOSE-UP 150GM"]), | |
| ("sensodyne_70g", "Sensodyne Sensitive Toothpaste 70g", "3306", 18, "personal_care","Haleon", ["SENSODYNE 70G", "SNSDY 70G", "SENSODNE 70G", "SENSODYNE SENS 70"]), | |
| ("dabur_red_paste_200g", "Dabur Red Paste Toothpaste 200g", "3306", 18, "personal_care","Dabur", ["DABUR RED 200G", "DABUR RED PASTE 200", "DBR RED 200G", "DABUR RED 200GM"]), | |
| ("himalaya_toothpaste_100g", "Himalaya Complete Care Toothpaste 100g", "3306", 18, "personal_care","Himalaya", ["HIMALAYA TP 100G", "HIM COMP CARE 100", "HML TPASTE 100G", "HIMALAYA 100G"]), | |
| ("lux_soap_100g", "Lux Soft Touch Beauty Soap 100g", "3401", 18, "personal_care","Unilever", ["LUX 100G", "LUX SOAP 100G", "LX SOAP 100", "LUX 100GM", "LUX BAR 100G"]), | |
| ("lux_soap_150g", "Lux Soft Touch Beauty Soap 150g", "3401", 18, "personal_care","Unilever", ["LUX 150G", "LUX SOAP 150G", "LX SOAP 150", "LUX 150GM"]), | |
| ("lifebuoy_soap_100g", "Lifebuoy Total Soap 100g", "3401", 18, "personal_care","Unilever", ["LIFEBUOY 100G", "LFB SOAP 100G", "LIFEBUY 100G", "LFB 100GM", "LIFEBUOY SOAP 100"]), | |
| ("lifebuoy_soap_150g", "Lifebuoy Total Soap 150g", "3401", 18, "personal_care","Unilever", ["LIFEBUOY 150G", "LFB SOAP 150G", "LIFEBUY 150G", "LFB 150GM"]), | |
| ("dettol_soap_75g", "Dettol Original Soap 75g", "3401", 18, "personal_care","Reckitt", ["DETTOL SOAP 75G", "DETTOL 75G", "DTL SOAP 75", "DETTL SOAP 75G", "DTL 75GM"]), | |
| ("dettol_soap_125g", "Dettol Original Soap 125g", "3401", 18, "personal_care","Reckitt", ["DETTOL SOAP 125G", "DETTOL 125G", "DTL SOAP 125", "DETTL 125G"]), | |
| ("dove_soap_100g", "Dove Beauty Bar 100g", "3401", 18, "personal_care","Unilever", ["DOVE 100G", "DOVE SOAP 100G", "DV SOAP 100", "DOVE BEAUTY 100G", "DOVE BAR 100"]), | |
| ("pears_soap_75g", "Pears Pure & Gentle Soap 75g", "3401", 18, "personal_care","Unilever", ["PEARS 75G", "PEARS SOAP 75G", "PRS SOAP 75", "PEARS GNT 75G"]), | |
| ("santoor_soap_100g", "Santoor Sandalwood Soap 100g", "3401", 18, "personal_care","Wipro", ["SANTOOR 100G", "SANTOOR SOAP 100G", "SNT SOAP 100", "SANTOOR 100GM"]), | |
| ("cinthol_soap_100g", "Cinthol Confidence Soap 100g", "3401", 18, "personal_care","Godrej", ["CINTHOL 100G", "CINTHOL SOAP 100G", "CNTHL SOAP 100", "CINTHOL 100GM"]), | |
| ("godrej_no1_soap_100g", "Godrej No.1 Soap 100g", "3401", 18, "personal_care","Godrej", ["GODREJ NO1 100G", "GDJ NO.1 100G", "GODREJ 1 SOAP 100", "GDJ NO 1 100"]), | |
| ("hamam_soap_100g", "Hamam Soap 100g", "3401", 18, "personal_care","Unilever", ["HAMAM 100G", "HAMAM SOAP 100G", "HMM SOAP 100", "HAMAM 100GM"]), | |
| ("parachute_oil_200ml", "Parachute Coconut Oil 200ml", "1513", 5, "personal_care","Marico", ["PARACHUTE 200ML", "PCH OIL 200ML", "PARACHUT CNT OIL 200", "PCH 200ML", "PARCHT OIL 200"]), | |
| ("parachute_oil_500ml", "Parachute Coconut Oil 500ml", "1513", 5, "personal_care","Marico", ["PARACHUTE 500ML", "PCH OIL 500ML", "PARACHUT CNT OIL 500", "PCH 500ML"]), | |
| ("parachute_oil_1l", "Parachute Coconut Oil 1L", "1513", 5, "personal_care","Marico", ["PARACHUTE 1L", "PCH OIL 1LTR", "PARACHUT CNT OIL 1L", "PCH 1LTR"]), | |
| ("dabur_amla_oil_200ml", "Dabur Amla Hair Oil 200ml", "3305", 18, "personal_care","Dabur", ["DABUR AMLA 200ML", "DB AMLA OIL 200", "DABUR AMLA H/OIL 200", "DBR AMLA 200ML"]), | |
| ("dabur_amla_oil_100ml", "Dabur Amla Hair Oil 100ml", "3305", 18, "personal_care","Dabur", ["DABUR AMLA 100ML", "DB AMLA OIL 100", "DABUR AMLA H/OIL 100", "DBR AMLA 100ML"]), | |
| ("bajaj_almond_100ml", "Bajaj Almond Drops Hair Oil 100ml", "3305", 18, "personal_care","Bajaj", ["BAJAJ ALMOND 100ML", "BJJ ALMND OIL 100", "BAJAJ ALMD 100ML", "ALMND DROPS 100ML"]), | |
| ("vatika_oil_200ml", "Dabur Vatika Enriched Coconut Hair Oil 200ml", "3305", 18, "personal_care","Dabur", ["VATIKA 200ML", "VATIKA OIL 200ML", "VTK OIL 200", "DABUR VATIKA 200ML"]), | |
| ("h_s_cool_menthol_200ml", "Head & Shoulders Cool Menthol Shampoo 200ml", "3305", 18, "personal_care","P&G", ["H&S 200ML", "HEAD SHLDR 200ML", "H S COOL 200ML", "HEAD & SHLDR 200", "H&S COOL 200ML"]), | |
| ("h_s_smooth_200ml", "Head & Shoulders Smooth & Silky Shampoo 200ml", "3305", 18, "personal_care","P&G", ["H&S SMOOTH 200ML", "HEAD SHLDR SMTH 200", "H S SMOOTH 200ML", "H&S SMT 200ML"]), | |
| ("clinic_plus_175ml", "Clinic Plus Strong & Long Shampoo 175ml", "3305", 18, "personal_care","Unilever", ["CLINIC PLUS 175ML", "CLN PLUS 175ML", "CLINIC+ 175ML", "CLINC PLUS 175G"]), | |
| ("pantene_175ml", "Pantene Silky Smooth Shampoo 175ml", "3305", 18, "personal_care","P&G", ["PANTENE 175ML", "PNTNE SHMP 175ML", "PANTENE SLK 175", "PNTNE 175ML"]), | |
| ("dove_shampoo_180ml", "Dove Damage Therapy Shampoo 180ml", "3305", 18, "personal_care","Unilever", ["DOVE SHAMPOO 180ML", "DOVE SHP 180ML", "DV SHMP 180", "DOVE 180ML SHP"]), | |
| ("sunsilk_180ml", "Sunsilk Thick & Long Shampoo 180ml", "3305", 18, "personal_care","Unilever", ["SUNSILK 180ML", "SNSLK 180ML", "SUNSILK SHP 180", "SUNSLK 180ML"]), | |
| ("garnier_fructis_175ml", "Garnier Fructis Strengthening Shampoo 175ml", "3305", 18, "personal_care","L'Oreal", ["GARNIER 175ML", "GRNR FRUCTIS 175ML", "GARNIER FRCTS 175", "GRNR 175ML"]), | |
| ("himalaya_shampoo_200ml", "Himalaya Anti-Dandruff Shampoo 200ml", "3305", 18, "personal_care","Himalaya", ["HIMALAYA SHP 200ML", "HIM ANTI-DNDRF 200", "HML SHMP 200ML", "HIMALAYA 200ML SHP"]), | |
| ("axe_deo_150ml", "Axe Dark Temptation Body Spray 150ml", "3307", 18, "personal_care","Unilever", ["AXE 150ML", "AXE DEO 150ML", "AXE DARK 150", "AX BODY SPRAY 150ML"]), | |
| ("fogg_deo_120ml", "Fogg Black Collection Body Spray 120ml", "3307", 18, "personal_care","Vini Cosmetics",["FOGG 120ML", "FOGG DEO 120ML", "FOGG BLACK 120", "FGG 120ML"]), | |
| ("vaseline_lotion_200ml", "Vaseline Intensive Care Body Lotion 200ml", "3304", 18, "personal_care","Unilever", ["VASELINE 200ML", "VSL LOTION 200ML", "VASELINE LOTN 200", "VSLNE 200ML"]), | |
| ("nivea_soft_200ml", "Nivea Soft Moisturising Cream 200ml", "3304", 18, "personal_care","Beiersdorf", ["NIVEA 200ML", "NIVEA SOFT 200ML", "NVEA CRME 200", "NIVA SOFT 200ML"]), | |
| ("fair_lovely_50g", "Glow & Lovely Cream 50g", "3304", 18, "personal_care","Unilever", ["FAIR LOVELY 50G", "GLOW LOVELY 50G", "F&L 50G", "FAIR & LOVELY 50G", "GL CREAM 50G"]), | |
| ("ponds_cold_cream_100g", "Ponds Cold Cream 100g", "3304", 18, "personal_care","Unilever", ["PONDS 100G", "PONDS CREAM 100G", "PND CC 100G", "POND'S COLD CRM 100"]), | |
| ("lakme_facewash_50ml", "Lakme Blush & Glow Facewash 50ml", "3304", 18, "personal_care","Unilever", ["LAKME FWSH 50ML", "LAKME FACE WASH 50", "LKM FW 50ML", "LAKME 50ML FW"]), | |
| ("wild_stone_deo_150ml", "Wild Stone Code Perfume Body Spray 150ml", "3307", 18, "personal_care","McNroe", ["WILD STONE 150ML", "WLD STN DEO 150", "WILD STONE DEO 150ML", "WS CODE 150ML"]), | |
| ("tresemme_185ml", "TRESemme Smooth & Shine Shampoo 185ml", "3305", 18, "personal_care","Unilever", ["TRESEMME 185ML", "TRESM SHMP 185ML", "TRESEMME SHP 185", "TRE 185ML"]), | |
| ("old_spice_150ml", "Old Spice Classic Body Spray 150ml", "3307", 18, "personal_care","P&G", ["OLD SPICE 150ML", "OLD SPC 150ML", "OSD DEO 150", "OLD SPICE DEO 150ML"]), | |
| ("brylcreem_125ml", "Brylcreem Hair Cream 125ml", "3305", 18, "personal_care","Unilever", ["BRYLCREEM 125ML", "BRYL CRM 125ML", "BRYLCREAM 125", "BRLCRM 125ML"]), | |
| # ── BEVERAGES (45) ─────────────────────────────────────────────────────── | |
| ("coke_200ml", "Coca-Cola 200ml", "2202", 28, "beverages", "Coca-Cola", ["COKE 200ML", "COCA COLA 200ML", "CC 200ML", "COKE 200", "COLD DRINK 200"]), | |
| ("coke_500ml", "Coca-Cola 500ml", "2202", 28, "beverages", "Coca-Cola", ["COKE 500ML", "COCA COLA 500ML", "CC 500ML", "COKE 500", "COKE BOTTLE 500"]), | |
| ("coke_600ml", "Coca-Cola 600ml", "2202", 28, "beverages", "Coca-Cola", ["COKE 600ML", "COCA COLA 600ML", "CC 600ML", "COKE 600"]), | |
| ("coke_1l", "Coca-Cola 1L", "2202", 28, "beverages", "Coca-Cola", ["COKE 1L", "COCA COLA 1LTR", "CC 1L", "COKE 1LTR"]), | |
| ("pepsi_250ml", "Pepsi 250ml", "2202", 28, "beverages", "PepsiCo", ["PEPSI 250ML", "PEPSI COLD 250", "PP 250ML", "PEPSI 250", "PEPCI 250ML"]), | |
| ("pepsi_600ml", "Pepsi 600ml", "2202", 28, "beverages", "PepsiCo", ["PEPSI 600ML", "PEPSI COLD 600", "PP 600ML", "PEPSI 600"]), | |
| ("sprite_250ml", "Sprite 250ml", "2202", 28, "beverages", "Coca-Cola", ["SPRITE 250ML", "SPRT 250ML", "SPRITE 250", "SPT 250ML", "SPRITE COLD 250"]), | |
| ("sprite_500ml", "Sprite 500ml", "2202", 28, "beverages", "Coca-Cola", ["SPRITE 500ML", "SPRT 500ML", "SPRITE 500", "SPT 500ML"]), | |
| ("thums_up_300ml", "Thums Up 300ml", "2202", 28, "beverages", "Coca-Cola", ["THUMS UP 300ML", "THUMBS UP 300", "THMS UP 300ML", "TU 300ML", "THMSUP 300"]), | |
| ("thums_up_600ml", "Thums Up 600ml", "2202", 28, "beverages", "Coca-Cola", ["THUMS UP 600ML", "THUMBS UP 600", "THMS UP 600ML", "TU 600ML"]), | |
| ("limca_250ml", "Limca 250ml", "2202", 28, "beverages", "Coca-Cola", ["LIMCA 250ML", "LIMCA 250", "LMC 250ML", "LIMICA 250"]), | |
| ("limca_600ml", "Limca 600ml", "2202", 28, "beverages", "Coca-Cola", ["LIMCA 600ML", "LIMCA 600", "LMC 600ML"]), | |
| ("fanta_250ml", "Fanta Orange 250ml", "2202", 28, "beverages", "Coca-Cola", ["FANTA 250ML", "FNTA 250ML", "FANTA ORG 250", "FANTA 250"]), | |
| ("mountain_dew_600ml", "Mountain Dew 600ml", "2202", 28, "beverages", "PepsiCo", ["MOUNTAIN DEW 600ML", "MTN DEW 600", "MNTAIN DEW 600ML", "MT DEW 600"]), | |
| ("mirinda_600ml", "Mirinda Orange 600ml", "2202", 28, "beverages", "PepsiCo", ["MIRINDA 600ML", "MRINDA 600ML", "MRD 600ML", "MIRINDA ORG 600"]), | |
| ("7up_600ml", "7Up 600ml", "2202", 28, "beverages", "PepsiCo", ["7UP 600ML", "SEVEN UP 600ML", "7 UP 600", "7UP COLD 600"]), | |
| ("maaza_250ml", "Maaza Mango Drink 250ml", "2202", 12, "beverages", "Coca-Cola", ["MAAZA 250ML", "MAZA 250ML", "MAAZA MANGO 250", "MZA 250ML", "MAAZA 250"]), | |
| ("maaza_600ml", "Maaza Mango Drink 600ml", "2202", 12, "beverages", "Coca-Cola", ["MAAZA 600ML", "MAZA 600ML", "MAAZA MANGO 600", "MZA 600ML"]), | |
| ("frooti_200ml", "Frooti Fresh N Juicy Mango Drink 200ml", "2202", 12, "beverages", "Parle Agro", ["FROOTI 200ML", "FRUTI 200ML", "FROOTI MANGO 200", "FRT 200ML", "FROOTI 200"]), | |
| ("frooti_500ml", "Frooti Fresh N Juicy Mango Drink 500ml", "2202", 12, "beverages", "Parle Agro", ["FROOTI 500ML", "FRUTI 500ML", "FROOTI MANGO 500", "FRT 500ML"]), | |
| ("appy_fizz_250ml", "Appy Fizz Sparkling Apple Drink 250ml", "2202", 28, "beverages", "Parle Agro", ["APPY FIZZ 250ML", "APPY 250ML", "APP FIZZ 250", "APPI FIZZ 250ML"]), | |
| ("slice_mango_600ml", "Slice Mango Drink 600ml", "2202", 12, "beverages", "PepsiCo", ["SLICE 600ML", "SLICE MANGO 600", "SLC 600ML", "SLICE MNGO 600ML"]), | |
| ("minute_maid_1l", "Minute Maid Pulpy Orange 1L", "2009", 12, "beverages", "Coca-Cola", ["MINUTE MAID 1L", "MIN MAID 1LTR", "MM ORG 1L", "MINUTE MAID 1LTR"]), | |
| ("tropicana_orange_1l", "Tropicana Orange 100% Juice 1L", "2009", 12, "beverages", "PepsiCo", ["TROPICANA 1L", "TROP ORG 1LTR", "TRPCNA 1L", "TROPICANA ORANGE 1L"]), | |
| ("real_orange_1l", "Dabur Real Orange Juice 1L", "2009", 12, "beverages", "Dabur", ["REAL JUICE 1L", "DABUR REAL 1LTR", "REAL ORG 1L", "DBR REAL 1L"]), | |
| ("red_bull_250ml", "Red Bull Energy Drink 250ml", "2202", 28, "beverages", "Red Bull", ["RED BULL 250ML", "RD BULL 250", "REDBULL 250ML", "RB 250ML"]), | |
| ("kinley_water_1l", "Kinley Packaged Drinking Water 1L", "2201", 18, "beverages", "Coca-Cola", ["KINLEY 1L", "KINLEY WATER 1LTR", "KINLY 1L", "KINLEY 1LTR"]), | |
| ("bisleri_water_1l", "Bisleri Packaged Drinking Water 1L", "2201", 18, "beverages", "Bisleri", ["BISLERI 1L", "BISLERI WATER 1LTR", "BSLRI 1L", "BISLERI 1LTR"]), | |
| ("aquafina_1l", "Aquafina Drinking Water 1L", "2201", 18, "beverages", "PepsiCo", ["AQUAFINA 1L", "AQUAFINA WATER 1LTR", "AQUAFNA 1L", "AQFNA 1L"]), | |
| ("horlicks_500g", "Horlicks Classic Malt Drink 500g", "1901", 18, "beverages", "Unilever", ["HORLICKS 500G", "HRLCKS 500G", "HORLICKS MALT 500", "HORLX 500G", "HORLICKS 500GM"]), | |
| ("bournvita_500g", "Cadbury Bournvita 500g", "1901", 18, "beverages", "Cadbury", ["BOURNVITA 500G", "BRNVITA 500G", "BOURNVITA CHOC 500", "BNV 500G", "BRNVT 500G"]), | |
| ("complan_500g", "Complan Nutrition Drink 500g", "1901", 18, "beverages", "Heinz", ["COMPLAN 500G", "CMPLN 500G", "COMPLAN DRINK 500", "CMPLAN 500G"]), | |
| ("boost_500g", "Boost Sports Drink 500g", "1901", 18, "beverages", "Unilever", ["BOOST 500G", "BST 500G", "BOOST SPORTS 500", "BOOST DRINK 500G"]), | |
| ("milo_400g", "Nestle Milo 400g", "1901", 18, "beverages", "Nestle", ["MILO 400G", "NESTLE MILO 400", "MLO 400G", "MILO CHOC 400G"]), | |
| ("ovaltine_400g", "Ovaltine Classic 400g", "1901", 18, "beverages", "Associated British Foods",["OVALTINE 400G", "OVLTN 400G", "OVALTINE CLASSIC 400", "OVLTN 400G"]), | |
| ("brooke_bond_500g", "Brooke Bond Red Label Tea 500g", "0902", 5, "beverages", "Unilever", ["BROOKE BOND 500G", "BB RED LABEL 500", "RED LABEL 500G", "BRK BOND 500G", "RED LBL TEA 500"]), | |
| ("tata_tea_gold_500g", "Tata Tea Gold 500g", "0902", 5, "beverages", "Tata", ["TATA TEA 500G", "TATA GOLD TEA 500", "TTA TEA GLD 500G", "TATA TEA GOLD 500"]), | |
| ("tata_tea_gold_250g", "Tata Tea Gold 250g", "0902", 5, "beverages", "Tata", ["TATA TEA 250G", "TATA GOLD TEA 250", "TTA TEA GLD 250G"]), | |
| ("wagh_bakri_tea_500g", "Wagh Bakri Premium Tea 500g", "0902", 5, "beverages", "Wagh Bakri", ["WAGH BAKRI 500G", "WB TEA 500G", "WAGH BAKRI TEA 500", "WGH BKR 500G"]), | |
| ("nescafe_classic_100g", "Nescafe Classic Instant Coffee 100g", "2101", 5, "beverages", "Nestle", ["NESCAFE 100G", "NESCAFE CLASSIC 100G", "NSCFE CLS 100G", "NESCAFE INST 100"]), | |
| ("nescafe_classic_50g", "Nescafe Classic Instant Coffee 50g", "2101", 5, "beverages", "Nestle", ["NESCAFE 50G", "NESCAFE CLASSIC 50G", "NSCFE CLS 50G", "NESCAFE INST 50"]), | |
| ("bru_instant_50g", "Bru Instant Coffee 50g", "2101", 5, "beverages", "Unilever", ["BRU 50G", "BRU COFFEE 50G", "BRU INST 50G", "BRU 50GM"]), | |
| ("bru_gold_50g", "Bru Gold Premium Coffee 50g", "2101", 5, "beverages", "Unilever", ["BRU GOLD 50G", "BRU PREM 50G", "BRU GLD 50G", "BRU GOLD COFFEE 50"]), | |
| ("fortune_sunflower_1l", "Fortune Sunflower Oil 1L", "1512", 5, "beverages", "Adani Wilmar",["FORTUNE OIL 1L", "FRTN SFL OIL 1L", "FORTUNE SUNFL 1LTR", "FORTUNE 1L OIL"]), | |
| ("saffola_gold_1l", "Saffola Gold Pro Healthy Lifestyle Edible Oil 1L","1512",5, "beverages", "Marico", ["SAFFOLA GOLD 1L", "SFFLA GLD 1LTR", "SAFFOLA 1L", "SFF GOLD 1LTR"]), | |
| ("tata_salt_1kg", "Tata Salt 1kg", "2501", 0, "beverages", "Tata", ["TATA SALT 1KG", "TTA SLT 1KG", "TATA SALT 1K", "TT SALT 1KG", "TATA NMK 1KG"]), | |
| ] | |
| # fmt: on | |
| assert len(SKUS) == 200, f"Expected 200 SKUs, got {len(SKUS)}" | |
| def build_catalog() -> list: | |
| catalog = [] | |
| seen_ids = set() | |
| for row in SKUS: | |
| product_id, canonical_name, hsn_code, gst_rate, category, brand, aliases = row | |
| assert product_id not in seen_ids, f"Duplicate product_id: {product_id}" | |
| seen_ids.add(product_id) | |
| catalog.append( | |
| { | |
| "product_id": product_id, | |
| "canonical_name": canonical_name, | |
| "hsn_code": hsn_code, | |
| "gst_rate": gst_rate, | |
| "category": category, | |
| "brand": brand, | |
| "common_aliases": aliases, | |
| } | |
| ) | |
| return catalog | |
| if __name__ == "__main__": | |
| catalog = build_catalog() | |
| out_path = Path(__file__).parent.parent / "data" / "fmcg_catalog.json" | |
| out_path.parent.mkdir(parents=True, exist_ok=True) | |
| with open(out_path, "w", encoding="utf-8") as f: | |
| json.dump(catalog, f, indent=2, ensure_ascii=False) | |
| print(f"Written {len(catalog)} SKUs to {out_path}") | |
| # Summary | |
| from collections import Counter | |
| cats = Counter(e["category"] for e in catalog) | |
| gsts = Counter(e["gst_rate"] for e in catalog) | |
| print("\nBy category:") | |
| for cat, n in sorted(cats.items()): | |
| print(f" {cat:20s} {n}") | |
| print("\nBy GST rate:") | |
| for rate, n in sorted(gsts.items()): | |
| print(f" {rate:3d}% {n} SKUs") | |