From 75dd3eb3ce306c74bf8e7e5e25843b8e05fec0f5 Mon Sep 17 00:00:00 2001 From: sriram Date: Mon, 7 Sep 2026 15:45:25 +0530 Subject: [PATCH] Valid Barcode Generation --- .../enrichment/barcode/sources/off_bulk.py | 423 +++++ data/cache/off_brand_corpus/aachi.json | 223 +++ data/cache/off_brand_corpus/amul.json | 1642 +++++++++++++++++ data/cache/off_brand_corpus/anil.json | 106 ++ data/cache/off_brand_corpus/bikaji.json | 172 ++ data/cache/off_brand_corpus/cadbury.json | 1346 ++++++++++++++ data/cache/off_brand_corpus/cavinkare.json | 20 + data/cache/off_brand_corpus/coca_cola.json | 702 +++++++ .../off_brand_corpus/colgate_palmolive.json | 115 ++ data/cache/off_brand_corpus/dabur.json | 815 ++++++++ data/cache/off_brand_corpus/godrej.json | 401 ++++ data/cache/off_brand_corpus/grb.json | 77 + .../off_brand_corpus/hindustan_unilever.json | 7 + data/cache/off_brand_corpus/idhayam.json | 20 + data/cache/off_brand_corpus/kaleesuwari.json | 20 + data/cache/off_brand_corpus/lion_dates.json | 7 + data/cache/off_brand_corpus/manna.json | 78 + data/cache/off_brand_corpus/milky_mist.json | 7 + data/cache/off_brand_corpus/mtr.json | 296 +++ data/cache/off_brand_corpus/nestle.json | 889 +++++++++ data/cache/off_brand_corpus/own_products.json | 7 + data/cache/off_brand_corpus/p_g.json | 163 ++ data/cache/off_brand_corpus/pepsico.json | 583 ++++++ data/cache/off_brand_corpus/tata.json | 601 ++++++ .../archive/brand_catalog_aachi.json | 143 +- .../archive/brand_catalog_coca_cola.json | 253 ++- .../brand_catalog_colgate_palmolive.json | 154 +- .../archive/brand_catalog_dabur.json | 171 +- .../archive/brand_catalog_godrej.json | 128 +- .../archive/brand_catalog_manna.json | 82 +- .../archive/brand_catalog_mtr.json | 52 +- .../archive/brand_catalog_nestle.json | 473 ++++- .../archive/brand_catalog_p_and_g.json | 102 +- .../archive/brand_catalog_pepsico.json | 220 ++- data/seed_catalogs/brand_catalog_amul.json | 385 +++- data/seed_catalogs/brand_catalog_cadbury.json | 277 ++- data/seed_catalogs/brand_catalog_tata.json | 196 +- scripts/backfill_barcodes_from_off.py | 516 ++++++ scripts/fix_duplicate_image_ids.py | 260 ++- tests/test_off_bulk_backfill.py | 318 ++++ 40 files changed, 11893 insertions(+), 557 deletions(-) create mode 100644 app/services/enrichment/barcode/sources/off_bulk.py create mode 100644 data/cache/off_brand_corpus/aachi.json create mode 100644 data/cache/off_brand_corpus/amul.json create mode 100644 data/cache/off_brand_corpus/anil.json create mode 100644 data/cache/off_brand_corpus/bikaji.json create mode 100644 data/cache/off_brand_corpus/cadbury.json create mode 100644 data/cache/off_brand_corpus/cavinkare.json create mode 100644 data/cache/off_brand_corpus/coca_cola.json create mode 100644 data/cache/off_brand_corpus/colgate_palmolive.json create mode 100644 data/cache/off_brand_corpus/dabur.json create mode 100644 data/cache/off_brand_corpus/godrej.json create mode 100644 data/cache/off_brand_corpus/grb.json create mode 100644 data/cache/off_brand_corpus/hindustan_unilever.json create mode 100644 data/cache/off_brand_corpus/idhayam.json create mode 100644 data/cache/off_brand_corpus/kaleesuwari.json create mode 100644 data/cache/off_brand_corpus/lion_dates.json create mode 100644 data/cache/off_brand_corpus/manna.json create mode 100644 data/cache/off_brand_corpus/milky_mist.json create mode 100644 data/cache/off_brand_corpus/mtr.json create mode 100644 data/cache/off_brand_corpus/nestle.json create mode 100644 data/cache/off_brand_corpus/own_products.json create mode 100644 data/cache/off_brand_corpus/p_g.json create mode 100644 data/cache/off_brand_corpus/pepsico.json create mode 100644 data/cache/off_brand_corpus/tata.json create mode 100644 scripts/backfill_barcodes_from_off.py create mode 100644 tests/test_off_bulk_backfill.py diff --git a/app/services/enrichment/barcode/sources/off_bulk.py b/app/services/enrichment/barcode/sources/off_bulk.py new file mode 100644 index 0000000..429ecf1 --- /dev/null +++ b/app/services/enrichment/barcode/sources/off_bulk.py @@ -0,0 +1,423 @@ +""" +Bulk Open Food Facts brand-corpus fetch + offline name matching. + +WHY THIS EXISTS ALONGSIDE `open_food_facts.py` +---------------------------------------------- +`sources/open_food_facts.py` searches OFF **once per product** against +`/cgi/search.pl`. OFF rate-limits that endpoint to 10 requests/minute, which +makes a 600-product backfill a multi-hour job, and `stage.py` records that the +resulting cascade "misses far more often than it hits". That module is wired +into the live enrichment pipeline and is deliberately NOT touched by this file. + +This module inverts the problem: fetch a brand's **entire** OFF catalogue in one +or two requests from the Search-a-licious endpoint, cache it on disk, then match +every one of our products against that corpus offline. A whole-catalogue +backfill costs ~5 HTTP requests instead of ~600, and re-tuning the similarity +threshold costs zero network because the corpus is cached. + +Nothing here is imported by the running app - the only consumer is +`scripts/backfill_barcodes_from_off.py`. Everything except `fetch_brand_corpus` +is a pure function so it can be unit-tested without network or database. + +ENDPOINT NOTES (verified empirically, 2026-09) + GET https://search.openfoodfacts.org/search + ?q=brands:amul AND countries_tags:"en:india" + &fields=code,product_name,quantity,... + &page_size=250 + * The double quotes around "en:india" are REQUIRED. Without them the query + parses as a bare term and silently returns count=0 rather than erroring. + * page_size up to 1000 is accepted; 250 keeps responses small. + * `world.openfoodfacts.org` intermittently serves an HTML "Page temporarily + unavailable" page with a 200 status, so every response is content-type + checked before parsing. +""" +from __future__ import annotations + +import json +import logging +import os +import re +import time +from pathlib import Path +from typing import Any, Dict, Iterable, List, Optional, Sequence, Tuple + +import requests + +from app.infrastructure.settings import ( + BARCODE_COUNTRY_TAG, + BARCODE_LOOKUP_TIMEOUT_SECONDS, +) +from app.services.brand_registry import BRAND_ALIASES, resolve_parent_brand +from app.services.enrichment.barcode.matching import ( + has_conflicting_variant_terms, + name_similarity, +) +from app.services.enrichment.barcode.models import BarcodeType +from app.services.enrichment.barcode.retry import with_retry +from app.services.enrichment.barcode.validators import ( + classify_barcode_type, + to_ean13, + validate_barcode, +) +from app.services.quantity_utils import quantities_match + +logger = logging.getLogger(__name__) + +SEARCH_URL = "https://search.openfoodfacts.org/search" + +# OFF's usage policy requires a contactable custom User-Agent; requests sent +# with the default python-requests agent are treated as anonymous crawling. +USER_AGENT = "BrandCatalogRAG/1.0 (suriya@tenext.in)" + +FIELDS = "code,product_name,product_name_en,brands,quantity,countries_tags" +PAGE_SIZE = 250 +MAX_PAGES = 10 # 2500 products per brand is far beyond any real brand +PAUSE_SECONDS = 2.0 # search endpoints are the strictly-limited ones + +# backend/app/services/enrichment/barcode/sources/off_bulk.py -> backend/ +_BACKEND_DIR = Path(__file__).resolve().parents[5] +CACHE_DIR = _BACKEND_DIR / "data" / "cache" / "off_brand_corpus" + +# Pack sizes embedded in a product name ("Marie Gold 250g", "Butter 1L"). +# Mirrors the unit list in scripts/backfill_nutrition_from_barcodes.py, widened +# with the count-based units this catalog also uses. +_SIZE_RE = re.compile( + r"\b\d+(?:[.,]\d+)?\s*" + r"(?:kgs|kg|gms|gm|grams|gram|mg|g|mls|ml|litres|litre|ltrs|ltr|l|" + r"pcs|pc|pieces|piece|nos|no)\b", + re.IGNORECASE, +) + +# "(20)", "[6]" - pack-count noise seen in OFF titles such as +# "Brit 50-50 maska chaska 40g (20)". +_PAREN_RE = re.compile(r"[\(\[][^\)\]]*[\)\]]") + +_NON_ALNUM_RE = re.compile(r"[^a-z0-9]+") + +# GS1 prefix for barcodes issued in India. Every correct match observed in +# testing starts with it; the false ones were Mondelez EU codes (7622...) and a +# Japanese Maggi (4987...), i.e. the same product line sold in another market +# with a different pack and a different code. +INDIA_GS1_PREFIX = "890" + +# Variant words that `matching.VARIANT_DISTINGUISHING_TERMS` does not carry but +# which mark a different retail SKU in this catalog. Kept local rather than +# added to matching.py, which the live enrichment pipeline shares. +EXTRA_VARIANT_TERMS = { + "minis", "mini", "plus", "max", "lite", "duo", "multipack", "sugarfree", +} + +# A token shared by this fraction of a brand's non-prefixed aliases is treated +# as part of the brand's own name rather than a product name. For Hindustan +# Unilever every alias is "hul ", so "hul" clears the bar and is +# stripped, while "lux"/"dove" appear once each and are preserved. +_BRAND_TOKEN_SHARE = 0.6 + + +# --------------------------------------------------------------------------- +# Fetch +# --------------------------------------------------------------------------- + +def _cache_path(slug: str, cache_dir: Optional[Path] = None) -> Path: + return (cache_dir or CACHE_DIR) / f"{slug}.json" + + +@with_retry(max_attempts=3, min_wait=2.0, max_wait=10.0) +def _get_page(brand: str, country: Optional[str], page: int) -> Dict[str, Any]: + """One page of OFF search results. Raises on transport errors (retried by + the decorator); returns an empty result dict for any response that is not + parseable JSON, which is how the HTML "temporarily unavailable" page and + any future error page are absorbed without killing the run.""" + query = f"brands:{brand}" + if country: + # The quotes are load-bearing - see the module docstring. + query += f' AND countries_tags:"en:{country}"' + + resp = requests.get( + SEARCH_URL, + params={"q": query, "fields": FIELDS, "page_size": PAGE_SIZE, "page": page}, + headers={"User-Agent": USER_AGENT, "Accept": "application/json"}, + timeout=BARCODE_LOOKUP_TIMEOUT_SECONDS, + ) + + if resp.status_code != 200: + logger.warning("OFF search returned HTTP %s for brand %r page %s", + resp.status_code, brand, page) + return {} + if "json" not in (resp.headers.get("content-type") or "").lower(): + logger.warning("OFF search returned non-JSON (%s) for brand %r - " + "the service is probably serving an error page", + resp.headers.get("content-type"), brand) + return {} + try: + payload = resp.json() + except ValueError as e: + logger.warning("OFF search returned unparseable JSON for brand %r: %s", brand, e) + return {} + return payload if isinstance(payload, dict) else {} + + +def fetch_brand_corpus(brand: str, + country: Optional[str] = None, + refresh: bool = False, + cache_dir: Optional[Path] = None) -> List[Dict[str, Any]]: + """Every OFF product for `brand`, from disk cache unless `refresh`. + + Hits with no usable product name are dropped here rather than at match time + (6 of 146 Amul hits, 1 of 233 Britannia hits) - a nameless hit can never + clear a name-similarity threshold, so carrying it forward only inflates the + corpus. Returns [] rather than raising when OFF is unreachable, so one bad + brand does not abort a multi-brand backfill. + """ + country = BARCODE_COUNTRY_TAG if country is None else (country or None) + slug = re.sub(r"[^a-z0-9]+", "_", brand.lower()).strip("_") + path = _cache_path(slug, cache_dir) + + if not refresh and path.exists(): + try: + cached = json.loads(path.read_text(encoding="utf-8")) + hits = cached.get("hits") or [] + logger.info(" OFF corpus for %r: %d product(s) (cached %s)", + brand, len(hits), cached.get("fetched_at_human", "?")) + return hits + except Exception as e: # noqa: BLE001 - a corrupt cache must not be fatal + logger.warning(" Ignoring unreadable OFF cache %s: %s", path.name, e) + + hits: List[Dict[str, Any]] = [] + page = 1 + while page <= MAX_PAGES: + if page > 1: + time.sleep(PAUSE_SECONDS) + payload = _get_page(brand, country, page) + batch = payload.get("hits") or [] + hits.extend(h for h in batch if isinstance(h, dict) and (h.get("product_name") or "").strip()) + page_count = payload.get("page_count") or 0 + if page >= page_count or not batch: + break + page += 1 + + path.parent.mkdir(parents=True, exist_ok=True) + tmp = path.with_suffix(".json.tmp") + tmp.write_text(json.dumps({ + "brand": brand, + "country": country, + "fetched_at": time.time(), + "fetched_at_human": time.strftime("%Y-%m-%d %H:%M:%S"), + "hits": hits, + }, indent=2, ensure_ascii=False), encoding="utf-8") + os.replace(tmp, path) + + logger.info(" OFF corpus for %r: %d usable product(s) fetched", brand, len(hits)) + return hits + + +# --------------------------------------------------------------------------- +# Normalisation +# --------------------------------------------------------------------------- + +def brand_tokens(brand: str) -> set: + """Tokens that name the BRAND rather than the product, and so must be + stripped from both sides before names are compared. + + Includes the brand as given, its canonical parent, and any token shared by + most of the brand's non-prefixed aliases. That last rule is what recovers + "hul": every Hindustan Unilever alias is "hul ", so "hul" is + brand noise, while "lux" and "dove" each appear once and survive as real + product names. Without it our mangled "Hindustan Unilever Hul Lux" could + never match OFF's "Lux". + """ + canonical = resolve_parent_brand(brand) + canonical_l = canonical.lower().strip() + is_own_parent = canonical_l == brand.lower().strip() + + # Only inherit anything from the canonical parent when the brand IS that + # parent. Several brands are filed under an unrelated parent for storage + # reasons - Tata's catalogue lives in brand_hindustan_unilever - and + # treating that parent's name as brand noise would strip real words out of + # Tata product names. + tokens = set(_tokenize(brand)) + if is_own_parent: + tokens |= set(_tokenize(canonical)) + + non_prefixed = [ + a for a, parent in BRAND_ALIASES.items() + if parent.lower().strip() == canonical_l and not a.startswith(canonical_l) + ] if is_own_parent else [] + if non_prefixed: + counts: Dict[str, int] = {} + for alias in non_prefixed: + for tok in set(_tokenize(alias)): + counts[tok] = counts.get(tok, 0) + 1 + threshold = len(non_prefixed) * _BRAND_TOKEN_SHARE + tokens |= {tok for tok, n in counts.items() if n >= threshold} + + return {t for t in tokens if t} + + +def _tokenize(text: Optional[str]) -> List[str]: + return [t for t in _NON_ALNUM_RE.sub(" ", (text or "").lower()).split() if t] + + +def strip_sizes(text: Optional[str]) -> str: + """Remove pack sizes and pack-count parentheticals from a product name.""" + cleaned = _PAREN_RE.sub(" ", (text or "")) + cleaned = _SIZE_RE.sub(" ", cleaned) + return re.sub(r"\s+", " ", cleaned).strip() + + +def normalize_for_match(text: Optional[str], tokens_to_drop: Optional[Iterable[str]] = None) -> str: + """Lowercased, size-free, brand-free comparison key. + + Returns "" when nothing survives, and callers MUST treat that as "no + product identity" rather than falling back to the brand-bearing form. The + catalog contains rows titled only by their brand and a size - "Amul 90g", + "Amul 1kg" - and OFF contains an equally anonymous entry named just "Amul". + With a fallback those two normalise to "amul" and match at 1.000, which + confidently stamps a real barcode onto six products that have no identity + in common beyond the brand. An empty key is the correct answer there. + """ + base = _tokenize(strip_sizes(text)) + if not base: + return "" + drop = {t.lower() for t in (tokens_to_drop or ())} + return " ".join(t for t in base if t not in drop) + + +# --------------------------------------------------------------------------- +# Barcode acceptance +# --------------------------------------------------------------------------- + +def accept_barcode(raw: Optional[str]) -> Optional[Tuple[str, str, Optional[str]]]: + """Enforce the "valid 8 or 13 digit code" rule. + + Returns (code, barcode_type, source_upc) or None. A checksum-valid 12-digit + UPC-A is widened to its EAN-13 form (a leading zero contributes nothing to + the GTIN checksum, so the check digit is unchanged and still valid), and the + original 12-digit form is handed back as `source_upc` so the catalog's `upc` + field can record where the code came from. GTIN-14 is a shipping-carton + code, not a retail one, and is rejected outright. + """ + code = validate_barcode(raw) + if not code: + return None + if len(code) == 12: + widened = to_ean13(code) + if not widened or not validate_barcode(widened): + return None + return widened, BarcodeType.EAN13.value, code + if len(code) in (8, 13): + return code, classify_barcode_type(code).value, None + return None + + +# --------------------------------------------------------------------------- +# Matching +# --------------------------------------------------------------------------- + +class Candidate: + """One scored OFF hit for one of our title groups.""" + + __slots__ = ("barcode", "barcode_type", "source_upc", "off_name", "off_qty", + "score", "size_bonus") + + def __init__(self, barcode: str, barcode_type: str, source_upc: Optional[str], + off_name: str, off_qty: Optional[str], score: float, size_bonus: int): + self.barcode = barcode + self.barcode_type = barcode_type + self.source_upc = source_upc + self.off_name = off_name + self.off_qty = off_qty + self.score = score + self.size_bonus = size_bonus + + @property + def rank(self) -> tuple: + """Sort key, best first. Size agreement outranks a marginally better + name score, and the barcode breaks ties so a rerun over an unchanged + corpus always picks the same product.""" + return (-self.size_bonus, -self.score, self.barcode) + + def __repr__(self) -> str: # pragma: no cover - debugging aid + return f"" + + +def symmetric_similarity(clean_candidate: str, clean_target: str) -> float: + """`name_similarity` in both directions, worst case wins. + + `name_similarity` divides the token overlap by the TARGET's token count + only, so an OFF name that is a superset of ours scores near-perfectly. That + asymmetry is not theoretical - measured against the live corpus it accepted + "Butter milk amul" for our "Amul Butter" at 0.882, and "Dairy Milk Silk + Minis" for "Dairy Milk Silk" at 0.933. Scoring both directions and taking + the minimum drops those to 0.418 and 0.783 while leaving genuine matches + ("Marie Gold" / "Marie Gold") at 1.000, because a true match is symmetric + by construction. + """ + return min( + name_similarity(clean_candidate, clean_target), + name_similarity(clean_target, clean_candidate), + ) + + +def has_extra_variant_conflict(candidate_title: str, target_title: str) -> bool: + """The `has_conflicting_variant_terms` rule over `EXTRA_VARIANT_TERMS`.""" + cand = set(_tokenize(candidate_title)) + target = set(_tokenize(target_title)) + return bool((cand & EXTRA_VARIANT_TERMS) - target) + + +def score_candidates(off_hits: Sequence[Dict[str, Any]], + our_title: str, + our_sizes: Sequence[str], + tokens_to_drop: Iterable[str], + review_min: float, + require_india_prefix: bool = True) -> List[Candidate]: + """Every acceptable OFF hit for one title group, best first. + + Deliberately does NOT use `matching.is_match()`: its size gate returns False + whenever either side's size is blank (matching.py:85-86), and 57 of 146 Amul + hits carry `quantity: null`. That gate would reject the exact case this + backfill exists to handle - our "Britannia Marie Gold 250g" against OFF's + "Britannia Marie Gold". Size is used as a ranking bonus here instead of a + veto. `has_conflicting_variant_terms` IS still applied, because a + "Sugar Free" or "Family Pack" hit is a genuinely different retail product. + """ + drop = set(tokens_to_drop) + clean_target = normalize_for_match(our_title, drop) + if not clean_target: + return [] + + out: List[Candidate] = [] + for hit in off_hits: + off_name = (hit.get("product_name") or hit.get("product_name_en") or "").strip() + if not off_name: + continue + if has_conflicting_variant_terms(off_name, our_title): + continue + if has_extra_variant_conflict(off_name, our_title): + continue + + accepted = accept_barcode(hit.get("code")) + if not accepted: + continue + code, btype, source_upc = accepted + if require_india_prefix and not code.startswith(INDIA_GS1_PREFIX): + continue + + clean_cand = normalize_for_match(off_name, drop) + if not clean_cand: + continue + + score = symmetric_similarity(clean_cand, clean_target) + if score < review_min: + continue + + off_qty = (hit.get("quantity") or "").strip() or None + size_bonus = 1 if off_qty and any( + quantities_match(off_qty, s, tolerance=0.03) for s in our_sizes if s + ) else 0 + + out.append(Candidate(code, btype, source_upc, off_name, off_qty, score, size_bonus)) + + out.sort(key=lambda c: c.rank) + return out diff --git a/data/cache/off_brand_corpus/aachi.json b/data/cache/off_brand_corpus/aachi.json new file mode 100644 index 0000000..2271e5a --- /dev/null +++ b/data/cache/off_brand_corpus/aachi.json @@ -0,0 +1,223 @@ +{ + "brand": "aachi", + "country": "india", + "fetched_at": 1788773752.0652864, + "fetched_at_human": "2026-09-07 15:05:52", + "hits": [ + { + "code": "8904209302137", + "brands": [ + "aachi" + ], + "quantity": "aachi", + "countries_tags": [ + "en:india" + ], + "product_name": "aachi", + "product_name_en": "aachi" + }, + { + "code": "8904209305015", + "brands": [ + "Aachi" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Gram flour", + "product_name_en": "Gram flour" + }, + { + "code": "8904209322067", + "brands": [ + "Aachi" + ], + "quantity": "7g", + "countries_tags": [ + "en:india" + ], + "product_name": "Aachi Mixed Masala Powder", + "product_name_en": "Aachi Mixed Masala Powder" + }, + { + "code": "8906021128735", + "brands": [ + "Aachi" + ], + "quantity": "300g", + "countries_tags": [ + "en:france", + "en:india" + ], + "product_name": "Mango Ginger Pickle", + "product_name_en": "Mango Ginger Pickle" + }, + { + "code": "0944029303776", + "brands": [ + "Aachi" + ], + "quantity": "10 pieces", + "countries_tags": [ + "en:india" + ], + "product_name": "Aachi lime pikle", + "product_name_en": "Aachi lime pikle" + }, + { + "code": "8906021129961", + "brands": [ + "aachi" + ], + "quantity": "1kg", + "countries_tags": [ + "en:india" + ], + "product_name": "lemon pickle", + "product_name_en": "lemon pickle" + }, + { + "code": "8904209318190", + "brands": [ + "aachi" + ], + "quantity": "310g", + "countries_tags": [ + "en:india" + ], + "product_name": "pani puri", + "product_name_en": "pani puri" + }, + { + "code": "8904209303790", + "brands": [ + "Aachi" + ], + "quantity": "200g", + "countries_tags": [ + "en:india" + ], + "product_name": "aachi mango thokku pickle", + "product_name_en": "aachi mango thokku pickle" + }, + { + "code": "8906021122436", + "brands": [ + "Aachi" + ], + "quantity": "8 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Black Pepper Powder", + "product_name_en": "Black Pepper Powder" + }, + { + "code": "8904209304087", + "brands": [ + "Aachi" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Chilli Powder", + "product_name_en": "Chilli Powder" + }, + { + "code": "8906021120425", + "brands": [ + "Aachi" + ], + "quantity": "100g", + "countries_tags": [ + "en:india" + ], + "product_name": "Aachi Chicken Kabab / 65 Masala Powder", + "product_name_en": "Aachi Chicken Kabab / 65 Masala Powder" + }, + { + "code": "8906021120470", + "brands": [ + "Aachi" + ], + "quantity": "100g", + "countries_tags": [ + "en:france", + "en:india" + ], + "product_name": "Aachi chicken masala", + "product_name_en": "Aachi chicken masala" + }, + { + "code": "8906021122290", + "brands": [ + "Aachi" + ], + "quantity": "100g", + "countries_tags": [ + "en:india" + ], + "product_name": "Aachi Mutton Masala", + "product_name_en": "Aachi Mutton Masala" + }, + { + "code": "8906021120135", + "brands": [ + "Aachi" + ], + "quantity": "50 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Compounded Asafoetida Powder", + "product_name_en": "Compounded Asafoetida Powder" + }, + { + "code": "8906021127981", + "brands": [ + "Aachi" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Aachi Badam Drink", + "product_name_en": "Aachi Badam Drink" + }, + { + "code": "8906021123266", + "brands": [ + "Aachi" + ], + "quantity": "100g", + "countries_tags": [ + "en:india" + ], + "product_name": "Mixed Fruit Jam", + "product_name_en": "Mixed Fruit Jam" + }, + { + "code": "8906021120272", + "brands": [ + "Aachi" + ], + "quantity": "50 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Aachi Biryani Masala", + "product_name_en": "Aachi Biryani Masala" + }, + { + "code": "8906021129992", + "brands": [ + "Aachi" + ], + "quantity": "1kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Aachi Mixed Vegetable Pickle", + "product_name_en": "Aachi Mixed Vegetable Pickle" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/amul.json b/data/cache/off_brand_corpus/amul.json new file mode 100644 index 0000000..e360a30 --- /dev/null +++ b/data/cache/off_brand_corpus/amul.json @@ -0,0 +1,1642 @@ +{ + "brand": "amul", + "country": "india", + "fetched_at": 1788767461.9774995, + "fetched_at_human": "2026-09-07 13:21:01", + "hits": [ + { + "code": "8901262202015", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Masala Buttermilk", + "product_name_en": "Amul Masala Buttermilk" + }, + { + "code": "8901262173506", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Ice Cream", + "product_name_en": "Amul Ice Cream" + }, + { + "code": "8901262130363", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Pro Plus", + "product_name_en": "Amul Pro Plus" + }, + { + "code": "8901262150064", + "brands": [ + "Amul" + ], + "quantity": "1L", + "countries_tags": [ + "en:france", + "en:india" + ], + "product_name": "Amul Taaza", + "product_name_en": "Amul Taaza" + }, + { + "code": "8901262090469", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "T-Special Premium Dairy Whitener", + "product_name_en": "T-Special Premium Dairy Whitener" + }, + { + "code": "8901262202046", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Lassi", + "product_name_en": "Amul Lassi" + }, + { + "code": "8901262152945", + "brands": [ + "Amul" + ], + "quantity": "250 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Protein Lassi - Mango flavour", + "product_name_en": "Protein Lassi - Mango flavour" + }, + { + "code": "8901262201124", + "brands": [ + "Amul" + ], + "quantity": "85 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Masti Dahi", + "product_name_en": "Amul Masti Dahi" + }, + { + "code": "8901262260121", + "brands": [ + "Amul taaza" + ], + "quantity": "500 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Toned Milk", + "product_name_en": "Toned Milk" + }, + { + "code": "8901262300612", + "brands": [ + "amul" + ], + "quantity": "67g", + "countries_tags": [ + "en:india" + ], + "product_name": "Tender Coconut", + "product_name_en": "Tender Coconut" + }, + { + "code": "8901262071703", + "brands": [ + "Amul" + ], + "quantity": "125", + "countries_tags": [ + "en:india" + ], + "product_name": "Twilight Tryst Single Origin Dark Chocolate", + "product_name_en": "Twilight Tryst Single Origin Dark Chocolate" + }, + { + "code": "8901262151269", + "brands": [ + "Amul" + ], + "quantity": "140ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Moti", + "product_name_en": "Amul Moti" + }, + { + "code": "8901262300117", + "brands": [ + "Amul" + ], + "quantity": "540gm", + "countries_tags": [ + "en:india" + ], + "product_name": "Chocolate Crackle Ice cream", + "product_name_en": "Chocolate Crackle Ice cream" + }, + { + "code": "8901262150217", + "brands": [ + "Amul" + ], + "quantity": "500ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Taaza", + "product_name_en": "Taaza" + }, + { + "code": "8901262071680", + "brands": [ + "Amul" + ], + "quantity": "150g", + "countries_tags": [ + "en:india" + ], + "product_name": "Hazelnut Chocolate", + "product_name_en": "Hazelnut Chocolate" + }, + { + "code": "8901262200004", + "brands": [ + "Amul" + ], + "quantity": "500ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Butter milk amul", + "product_name_en": "Butter milk amul" + }, + { + "code": "8901262175074", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul nutty ice ceam" + }, + { + "code": "8901262200271", + "brands": [ + "Amul" + ], + "quantity": "200g", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul dahi", + "product_name_en": "Amul dahi" + }, + { + "code": "8901262080033", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amulspray Infant Milk Food", + "product_name_en": "Amulspray Infant Milk Food" + }, + { + "code": "8901262172400", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Two In One. Strawberry And Vanilla", + "product_name_en": "Two In One. Strawberry And Vanilla" + }, + { + "code": "8901262030663", + "brands": [ + "amul" + ], + "quantity": "200 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "amul cow ghee", + "product_name_en": "amul cow ghee" + }, + { + "code": "8901262010023", + "brands": [ + "Amul" + ], + "quantity": "250", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul pasteurised butter", + "product_name_en": "Amul pasteurised butter" + }, + { + "code": "8901262070058", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Fruit 'N" Nut", + "product_name_en": "Amul Fruit 'N" Nut" + }, + { + "code": "8901262010320", + "brands": [ + "AMUL" + ], + "quantity": "200gm", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul", + "product_name_en": "Amul" + }, + { + "code": "8901262180146", + "brands": [ + "Amul" + ], + "quantity": "1kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Malai Paneer", + "product_name_en": "Amul Malai Paneer" + }, + { + "code": "8901262020015", + "brands": [ + "Amul" + ], + "quantity": "200 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cheese slices", + "product_name_en": "Cheese slices" + }, + { + "code": "8901262153348", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Protein Lassi - Rose Flavour", + "product_name_en": "Protein Lassi - Rose Flavour" + }, + { + "code": "8901262172363", + "brands": [ + "Amul" + ], + "quantity": "2L", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Ice Cream", + "product_name_en": "Amul Ice Cream" + }, + { + "code": "8901262050173", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Khoa", + "product_name_en": "Khoa" + }, + { + "code": "9001962200942", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Kool Badam Flavour", + "product_name_en": "Kool Badam Flavour" + }, + { + "code": "8901262151429", + "brands": [ + "Amul" + ], + "quantity": "200 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul kool Cofe", + "product_name_en": "Amul kool Cofe" + }, + { + "code": "8901262171557", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Chocolate family pack", + "product_name_en": "Chocolate family pack" + }, + { + "code": "2000000136641", + "brands": [ + "Amul" + ], + "quantity": "100 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Cheese Slices", + "product_name_en": "Amul Cheese Slices" + }, + { + "code": "1948167800646", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Prolife probiotic buttermilk", + "product_name_en": "Prolife probiotic buttermilk" + }, + { + "code": "8901262153331", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Protein Blueberry Shake", + "product_name_en": "Amul Protein Blueberry Shake" + }, + { + "code": "8901262153423", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "High Protein Milk", + "product_name_en": "High Protein Milk" + }, + { + "code": "8901262110266", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Whey Protein", + "product_name_en": "Whey Protein" + }, + { + "code": "8901262152303", + "brands": [ + "Amul" + ], + "quantity": "200ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Camel Milk", + "product_name_en": "Camel Milk" + }, + { + "code": "8901262174404", + "brands": [ + "Amul" + ], + "quantity": "125 ml / 75 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Sundae Gudbud", + "product_name_en": "Sundae Gudbud" + }, + { + "code": "8901262178068", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Choco Almond N' Kesar Badam Double Sundae", + "product_name_en": "Choco Almond N' Kesar Badam Double Sundae" + }, + { + "code": "8901262140065", + "brands": [ + "Amul" + ], + "quantity": "500 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Lite Bread Spread", + "product_name_en": "Lite Bread Spread" + }, + { + "code": "8901262071048", + "brands": [ + "Amul" + ], + "quantity": "150g", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Sugar free chocolate", + "product_name_en": "Amul Sugar free chocolate" + }, + { + "code": "3948262152334", + "brands": [ + "Amul" + ], + "quantity": "180ml", + "countries_tags": [ + "en:india" + ], + "product_name": "KOOL ROYAL ELAICHI", + "product_name_en": "KOOL ROYAL ELAICHI" + }, + { + "code": "8901262260091", + "brands": [ + "Amul" + ], + "quantity": "1L", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Taaza", + "product_name_en": "Amul Taaza" + }, + { + "code": "8901262150095", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Gold Milk", + "product_name_en": "Amul Gold Milk" + }, + { + "code": "8901262080118", + "brands": [ + "Amul" + ], + "quantity": "200g", + "countries_tags": [ + "en:india" + ], + "product_name": "Amulspray Infant Milk Food", + "product_name_en": "Amulspray Infant Milk Food" + }, + { + "code": "8901262152136", + "brands": [ + "Amul" + ], + "quantity": "200ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Milk Shake Double Chocolate", + "product_name_en": "Milk Shake Double Chocolate" + }, + { + "code": "8901262030601", + "brands": [ + "Amul" + ], + "quantity": "1 kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul cow ghee", + "product_name_en": "Amul cow ghee" + }, + { + "code": "8901262070973", + "brands": [ + "Amul" + ], + "quantity": "125 g", + "countries_tags": [ + "en:india", + "en:united-states" + ], + "product_name": "Venezuela Ebony Twist", + "product_name_en": "Venezuela Ebony Twist" + }, + { + "code": "8901262071017", + "brands": [ + "Amul" + ], + "quantity": "125g", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Belgian chocolate", + "product_name_en": "Amul Belgian chocolate" + }, + { + "code": "8901262260374", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Cow Milk", + "product_name_en": "Amul Cow Milk" + }, + { + "code": "8901262173490", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Vanilla ice cream", + "product_name_en": "Vanilla ice cream" + }, + { + "code": "8901262152952", + "brands": [ + "Amul" + ], + "quantity": "200 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Protein Buttermilk", + "product_name_en": "Protein Buttermilk" + }, + { + "code": "8901262172493", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Chocochips Icecream" + }, + { + "code": "8901262202428", + "brands": [ + "Amul" + ], + "quantity": "1 kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Curd", + "product_name_en": "Curd" + }, + { + "code": "8901262260114", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Gold Milky Milk", + "product_name_en": "Gold Milky Milk" + }, + { + "code": "8901262201995", + "brands": [ + "Amul" + ], + "quantity": "310ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Buttermilk", + "product_name_en": "Amul Buttermilk" + }, + { + "code": "8901262150378", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "slim 'n' trim Skimmed Milk", + "product_name_en": "slim 'n' trim Skimmed Milk" + }, + { + "code": "8901262152341", + "brands": [ + "Amul" + ], + "quantity": "180ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Kool Premium Kesar Flavour", + "product_name_en": "Amul Kool Premium Kesar Flavour" + }, + { + "code": "8901262178198", + "brands": [ + "Amul" + ], + "quantity": "80 ml / 55 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Epic Choco Almond with Beligian Chocolate", + "product_name_en": "Epic Choco Almond with Beligian Chocolate" + }, + { + "code": "8901262040051", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Shrikhand", + "product_name_en": "Shrikhand" + }, + { + "code": "8901262202299", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul High Protein", + "product_name_en": "Amul High Protein" + }, + { + "code": "8901262020671", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Cheese Sauce Green Chutney", + "product_name_en": "Cheese Sauce Green Chutney" + }, + { + "code": "8901262178075", + "brands": [ + "Amul" + ], + "quantity": "1 l", + "countries_tags": [ + "en:india" + ], + "product_name": "Chocolate Magic Sundae", + "product_name_en": "Chocolate Magic Sundae" + }, + { + "code": "8901262153355", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Kool", + "product_name_en": "Amul Kool" + }, + { + "code": "8901262152334", + "brands": [ + "Amul", + "Kool" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Kool Royal Elaichi Flavour", + "product_name_en": "Amul Kool Royal Elaichi Flavour" + }, + { + "code": "8901262080279", + "brands": [ + "Amul" + ], + "quantity": "21g", + "countries_tags": [ + "en:india" + ], + "product_name": "Amulspray", + "product_name_en": "Amulspray" + }, + { + "code": "8901262151863", + "brands": [ + "Amul" + ], + "quantity": "250 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Fresh Cream", + "product_name_en": "Amul Fresh Cream" + }, + { + "code": "8901262260947", + "brands": [ + "Amul" + ], + "quantity": "500ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Buffalo Milk A2", + "product_name_en": "Buffalo Milk A2" + }, + { + "code": "8901262200189", + "brands": [ + "Amul" + ], + "quantity": "200mL", + "countries_tags": [ + "en:india" + ], + "product_name": "Lassi", + "product_name_en": "Lassi" + }, + { + "code": "8901262174244", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Vanilla Gold", + "product_name_en": "Amul Vanilla Gold" + }, + { + "code": "0941402151368", + "brands": [ + "Amul" + ], + "quantity": "450ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Moti UHT Treated Homogenized Toned Milk", + "product_name_en": "Moti UHT Treated Homogenized Toned Milk" + }, + { + "code": "8901262150088", + "brands": [ + "Amul" + ], + "quantity": "200 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Taaza", + "product_name_en": "Amul Taaza" + }, + { + "code": "8901262176552", + "brands": [ + "Amul" + ], + "quantity": "60ml / 48 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Punjabi Kulfi Mawa Elaichi", + "product_name_en": "Punjabi Kulfi Mawa Elaichi" + }, + { + "code": "8901262176477", + "brands": [ + "Amul" + ], + "quantity": "60ml/50g", + "countries_tags": [ + "en:india" + ], + "product_name": "Mawa Malai Kulfi", + "product_name_en": "Mawa Malai Kulfi" + }, + { + "code": "8901262175845", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Icecream" + }, + { + "code": "8901262200196", + "brands": [ + "Amul" + ], + "quantity": "200mL", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Masti Spiced Buttermilk", + "product_name_en": "Amul Masti Spiced Buttermilk" + }, + { + "code": "8901262151344", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Badam Shakers" + }, + { + "code": "8901262180030", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Paneer", + "product_name_en": "Paneer" + }, + { + "code": "8901262090322", + "brands": [ + "Amul" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "Amulya dairy whitner", + "product_name_en": "Amulya dairy whitner" + }, + { + "code": "8901262151375", + "brands": [ + "Amul" + ], + "quantity": "1", + "countries_tags": [ + "en:india" + ], + "product_name": "Cool Kesar", + "product_name_en": "Cool Kesar" + }, + { + "code": "8901262020299", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Pure Milk Cheese", + "product_name_en": "Pure Milk Cheese" + }, + { + "code": "8901262200677", + "brands": [ + "Amul" + ], + "quantity": "1 kg", + "countries_tags": [ + "en:india" + ], + "product_name": "amul masti dahi", + "product_name_en": "amul masti dahi" + }, + { + "code": "8901262071109", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Super Fruit", + "product_name_en": "Super Fruit" + }, + { + "code": "8901262150118", + "brands": [ + "Amul" + ], + "quantity": "1L", + "countries_tags": [ + "en:india" + ], + "product_name": "Fresh Cream", + "product_name_en": "Fresh Cream" + }, + { + "code": "8901262222471", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Instant Mashed Potato", + "product_name_en": "Instant Mashed Potato" + }, + { + "code": "8901262070539", + "brands": [ + "Amul" + ], + "quantity": "150g", + "countries_tags": [ + "en:india" + ], + "product_name": "FRUIT N' NUT Dark Chocolate", + "product_name_en": "FRUIT N' NUT Dark Chocolate" + }, + { + "code": "8901262221382", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Butter Nankhatai", + "product_name_en": "Butter Nankhatai" + }, + { + "code": "0041102177191", + "brands": [ + "Amul" + ], + "quantity": "150g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cassatta", + "product_name_en": "Cassatta" + }, + { + "code": "8901262150989", + "brands": [ + "Amul" + ], + "quantity": "1 litre", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Gold", + "product_name_en": "Amul Gold" + }, + { + "code": "8901262200028", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Dahi", + "product_name_en": "Dahi" + }, + { + "code": "8901262031059", + "brands": [ + "Amul ghee" + ], + "quantity": "500 gm", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul ghee", + "product_name_en": "Amul ghee" + }, + { + "code": "8901262152211", + "brands": [ + "Amul" + ], + "quantity": "2", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Kool Kesar Flv - 180Ml", + "product_name_en": "Amul Kool Kesar Flv - 180Ml" + }, + { + "code": "8901262010511", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Peanut spread" + }, + { + "code": "8901262151368", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Moti", + "product_name_en": "Moti" + }, + { + "code": "8901262010344", + "brands": [ + "Amul" + ], + "quantity": "100g", + "countries_tags": [ + "en:india" + ], + "product_name": "Garlic & Herbs Buttery Spread", + "product_name_en": "Garlic & Herbs Buttery Spread" + }, + { + "code": "8901262152228", + "brands": [ + "Amul" + ], + "quantity": "180 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul kool elaichi flavour", + "product_name_en": "Amul kool elaichi flavour" + }, + { + "code": "8901262030243", + "brands": [ + "Amul" + ], + "quantity": "1L", + "countries_tags": [ + "en:india", + "en:united-states" + ], + "product_name": "Pure cow ghee", + "product_name_en": "Pure cow ghee" + }, + { + "code": "8901262180429", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "High Protein Paneer", + "product_name_en": "High Protein Paneer" + }, + { + "code": "8901262180016", + "brands": [ + "Amul" + ], + "quantity": "200 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Malai Paneer", + "product_name_en": "Malai Paneer" + }, + { + "code": "8901262260152", + "brands": [ + "Amul" + ], + "quantity": "500ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Slim 'n' Trim", + "product_name_en": "Slim 'n' Trim" + }, + { + "code": "8901262173223", + "brands": [ + "Amul" + ], + "quantity": "750 mL", + "countries_tags": [ + "en:india" + ], + "product_name": "Butterscotch Bliss", + "product_name_en": "Butterscotch Bliss" + }, + { + "code": "8901262152242", + "brands": [ + "amul" + ], + "quantity": "Amul", + "countries_tags": [ + "en:india", + "en:state-of-palestine" + ], + "product_name": "Amul Kool Badam Flv 180ml", + "product_name_en": "Amul Kool Badam Flv 180ml" + }, + { + "code": "8901262178440", + "brands": [ + "Amul" + ], + "quantity": "80 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Cookie Sub", + "product_name_en": "Cookie Sub" + }, + { + "code": "8901262200622", + "brands": [ + "Amul" + ], + "quantity": "400 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Masti", + "product_name_en": "Amul Masti" + }, + { + "code": "8901262180115", + "brands": [ + "Amul" + ], + "quantity": "200g", + "countries_tags": [ + "en:india" + ], + "product_name": "malai paneer fresh", + "product_name_en": "malai paneer fresh" + }, + { + "code": "8901262172448", + "brands": [ + "Amul" + ], + "quantity": "1L / 540 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Chocolate Brownie", + "product_name_en": "Amul Chocolate Brownie" + }, + { + "code": "3948262211062", + "brands": [ + "Amul" + ], + "quantity": "85g", + "countries_tags": [ + "en:india" + ], + "product_name": "Masti Dahi", + "product_name_en": "Masti Dahi" + }, + { + "code": "8901262020244", + "brands": [ + "Amul" + ], + "quantity": "200g", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Cheese", + "product_name_en": "Amul Cheese" + }, + { + "code": "8901262010504", + "brands": [ + "Amul" + ], + "quantity": "300g", + "countries_tags": [ + "en:india" + ], + "product_name": "Peanut Spread Crunchy", + "product_name_en": "Peanut Spread Crunchy" + }, + { + "code": "8901262173605", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Icecream American Nuts", + "product_name_en": "Icecream American Nuts" + }, + { + "code": "8901262020404", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Cheese Slice A*", + "product_name_en": "Cheese Slice A*" + }, + { + "code": "8901262020091", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Cheese Cube", + "product_name_en": "Cheese Cube" + }, + { + "code": "8901262151726", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Lactose Free", + "product_name_en": "Lactose Free" + }, + { + "code": "8901262090421", + "brands": [ + "Amul" + ], + "quantity": "10g", + "countries_tags": [ + "en:india" + ], + "product_name": "Amulya Dairy Whitener", + "product_name_en": "Amulya Dairy Whitener" + }, + { + "code": "8901262178662", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Tricone Dark Chocolate", + "product_name_en": "Tricone Dark Chocolate" + }, + { + "code": "8901262110235", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Whey Protein", + "product_name_en": "Whey Protein" + }, + { + "code": "8901262221245", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Elaichi rusk" + }, + { + "code": "8901262201001", + "brands": [ + "Amul" + ], + "quantity": "200ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Spiced Buttermilk", + "product_name_en": "Amul Spiced Buttermilk" + }, + { + "code": "8901262110068", + "brands": [ + "Amul" + ], + "quantity": "500 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Sagar Skimmed Milk Powder", + "product_name_en": "Sagar Skimmed Milk Powder" + }, + { + "code": "8901262020039", + "brands": [ + "Amul" + ], + "quantity": "200 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cheese Chiplet", + "product_name_en": "Cheese Chiplet" + }, + { + "code": "8901262151658", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Lassi Mango" + }, + { + "code": "8901262152235", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Kool Rose" + }, + { + "code": "8901262070546", + "brands": [ + "Amul" + ], + "quantity": "250g", + "countries_tags": [ + "en:india" + ], + "product_name": "Chocominis", + "product_name_en": "Chocominis" + }, + { + "code": "8901262201780", + "brands": [ + "Amul" + ], + "quantity": "370 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Masala butter milk", + "product_name_en": "Masala butter milk" + }, + { + "code": "8901262152273", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul tru" + }, + { + "code": "8901262020305", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Cheese", + "product_name_en": "Amul Cheese" + }, + { + "code": "8901262261197", + "brands": [ + "Amul" + ], + "quantity": "190mL", + "countries_tags": [ + "en:india" + ], + "product_name": "Slim 'n' Trim", + "product_name_en": "Slim 'n' Trim" + }, + { + "code": "8901262176446", + "brands": [ + "Amul" + ], + "quantity": "1,54.6g(60ml)", + "countries_tags": [ + "en:india" + ], + "product_name": "Pista malai kulfi", + "product_name_en": "Pista malai kulfi" + }, + { + "code": "8901262178259", + "brands": [ + "Amul" + ], + "quantity": "80ml, 53g", + "countries_tags": [ + "en:india" + ], + "product_name": "Ice Cream Sandwich Vanilla", + "product_name_en": "Ice Cream Sandwich Vanilla" + }, + { + "code": "8901262220552", + "brands": [ + "Amul" + ], + "quantity": "50g", + "countries_tags": [ + "en:india" + ], + "product_name": "Chocolate Cookies", + "product_name_en": "Chocolate Cookies" + }, + { + "code": "8901262260107", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Gold Milky Milk", + "product_name_en": "Amul Gold Milky Milk" + }, + { + "code": "8901262010016", + "brands": [ + "Amul" + ], + "quantity": "100.0 g", + "countries_tags": [ + "en:bahrain", + "en:hong-kong", + "en:india", + "en:kuwait", + "en:malaysia", + "en:new-zealand", + "en:oman", + "en:qatar", + "en:singapore", + "en:sri-lanka", + "en:united-arab-emirates", + "en:united-states" + ], + "product_name": "Amul Pasteurized Butter", + "product_name_en": "Amul Pasteurized Butter" + }, + { + "code": "8901262030564", + "brands": [ + "Amul" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Cow Ghee", + "product_name_en": "Cow Ghee" + }, + { + "code": "8901262070454", + "brands": [ + "Amul" + ], + "quantity": "40g", + "countries_tags": [ + "en:india", + "en:united-states" + ], + "product_name": "Amul Dark Chocolate", + "product_name_en": "Amul Dark Chocolate" + }, + { + "code": "8901262130325", + "brands": [ + "Amul" + ], + "quantity": "5", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Pro Chocolate 500g pp", + "product_name_en": "Amul Pro Chocolate 500g pp" + }, + { + "code": "8901262070676", + "brands": [ + "Amul" + ], + "quantity": "150 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dark Chocolate", + "product_name_en": "Dark Chocolate" + }, + { + "code": "8901262071864", + "brands": [ + "Amul" + ], + "quantity": "125 g", + "countries_tags": [ + "en:india" + ], + "product_name": "99% Cacao Ultimate Dark Chocolate", + "product_name_en": "99% Cacao Ultimate Dark Chocolate" + }, + { + "code": "8901262178365", + "brands": [ + "Amul" + ], + "quantity": "120ml/77g", + "countries_tags": [ + "en:india" + ], + "product_name": "Black Currant Tri Cone", + "product_name_en": "Black Currant Tri Cone" + }, + { + "code": "8901262151696", + "brands": [ + "Amul" + ], + "quantity": "250 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Amul Lassi 180ml tpk", + "product_name_en": "Amul Lassi 180ml tpk" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/anil.json b/data/cache/off_brand_corpus/anil.json new file mode 100644 index 0000000..4509bb7 --- /dev/null +++ b/data/cache/off_brand_corpus/anil.json @@ -0,0 +1,106 @@ +{ + "brand": "anil", + "country": "india", + "fetched_at": 1788773753.1707087, + "fetched_at_human": "2026-09-07 15:05:53", + "hits": [ + { + "code": "8906042150036", + "brands": [ + "Anil" + ], + "quantity": "450 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Roasted Short Vermicelli", + "product_name_en": "Roasted Short Vermicelli" + }, + { + "code": "8906042150029", + "brands": [ + "Anil" + ], + "quantity": "180g", + "countries_tags": [ + "en:germany", + "en:india", + "en:ireland" + ], + "product_name": "Roasted Short Vermicelli", + "product_name_en": "Roasted Short Vermicelli" + }, + { + "code": "8906042150067", + "brands": [ + "Anil" + ], + "quantity": "450g", + "countries_tags": [ + "en:india" + ], + "product_name": "Anil Roasted Short Vermicelli", + "product_name_en": "Anil Roasted Short Vermicelli" + }, + { + "code": "0946602150616", + "brands": [ + "anil" + ], + "quantity": "200g", + "countries_tags": [ + "en:india" + ], + "product_name": "Happala", + "product_name_en": "Happala" + }, + { + "code": "8906066993879", + "brands": [ + "Bam Bam", + "anil-tola's" + ], + "quantity": "200g", + "countries_tags": [ + "en:india" + ], + "product_name": "Masala Roasted Chana", + "product_name_en": "Masala Roasted Chana" + }, + { + "code": "8906042151101", + "brands": [ + "Anil" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Rice Vermicelli", + "product_name_en": "Rice Vermicelli" + }, + { + "code": "8906042150715", + "brands": [ + "Anil" + ], + "quantity": "100g", + "countries_tags": [ + "en:india" + ], + "product_name": "Happala No. 4", + "product_name_en": "Happala No. 4" + }, + { + "code": "8906042150524", + "brands": [ + "Anil" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "SAMBA RAVVA", + "product_name_en": "SAMBA RAVVA" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/bikaji.json b/data/cache/off_brand_corpus/bikaji.json new file mode 100644 index 0000000..5e5c052 --- /dev/null +++ b/data/cache/off_brand_corpus/bikaji.json @@ -0,0 +1,172 @@ +{ + "brand": "bikaji", + "country": "india", + "fetched_at": 1788773754.1477077, + "fetched_at_human": "2026-09-07 15:05:54", + "hits": [ + { + "code": "8906005506979", + "brands": [ + "bikaji" + ], + "quantity": "100 g", + "countries_tags": [ + "en:india" + ], + "product_name": "potato chips", + "product_name_en": "potato chips" + }, + { + "code": "8906005504449", + "brands": [ + "Bikaji" + ], + "quantity": "62g", + "countries_tags": [ + "en:india" + ], + "product_name": "Pudina treat chips", + "product_name_en": "Pudina treat chips" + }, + { + "code": "8906005500243", + "brands": [ + "Bikaji" + ], + "quantity": "60g", + "countries_tags": [ + "en:india" + ], + "product_name": "fatafat Bhelpuri", + "product_name_en": "fatafat Bhelpuri" + }, + { + "code": "8906005505224", + "brands": [ + "Bikaji" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Chips Cream & onion", + "product_name_en": "Chips Cream & onion" + }, + { + "code": "8906005508904", + "brands": [ + "Bikaji" + ], + "quantity": "110g", + "countries_tags": [ + "en:india" + ], + "product_name": "Bikaji mobile bhel chowpati bhelpuri", + "product_name_en": "Bikaji mobile bhel chowpati bhelpuri" + }, + { + "code": "8906005504395", + "brands": [ + "Bikaji" + ], + "quantity": "1 kg", + "countries_tags": [ + "en:india", + "en:united-states" + ], + "product_name": "Tana-bana", + "product_name_en": "Tana-bana" + }, + { + "code": "8906005500335", + "brands": [ + "Bikaji" + ], + "quantity": "40g", + "countries_tags": [ + "en:india" + ], + "product_name": "Aloo Bhujia Tana-Tan", + "product_name_en": "Aloo Bhujia Tana-Tan" + }, + { + "code": "8906005500366", + "brands": [ + "Bikaji" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Bikaji aloo bujia", + "product_name_en": "Bikaji aloo bujia" + }, + { + "code": "8906005509260", + "brands": [ + "Bikaji" + ], + "quantity": "350gm", + "countries_tags": [ + "en:india" + ], + "product_name": "Kolkata Chana chur", + "product_name_en": "Kolkata Chana chur" + }, + { + "code": "8906005502513", + "brands": [ + "Bikaji" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Chatpata matar", + "product_name_en": "Chatpata matar" + }, + { + "code": "8906005509284", + "brands": [ + "Bikaji" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Lite Chiwda", + "product_name_en": "Lite Chiwda" + }, + { + "code": "8906005506962", + "brands": [ + "Bikaji" + ], + "quantity": "100 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Potato Chips", + "product_name_en": "Potato Chips" + }, + { + "code": "8906005502063", + "brands": [ + "bikaji" + ], + "quantity": "100", + "countries_tags": [ + "en:india" + ], + "product_name": "rasgulla", + "product_name_en": "rasgulla" + }, + { + "code": "8906005501288", + "brands": [ + "Bikaji" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "All-in-one kuch-kuch", + "product_name_en": "All-in-one kuch-kuch" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/cadbury.json b/data/cache/off_brand_corpus/cadbury.json new file mode 100644 index 0000000..7215dc0 --- /dev/null +++ b/data/cache/off_brand_corpus/cadbury.json @@ -0,0 +1,1346 @@ +{ + "brand": "cadbury", + "country": "india", + "fetched_at": 1788767463.5683732, + "fetched_at_human": "2026-09-07 13:21:03", + "hits": [ + { + "code": "7622201423155", + "brands": [ + "bourn vita", + "Cadbury" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "Bourn vita", + "product_name_en": "Bourn vita" + }, + { + "code": "8901233013091", + "brands": [ + "cadbury" + ], + "quantity": "50 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury Oreo Small Pack", + "product_name_en": "Cadbury Oreo Small Pack" + }, + { + "code": "1157567116275", + "brands": [ + "Cadbury" + ], + "quantity": "58g", + "countries_tags": [ + "en:india" + ], + "product_name": "Hazelnut", + "product_name_en": "Hazelnut" + }, + { + "code": "8901233033570", + "brands": [ + "Cadbury" + ], + "quantity": "250 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Karthi Keyan", + "product_name_en": "Karthi Keyan" + }, + { + "code": "7622201150303", + "brands": [ + "Cadbury" + ], + "quantity": "18 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Shots", + "product_name_en": "Shots" + }, + { + "code": "7622202023545", + "brands": [ + "Cadbury" + ], + "quantity": "45g", + "countries_tags": [ + "en:india" + ], + "product_name": "Fuse", + "product_name_en": "Fuse" + }, + { + "code": "7622201712617", + "brands": [ + "Cadbury" + ], + "quantity": "167g", + "countries_tags": [ + "en:india" + ], + "product_name": "Chocobakes choco chip", + "product_name_en": "Chocobakes choco chip" + }, + { + "code": "7622201150242", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy milk chocolate fruit and nut" + }, + { + "code": "7622201762582", + "brands": [ + "Cadbury" + ], + "quantity": "150g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cocoa", + "product_name_en": "Cocoa" + }, + { + "code": "7622202216916", + "brands": [ + "Cadbury" + ], + "quantity": "17g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury Chocobakes", + "product_name_en": "Cadbury Chocobakes" + }, + { + "code": "7622201385064", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "CHOCOBAKES", + "product_name_en": "CHOCOBAKES" + }, + { + "code": "7622201150181", + "brands": [ + "Cadbury" + ], + "quantity": "36g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy Milk", + "product_name_en": "Dairy Milk" + }, + { + "code": "8901233028651", + "brands": [ + "Cadbury" + ], + "quantity": "30g", + "countries_tags": [ + "en:india" + ], + "product_name": "Nutties", + "product_name_en": "Nutties" + }, + { + "code": "7622201801878", + "brands": [ + "Cadbury" + ], + "quantity": "500 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Oreo Original", + "product_name_en": "Oreo Original" + }, + { + "code": "8901233018362", + "brands": [ + "cadbury" + ], + "quantity": "25g", + "countries_tags": [ + "en:india" + ], + "product_name": "Bournvita", + "product_name_en": "Bournvita" + }, + { + "code": "7622201766269", + "brands": [ + "cadbury" + ], + "quantity": "2 kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Bournvita", + "product_name_en": "Bournvita" + }, + { + "code": "7622201759742", + "brands": [ + "Cadbury" + ], + "quantity": "146 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy Milk Silk Ganache", + "product_name_en": "Dairy Milk Silk Ganache" + }, + { + "code": "7622201432263", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Oreo Cricket Edition", + "product_name_en": "Oreo Cricket Edition" + }, + { + "code": "7622201452889", + "brands": [ + "cadbury" + ], + "quantity": "130g", + "countries_tags": [ + "en:india" + ], + "product_name": "silk oreo", + "product_name_en": "silk oreo" + }, + { + "code": "7622201685638", + "brands": [ + "Cadbury" + ], + "quantity": "120g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy Milk Silky Bubbly BubbleGum", + "product_name_en": "Dairy Milk Silky Bubbly BubbleGum" + }, + { + "code": "8901233034300", + "brands": [ + "Cadbury" + ], + "quantity": "50g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury dairy milk silk bubbly", + "product_name_en": "Cadbury dairy milk silk bubbly" + }, + { + "code": "7622201715670", + "brands": [ + "Cadbury" + ], + "quantity": "113.80 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury Celebrations", + "product_name_en": "Cadbury Celebrations" + }, + { + "code": "7622201762896", + "brands": [ + "Cadbury" + ], + "quantity": "557.5 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury chocolairs gold 557.5g", + "product_name_en": "Cadbury chocolairs gold 557.5g" + }, + { + "code": "7622201762919", + "brands": [ + "Cadbury" + ], + "quantity": "577.5g", + "countries_tags": [ + "en:india" + ], + "product_name": "Chocolairs Gold coffee", + "product_name_en": "Chocolairs Gold coffee" + }, + { + "code": "7622201762490", + "brands": [ + "Cadbury" + ], + "quantity": "191.9g", + "countries_tags": [ + "en:india" + ], + "product_name": "5 Star Bites Home Treats", + "product_name_en": "5 Star Bites Home Treats" + }, + { + "code": "7622201675660", + "brands": [ + "Cadbury", + "Oreo" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Cricket Edition Oreo Original", + "product_name_en": "Cricket Edition Oreo Original" + }, + { + "code": "7622201687632", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "OREO", + "product_name_en": "OREO" + }, + { + "code": "8901233022574", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Bourn Vita", + "product_name_en": "Bourn Vita" + }, + { + "code": "7622201138486", + "brands": [ + "Cadbury" + ], + "quantity": "80g", + "countries_tags": [ + "en:india" + ], + "product_name": "Bournville", + "product_name_en": "Bournville" + }, + { + "code": "8901233025612", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy Milk Chocolate", + "product_name_en": "Dairy Milk Chocolate" + }, + { + "code": "8901233021645", + "brands": [ + "Cadbury" + ], + "quantity": "31 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury bournville premium chocolate", + "product_name_en": "Cadbury bournville premium chocolate" + }, + { + "code": "9555540021394", + "brands": [ + "Cadbury" + ], + "quantity": "140 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Checkers", + "product_name_en": "Checkers" + }, + { + "code": "8622262438371", + "brands": [ + "Cadbury" + ], + "quantity": "177g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury", + "product_name_en": "Cadbury" + }, + { + "code": "7622201431594", + "brands": [ + "Cadbury" + ], + "quantity": "120 g", + "countries_tags": [ + "en:india", + "en:united-states" + ], + "product_name": "Oreo Cream Biscuit", + "product_name_en": "Oreo Cream Biscuit" + }, + { + "code": "7622202398735", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy Milk Chocolate", + "product_name_en": "Dairy Milk Chocolate" + }, + { + "code": "7622201440046", + "brands": [ + "cadbury" + ], + "quantity": "12 gram", + "countries_tags": [ + "en:india" + ], + "product_name": "dairy milk", + "product_name_en": "dairy milk" + }, + { + "code": "7622201763213", + "brands": [ + "Cadbury" + ], + "quantity": "130 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Silk Oreo Red Velvet", + "product_name_en": "Silk Oreo Red Velvet" + }, + { + "code": "8901233020341", + "brands": [ + "Cadbury" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "BournVita", + "product_name_en": "BournVita" + }, + { + "code": "8901233028361", + "brands": [ + "Cadbury" + ], + "quantity": "Good", + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy Milk" + }, + { + "code": "8901233036731", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "dairy milk silk", + "product_name_en": "dairy milk silk" + }, + { + "code": "8901233035178", + "brands": [ + "Cadbury" + ], + "quantity": "1kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Bourn vita", + "product_name_en": "Bourn vita" + }, + { + "code": "8901233031712", + "brands": [ + "cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "fuse", + "product_name_en": "fuse" + }, + { + "code": "7622201679996", + "brands": [ + "Cadbury" + ], + "quantity": "200g", + "countries_tags": [ + "en:india" + ], + "product_name": "hot chocolate", + "product_name_en": "hot chocolate" + }, + { + "code": "7622201442071", + "brands": [ + "Cadbury" + ], + "quantity": "21 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Chocobakes Choc layered Cakes", + "product_name_en": "Chocobakes Choc layered Cakes" + }, + { + "code": "8901233020624", + "brands": [ + "Cadbury" + ], + "quantity": "100 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy Milk - Home Treats", + "product_name_en": "Dairy Milk - Home Treats" + }, + { + "code": "6001065601083", + "brands": [ + "Cadbury" + ], + "quantity": "80g", + "countries_tags": [ + "en:india" + ], + "product_name": "DAIRY MILK BISCUIT", + "product_name_en": "DAIRY MILK BISCUIT" + }, + { + "code": "7622202030871", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Temptations - Almond Treat", + "product_name_en": "Temptations - Almond Treat" + }, + { + "code": "7622210400291", + "brands": [ + "Cadbury" + ], + "quantity": "160g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy milk Roast almonds", + "product_name_en": "Dairy milk Roast almonds" + }, + { + "code": "7622201149406", + "brands": [ + "Cadbury" + ], + "quantity": "24g", + "countries_tags": [ + "en:bangladesh", + "en:bhutan", + "en:india", + "en:nepal", + "en:sri-lanka" + ], + "product_name": "Cadbury Dairy Milk Chocolate", + "product_name_en": "Cadbury Dairy Milk Chocolate" + }, + { + "code": "7622201762537", + "brands": [ + "Mondelez International", + "Mondelez", + "Cadbury" + ], + "quantity": "200g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury Hot Chocolate", + "product_name_en": "Cadbury Hot Chocolate" + }, + { + "code": "7622202210365", + "brands": [ + "Cadbury" + ], + "quantity": "1.38kg", + "countries_tags": [ + "en:india" + ], + "product_name": "DAIRY MILK MAHA 40RS", + "product_name_en": "DAIRY MILK MAHA 40RS" + }, + { + "code": "7622202025426", + "brands": [ + "Cadbury" + ], + "quantity": "134g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy milk", + "product_name_en": "Dairy milk" + }, + { + "code": "7622201756697", + "brands": [ + "Cadbury" + ], + "quantity": "43.75g g", + "countries_tags": [ + "en:india" + ], + "product_name": "Oreo", + "product_name_en": "Oreo" + }, + { + "code": "7622201762476", + "brands": [ + "Cadbury" + ], + "quantity": "119 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy Milk Minis", + "product_name_en": "Dairy Milk Minis" + }, + { + "code": "7622202210372", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy Milk Chocolate", + "product_name_en": "Dairy Milk Chocolate" + }, + { + "code": "7622201798260", + "brands": [ + "Cadbury" + ], + "quantity": "7.9g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury gems", + "product_name_en": "Cadbury gems" + }, + { + "code": "2296637125669", + "brands": [ + "Cadbury" + ], + "quantity": "43.75 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Oreo", + "product_name_en": "Oreo" + }, + { + "code": "7622202013744", + "brands": [ + "Cadbury" + ], + "quantity": "120", + "countries_tags": [ + "en:india" + ], + "product_name": "Bournvita biscuit", + "product_name_en": "Bournvita biscuit" + }, + { + "code": "7622201761738", + "brands": [ + "Cadbury" + ], + "quantity": "58g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy Milk Silk Hazelnut", + "product_name_en": "Dairy Milk Silk Hazelnut" + }, + { + "code": "7622201710934", + "brands": [ + "Cadbury" + ], + "quantity": "1 and 20g", + "countries_tags": [ + "en:india" + ], + "product_name": "5star", + "product_name_en": "5star" + }, + { + "code": "8901233033525", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy Milk Silk Oreo", + "product_name_en": "Dairy Milk Silk Oreo" + }, + { + "code": "7622201521905", + "brands": [ + "Cadbury" + ], + "quantity": "108.5", + "countries_tags": [ + "en:india" + ], + "product_name": "Fuse bites", + "product_name_en": "Fuse bites" + }, + { + "code": "7622201717926", + "brands": [ + "Cadbury" + ], + "quantity": "20g", + "countries_tags": [ + "en:india" + ], + "product_name": "Lickables", + "product_name_en": "Lickables" + }, + { + "code": "7622201383749", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Bourn vita", + "product_name_en": "Bourn vita" + }, + { + "code": "8901233034188", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Silk chocolate", + "product_name_en": "Silk chocolate" + }, + { + "code": "8901233011202", + "brands": [ + "Cadbury" + ], + "quantity": "20g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury Original Oreo", + "product_name_en": "Cadbury Original Oreo" + }, + { + "code": "8901233022086", + "brands": [ + "Cadbury", + "Cadbury Dairy Milk" + ], + "quantity": "50g", + "countries_tags": [ + "en:india" + ], + "product_name": "dairy milk silk bubbly", + "product_name_en": "dairy milk silk bubbly" + }, + { + "code": "8901233024042", + "brands": [ + "cadbury" + ], + "quantity": "13 g", + "countries_tags": [ + "en:india" + ], + "product_name": "perk", + "product_name_en": "perk" + }, + { + "code": "8901233030395", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Rishi Phalswal", + "product_name_en": "Rishi Phalswal" + }, + { + "code": "8901233028507", + "brands": [ + "Cadbury" + ], + "quantity": "200g", + "countries_tags": [ + "en:india" + ], + "product_name": "Hot Chocolate", + "product_name_en": "Hot Chocolate" + }, + { + "code": "7622201822163", + "brands": [ + "Cadbury" + ], + "quantity": "55g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy milk" + }, + { + "code": "7622201757359", + "brands": [ + "Cadbury" + ], + "quantity": "120g", + "countries_tags": [ + "en:india" + ], + "product_name": "Bourn Vita biscuits", + "product_name_en": "Bourn Vita biscuits" + }, + { + "code": "7622201690472", + "brands": [ + "Cadbury" + ], + "quantity": "1", + "countries_tags": [ + "en:india" + ], + "product_name": "C d milk bites", + "product_name_en": "C d milk bites" + }, + { + "code": "7622202237942", + "brands": [ + "Cadbury" + ], + "quantity": "12.5 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury dairy milk", + "product_name_en": "Cadbury dairy milk" + }, + { + "code": "7622201138394", + "brands": [ + "Cadbury" + ], + "quantity": "72 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury Temptations Rum & Raisin Chocolate Bar", + "product_name_en": "Cadbury Temptations Rum & Raisin Chocolate Bar" + }, + { + "code": "7622201442019", + "brands": [ + "Cadbury" + ], + "quantity": "23 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy Milk", + "product_name_en": "Dairy Milk" + }, + { + "code": "7622202030901", + "brands": [ + "Cadbury" + ], + "quantity": "72 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury Temptations Rum & Raisins", + "product_name_en": "Cadbury Temptations Rum & Raisins" + }, + { + "code": "7622201758042", + "brands": [ + "Cadbury" + ], + "quantity": "153 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy Milk Silk Minis", + "product_name_en": "Dairy Milk Silk Minis" + }, + { + "code": "8901233030517", + "brands": [ + "Cadbury" + ], + "quantity": "20 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Diary Milk Chocolate", + "product_name_en": "Diary Milk Chocolate" + }, + { + "code": "8901233036625", + "brands": [ + "Cadbury" + ], + "quantity": "25g", + "countries_tags": [ + "en:india" + ], + "product_name": "5star", + "product_name_en": "5star" + }, + { + "code": "8901233028958", + "brands": [ + "Cadbury" + ], + "quantity": "5rs", + "countries_tags": [ + "en:india" + ], + "product_name": "5 star", + "product_name_en": "5 star" + }, + { + "code": "7622201758660", + "brands": [ + "Cadbury" + ], + "quantity": "22 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Perk Double", + "product_name_en": "Perk Double" + }, + { + "code": "7312201761790", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Oreo Red Velvet", + "product_name_en": "Oreo Red Velvet" + }, + { + "code": "7622201438371", + "brands": [ + "Cadbury" + ], + "quantity": "177g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury", + "product_name_en": "Cadbury" + }, + { + "code": "6627208398698", + "brands": [ + "cadbury" + ], + "quantity": "23g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy milk", + "product_name_en": "Dairy milk" + }, + { + "code": "7622201442828", + "brands": [ + "Cadbury" + ], + "quantity": "126 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Chocobakes", + "product_name_en": "Chocobakes" + }, + { + "code": "7622201098971", + "brands": [ + "Cadbury" + ], + "quantity": "75 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Chocobakes", + "product_name_en": "Chocobakes" + }, + { + "code": "8901233030272", + "brands": [ + "Cadbury" + ], + "quantity": "14.3 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Perk", + "product_name_en": "Perk" + }, + { + "code": "7622202030840", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Bournville 50 Dark", + "product_name_en": "Bournville 50 Dark" + }, + { + "code": "7622202236341", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury Celebrations", + "product_name_en": "Cadbury Celebrations" + }, + { + "code": "7622201758141", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Bournvita Biscuits", + "product_name_en": "Bournvita Biscuits" + }, + { + "code": "7622202015366", + "brands": [ + "Cadbury" + ], + "quantity": "288.75g", + "countries_tags": [ + "en:india" + ], + "product_name": "Choco Crème Flavoured Oreo 288.75g", + "product_name_en": "Choco Crème Flavoured Oreo 288.75g" + }, + { + "code": "7622202031618", + "brands": [ + "cadbury" + ], + "quantity": "30g", + "countries_tags": [ + "en:india" + ], + "product_name": "nutties", + "product_name_en": "nutties" + }, + { + "code": "7622201432249", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Oreo chocolatey sandwich biscuits" + }, + { + "code": "8901233022536", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Bournvita biscuit" + }, + { + "code": "8901233021492", + "brands": [ + "Cadbury" + ], + "quantity": "30 grams", + "countries_tags": [ + "en:india" + ], + "product_name": "Nutties", + "product_name_en": "Nutties" + }, + { + "code": "8901233023687", + "brands": [ + "Cadbury" + ], + "quantity": "25 g", + "countries_tags": [ + "en:india" + ], + "product_name": "FUSE", + "product_name_en": "FUSE" + }, + { + "code": "7622201808013", + "brands": [ + "Cadbury" + ], + "quantity": "250g.", + "countries_tags": [ + "en:india" + ], + "product_name": "dairy milk silk", + "product_name_en": "dairy milk silk" + }, + { + "code": "7622201710576", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy Milk", + "product_name_en": "Dairy Milk" + }, + { + "code": "7622201715717", + "brands": [ + "Cadbury" + ], + "quantity": "178.8g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury celebrations", + "product_name_en": "Cadbury celebrations" + }, + { + "code": "8901233020273", + "brands": [ + "Cadbury" + ], + "quantity": "5 gm", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury 5 star", + "product_name_en": "Cadbury 5 star" + }, + { + "code": "7622201758639", + "brands": [ + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Perk", + "product_name_en": "Perk" + }, + { + "code": "7622201443290", + "brands": [ + "Cadbury" + ], + "quantity": "468 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury Dairy Milk", + "product_name_en": "Cadbury Dairy Milk" + }, + { + "code": "7622201762513", + "brands": [ + "Cadbury", + "Mondelez" + ], + "quantity": "150g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cocoa", + "product_name_en": "Cocoa" + }, + { + "code": "7622201762353", + "brands": [ + "Cadbury" + ], + "quantity": "150 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cocoa", + "product_name_en": "Cocoa" + }, + { + "code": "7622201757212", + "brands": [ + "Oreo", + "Cadbury" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Original Oreo", + "product_name_en": "Original Oreo" + }, + { + "code": "8901233027555", + "brands": [ + "Cadbury" + ], + "quantity": "300 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury Choco Creme Oreo", + "product_name_en": "Cadbury Choco Creme Oreo" + }, + { + "code": "7622202203404", + "brands": [ + "Cadbury" + ], + "quantity": "228g", + "countries_tags": [ + "en:india" + ], + "product_name": "Chocobakes", + "product_name_en": "Chocobakes" + }, + { + "code": "7622201762063", + "brands": [ + "Cadbury" + ], + "quantity": "123g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy milk chocolate", + "product_name_en": "Dairy milk chocolate" + }, + { + "code": "7622202398698", + "brands": [ + "Cadbury" + ], + "quantity": "23g g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury Dairy Milk", + "product_name_en": "Cadbury Dairy Milk" + }, + { + "code": "7622202030819", + "brands": [ + "Cadbury Bournville" + ], + "quantity": "80 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cranberry", + "product_name_en": "Cranberry" + }, + { + "code": "7622201761561", + "brands": [ + "Cadbury" + ], + "quantity": "137g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dairy Milk Silk Fruit & Nut", + "product_name_en": "Dairy Milk Silk Fruit & Nut" + }, + { + "code": "7622201756918", + "brands": [ + "Cadbury" + ], + "quantity": "581.25 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cadbury Oreo Vanilla 481.25g", + "product_name_en": "Cadbury Oreo Vanilla 481.25g" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/cavinkare.json b/data/cache/off_brand_corpus/cavinkare.json new file mode 100644 index 0000000..26db054 --- /dev/null +++ b/data/cache/off_brand_corpus/cavinkare.json @@ -0,0 +1,20 @@ +{ + "brand": "cavinkare", + "country": "india", + "fetched_at": 1788773755.074045, + "fetched_at_human": "2026-09-07 15:05:55", + "hits": [ + { + "code": "8902979050883", + "brands": [ + "CavinKare" + ], + "quantity": "200ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Cavin's Vanilla Milkshake", + "product_name_en": "Cavin's Vanilla Milkshake" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/coca_cola.json b/data/cache/off_brand_corpus/coca_cola.json new file mode 100644 index 0000000..60e6de4 --- /dev/null +++ b/data/cache/off_brand_corpus/coca_cola.json @@ -0,0 +1,702 @@ +{ + "brand": "coca-cola", + "country": "india", + "fetched_at": 1788773756.0884025, + "fetched_at_human": "2026-09-07 15:05:56", + "hits": [ + { + "code": "8901764032400", + "brands": [ + "कोका कोला क", + "The Coca-Cola Company" + ], + "quantity": "9", + "countries_tags": [ + "en:india" + ], + "product_name": "Sprite Lemon Lime flv Coke Brand 2ltr", + "product_name_en": "Sprite Lemon Lime flv Coke Brand 2ltr" + }, + { + "code": "8901764032905", + "brands": [ + "Sprite", + "Coca cola" + ], + "quantity": "2.25l", + "countries_tags": [ + "en:india" + ], + "product_name": "Sprite", + "product_name_en": "Sprite" + }, + { + "code": "3948764111259", + "brands": [ + "Coca-Cola" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Coke Zero", + "product_name_en": "Coke Zero" + }, + { + "code": "0005537835804", + "brands": [ + "Coca cola" + ], + "quantity": "250ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Pulpy", + "product_name_en": "Pulpy" + }, + { + "code": "8901764385155", + "brands": [ + "Minute Maid", + "The Coca-Cola Company" + ], + "quantity": "150 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Minute Maid Apple", + "product_name_en": "Minute Maid Apple" + }, + { + "code": "8901764112706", + "brands": [ + "Coca Cola" + ], + "quantity": "600ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Coca Cola Zero", + "product_name_en": "Coca Cola Zero" + }, + { + "code": "8901764012273", + "brands": [ + "Coca-Cola" + ], + "quantity": "5", + "countries_tags": [ + "en:india" + ], + "product_name": "Coca Cola Coke Brand 750ml", + "product_name_en": "Coca Cola Coke Brand 750ml" + }, + { + "code": "8901764239809", + "brands": [ + "Minute Maid", + "The Coca-Cola Company" + ], + "quantity": "250 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "PROTEIN TOTAL FAT pany", + "product_name_en": "PROTEIN TOTAL FAT pany" + }, + { + "code": "8901764011252", + "brands": [ + "Coca-Cola" + ], + "quantity": "300 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Coca cola Original Taste 300ml can", + "product_name_en": "Coca cola Original Taste 300ml can" + }, + { + "code": "3948764032271", + "brands": [ + "Coca Cola" + ], + "quantity": "750 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Sprite", + "product_name_en": "Sprite" + }, + { + "code": "89000601", + "brands": [ + "coco-cola" + ], + "quantity": "500ml", + "countries_tags": [ + "en:india" + ], + "product_name": "limca", + "product_name_en": "limca" + }, + { + "code": "8901764111259", + "brands": [ + "Coca-Cola" + ], + "quantity": "16", + "countries_tags": [ + "en:india" + ], + "product_name": "Coca cola zero sugar 300ml", + "product_name_en": "Coca cola zero sugar 300ml" + }, + { + "code": "8901764022807", + "brands": [ + "Coca Cola" + ], + "quantity": "2L", + "countries_tags": [ + "en:india" + ], + "product_name": "Fanta", + "product_name_en": "Fanta" + }, + { + "code": "8903363002556", + "brands": [ + "coco- cola" + ], + "quantity": "2l", + "countries_tags": [ + "en:india" + ], + "product_name": "mango merry", + "product_name_en": "mango merry" + }, + { + "code": "8901764011634", + "brands": [ + "Coca-Cola" + ], + "quantity": "300x6", + "countries_tags": [ + "en:india" + ], + "product_name": "Coca cola pack of 6", + "product_name_en": "Coca cola pack of 6" + }, + { + "code": "8901764052309", + "brands": [ + "Coca Cola" + ], + "quantity": "1L", + "countries_tags": [ + "en:india" + ], + "product_name": "Linca", + "product_name_en": "Linca" + }, + { + "code": "0901764132919", + "brands": [ + "coca cola" + ], + "quantity": "the coca cola", + "countries_tags": [ + "en:india" + ], + "product_name": "fanta Apple delite", + "product_name_en": "fanta Apple delite" + }, + { + "code": "3948764021060", + "brands": [ + "Coca cola" + ], + "quantity": "750ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Thums up", + "product_name_en": "Thums up" + }, + { + "code": "8902080104055", + "brands": [ + "The Coca-Cola Company" + ], + "quantity": "11", + "countries_tags": [ + "en:india" + ], + "product_name": "Pepsi Drink 750ml", + "product_name_en": "Pepsi Drink 750ml" + }, + { + "code": "8901764052279", + "brands": [ + "Coca-Cola" + ], + "quantity": "132", + "countries_tags": [ + "en:india", + "en:united-kingdom" + ], + "product_name": "Limca lime lemon drink 750ml", + "product_name_en": "Limca lime lemon drink 750ml" + }, + { + "code": "8901764042805", + "brands": [ + "Coca-Cola" + ], + "quantity": "1.25 l", + "countries_tags": [ + "en:india" + ], + "product_name": "Thums Up", + "product_name_en": "Thums Up" + }, + { + "code": "8901764092305", + "brands": [ + "HINDUSTAN COCA-COLA BEVERAGES PVT LTD." + ], + "quantity": "12", + "countries_tags": [ + "en:india" + ], + "product_name": "Maaza Original 1.2ltr", + "product_name_en": "Maaza Original 1.2ltr" + }, + { + "code": "3948764032400", + "brands": [ + "coca cola" + ], + "quantity": "2L", + "countries_tags": [ + "en:india", + "en:united-states" + ], + "product_name": "sprite", + "product_name_en": "sprite" + }, + { + "code": "8906000379134", + "brands": [ + "coca cola company" + ], + "quantity": "750ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Fanta", + "product_name_en": "Fanta" + }, + { + "code": "8901764362606", + "brands": [ + "Coca-Cola Company", + "Coca-Cola" + ], + "quantity": "1", + "countries_tags": [ + "en:india" + ], + "product_name": "Minute maid", + "product_name_en": "Minute maid" + }, + { + "code": "89000564", + "brands": [ + "Coca-Cola" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Coca Cola" + }, + { + "code": "3948764092800", + "brands": [ + "coco-cola" + ], + "quantity": "dest taste of mango& 200ml", + "countries_tags": [ + "en:india" + ], + "product_name": "maaza", + "product_name_en": "maaza" + }, + { + "code": "8906016790015", + "brands": [ + "coca" + ], + "quantity": "1kg", + "countries_tags": [ + "en:india" + ], + "product_name": "rajini" + }, + { + "code": "8902080104581", + "brands": [ + "Pepsi Cola" + ], + "quantity": "400ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Pepsi", + "product_name_en": "Pepsi" + }, + { + "code": "8901764062704", + "brands": [ + "Coca-Cola" + ], + "quantity": "500ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Diet Coke Mobile Pack", + "product_name_en": "Diet Coke Mobile Pack" + }, + { + "code": "3948764012273", + "brands": [ + "Coca cola" + ], + "quantity": "750ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Coca cola Soft Drink 750ml", + "product_name_en": "Coca cola Soft Drink 750ml" + }, + { + "code": "8901764102912", + "brands": [ + "Coca cola" + ], + "quantity": "250ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Rim Zim", + "product_name_en": "Rim Zim" + }, + { + "code": "42116011", + "brands": [ + "Fanta", + " Coca-Cola" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Fanta cocktail de fruits", + "product_name_en": "Fanta cocktail de fruits" + }, + { + "code": "901764132919", + "brands": [ + "coca cola" + ], + "quantity": "the coca cola", + "countries_tags": [ + "en:india" + ], + "product_name": "fanta Apple delite", + "product_name_en": "fanta Apple delite" + }, + { + "code": "8901764981036", + "brands": [ + "Coca-Cola" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "peach" + }, + { + "code": "8901764042508", + "brands": [ + "coca cola" + ], + "quantity": "9", + "countries_tags": [ + "en:india" + ], + "product_name": "Coke Brand Thumbs up 2ltr", + "product_name_en": "Coke Brand Thumbs up 2ltr" + }, + { + "code": "8901764012471", + "brands": [ + "Coca-Cola" + ], + "quantity": "475ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Coke", + "product_name_en": "Coke" + }, + { + "code": "8901764042706", + "brands": [ + "Cola" + ], + "quantity": "600ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Thumsup", + "product_name_en": "Thumsup" + }, + { + "code": "8901764032271", + "brands": [ + "coca cola" + ], + "quantity": "5", + "countries_tags": [ + "en:india" + ], + "product_name": "Sprite 750ml", + "product_name_en": "Sprite 750ml" + }, + { + "code": "8901764032707", + "brands": [ + "Coca Cola" + ], + "quantity": "600 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Sprite", + "product_name_en": "Sprite" + }, + { + "code": "8901764052408", + "brands": [ + "Coca Cola" + ], + "quantity": "2L", + "countries_tags": [ + "en:india" + ], + "product_name": "Limca 2ltr pet", + "product_name_en": "Limca 2ltr pet" + }, + { + "code": "8901764042270", + "brands": [ + "Coca Cola Company" + ], + "quantity": "24", + "countries_tags": [ + "en:india", + "en:united-states" + ], + "product_name": "Thumbs Up 750ml", + "product_name_en": "Thumbs Up 750ml" + }, + { + "code": "54491496", + "brands": [ + "The Coca-Cola Company", + "Coca-Cola", + "Diet Coke", + " Tiffin Sandwiches" + ], + "quantity": "500 ml", + "countries_tags": [ + "en:france", + "en:india", + "en:united-kingdom" + ], + "product_name": "Diet coke", + "product_name_en": "Diet coke" + }, + { + "code": "5449000043382", + "brands": [ + "Coca-Cola" + ], + "quantity": "355 ml", + "countries_tags": [ + "en:india", + "en:spain", + "en:united-arab-emirates" + ], + "product_name": "Coke", + "product_name_en": "Coke" + }, + { + "code": "3948764061257", + "brands": [ + "Coca-Cola" + ], + "quantity": "300 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Diet coke", + "product_name_en": "Diet coke" + }, + { + "code": "8901764042904", + "brands": [ + "Coca-Cola" + ], + "quantity": "1 litter", + "countries_tags": [ + "en:india" + ], + "product_name": "Thumsup", + "product_name_en": "Thumsup" + }, + { + "code": "8901764175022", + "brands": [ + "Coca cola" + ], + "quantity": "150ml", + "countries_tags": [ + "en:india" + ], + "product_name": "maaza", + "product_name_en": "maaza" + }, + { + "code": "8901764012501", + "brands": [ + "Coca cola" + ], + "quantity": "18", + "countries_tags": [ + "en:india" + ], + "product_name": "Coke Brand Coca Cola 2ltr", + "product_name_en": "Coke Brand Coca Cola 2ltr" + }, + { + "code": "8901764022272", + "brands": [ + "The Coca-cola company" + ], + "quantity": "24", + "countries_tags": [ + "en:india" + ], + "product_name": "Fanta Orange Flv 750ml", + "product_name_en": "Fanta Orange Flv 750ml" + }, + { + "code": "8901764022302", + "brands": [ + "Coca Cola" + ], + "quantity": "1L", + "countries_tags": [ + "en:india" + ], + "product_name": "Fanta", + "product_name_en": "Fanta" + }, + { + "code": "8901764061189", + "brands": [ + "Coca-Cola" + ], + "quantity": "180ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Coca Cola", + "product_name_en": "Coca Cola" + }, + { + "code": "8901764012914", + "brands": [ + "The Coca-Cola Company" + ], + "quantity": "250 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Coca-Cola", + "product_name_en": "Coca-Cola" + }, + { + "code": "8901764092152", + "brands": [ + "HINDUSTAN COCO-COLA BEVERAGES PVT.LTD" + ], + "quantity": "3", + "countries_tags": [ + "en:india" + ], + "product_name": "Maaza Original 1.75ltr", + "product_name_en": "Maaza Original 1.75ltr" + }, + { + "code": "8901764112270", + "brands": [ + "Coca cola zero" + ], + "quantity": "750 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Coca Cola Zero Sugar", + "product_name_en": "Coca Cola Zero Sugar" + }, + { + "code": "8901764042300", + "brands": [ + "Coca-Cola" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Thums Up (Coca-Cola)", + "product_name_en": "Thums Up (Coca-Cola)" + }, + { + "code": "8901764041259", + "brands": [ + "Coca Cola" + ], + "quantity": "1", + "countries_tags": [ + "en:canada", + "en:india", + "en:united-kingdom" + ], + "product_name": "Thums Up 300ml can", + "product_name_en": "Thums Up 300ml can" + }, + { + "code": "8901764175015", + "brands": [ + "Coca-Cola" + ], + "quantity": "125ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Maaza", + "product_name_en": "Maaza" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/colgate_palmolive.json b/data/cache/off_brand_corpus/colgate_palmolive.json new file mode 100644 index 0000000..68dda62 --- /dev/null +++ b/data/cache/off_brand_corpus/colgate_palmolive.json @@ -0,0 +1,115 @@ +{ + "brand": "colgate-palmolive", + "country": "india", + "fetched_at": 1788773757.151698, + "fetched_at_human": "2026-09-07 15:05:57", + "hits": [ + { + "code": "8901314311832", + "brands": [ + "Colgate" + ], + "quantity": "160 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Colgate Sensitive", + "product_name_en": "Colgate Sensitive" + }, + { + "code": "8901314077059", + "brands": [ + "Colgate MaxFresh" + ], + "quantity": "500ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Mouthwash", + "product_name_en": "Mouthwash" + }, + { + "code": "8901314765352", + "brands": [ + "Colgate" + ], + "quantity": "100 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Colgate Dental Cream", + "product_name_en": "Colgate Dental Cream" + }, + { + "code": "8901314011183", + "brands": [ + "Colgate" + ], + "quantity": "50 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Colgate Visible White, 50 g", + "product_name_en": "Colgate Visible White, 50 g" + }, + { + "code": "8901314644312", + "brands": [ + "Colgate" + ], + "quantity": "200g", + "countries_tags": [ + "en:india" + ], + "product_name": "Colgate Herbal", + "product_name_en": "Colgate Herbal" + }, + { + "code": "8901314543653", + "brands": [ + "Colgate" + ], + "quantity": "450g", + "countries_tags": [ + "en:india" + ], + "product_name": "Colgate maxfresh", + "product_name_en": "Colgate maxfresh" + }, + { + "code": "8901314078216", + "brands": [ + "Colgate" + ], + "quantity": "200g", + "countries_tags": [ + "en:india" + ], + "product_name": "Colgate visible white", + "product_name_en": "Colgate visible white" + }, + { + "code": "8901314765314", + "brands": [ + "Colgate" + ], + "quantity": "200g", + "countries_tags": [ + "en:india" + ], + "product_name": "Colgate", + "product_name_en": "Colgate" + }, + { + "code": "8901314307613", + "brands": [ + "Colgate" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Colgate Total 12 Charcoal Deep Clean", + "product_name_en": "Colgate Total 12 Charcoal Deep Clean" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/dabur.json b/data/cache/off_brand_corpus/dabur.json new file mode 100644 index 0000000..aafac31 --- /dev/null +++ b/data/cache/off_brand_corpus/dabur.json @@ -0,0 +1,815 @@ +{ + "brand": "dabur", + "country": "india", + "fetched_at": 1788773758.4611142, + "fetched_at_human": "2026-09-07 15:05:58", + "hits": [ + { + "code": "8901207035623", + "brands": [ + "Dabur" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "DABUR ALOE VERA", + "product_name_en": "DABUR ALOE VERA" + }, + { + "code": "8901207020070", + "brands": [ + "Dabur" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Anmol Gold", + "product_name_en": "Anmol Gold" + }, + { + "code": "8901207037955", + "brands": [ + "Dabur" + ], + "quantity": "23 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Odomos Naturals", + "product_name_en": "Odomos Naturals" + }, + { + "code": "8901207014642", + "brands": [ + "Dabur", + " Dabur Hommade" + ], + "quantity": "200g", + "countries_tags": [ + "en:india" + ], + "product_name": "Tomato Puree", + "product_name_en": "Tomato Puree" + }, + { + "code": "8901207045370", + "brands": [ + "Dabur" + ], + "quantity": "50 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Honey", + "product_name_en": "Honey" + }, + { + "code": "8901207030482", + "brands": [ + "Dabur" + ], + "quantity": "120", + "countries_tags": [ + "en:india" + ], + "product_name": "KABZ OVER", + "product_name_en": "KABZ OVER" + }, + { + "code": "8901207034220", + "brands": [ + "Dabur" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur Clove Toothpaste", + "product_name_en": "Dabur Clove Toothpaste" + }, + { + "code": "8901207032127", + "brands": [ + "dabur" + ], + "quantity": "1", + "countries_tags": [ + "en:india" + ], + "product_name": "Real fruit pomegranate 180ml tpk", + "product_name_en": "Real fruit pomegranate 180ml tpk" + }, + { + "code": "8901207029912", + "brands": [ + "Dabur" + ], + "quantity": "50g", + "countries_tags": [ + "en:india" + ], + "product_name": "Odonil Jasmine Mist", + "product_name_en": "Odonil Jasmine Mist" + }, + { + "code": "4796008920056", + "brands": [ + "Dabur Real" + ], + "quantity": "1L", + "countries_tags": [ + "en:india" + ], + "product_name": "Real Fruit Power Orange", + "product_name_en": "Real Fruit Power Orange" + }, + { + "code": "8901888008411", + "brands": [ + "Dabur" + ], + "quantity": "1L", + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur Real activ 100% juice cranberry", + "product_name_en": "Dabur Real activ 100% juice cranberry" + }, + { + "code": "8901207036989", + "brands": [ + "Dabur" + ], + "quantity": "550 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Chyawanprash", + "product_name_en": "Chyawanprash" + }, + { + "code": "8901207021718", + "brands": [ + "Dabur" + ], + "quantity": "120g", + "countries_tags": [ + "en:india" + ], + "product_name": "Hot Sip Ayurvedic Kaadha15120g", + "product_name_en": "Hot Sip Ayurvedic Kaadha15120g" + }, + { + "code": "8901207044502", + "brands": [ + "Dabur" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur Vatika", + "product_name_en": "Dabur Vatika" + }, + { + "code": "8901207900631", + "brands": [ + "Dabur" + ], + "quantity": "575g", + "countries_tags": [ + "en:india" + ], + "product_name": "Chyawanprash", + "product_name_en": "Chyawanprash" + }, + { + "code": "8901207004421", + "brands": [ + "Dabur" + ], + "quantity": "1 l", + "countries_tags": [ + "en:india" + ], + "product_name": "Real fruits juss anar", + "product_name_en": "Real fruits juss anar" + }, + { + "code": "8901207019999", + "brands": [ + "Dabur" + ], + "quantity": "400 gm", + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur glucoplus", + "product_name_en": "Dabur glucoplus" + }, + { + "code": "8901207032424", + "brands": [ + "Dabur" + ], + "quantity": "125g(75g+50g", + "countries_tags": [ + "en:india" + ], + "product_name": "Glucose D", + "product_name_en": "Glucose D" + }, + { + "code": "8901207026492", + "brands": [ + "Dabur" + ], + "quantity": "60 tablets", + "countries_tags": [ + "en:india" + ], + "product_name": "Ashwagandha teblets", + "product_name_en": "Ashwagandha teblets" + }, + { + "code": "0941247444052", + "brands": [ + "Dabur" + ], + "quantity": "100g", + "countries_tags": [ + "en:india" + ], + "product_name": "ROGHAN BADAM SHIREEN", + "product_name_en": "ROGHAN BADAM SHIREEN" + }, + { + "code": "8901207004094", + "brands": [ + "Dabur" + ], + "quantity": "100ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur Gulabari Rose Glow Face Cleanser", + "product_name_en": "Dabur Gulabari Rose Glow Face Cleanser" + }, + { + "code": "8901207033872", + "brands": [ + "Dabur" + ], + "quantity": "250ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Hand Sanitizer", + "product_name_en": "Hand Sanitizer" + }, + { + "code": "8901207040795", + "brands": [ + "Dabur" + ], + "quantity": "120ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur Gulabari Rose Water", + "product_name_en": "Dabur Gulabari Rose Water" + }, + { + "code": "8901207500053", + "brands": [ + "Dabur" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Odomos 100g", + "product_name_en": "Odomos 100g" + }, + { + "code": "8901207005374", + "brands": [ + "Dabur" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Honey" + }, + { + "code": "3948888005717", + "brands": [ + "dabur" + ], + "quantity": "250ml", + "countries_tags": [ + "en:india" + ], + "product_name": "lemoneez", + "product_name_en": "lemoneez" + }, + { + "code": "8901207027383", + "brands": [ + "Dabur" + ], + "quantity": "600g", + "countries_tags": [ + "en:india" + ], + "product_name": "DaburRED PASTE FOR TEETH & GUMS", + "product_name_en": "DaburRED PASTE FOR TEETH & GUMS" + }, + { + "code": "6901247038402", + "brands": [ + "dabur" + ], + "quantity": "450ml", + "countries_tags": [ + "en:india" + ], + "product_name": "dabur amla", + "product_name_en": "dabur amla" + }, + { + "code": "8901207025365", + "brands": [ + "Dabur" + ], + "countries_tags": [ + "en:france", + "en:india" + ], + "product_name": "Honey", + "product_name_en": "Honey" + }, + { + "code": "8901207032677", + "brands": [ + "Dabur" + ], + "quantity": "200ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur Real Activ Coconut Water", + "product_name_en": "Dabur Real Activ Coconut Water" + }, + { + "code": "8901207046810", + "brands": [ + "Dabur" + ], + "quantity": "135 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Koolerz Mango", + "product_name_en": "Koolerz Mango" + }, + { + "code": "8901207034145", + "brands": [ + "Dabur" + ], + "quantity": "1 l", + "countries_tags": [ + "en:india" + ], + "product_name": "Amla Juice", + "product_name_en": "Amla Juice" + }, + { + "code": "8901207036712", + "brands": [ + "Dabur" + ], + "quantity": "350g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dant Rakshak", + "product_name_en": "Dant Rakshak" + }, + { + "code": "8901207096662", + "brands": [ + "Dabur" + ], + "quantity": "300 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Vatika enriched coconut hair oil", + "product_name_en": "Vatika enriched coconut hair oil" + }, + { + "code": "8901207001635", + "brands": [ + "dabur" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur chawanprash", + "product_name_en": "Dabur chawanprash" + }, + { + "code": "8901207004391", + "brands": [ + "Dabur" + ], + "quantity": "1 L", + "countries_tags": [ + "en:india" + ], + "product_name": "Real Fruit Power Mango", + "product_name_en": "Real Fruit Power Mango" + }, + { + "code": "89005590", + "brands": [ + "Dabur" + ], + "quantity": "120 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "dabur gulabari", + "product_name_en": "dabur gulabari" + }, + { + "code": "8901207043802", + "brands": [ + "Dabur" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "Vedic Tea", + "product_name_en": "Vedic Tea" + }, + { + "code": "8901207872624", + "brands": [ + "Dabur" + ], + "quantity": "650 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur Honey", + "product_name_en": "Dabur Honey" + }, + { + "code": "3948207025716", + "brands": [ + "Dabur" + ], + "quantity": "1 kg", + "countries_tags": [ + "en:belgium", + "en:india" + ], + "product_name": "Chyawanprash", + "product_name_en": "Chyawanprash" + }, + { + "code": "8901207002731", + "brands": [ + "Dabur" + ], + "quantity": "500 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur Triphala Churna", + "product_name_en": "Dabur Triphala Churna" + }, + { + "code": "8901207046650", + "brands": [ + "Dabur" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "SaniFresh", + "product_name_en": "SaniFresh" + }, + { + "code": "8901207035364", + "brands": [ + "Dabur" + ], + "quantity": "250g", + "countries_tags": [ + "en:india" + ], + "product_name": "Honey", + "product_name_en": "Honey" + }, + { + "code": "8901207038440", + "brands": [ + "Dabur" + ], + "quantity": "300ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur Vatika ENRICHd HAIR OL", + "product_name_en": "Dabur Vatika ENRICHd HAIR OL" + }, + { + "code": "8901207024559", + "brands": [ + "Dabur" + ], + "quantity": "1 l", + "countries_tags": [ + "en:india" + ], + "product_name": "Real Fruit Power Alphonso Mango Nectar", + "product_name_en": "Real Fruit Power Alphonso Mango Nectar" + }, + { + "code": "8901207042263", + "brands": [ + "Dabur" + ], + "quantity": "250g", + "countries_tags": [ + "en:india" + ], + "product_name": "Honitus Cough Drops Ginger", + "product_name_en": "Honitus Cough Drops Ginger" + }, + { + "code": "8901207028304", + "brands": [ + "Dabur" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Glucose" + }, + { + "code": "8901207002533", + "brands": [ + "Dabur" + ], + "quantity": "60g", + "countries_tags": [ + "en:india" + ], + "product_name": "SITOPALADI CHURNA", + "product_name_en": "SITOPALADI CHURNA" + }, + { + "code": "8901207033414", + "brands": [ + "Dabur" + ], + "quantity": "300g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur meswak", + "product_name_en": "Dabur meswak" + }, + { + "code": "8901207062865", + "brands": [ + "Dabur" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Hajmola", + "product_name_en": "Hajmola" + }, + { + "code": "8901207031717", + "brands": [ + "Dabur" + ], + "quantity": "550ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur Amla hair oil 3 HAIR BENEFITS", + "product_name_en": "Dabur Amla hair oil 3 HAIR BENEFITS" + }, + { + "code": "8901207019234", + "brands": [ + "Dabur" + ], + "quantity": "120 Nos", + "countries_tags": [ + "en:india" + ], + "product_name": "Hajmola", + "product_name_en": "Hajmola" + }, + { + "code": "8904037225127", + "brands": [ + "Dabur" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Chawanprash", + "product_name_en": "Chawanprash" + }, + { + "code": "8901207040450", + "brands": [ + "Dabur" + ], + "quantity": "100 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Roghan Badam Shireen", + "product_name_en": "Roghan Badam Shireen" + }, + { + "code": "8901207045400", + "brands": [ + "Dabur" + ], + "quantity": "90G", + "countries_tags": [ + "en:india" + ], + "product_name": "SAT ISABGOL", + "product_name_en": "SAT ISABGOL" + }, + { + "code": "8901207047473", + "brands": [ + "Dabur" + ], + "quantity": "1 kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur Honey", + "product_name_en": "Dabur Honey" + }, + { + "code": "8901207001123", + "brands": [ + "Dabur" + ], + "quantity": "1", + "countries_tags": [ + "en:india" + ], + "product_name": "coconut oil", + "product_name_en": "coconut oil" + }, + { + "code": "8901207013973", + "brands": [ + "Dabur" + ], + "quantity": "900g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur Ratnaprash", + "product_name_en": "Dabur Ratnaprash" + }, + { + "code": "8901207038457", + "brands": [ + "Dabur" + ], + "quantity": "450 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Vatika enriched Coconut Hair Oil", + "product_name_en": "Vatika enriched Coconut Hair Oil" + }, + { + "code": "8901207039348", + "brands": [ + "Dabur" + ], + "quantity": "1l", + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur Cow Ghee", + "product_name_en": "Dabur Cow Ghee" + }, + { + "code": "8901888005410", + "brands": [ + "Real", + "Dabur" + ], + "quantity": "1l", + "countries_tags": [ + "en:india" + ], + "product_name": "Real activ 100% mixed fruit juice", + "product_name_en": "Real activ 100% mixed fruit juice" + }, + { + "code": "8901207001826", + "brands": [ + "Dabur" + ], + "quantity": "375 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Nature care isabgol", + "product_name_en": "Nature care isabgol" + }, + { + "code": "8901888005397", + "brands": [ + "Real", + "Dabur" + ], + "quantity": "1 l", + "countries_tags": [ + "en:india" + ], + "product_name": "Real active 100% orange juice", + "product_name_en": "Real active 100% orange juice" + }, + { + "code": "8901207047169", + "brands": [ + "Dabur" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur Honey", + "product_name_en": "Dabur Honey" + }, + { + "code": "8901207048470", + "brands": [ + "Dabur" + ], + "quantity": "2kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Dabur Chyawanprash", + "product_name_en": "Dabur Chyawanprash" + }, + { + "code": "8901542001703", + "brands": [ + "Dabur" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "Glucon D 500g cbd", + "product_name_en": "Glucon D 500g cbd" + }, + { + "code": "8901207050671", + "brands": [ + "Dabur" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "real", + "product_name_en": "real" + }, + { + "code": "8901207026553", + "brands": [ + "Dabur" + ], + "quantity": "225g", + "countries_tags": [ + "en:india" + ], + "product_name": "Honey", + "product_name_en": "Honey" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/godrej.json b/data/cache/off_brand_corpus/godrej.json new file mode 100644 index 0000000..e749763 --- /dev/null +++ b/data/cache/off_brand_corpus/godrej.json @@ -0,0 +1,401 @@ +{ + "brand": "godrej", + "country": "india", + "fetched_at": 1788773759.5795155, + "fetched_at_human": "2026-09-07 15:05:59", + "hits": [ + { + "code": "8901023010484", + "brands": [ + "Godrej" + ], + "quantity": "100g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cinthol soap", + "product_name_en": "Cinthol soap" + }, + { + "code": "8901023029516", + "brands": [ + "Godrej" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Godrej magic floor cleaner 500 ml", + "product_name_en": "Godrej magic floor cleaner 500 ml" + }, + { + "code": "8901157021028", + "brands": [ + "Godrej" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Good Knight Power Active", + "product_name_en": "Good Knight Power Active" + }, + { + "code": "8906016413112", + "brands": [ + "Godrej Jersey" + ], + "quantity": "180 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Thick Shake Chocolate Flavour", + "product_name_en": "Thick Shake Chocolate Flavour" + }, + { + "code": "8901023029509", + "brands": [ + "Godrej Magic" + ], + "quantity": "55ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Godrej Magic Ready to Mix Floor Cleaner", + "product_name_en": "Godrej Magic Ready to Mix Floor Cleaner" + }, + { + "code": "5909449414056", + "brands": [ + "Godrej" + ], + "quantity": "1 lit", + "countries_tags": [ + "en:india" + ], + "product_name": "Ghee", + "product_name_en": "Ghee" + }, + { + "code": "8901023019883", + "brands": [ + "Godrej" + ], + "quantity": "20g", + "countries_tags": [ + "en:india" + ], + "product_name": "Godrej Rich creme black brown", + "product_name_en": "Godrej Rich creme black brown" + }, + { + "code": "8901157045116", + "brands": [ + "Godrej air freshner" + ], + "quantity": "220ml", + "countries_tags": [ + "en:india" + ], + "product_name": "AIR SPRAY (COOL surf blue)", + "product_name_en": "AIR SPRAY (COOL surf blue)" + }, + { + "code": "8901157045147", + "brands": [ + "Godrej" + ], + "quantity": "220ml/126g", + "countries_tags": [ + "en:india" + ], + "product_name": "Aur spray", + "product_name_en": "Aur spray" + }, + { + "code": "8902756331891", + "brands": [ + "Godrej Tyson" + ], + "quantity": "400g", + "countries_tags": [ + "en:india" + ], + "product_name": "Yummiez Veg. Cheese Fingers", + "product_name_en": "Yummiez Veg. Cheese Fingers" + }, + { + "code": "8906016415178", + "brands": [ + "Godrej My Farm" + ], + "quantity": "500ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Godrej My Farm Cow Milk", + "product_name_en": "Godrej My Farm Cow Milk" + }, + { + "code": "8906016410128", + "brands": [ + "Jersey", + "Godrej" + ], + "quantity": "500ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Godrej Jersey Rich Toned Milk", + "product_name_en": "Godrej Jersey Rich Toned Milk" + }, + { + "code": "8902756431102", + "brands": [ + "Godrej" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "CHICKEN NUGGETS", + "product_name_en": "CHICKEN NUGGETS" + }, + { + "code": "8901023019876", + "brands": [ + "Godrej" + ], + "quantity": "20 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Godrej expert rich creme hair colour", + "product_name_en": "Godrej expert rich creme hair colour" + }, + { + "code": "8906016410241", + "brands": [ + "Godrej Jersey" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "Toned Milk", + "product_name_en": "Toned Milk" + }, + { + "code": "8901023029547", + "brands": [ + "Godrej Magic" + ], + "quantity": "45g", + "countries_tags": [ + "en:india" + ], + "product_name": "Godrej Magic Ready to Mix Hand Wash", + "product_name_en": "Godrej Magic Ready to Mix Hand Wash" + }, + { + "code": "8901023018114", + "brands": [ + "Godrej" + ], + "quantity": "220ml/134g", + "countries_tags": [ + "en:india" + ], + "product_name": "Air matic surf blue", + "product_name_en": "Air matic surf blue" + }, + { + "code": "8906016414058", + "brands": [ + "Jersey", + "Godrej" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Ghee", + "product_name_en": "Ghee" + }, + { + "code": "8901023018602", + "brands": [ + "Godrej" + ], + "quantity": "75g", + "countries_tags": [ + "en:india" + ], + "product_name": "Godrej Nupur Henna", + "product_name_en": "Godrej Nupur Henna" + }, + { + "code": "8906016410081", + "brands": [ + "Godrej Jersey" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "Standardized Milk", + "product_name_en": "Standardized Milk" + }, + { + "code": "8906016410753", + "brands": [ + "Godrej Jersey" + ], + "quantity": "100ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Godrej Jersey Ghee", + "product_name_en": "Godrej Jersey Ghee" + }, + { + "code": "8901023019906", + "brands": [ + "Godrej" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Rich creme netural brown", + "product_name_en": "Rich creme netural brown" + }, + { + "code": "8906016414843", + "brands": [ + "Godrej Jersey" + ], + "quantity": "190g", + "countries_tags": [ + "en:india" + ], + "product_name": "Godrej Jersey Doodh Peda", + "product_name_en": "Godrej Jersey Doodh Peda" + }, + { + "code": "8906016410029", + "brands": [ + "Jersey", + "Godrej" + ], + "quantity": "500ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Godrej Jersey Full Cream Milk", + "product_name_en": "Godrej Jersey Full Cream Milk" + }, + { + "code": "8901023020353", + "brands": [ + "Godrej" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Cinthol", + "product_name_en": "Cinthol" + }, + { + "code": "8901023028519", + "brands": [ + "Godrej" + ], + "quantity": "45", + "countries_tags": [ + "en:india" + ], + "product_name": "Cinthol", + "product_name_en": "Cinthol" + }, + { + "code": "8901023018411", + "brands": [ + "Godrej" + ], + "quantity": "90 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Aer Spray", + "product_name_en": "Aer Spray" + }, + { + "code": "8906016411453", + "brands": [ + "Jersey", + "Godrej" + ], + "quantity": "200 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Soft Paneer", + "product_name_en": "Soft Paneer" + }, + { + "code": "8906016413792", + "brands": [ + "Godrej Jersey" + ], + "quantity": "190 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Badam Flavoured Milk", + "product_name_en": "Badam Flavoured Milk" + }, + { + "code": "8901023018237", + "brands": [ + "Godrej" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "AERMATIC petal crush pink", + "product_name_en": "AERMATIC petal crush pink" + }, + { + "code": "8901023018244", + "brands": [ + "Godrej" + ], + "quantity": "450", + "countries_tags": [ + "en:india" + ], + "product_name": "AIR MATIC violet*valley*bloom", + "product_name_en": "AIR MATIC violet*valley*bloom" + }, + { + "code": "8901157045093", + "brands": [ + "Godrej" + ], + "quantity": "220ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Air spray petal pink", + "product_name_en": "Air spray petal pink" + }, + { + "code": "8901023019890", + "brands": [ + "Godrej" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Godrej Rich cream dark brown", + "product_name_en": "Godrej Rich cream dark brown" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/grb.json b/data/cache/off_brand_corpus/grb.json new file mode 100644 index 0000000..92fae1b --- /dev/null +++ b/data/cache/off_brand_corpus/grb.json @@ -0,0 +1,77 @@ +{ + "brand": "grb", + "country": "india", + "fetched_at": 1788773760.5335126, + "fetched_at_human": "2026-09-07 15:06:00", + "hits": [ + { + "code": "8906010369705", + "brands": [ + "GRB" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Sambar Powder", + "product_name_en": "Sambar Powder" + }, + { + "code": "8906010369804", + "brands": [ + "GRB" + ], + "quantity": "100gm", + "countries_tags": [ + "en:india" + ], + "product_name": "Pineapple", + "product_name_en": "Pineapple" + }, + { + "code": "8906010369613", + "brands": [ + "GRB" + ], + "quantity": "100gm", + "countries_tags": [ + "en:india" + ], + "product_name": "Sona cake", + "product_name_en": "Sona cake" + }, + { + "code": "8906010365592", + "brands": [ + "GRB" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "GRB Mango Soan papdi", + "product_name_en": "GRB Mango Soan papdi" + }, + { + "code": "8906010369835", + "brands": [ + "GRB" + ], + "quantity": "100gm", + "countries_tags": [ + "en:india" + ], + "product_name": "Butterscotch", + "product_name_en": "Butterscotch" + }, + { + "code": "8906010367312", + "brands": [ + "GRB" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "GRB Orange Soan Papdi", + "product_name_en": "GRB Orange Soan Papdi" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/hindustan_unilever.json b/data/cache/off_brand_corpus/hindustan_unilever.json new file mode 100644 index 0000000..4bf23a5 --- /dev/null +++ b/data/cache/off_brand_corpus/hindustan_unilever.json @@ -0,0 +1,7 @@ +{ + "brand": "hindustan unilever", + "country": "india", + "fetched_at": 1788767464.7059898, + "fetched_at_human": "2026-09-07 13:21:04", + "hits": [] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/idhayam.json b/data/cache/off_brand_corpus/idhayam.json new file mode 100644 index 0000000..5060c7d --- /dev/null +++ b/data/cache/off_brand_corpus/idhayam.json @@ -0,0 +1,20 @@ +{ + "brand": "idhayam", + "country": "india", + "fetched_at": 1788773761.4212372, + "fetched_at_human": "2026-09-07 15:06:01", + "hits": [ + { + "code": "8904001801067", + "brands": [ + "Idhayam" + ], + "quantity": "50 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Sambandhi Sesame", + "product_name_en": "Sambandhi Sesame" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/kaleesuwari.json b/data/cache/off_brand_corpus/kaleesuwari.json new file mode 100644 index 0000000..265e47c --- /dev/null +++ b/data/cache/off_brand_corpus/kaleesuwari.json @@ -0,0 +1,20 @@ +{ + "brand": "kaleesuwari", + "country": "india", + "fetched_at": 1788773762.3152397, + "fetched_at_human": "2026-09-07 15:06:02", + "hits": [ + { + "code": "8906010261078", + "brands": [ + "Gold winner kaleesuwari" + ], + "quantity": "1l (910g)", + "countries_tags": [ + "en:india" + ], + "product_name": "Refined Sunflower Oil", + "product_name_en": "Refined Sunflower Oil" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/lion_dates.json b/data/cache/off_brand_corpus/lion_dates.json new file mode 100644 index 0000000..6fc7757 --- /dev/null +++ b/data/cache/off_brand_corpus/lion_dates.json @@ -0,0 +1,7 @@ +{ + "brand": "lion dates", + "country": "india", + "fetched_at": 1788773763.2936656, + "fetched_at_human": "2026-09-07 15:06:03", + "hits": [] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/manna.json b/data/cache/off_brand_corpus/manna.json new file mode 100644 index 0000000..2ae8246 --- /dev/null +++ b/data/cache/off_brand_corpus/manna.json @@ -0,0 +1,78 @@ +{ + "brand": "Manna", + "country": "india", + "fetched_at": 1788773764.41609, + "fetched_at_human": "2026-09-07 15:06:04", + "hits": [ + { + "code": "8906008350388", + "brands": [ + "Manna" + ], + "quantity": "200 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Ragi Malt", + "product_name_en": "Ragi Malt" + }, + { + "code": "8906008350500", + "brands": [ + "Manna" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Oats", + "product_name_en": "Oats" + }, + { + "code": "8906008350470", + "brands": [ + "Manna" + ], + "quantity": "500 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Oats", + "product_name_en": "Oats" + }, + { + "code": "8906008351637", + "brands": [ + "Manna" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Foxtail millet", + "product_name_en": "Foxtail millet" + }, + { + "code": "8906008354508", + "brands": [ + "Manna" + ], + "quantity": "75g", + "countries_tags": [ + "en:india" + ], + "product_name": "Chocolate Cream Wafers", + "product_name_en": "Chocolate Cream Wafers" + }, + { + "code": "8906008350852", + "brands": [ + "Manna" + ], + "quantity": "600 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Health Mix", + "product_name_en": "Health Mix" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/milky_mist.json b/data/cache/off_brand_corpus/milky_mist.json new file mode 100644 index 0000000..7f367c7 --- /dev/null +++ b/data/cache/off_brand_corpus/milky_mist.json @@ -0,0 +1,7 @@ +{ + "brand": "milky mist", + "country": "india", + "fetched_at": 1788773765.3866513, + "fetched_at_human": "2026-09-07 15:06:05", + "hits": [] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/mtr.json b/data/cache/off_brand_corpus/mtr.json new file mode 100644 index 0000000..de2cbc4 --- /dev/null +++ b/data/cache/off_brand_corpus/mtr.json @@ -0,0 +1,296 @@ +{ + "brand": "mtr", + "country": "india", + "fetched_at": 1788773766.412361, + "fetched_at_human": "2026-09-07 15:06:06", + "hits": [ + { + "code": "8901042971155", + "brands": [ + "MTR" + ], + "quantity": "100g", + "countries_tags": [ + "en:india" + ], + "product_name": "Idli Karam Podi", + "product_name_en": "Idli Karam Podi" + }, + { + "code": "8901042971179", + "brands": [ + "MTR" + ], + "quantity": "100g", + "countries_tags": [ + "en:india" + ], + "product_name": "Karivepaku Podi", + "product_name_en": "Karivepaku Podi" + }, + { + "code": "8901042968711", + "brands": [ + "MTR" + ], + "quantity": "50g", + "countries_tags": [ + "en:india" + ], + "product_name": "Hing - compounded asafoetida powder", + "product_name_en": "Hing - compounded asafoetida powder" + }, + { + "code": "8901042954721", + "brands": [ + "MTR" + ], + "quantity": "100 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Sambar Powder", + "product_name_en": "Sambar Powder" + }, + { + "code": "8901042958361", + "brands": [ + "MTR" + ], + "quantity": "100g", + "countries_tags": [ + "en:india" + ], + "product_name": "Idli/Dosa/Chilly Chutney Powder" + }, + { + "code": "8901042954677", + "brands": [ + "MTR" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "Badam drink mix", + "product_name_en": "Badam drink mix" + }, + { + "code": "8901042970738", + "brands": [ + "MTR" + ], + "quantity": "750 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Minute Fresh Idli Batter", + "product_name_en": "Minute Fresh Idli Batter" + }, + { + "code": "8901042970745", + "brands": [ + "MTR" + ], + "quantity": "850 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Minute Fresh Dosa Batter", + "product_name_en": "Minute Fresh Dosa Batter" + }, + { + "code": "8901042970868", + "brands": [ + "MTR" + ], + "quantity": "12g", + "countries_tags": [ + "en:india" + ], + "product_name": "Mutter panner ready masala", + "product_name_en": "Mutter panner ready masala" + }, + { + "code": "8901042955094", + "brands": [ + "MTR" + ], + "quantity": "300 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Mango Sliced Pickles", + "product_name_en": "Mango Sliced Pickles" + }, + { + "code": "8901042970035", + "brands": [ + "MTR" + ], + "quantity": "850 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Seviyan Vermicelli", + "product_name_en": "Seviyan Vermicelli" + }, + { + "code": "8901042956763", + "brands": [ + "MTR" + ], + "quantity": "250 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Lemon Rice", + "product_name_en": "Lemon Rice" + }, + { + "code": "8901042967349", + "brands": [ + "MTR" + ], + "quantity": "60g", + "countries_tags": [ + "en:india" + ], + "product_name": "MTR 3 Minute Breakfast Khatta Meetha Poha", + "product_name_en": "MTR 3 Minute Breakfast Khatta Meetha Poha" + }, + { + "code": "8901042971483", + "brands": [ + "MTR" + ], + "quantity": "850g", + "countries_tags": [ + "en:india" + ], + "product_name": "Vemicelli", + "product_name_en": "Vemicelli" + }, + { + "code": "8901042967325", + "brands": [ + "MTR" + ], + "quantity": "60g", + "countries_tags": [ + "en:india" + ], + "product_name": "MTR POHA", + "product_name_en": "MTR POHA" + }, + { + "code": "8901042964478", + "brands": [ + "MTR" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "Multigrain Dosa", + "product_name_en": "Multigrain Dosa" + }, + { + "code": "8901042954516", + "brands": [ + "MTR" + ], + "quantity": "500 gm", + "countries_tags": [ + "en:india" + ], + "product_name": "Rava idli", + "product_name_en": "Rava idli" + }, + { + "code": "8901042971162", + "brands": [ + "MTR" + ], + "quantity": "100g", + "countries_tags": [ + "en:india" + ], + "product_name": "Kandi Podi", + "product_name_en": "Kandi Podi" + }, + { + "code": "8901042968926", + "brands": [ + "MTR" + ], + "quantity": "200g", + "countries_tags": [ + "en:india" + ], + "product_name": "Spicy Sambar Powder", + "product_name_en": "Spicy Sambar Powder" + }, + { + "code": "8901042957968", + "brands": [ + "MTR" + ], + "quantity": "500g", + "countries_tags": [ + "en:canada", + "en:india" + ], + "product_name": "MTR DOSA", + "product_name_en": "MTR DOSA" + }, + { + "code": "8901042954639", + "brands": [ + "Mtr" + ], + "quantity": "200 gm", + "countries_tags": [ + "en:india" + ], + "product_name": "Dhokla" + }, + { + "code": "8901042970578", + "brands": [ + "mtr" + ], + "quantity": "48g", + "countries_tags": [ + "en:india" + ], + "product_name": "ots", + "product_name_en": "ots" + }, + { + "code": "8901042957104", + "brands": [ + "MTR" + ], + "quantity": "300 g", + "countries_tags": [ + "en:australia", + "en:india" + ], + "product_name": "Alu Methi", + "product_name_en": "Alu Methi" + }, + { + "code": "8901042968940", + "brands": [ + "MTR" + ], + "quantity": "60g", + "countries_tags": [ + "en:india" + ], + "product_name": "MTR Veggie Upma", + "product_name_en": "MTR Veggie Upma" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/nestle.json b/data/cache/off_brand_corpus/nestle.json new file mode 100644 index 0000000..72c159f --- /dev/null +++ b/data/cache/off_brand_corpus/nestle.json @@ -0,0 +1,889 @@ +{ + "brand": "Nestle", + "country": "india", + "fetched_at": 1788773767.798535, + "fetched_at_human": "2026-09-07 15:06:07", + "hits": [ + { + "code": "8901058006292", + "brands": [ + "Nestle" + ], + "quantity": "70 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Maggie: 2 - Minute Noodles", + "product_name_en": "Maggie: 2 - Minute Noodles" + }, + { + "code": "8901058902938", + "brands": [ + "Nestle" + ], + "quantity": "5 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Nescafe Sunrise", + "product_name_en": "Nescafe Sunrise" + }, + { + "code": "8901058890716", + "brands": [ + "Nestle" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Nestle Optifast", + "product_name_en": "Nestle Optifast" + }, + { + "code": "8901058905656", + "brands": [ + "Nestle" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Cerelac", + "product_name_en": "Cerelac" + }, + { + "code": "8901058009422", + "brands": [ + "Nestle" + ], + "quantity": "332.8 g", + "countries_tags": [ + "en:india" + ], + "product_name": "munch", + "product_name_en": "munch" + }, + { + "code": "8901058869293", + "brands": [ + "Nestle" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Nestea", + "product_name_en": "Nestea" + }, + { + "code": "96200384", + "brands": [ + "Nestle" + ], + "quantity": "20.7g", + "countries_tags": [ + "en:india" + ], + "product_name": "Kitkat", + "product_name_en": "Kitkat" + }, + { + "code": "19010588", + "brands": [ + "Maggi", + "Nestle" + ], + "quantity": "71 G", + "countries_tags": [ + "en:india" + ], + "product_name": "Chicken noodles", + "product_name_en": "Chicken noodles" + }, + { + "code": "8901058859331", + "brands": [ + "nestle" + ], + "quantity": "308 g", + "countries_tags": [ + "en:india" + ], + "product_name": "milkybar ( choo - mix fruit )", + "product_name_en": "milkybar ( choo - mix fruit )" + }, + { + "code": "8901058901832", + "brands": [ + "Nestle" + ], + "quantity": "72.5g", + "countries_tags": [ + "en:india" + ], + "product_name": "Masala Veg Atta Noodles", + "product_name_en": "Masala Veg Atta Noodles" + }, + { + "code": "89009871", + "brands": [ + "Nestle" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Polo", + "product_name_en": "Polo" + }, + { + "code": "8901058875744", + "brands": [ + "nestle" + ], + "quantity": "78kcal", + "countries_tags": [ + "en:india" + ], + "product_name": "munch nuts", + "product_name_en": "munch nuts" + }, + { + "code": "8901058904093", + "brands": [ + "Nestle" + ], + "quantity": "42g", + "countries_tags": [ + "en:india" + ], + "product_name": "Munch Max", + "product_name_en": "Munch Max" + }, + { + "code": "8901058851311", + "brands": [ + "Nestle" + ], + "quantity": "70g", + "countries_tags": [ + "en:india" + ], + "product_name": "Maggi Masala 2 Minute 2 Noodles - 280 GM", + "product_name_en": "Maggi Masala 2 Minute 2 Noodles - 280 GM" + }, + { + "code": "8901058857245", + "brands": [ + "Nestle" + ], + "quantity": "28.3g", + "countries_tags": [ + "en:india" + ], + "product_name": "Kitkat", + "product_name_en": "Kitkat" + }, + { + "code": "8901058006124", + "brands": [ + "Nestle" + ], + "quantity": "284", + "countries_tags": [ + "en:india" + ], + "product_name": "Maggie chicken noodles", + "product_name_en": "Maggie chicken noodles" + }, + { + "code": "8901058005905", + "brands": [ + "Nestle" + ], + "quantity": "150g", + "countries_tags": [ + "en:india" + ], + "product_name": "KitKat Dark Chocolate Coated Wafer", + "product_name_en": "KitKat Dark Chocolate Coated Wafer" + }, + { + "code": "8901058842142", + "brands": [ + "Nestle" + ], + "quantity": "1 l", + "countries_tags": [ + "en:india" + ], + "product_name": "a+ slim", + "product_name_en": "a+ slim" + }, + { + "code": "8901058000702", + "brands": [ + "Nestle" + ], + "quantity": "18 and 100g", + "countries_tags": [ + "en:india" + ], + "product_name": "Munch", + "product_name_en": "Munch" + }, + { + "code": "0941458000702", + "brands": [ + "Nestle" + ], + "quantity": "160.2g", + "countries_tags": [ + "en:india" + ], + "product_name": "Munch", + "product_name_en": "Munch" + }, + { + "code": "8901058875324", + "brands": [ + "Nestle", + " Maggi" + ], + "quantity": "60.5 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Maggi - Desi Cheesy", + "product_name_en": "Maggi - Desi Cheesy" + }, + { + "code": "8901058856293", + "brands": [ + "Nestle" + ], + "quantity": "78 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Masala Magic", + "product_name_en": "Masala Magic" + }, + { + "code": "8901058817836", + "brands": [ + "Nestle", + " Nescafe" + ], + "quantity": "100g", + "countries_tags": [ + "en:india" + ], + "product_name": "Nescafe Classic Coffee", + "product_name_en": "Nescafe Classic Coffee" + }, + { + "code": "8901058842906", + "brands": [ + "nestle" + ], + "quantity": "90 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Tarmarind Sauce", + "product_name_en": "Tarmarind Sauce" + }, + { + "code": "8901058869873", + "brands": [ + "NESTLE" + ], + "quantity": "75 kcal", + "countries_tags": [ + "en:india" + ], + "product_name": "BARONE", + "product_name_en": "BARONE" + }, + { + "code": "8901058869002", + "brands": [ + "Nestle" + ], + "quantity": "12.5 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Munch", + "product_name_en": "Munch" + }, + { + "code": "8901058898330", + "brands": [ + "Nestle" + ], + "quantity": "180 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Nescafe choco mocha", + "product_name_en": "Nescafe choco mocha" + }, + { + "code": "8901058847789", + "brands": [ + "Nestle" + ], + "quantity": "1Kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Nestle Resource High Protein", + "product_name_en": "Nestle Resource High Protein" + }, + { + "code": "89008294", + "brands": [ + "nestle" + ], + "quantity": "10.4g", + "countries_tags": [ + "en:india" + ], + "product_name": "Munch", + "product_name_en": "Munch" + }, + { + "code": "8901058845617", + "brands": [ + "nestle", + " Maggi" + ], + "quantity": "70 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Chilly Chow Cuppa Noodles", + "product_name_en": "Chilly Chow Cuppa Noodles" + }, + { + "code": "8901058870008", + "brands": [ + "Nestle" + ], + "quantity": "350", + "countries_tags": [ + "en:india" + ], + "product_name": "Koko crunch", + "product_name_en": "Koko crunch" + }, + { + "code": "8901058890860", + "brands": [ + "Nestle" + ], + "quantity": "10g", + "countries_tags": [ + "en:india" + ], + "product_name": "Milky bar", + "product_name_en": "Milky bar" + }, + { + "code": "8901058851304", + "brands": [ + "Nestle" + ], + "quantity": "70g", + "countries_tags": [ + "en:france", + "en:india" + ], + "product_name": "Maggi Masala Noodles", + "product_name_en": "Maggi Masala Noodles" + }, + { + "code": "8901058005752", + "brands": [ + "Nestle la laitiere" + ], + "quantity": "40g", + "countries_tags": [ + "en:india" + ], + "product_name": "a+ masala millet", + "product_name_en": "a+ masala millet" + }, + { + "code": "0089000498871", + "brands": [ + "Nestle SA" + ], + "quantity": "12g", + "countries_tags": [ + "en:india" + ], + "product_name": "Nestle Polo - The Mint With The Hole, 12g Pouch", + "product_name_en": "Nestle Polo - The Mint With The Hole, 12g Pouch" + }, + { + "code": "0941038897487", + "brands": [ + "nestle" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "nan pro formula milk nestle", + "product_name_en": "nan pro formula milk nestle" + }, + { + "code": "4987176108630", + "brands": [ + "Nestle" + ], + "quantity": "70 g", + "countries_tags": [ + "en:india" + ], + "product_name": "maggi 2-Minute Noodles", + "product_name_en": "maggi 2-Minute Noodles" + }, + { + "code": "6294017112779", + "brands": [ + "Nestle" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Nido", + "product_name_en": "Nido" + }, + { + "code": "8901058000290", + "brands": [ + "Nestle" + ], + "quantity": "70g", + "countries_tags": [ + "en:india" + ], + "product_name": "Maggi 2 Minute Noodles", + "product_name_en": "Maggi 2 Minute Noodles" + }, + { + "code": "8901058005080", + "brands": [ + "Nestle" + ], + "quantity": "38.5", + "countries_tags": [ + "en:india", + "en:indonesia" + ], + "product_name": "Munch Max", + "product_name_en": "Munch Max" + }, + { + "code": "8901058012897", + "brands": [ + "Nestle" + ], + "quantity": "18", + "countries_tags": [ + "en:india" + ], + "product_name": "munch crunchilious cereal", + "product_name_en": "munch crunchilious cereal" + }, + { + "code": "8901058869088", + "brands": [ + "Nestle" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Nouille masala", + "product_name_en": "Nouille masala" + }, + { + "code": "8901058904017", + "brands": [ + "Nestle" + ], + "quantity": "0.80g", + "countries_tags": [ + "en:india" + ], + "product_name": "MILO", + "product_name_en": "MILO" + }, + { + "code": "6009188004828", + "brands": [ + "Nestle" + ], + "quantity": "40g", + "countries_tags": [ + "en:india" + ], + "product_name": "Kitkat chunky white", + "product_name_en": "Kitkat chunky white" + }, + { + "code": "8901058905571", + "brands": [ + "nestle" + ], + "quantity": "1 and 18g", + "countries_tags": [ + "en:india" + ], + "product_name": "munch", + "product_name_en": "munch" + }, + { + "code": "8901058844627", + "brands": [ + "Nestle" + ], + "quantity": "300 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Cerelac", + "product_name_en": "Cerelac" + }, + { + "code": "8901058849127", + "brands": [ + "nestle", + " Nescafe" + ], + "quantity": "5 serving packets", + "countries_tags": [ + "en:india" + ], + "product_name": "nescafé cappuccino", + "product_name_en": "nescafé cappuccino" + }, + { + "code": "8901058005424", + "brands": [ + "nestle" + ], + "quantity": "71.5g", + "countries_tags": [ + "en:india" + ], + "product_name": "maggie koriean spicy cheesy", + "product_name_en": "maggie koriean spicy cheesy" + }, + { + "code": "8901058003802", + "brands": [ + "Nestle" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Nestle Everyday Dairy Whitener", + "product_name_en": "Nestle Everyday Dairy Whitener" + }, + { + "code": "8901058903812", + "brands": [ + "maggi", + "Nestle" + ], + "quantity": "120g", + "countries_tags": [ + "en:india" + ], + "product_name": "Maggi Rich Tomato Ketchup Pichkoo", + "product_name_en": "Maggi Rich Tomato Ketchup Pichkoo" + }, + { + "code": "8901058903966", + "brands": [ + "Nestle" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Milkybar Moosha", + "product_name_en": "Milkybar Moosha" + }, + { + "code": "8901058901689", + "brands": [ + "Nestle" + ], + "quantity": "400 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Lactogen 1", + "product_name_en": "Lactogen 1" + }, + { + "code": "8901058007213", + "brands": [ + "Maggi", + "Nestle" + ], + "quantity": "72.5g", + "countries_tags": [ + "en:india" + ], + "product_name": "Masala Veg Atta noodles", + "product_name_en": "Masala Veg Atta noodles" + }, + { + "code": "89006733", + "brands": [ + "Nestle", + "Nescafe" + ], + "quantity": "25 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Nescafe Classic Pure Coffee", + "product_name_en": "Nescafe Classic Pure Coffee" + }, + { + "code": "8901058844894", + "brands": [ + "nestle" + ], + "quantity": "90 g", + "countries_tags": [ + "en:india" + ], + "product_name": "maggi rich tomato ketchup pichkoo", + "product_name_en": "maggi rich tomato ketchup pichkoo" + }, + { + "code": "8901058823844", + "brands": [ + "Maggi", + "Nestle" + ], + "countries_tags": [ + "en:germany", + "en:india", + "en:spain" + ], + "product_name": "Maggie", + "product_name_en": "Maggie" + }, + { + "code": "89009802", + "brands": [ + "nestle" + ], + "quantity": "8.9g", + "countries_tags": [ + "en:india" + ], + "product_name": "Munch", + "product_name_en": "Munch" + }, + { + "code": "0804410415009", + "brands": [ + "Nestle" + ], + "quantity": "42g", + "countries_tags": [ + "en:india" + ], + "product_name": "Kitkat chunky peanut butter", + "product_name_en": "Kitkat chunky peanut butter" + }, + { + "code": "8901058869460", + "brands": [ + "Nestle" + ], + "quantity": "1kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Nestle Everyday Dairy Whitener", + "product_name_en": "Nestle Everyday Dairy Whitener" + }, + { + "code": "8901058000306", + "brands": [ + "Nestle" + ], + "quantity": "560 gm", + "countries_tags": [ + "en:india" + ], + "product_name": "Maggi noodles masala", + "product_name_en": "Maggi noodles masala" + }, + { + "code": "89008478", + "brands": [ + "Nestle" + ], + "quantity": "1", + "countries_tags": [ + "en:india" + ], + "product_name": "Milkybar", + "product_name_en": "Milkybar" + }, + { + "code": "8901058006148", + "brands": [ + "nestle" + ], + "quantity": "71g", + "countries_tags": [ + "en:india" + ], + "product_name": "maggie chicken noodles", + "product_name_en": "maggie chicken noodles" + }, + { + "code": "8901058011371", + "brands": [ + "Nestle" + ], + "quantity": "350g", + "countries_tags": [ + "en:india" + ], + "product_name": "Nestle Cerelac", + "product_name_en": "Nestle Cerelac" + }, + { + "code": "8901058895766", + "brands": [ + "Nestle" + ], + "quantity": "90g", + "countries_tags": [ + "en:india" + ], + "product_name": "maggi Pichkoo tomato ketchup", + "product_name_en": "maggi Pichkoo tomato ketchup" + }, + { + "code": "8901058868036", + "brands": [ + "Nestle" + ], + "quantity": "55g", + "countries_tags": [ + "en:india" + ], + "product_name": "KitKat", + "product_name_en": "KitKat" + }, + { + "code": "8901058891430", + "brands": [ + "Nestle nutrition" + ], + "quantity": "280g", + "countries_tags": [ + "en:india" + ], + "product_name": "2-minutes masala noodles", + "product_name_en": "2-minutes masala noodles" + }, + { + "code": "8901058847505", + "brands": [ + "Nestle" + ], + "quantity": "65 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Masala penne pasta", + "product_name_en": "Masala penne pasta" + }, + { + "code": "8901058844757", + "brands": [ + "nestle", + " Maggi" + ], + "quantity": "70g", + "countries_tags": [ + "en:india" + ], + "product_name": "Masala Cuppa Noodles", + "product_name_en": "Masala Cuppa Noodles" + }, + { + "code": "8901058000221", + "brands": [ + "Nestle" + ], + "quantity": "56g", + "countries_tags": [ + "en:india" + ], + "product_name": "2 minute noodles", + "product_name_en": "2 minute noodles" + }, + { + "code": "89006511", + "brands": [ + "nestle" + ], + "quantity": "1 18g", + "countries_tags": [ + "en:india" + ], + "product_name": "classic chocolate", + "product_name_en": "classic chocolate" + }, + { + "code": "4901059046345", + "brands": [ + "nestle" + ], + "quantity": "27.5g", + "countries_tags": [ + "en:india" + ], + "product_name": "Kitkat Butterscotch Flavour", + "product_name_en": "Kitkat Butterscotch Flavour" + }, + { + "code": "8901058904024", + "brands": [ + "Milo", + "Nestle" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Milo for Teenage", + "product_name_en": "Milo for Teenage" + }, + { + "code": "8901058009705", + "brands": [ + "Maggi", + "Nestle" + ], + "quantity": "290 gm", + "countries_tags": [ + "en:india" + ], + "product_name": "Veg atta noodles", + "product_name_en": "Veg atta noodles" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/own_products.json b/data/cache/off_brand_corpus/own_products.json new file mode 100644 index 0000000..e79a68e --- /dev/null +++ b/data/cache/off_brand_corpus/own_products.json @@ -0,0 +1,7 @@ +{ + "brand": "Own Products", + "country": "india", + "fetched_at": 1788767465.7265358, + "fetched_at_human": "2026-09-07 13:21:05", + "hits": [] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/p_g.json b/data/cache/off_brand_corpus/p_g.json new file mode 100644 index 0000000..19907fd --- /dev/null +++ b/data/cache/off_brand_corpus/p_g.json @@ -0,0 +1,163 @@ +{ + "brand": "p&g", + "country": "india", + "fetched_at": 1788773769.3391004, + "fetched_at_human": "2026-09-07 15:06:09", + "hits": [ + { + "code": "4987176164360", + "brands": [ + "P&G" + ], + "quantity": "2L+200ml", + "countries_tags": [ + "en:india" + ], + "product_name": "TIDE TL", + "product_name_en": "TIDE TL" + }, + { + "code": "4987176200648", + "brands": [ + "P&g" + ], + "quantity": "7pads", + "countries_tags": [ + "en:india" + ], + "product_name": "Whisper Bindas night", + "product_name_en": "Whisper Bindas night" + }, + { + "code": "8904308401977", + "brands": [ + "G Happy Day" + ], + "quantity": "35g", + "countries_tags": [ + "en:india" + ], + "product_name": "Green Tea", + "product_name_en": "Green Tea" + }, + { + "code": "8901719125263", + "brands": [ + "Parle-G", + "Parle" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Parle-G Kismi Dal Chini Cinnamon Biscuits", + "product_name_en": "Parle-G Kismi Dal Chini Cinnamon Biscuits" + }, + { + "code": "8906033950874", + "brands": [ + "G pulla reddy's" + ], + "quantity": "150g", + "countries_tags": [ + "en:india" + ], + "product_name": "Sev", + "product_name_en": "Sev" + }, + { + "code": "8901719100956", + "brands": [ + "Parle-G" + ], + "quantity": "80g", + "countries_tags": [ + "en:india" + ], + "product_name": "Parle G", + "product_name_en": "Parle G" + }, + { + "code": "8906007750158", + "brands": [ + "K P Namboodiri's" + ], + "quantity": "80 g", + "countries_tags": [ + "en:india" + ], + "product_name": "K P Namboodiri's Mint Fresh Herbal Gel", + "product_name_en": "K P Namboodiri's Mint Fresh Herbal Gel" + }, + { + "code": "4987176179951", + "brands": [ + "P&G" + ], + "quantity": "2L+200ml", + "countries_tags": [ + "en:india" + ], + "product_name": "TIDE FL", + "product_name_en": "TIDE FL" + }, + { + "code": "8908002288339", + "brands": [ + "P" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Sooji", + "product_name_en": "Sooji" + }, + { + "code": "8901719255151", + "brands": [ + "Parle-G" + ], + "quantity": "150g", + "countries_tags": [ + "en:india" + ], + "product_name": "Parle-G Original Gluco Biscuits", + "product_name_en": "Parle-G Original Gluco Biscuits" + }, + { + "code": "8908005080220", + "brands": [ + "M. P." + ], + "quantity": "200g", + "countries_tags": [ + "en:india" + ], + "product_name": "Manpasand Sooji", + "product_name_en": "Manpasand Sooji" + }, + { + "code": "8901089010763", + "brands": [ + "SevenSeas", + "P&G" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "SevenSeas Original Cod-liver Oil Capsules", + "product_name_en": "SevenSeas Original Cod-liver Oil Capsules" + }, + { + "code": "4987176164377", + "brands": [ + "P&G" + ], + "quantity": "2L+200ml", + "countries_tags": [ + "en:india" + ], + "product_name": "TIDE Fl 2", + "product_name_en": "TIDE Fl 2" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/pepsico.json b/data/cache/off_brand_corpus/pepsico.json new file mode 100644 index 0000000..1033008 --- /dev/null +++ b/data/cache/off_brand_corpus/pepsico.json @@ -0,0 +1,583 @@ +{ + "brand": "pepsico", + "country": "india", + "fetched_at": 1788773770.7624264, + "fetched_at_human": "2026-09-07 15:06:10", + "hits": [ + { + "code": "8902080105021", + "brands": [ + "Pepsico" + ], + "quantity": "12", + "countries_tags": [ + "en:india" + ], + "product_name": "Pepsi Cola 250ml Can" + }, + { + "code": "8902080001156", + "brands": [ + "Pepsico" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Pepsi", + "product_name_en": "Pepsi" + }, + { + "code": "8902080001170", + "brands": [ + "Pepsico" + ], + "quantity": "475 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Mirinda", + "product_name_en": "Mirinda" + }, + { + "code": "8901491502047", + "brands": [ + "Pepsico Lays" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "lays", + "product_name_en": "lays" + }, + { + "code": "8902080285020", + "brands": [ + "pepsico" + ], + "quantity": "7", + "countries_tags": [ + "en:india" + ], + "product_name": "Pepsi Cola Zero Sugar 250ml Can", + "product_name_en": "Pepsi Cola Zero Sugar 250ml Can" + }, + { + "code": "8902080002528", + "brands": [ + "PepsiCo" + ], + "quantity": "250 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Sting Blue Current", + "product_name_en": "Sting Blue Current" + }, + { + "code": "8902080204021", + "brands": [ + "PepsiCo Inc.", + "Mirinda" + ], + "quantity": "250 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Mirinda", + "product_name_en": "Mirinda" + }, + { + "code": "8902080002054", + "brands": [ + "PepsiCo" + ], + "quantity": "180ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Tropicana Litchi Delight", + "product_name_en": "Tropicana Litchi Delight" + }, + { + "code": "8902080002337", + "brands": [ + "Pepsico" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Gatorade orange flv", + "product_name_en": "Gatorade orange flv" + }, + { + "code": "8902080364022", + "brands": [ + "PepsiCo" + ], + "quantity": "250 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Mountain Dew", + "product_name_en": "Mountain Dew" + }, + { + "code": "8934588232114", + "brands": [ + "Sting", + "Pepsi", + "PepsiCo", + "Suntory", + "Sting Energy" + ], + "quantity": "320ml", + "countries_tags": [ + "en:india", + "en:united-states", + "en:vietnam" + ], + "product_name": "Sting Energy", + "product_name_en": "Sting Energy" + }, + { + "code": "8902080504046", + "brands": [ + "Aquafina", + "Pepsico" + ], + "quantity": "500 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Aquafina", + "product_name_en": "Aquafina" + }, + { + "code": "8901491103084", + "brands": [ + "PepsiCo", + "Kurkure" + ], + "quantity": "75g", + "countries_tags": [ + "en:india", + "en:spain" + ], + "product_name": "Green chutney style", + "product_name_en": "Kurkure" + }, + { + "code": "8901491000659", + "brands": [ + "pepsico india" + ], + "quantity": "18 g", + "countries_tags": [ + "en:india" + ], + "product_name": "cheetos", + "product_name_en": "cheetos" + }, + { + "code": "8901491101905", + "brands": [ + "PepsiCo", + " Inc." + ], + "quantity": "17 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Kurkure - Green Chutney Style", + "product_name_en": "Kurkure - Green Chutney Style" + }, + { + "code": "8901491981699", + "brands": [ + "Pepsico" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Lay's magic masala", + "product_name_en": "Lay's magic masala" + }, + { + "code": "8902080104345", + "brands": [ + "Pepsico" + ], + "quantity": "54", + "countries_tags": [ + "en:india" + ], + "product_name": "Pepsi Brand Drink 2.25 l", + "product_name_en": "Pepsi Brand Drink 2.25 l" + }, + { + "code": "8902080704057", + "brands": [ + "Pepsico" + ], + "quantity": "750ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Lehar Soda 750ml pet", + "product_name_en": "Lehar Soda 750ml pet" + }, + { + "code": "8902080364343", + "brands": [ + "mountaindew", + "Pepsico" + ], + "quantity": "2.25", + "countries_tags": [ + "en:india" + ], + "product_name": "Mountain dew 2ltr", + "product_name_en": "Mountain dew 2ltr" + }, + { + "code": "8901491361026", + "brands": [ + "PepsiCo India holdings Pvt.Ltd" + ], + "quantity": "44g", + "countries_tags": [ + "en:india" + ], + "product_name": "masala munch 10rs", + "product_name_en": "masala munch 10rs" + }, + { + "code": "8901491101813", + "brands": [ + "PepsiCo", + "Lay's" + ], + "quantity": "55 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Lays 20rs", + "product_name_en": "Lays 20rs" + }, + { + "code": "8901491002707", + "brands": [ + "Kurkure", + "Pepsico" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Chaat Fills Bhel Chutney Twist", + "product_name_en": "Chaat Fills Bhel Chutney Twist" + }, + { + "code": "8902080304028", + "brands": [ + "Pepsico" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "7up lemon 250ml", + "product_name_en": "7up lemon 250ml" + }, + { + "code": "8901030779312", + "brands": [ + "Unilever and PepsiCo." + ], + "quantity": "25N", + "countries_tags": [ + "en:india" + ], + "product_name": "Lipton Green Tea", + "product_name_en": "Lipton Green Tea" + }, + { + "code": "8901491002820", + "brands": [ + "Pepsico", + "Quaker" + ], + "quantity": "160g", + "countries_tags": [ + "en:india" + ], + "product_name": "Oats Muesli Fruit & Nut", + "product_name_en": "Oats Muesli Fruit & Nut" + }, + { + "code": "8902080364589", + "brands": [ + "PepsiCo" + ], + "quantity": "400 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Mountain Dew", + "product_name_en": "Mountain Dew" + }, + { + "code": "8902080364084", + "brands": [ + "Pepsico" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Mountain Dew" + }, + { + "code": "8902080002290", + "brands": [ + "PepsiCo" + ], + "quantity": "500 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "7up", + "product_name_en": "7up" + }, + { + "code": "8902080011254", + "brands": [ + "pepsico", + " Tropicana" + ], + "quantity": "200ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Mango delight", + "product_name_en": "Mango delight" + }, + { + "code": "8902080304059", + "brands": [ + "PepsiCo" + ], + "quantity": "16", + "countries_tags": [ + "en:india" + ], + "product_name": "7up Super Duper 750ml", + "product_name_en": "7up Super Duper 750ml" + }, + { + "code": "8902080185023", + "brands": [ + "PepsiCo" + ], + "quantity": "300ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Sting", + "product_name_en": "Sting" + }, + { + "code": "8902080364053", + "brands": [ + "Pepsico" + ], + "quantity": "3", + "countries_tags": [ + "en:india" + ], + "product_name": "Mountain Dew 750 ml", + "product_name_en": "Mountain Dew 750 ml" + }, + { + "code": "8902080204342", + "brands": [ + "Pepsico" + ], + "quantity": "18", + "countries_tags": [ + "en:india" + ], + "product_name": "Pepsi Brand Mirinda orange flv 2ltr", + "product_name_en": "Pepsi Brand Mirinda orange flv 2ltr" + }, + { + "code": "8901491502023", + "brands": [ + "PepsiCo", + " Inc." + ], + "quantity": "11g", + "countries_tags": [ + "en:india" + ], + "product_name": "Lay's - India's Magic Masala", + "product_name_en": "Lay's - India's Magic Masala" + }, + { + "code": "8902080001521", + "brands": [ + "Slice", + " Pepsico" + ], + "quantity": "200ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Slice", + "product_name_en": "Slice" + }, + { + "code": "8901491103442", + "brands": [ + "PepsiCo" + ], + "countries_tags": [ + "en:india", + "en:united-states" + ], + "product_name": "Kurkure Naughty Tomato", + "product_name_en": "Kurkure Naughty Tomato" + }, + { + "code": "8902080002771", + "brands": [ + "Pepsico", + "Tropicana" + ], + "quantity": "500ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Tropicana Fruitz", + "product_name_en": "Tropicana Fruitz" + }, + { + "code": "8902080104024", + "brands": [ + "Pepsico" + ], + "quantity": "1 8902080104024", + "countries_tags": [ + "en:india" + ], + "product_name": "Pepsi cola", + "product_name_en": "Pepsi" + }, + { + "code": "8902080404094", + "brands": [ + "Pepsico" + ], + "quantity": "1", + "countries_tags": [ + "en:india" + ], + "product_name": "Mango slice 600ml", + "product_name_en": "Mango slice 600ml" + }, + { + "code": "8901491000871", + "brands": [ + "PepsiCo" + ], + "quantity": "25 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Doritos Masala Mayhem Flavour", + "product_name_en": "Doritos Masala Mayhem Flavour" + }, + { + "code": "8902080364091", + "brands": [ + "PepsiCo" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Mountain Dew", + "product_name_en": "Mountain Dew" + }, + { + "code": "8901491990080", + "brands": [ + "PepsiCo", + " Doritos" + ], + "quantity": "75 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Doritos Nacho Cheese Flavours", + "product_name_en": "Doritos Nacho Cheese Flavours" + }, + { + "code": "15267237", + "brands": [ + "Pepsico" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "tarij" + }, + { + "code": "8901491990028", + "brands": [ + "PepsiCo", + " Doritos" + ], + "quantity": "39 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Doritos Sweet Chilli Flavour", + "product_name_en": "Doritos Sweet Chilli Flavour" + }, + { + "code": "19020808", + "brands": [ + "7up", + "PepsiCo Inc." + ], + "quantity": "250ml", + "countries_tags": [ + "en:india" + ], + "product_name": "7up Nimbooz", + "product_name_en": "7up Nimbooz" + }, + { + "code": "8902080404575", + "brands": [ + "PepsiCo Inc." + ], + "quantity": "29", + "countries_tags": [ + "en:india" + ], + "product_name": "Mango Slice 1.75ltr", + "product_name_en": "Mango Slice 1.75ltr" + }, + { + "code": "8901491503037", + "brands": [ + "Lay's", + "PepsiCo" + ], + "quantity": "24g", + "countries_tags": [ + "en:india" + ], + "product_name": "American Style Cream & Onion 10rs", + "product_name_en": "American Style Cream & Onion 10rs" + } + ] +} \ No newline at end of file diff --git a/data/cache/off_brand_corpus/tata.json b/data/cache/off_brand_corpus/tata.json new file mode 100644 index 0000000..a3a737e --- /dev/null +++ b/data/cache/off_brand_corpus/tata.json @@ -0,0 +1,601 @@ +{ + "brand": "tata", + "country": "india", + "fetched_at": 1788767466.6190693, + "fetched_at_human": "2026-09-07 13:21:06", + "hits": [ + { + "code": "8901052010615", + "brands": [ + "Tata Tea" + ], + "quantity": "1 Kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Premium", + "product_name_en": "Premium" + }, + { + "code": "8904043905129", + "brands": [ + "Tata Sampann" + ], + "quantity": "100g", + "countries_tags": [ + "en:india" + ], + "product_name": "Sambar masala", + "product_name_en": "Sambar masala" + }, + { + "code": "8901052030330", + "brands": [ + "Tata Tea" + ], + "quantity": "250g", + "countries_tags": [ + "en:india" + ], + "product_name": "Premium Tea", + "product_name_en": "Premium Tea" + }, + { + "code": "8901090328109", + "brands": [ + "TATA" + ], + "quantity": "2g", + "countries_tags": [ + "en:india" + ], + "product_name": "Tata Coffee Grand Classic", + "product_name_en": "Tata Coffee Grand Classic" + }, + { + "code": "8904296902104", + "brands": [ + "Tata" + ], + "quantity": "420g", + "countries_tags": [ + "en:india" + ], + "product_name": "Fabsta Peanut Butter Creamy", + "product_name_en": "Fabsta Peanut Butter Creamy" + }, + { + "code": "5900114490627", + "brands": [ + "Tata Soulfull" + ], + "quantity": "375g", + "countries_tags": [ + "en:india" + ], + "product_name": "Ragi Bites", + "product_name_en": "Ragi Bites" + }, + { + "code": "8904043926643", + "brands": [ + "Tata Sampann" + ], + "quantity": "1kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Unpolished Chana Dal", + "product_name_en": "Unpolished Chana Dal" + }, + { + "code": "8904043926612", + "brands": [ + "TATA Salt" + ], + "quantity": "1 kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Himalayan Rock Salt", + "product_name_en": "Himalayan Rock Salt" + }, + { + "code": "8904043926728", + "brands": [ + "Tata Sampann" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "Tata Sampann Besan", + "product_name_en": "Tata Sampann Besan" + }, + { + "code": "8904043906584", + "brands": [ + "Tata Sampann" + ], + "quantity": "200g", + "countries_tags": [ + "en:india" + ], + "product_name": "Chia seeds", + "product_name_en": "Chia seeds" + }, + { + "code": "8901052005604", + "brands": [ + "Tata Tea" + ], + "quantity": "250g", + "countries_tags": [ + "en:india" + ], + "product_name": "Tata Tea Chakra Gold", + "product_name_en": "Tata Tea Chakra Gold" + }, + { + "code": "8908002984965", + "brands": [ + "Tata Soulfoul" + ], + "quantity": "500 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Millet muesli", + "product_name_en": "Millet muesli" + }, + { + "code": "8901090328574", + "brands": [ + "Tata" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Tata Coffee Grand Classic", + "product_name_en": "Tata Coffee Grand Classic" + }, + { + "code": "2000000147562", + "brands": [ + "Tata 1mg" + ], + "quantity": "400g", + "countries_tags": [ + "en:india" + ], + "product_name": "Tata 1mg Pro+ 2.0 High Protein High Calorie Protein Powder Vanilla", + "product_name_en": "Tata 1mg Pro+ 2.0 High Protein High Calorie Protein Powder Vanilla" + }, + { + "code": "8906113491334", + "brands": [ + "Tata Soulfull" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Corn Flakes", + "product_name_en": "Corn Flakes" + }, + { + "code": "8904043905730", + "brands": [ + "Tata Sampann" + ], + "quantity": "285g", + "countries_tags": [ + "en:india" + ], + "product_name": "Yumside Delhi Style Dal Makhani", + "product_name_en": "Yumside Delhi Style Dal Makhani" + }, + { + "code": "8904043901015", + "brands": [ + "Tata" + ], + "quantity": "1kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Tata salt", + "product_name_en": "Tata salt" + }, + { + "code": "8903754000840", + "brands": [ + "Tata Coffee Grand" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Tata Coffee Grand Cold Coffee Belgian Chocolate", + "product_name_en": "Tata Coffee Grand Cold Coffee Belgian Chocolate" + }, + { + "code": "8901052005154", + "brands": [ + "Tata Tea" + ], + "quantity": "250 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Gold Care", + "product_name_en": "Gold Care" + }, + { + "code": "8901052003839", + "brands": [ + "Tata Tea" + ], + "quantity": "40g", + "countries_tags": [ + "en:india" + ], + "product_name": "Tata Tea Agni", + "product_name_en": "Tata Tea Agni" + }, + { + "code": "8901052003846", + "brands": [ + "Tata tea" + ], + "quantity": "1kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Strong leaf tea", + "product_name_en": "Strong leaf tea" + }, + { + "code": "8901052000722", + "brands": [ + "TATA TEA" + ], + "quantity": "180", + "countries_tags": [ + "en:india" + ], + "product_name": "TATA TEA premium desh ki chai", + "product_name_en": "TATA TEA premium desh ki chai" + }, + { + "code": "8901052010318", + "brands": [ + "Tata" + ], + "quantity": "250g", + "countries_tags": [ + "en:india" + ], + "product_name": "Tea premium", + "product_name_en": "Tea premium" + }, + { + "code": "8901052031504", + "brands": [ + "Tata Tea" + ], + "quantity": "500 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Kanan Devan Strong", + "product_name_en": "Kanan Devan Strong" + }, + { + "code": "19082905", + "brands": [ + "Tata sampann" + ], + "quantity": "500 gm", + "countries_tags": [ + "en:india" + ], + "product_name": "Moong chilka", + "product_name_en": "Moong chilka" + }, + { + "code": "8904043926308", + "brands": [ + "Tata sampann" + ], + "quantity": "500gm", + "countries_tags": [ + "en:india" + ], + "product_name": "Kala chana", + "product_name_en": "Kala chana" + }, + { + "code": "8906113490337", + "brands": [ + "Tata Soulfull" + ], + "quantity": "500 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Millet Muesli Chocolate & Cranberry", + "product_name_en": "Millet Muesli Chocolate & Cranberry" + }, + { + "code": "8901052006243", + "brands": [ + "TATA" + ], + "quantity": "250g", + "countries_tags": [ + "en:india" + ], + "product_name": "TATA TEA Gold care", + "product_name_en": "TATA TEA Gold care" + }, + { + "code": "8904043901077", + "brands": [ + "TATA" + ], + "quantity": "1 kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Salt LITE", + "product_name_en": "Salt LITE" + }, + { + "code": "8906113490801", + "brands": [ + "Tata Soulfull" + ], + "quantity": "35g", + "countries_tags": [ + "en:india" + ], + "product_name": "Masala Oats and Millets", + "product_name_en": "Masala Oats and Millets" + }, + { + "code": "8901052006052", + "brands": [ + "Tata tea" + ], + "quantity": "1kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Tata Tea Agni Elaichi Chai", + "product_name_en": "Tata Tea Agni Elaichi Chai" + }, + { + "code": "8904043926704", + "brands": [ + "Tata sampann" + ], + "quantity": "500gm", + "countries_tags": [ + "en:india" + ], + "product_name": "Tata sampann unpolished kabuli chana", + "product_name_en": "Tata sampann unpolished kabuli chana" + }, + { + "code": "8904043904061", + "brands": [ + "Tata Sampann" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Tata Sampann Poha", + "product_name_en": "Tata Sampann Poha" + }, + { + "code": "8903754000123", + "brands": [ + "Tata" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Gluco+ Strawberry Jelly Energy Drink", + "product_name_en": "Gluco+ Strawberry Jelly Energy Drink" + }, + { + "code": "8904043926216", + "brands": [ + "Tata Sampann" + ], + "quantity": "1 kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Unpolished Toor Dal", + "product_name_en": "Unpolished Toor Dal" + }, + { + "code": "3924754000093", + "brands": [ + "Tata Copper+" + ], + "quantity": "250 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Drinking Water", + "product_name_en": "Drinking Water" + }, + { + "code": "8904043926629", + "brands": [ + "Tata Sampann" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "Tata Sampann Unpolished chana dal", + "product_name_en": "Tata Sampann Unpolished chana dal" + }, + { + "code": "8904043926124", + "brands": [ + "Tata sampann" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "Unpolished Urad dal", + "product_name_en": "Unpolished Urad dal" + }, + { + "code": "8904043926223", + "brands": [ + "Tata sampann" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "Tata sampann toor daal", + "product_name_en": "Tata sampann toor daal" + }, + { + "code": "8904043926315", + "brands": [ + "TATA sampann" + ], + "quantity": "1 kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Unpolished Moong Dal", + "product_name_en": "Unpolished Moong Dal" + }, + { + "code": "8903754313056", + "brands": [ + "Tata" + ], + "quantity": "180 ml", + "countries_tags": [ + "en:india" + ], + "product_name": "Tata Gluco+ Orange", + "product_name_en": "Tata Gluco+ Orange" + }, + { + "code": "8901090326051", + "brands": [ + "TATA" + ], + "quantity": "3g", + "countries_tags": [ + "en:india" + ], + "product_name": "Coffee Grand Premium", + "product_name_en": "Coffee Grand Premium" + }, + { + "code": "8901052004034", + "brands": [ + "Tata Tea" + ], + "quantity": "750 g", + "countries_tags": [ + "en:india" + ], + "product_name": "Gold", + "product_name_en": "Gold" + }, + { + "code": "14018808", + "brands": [ + "TATA" + ], + "quantity": "100g", + "countries_tags": [ + "en:india" + ], + "product_name": "Tata Salt", + "product_name_en": "Tata Salt" + }, + { + "code": "8901052000913", + "brands": [ + "Tata Tea" + ], + "quantity": "1 kg", + "countries_tags": [ + "en:india" + ], + "product_name": "Gold", + "product_name_en": "Gold" + }, + { + "code": "8901052005109", + "brands": [ + "Tata" + ], + "quantity": "250gm", + "countries_tags": [ + "en:india" + ], + "product_name": "Agni Strong leaf tea", + "product_name_en": "Agni Strong leaf tea" + }, + { + "code": "8908002984972", + "brands": [ + "Tata Soulfull" + ], + "countries_tags": [ + "en:india" + ], + "product_name": "Tata Soulfull Millet Muesli", + "product_name_en": "Tata Soulfull Millet Muesli" + }, + { + "code": "8934043905379", + "brands": [ + "Tata Gofit" + ], + "quantity": "25g", + "countries_tags": [ + "en:india" + ], + "product_name": "Tata Gofit plant protein" + }, + { + "code": "8904043902319", + "brands": [ + "Tata Sampann" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "Tata Sampann Red Rice Aval / Poha", + "product_name_en": "Tata Sampann Red Rice Aval / Poha" + }, + { + "code": "8901052005161", + "brands": [ + "Tata Tea" + ], + "quantity": "500g", + "countries_tags": [ + "en:india" + ], + "product_name": "Tata Tea Gold Care", + "product_name_en": "Tata Tea Gold Care" + } + ] +} \ No newline at end of file diff --git a/data/seed_catalogs/archive/brand_catalog_aachi.json b/data/seed_catalogs/archive/brand_catalog_aachi.json index 8f790f0..a661efd 100644 --- a/data/seed_catalogs/archive/brand_catalog_aachi.json +++ b/data/seed_catalogs/archive/brand_catalog_aachi.json @@ -372,8 +372,8 @@ "hsn_code": "0910", "final_selling_price": 102.9, "selling_price": 98.0, - "barcode": null, - "barcode_type": null, + "barcode": "8906021120470", + "barcode_type": "EAN-13", "highlights": [ "aachi Brand - Trusted Quality", "Spices & Masalas Category", @@ -390,7 +390,14 @@ ], "search_query": "aachi Chicken Masala Spices & Masalas", "nutrition_score": null, - "health_score": null + "health_score": null, + "gtin": "8906021120470", + "ean13": "8906021120470", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773804.7751327 }, { "brand": "Aachi", @@ -415,8 +422,8 @@ "hsn_code": "0910", "final_selling_price": 24.15, "selling_price": 23.0, - "barcode": null, - "barcode_type": null, + "barcode": "8906021122290", + "barcode_type": "EAN-13", "highlights": [ "aachi Brand - Trusted Quality", "Spices & Masalas Category", @@ -433,7 +440,14 @@ ], "search_query": "aachi Mutton Masala Spices & Masalas", "nutrition_score": 71.7, - "health_score": 71.7 + "health_score": 71.7, + "gtin": "8906021122290", + "ean13": "8906021122290", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773804.7772982 }, { "brand": "Aachi", @@ -501,8 +515,8 @@ "hsn_code": "0910", "final_selling_price": 59.85, "selling_price": 57.0, - "barcode": null, - "barcode_type": null, + "barcode": "8906021122290", + "barcode_type": "EAN-13", "highlights": [ "aachi Brand - Trusted Quality", "Spices & Masalas Category", @@ -519,7 +533,14 @@ ], "search_query": "aachi Mutton Masala Spices & Masalas", "nutrition_score": 37.5, - "health_score": 37.5 + "health_score": 37.5, + "gtin": "8906021122290", + "ean13": "8906021122290", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773804.7772982 }, { "brand": "Aachi", @@ -544,8 +565,8 @@ "hsn_code": "0910", "final_selling_price": 130.2, "selling_price": 124.0, - "barcode": null, - "barcode_type": null, + "barcode": "8906021122290", + "barcode_type": "EAN-13", "highlights": [ "aachi Brand - Trusted Quality", "Spices & Masalas Category", @@ -562,7 +583,14 @@ ], "search_query": "aachi Mutton Masala Spices & Masalas", "nutrition_score": 37.5, - "health_score": 37.5 + "health_score": 37.5, + "gtin": "8906021122290", + "ean13": "8906021122290", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773804.7772982 }, { "brand": "Aachi", @@ -3935,8 +3963,8 @@ "hsn_code": "0910", "final_selling_price": 38.85, "selling_price": 37.0, - "barcode": null, - "barcode_type": null, + "barcode": "8906021120272", + "barcode_type": "EAN-13", "highlights": [ "aachi Brand - Trusted Quality", "Spices & Masalas Category", @@ -3953,7 +3981,14 @@ ], "search_query": "aachi Biryani Masala Spices & Masalas", "nutrition_score": 71.7, - "health_score": 71.7 + "health_score": 71.7, + "gtin": "8906021120272", + "ean13": "8906021120272", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773804.8244982 }, { "brand": "Aachi", @@ -4024,8 +4059,8 @@ "hsn_code": "0910", "final_selling_price": 50.4, "selling_price": 48.0, - "barcode": null, - "barcode_type": null, + "barcode": "8906021120272", + "barcode_type": "EAN-13", "highlights": [ "aachi Brand - Trusted Quality", "Spices & Masalas Category", @@ -4042,7 +4077,14 @@ ], "search_query": "aachi Biryani Masala Spices & Masalas", "nutrition_score": 71.7, - "health_score": 71.7 + "health_score": 71.7, + "gtin": "8906021120272", + "ean13": "8906021120272", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773804.8244982 }, { "brand": "Aachi", @@ -4067,8 +4109,8 @@ "hsn_code": "0910", "final_selling_price": 57.75, "selling_price": 55.0, - "barcode": null, - "barcode_type": null, + "barcode": "8906021120272", + "barcode_type": "EAN-13", "highlights": [ "aachi Brand - Trusted Quality", "Spices & Masalas Category", @@ -4085,7 +4127,14 @@ ], "search_query": "aachi Biryani Masala Spices & Masalas", "nutrition_score": 71.7, - "health_score": 71.7 + "health_score": 71.7, + "gtin": "8906021120272", + "ean13": "8906021120272", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773804.8244982 }, { "brand": "Aachi", @@ -4110,8 +4159,8 @@ "hsn_code": "0910", "final_selling_price": 111.3, "selling_price": 106.0, - "barcode": null, - "barcode_type": null, + "barcode": "8906021120272", + "barcode_type": "EAN-13", "highlights": [ "aachi Brand - Trusted Quality", "Spices & Masalas Category", @@ -4128,7 +4177,14 @@ ], "search_query": "aachi Biryani Masala Spices & Masalas", "nutrition_score": null, - "health_score": null + "health_score": null, + "gtin": "8906021120272", + "ean13": "8906021120272", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773804.8244982 }, { "brand": "Aachi", @@ -4153,8 +4209,8 @@ "hsn_code": "0910", "final_selling_price": 208.95, "selling_price": 199.0, - "barcode": null, - "barcode_type": null, + "barcode": "8906021120272", + "barcode_type": "EAN-13", "highlights": [ "aachi Brand - Trusted Quality", "Spices & Masalas Category", @@ -4171,7 +4227,14 @@ ], "search_query": "aachi Biryani Masala Spices & Masalas", "nutrition_score": 71.7, - "health_score": 71.7 + "health_score": 71.7, + "gtin": "8906021120272", + "ean13": "8906021120272", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773804.8244982 }, { "brand": "Aachi", @@ -4233,8 +4296,8 @@ "hsn_code": "0910", "final_selling_price": 69.3, "selling_price": 66.0, - "barcode": null, - "barcode_type": null, + "barcode": "8904209304087", + "barcode_type": "EAN-13", "highlights": [ "aachi Brand - Trusted Quality", "Spices & Masalas Category", @@ -4251,7 +4314,14 @@ ], "search_query": "aachi Chilli Powder Spices & Masalas", "nutrition_score": null, - "health_score": null + "health_score": null, + "gtin": "8904209304087", + "ean13": "8904209304087", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773804.826589 }, { "brand": "Aachi", @@ -4273,8 +4343,8 @@ "hsn_code": "0910", "final_selling_price": 154.35, "selling_price": 147.0, - "barcode": null, - "barcode_type": null, + "barcode": "8904209304087", + "barcode_type": "EAN-13", "highlights": [ "aachi Brand - Trusted Quality", "Spices & Masalas Category", @@ -4291,7 +4361,14 @@ ], "search_query": "aachi Chilli Powder Spices & Masalas", "nutrition_score": null, - "health_score": null + "health_score": null, + "gtin": "8904209304087", + "ean13": "8904209304087", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773804.826589 }, { "brand": "Aachi", diff --git a/data/seed_catalogs/archive/brand_catalog_coca_cola.json b/data/seed_catalogs/archive/brand_catalog_coca_cola.json index 3c2f24c..3fc9432 100644 --- a/data/seed_catalogs/archive/brand_catalog_coca_cola.json +++ b/data/seed_catalogs/archive/brand_catalog_coca_cola.json @@ -3330,7 +3330,16 @@ -0.043160855770111084 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901764042300", + "barcode_type": "EAN-13", + "gtin": "8901764042300", + "ean13": "8901764042300", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3626227 }, { "title": "Coca-Cola Thums Up", @@ -3801,7 +3810,16 @@ -0.043160855770111084 ], "nutrition_score": 50.0, - "health_score": 50.0 + "health_score": 50.0, + "barcode": "8901764042300", + "barcode_type": "EAN-13", + "gtin": "8901764042300", + "ean13": "8901764042300", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3626227 }, { "title": "Coca-Cola Sprite", @@ -4271,7 +4289,16 @@ -0.0689491331577301 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901764032271", + "barcode_type": "EAN-13", + "gtin": "8901764032271", + "ean13": "8901764032271", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3654883 }, { "title": "Coca-Cola Sprite", @@ -4743,7 +4770,16 @@ -0.0689491331577301 ], "nutrition_score": 60.6, - "health_score": 60.6 + "health_score": 60.6, + "barcode": "8901764032271", + "barcode_type": "EAN-13", + "gtin": "8901764032271", + "ean13": "8901764032271", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3654883 }, { "title": "Coca-Cola Fanta", @@ -5212,7 +5248,16 @@ -0.04190988838672638 ], "nutrition_score": 58.9, - "health_score": 58.9 + "health_score": 58.9, + "barcode": "8906000379134", + "barcode_type": "EAN-13", + "gtin": "8906000379134", + "ean13": "8906000379134", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.368387 }, { "title": "Coca-Cola Fanta", @@ -5684,7 +5729,16 @@ -0.04190988838672638 ], "nutrition_score": 70.1, - "health_score": 70.1 + "health_score": 70.1, + "barcode": "8906000379134", + "barcode_type": "EAN-13", + "gtin": "8906000379134", + "ean13": "8906000379134", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.368387 }, { "title": "Coca-Cola Maaza", @@ -6154,7 +6208,16 @@ -0.08577512949705124 ], "nutrition_score": 70.1, - "health_score": 70.1 + "health_score": 70.1, + "barcode": "8901764175015", + "barcode_type": "EAN-13", + "gtin": "8901764175015", + "ean13": "8901764175015", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3713913 }, { "title": "Coca-Cola Maaza", @@ -6626,7 +6689,16 @@ -0.08577512949705124 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901764175015", + "barcode_type": "EAN-13", + "gtin": "8901764175015", + "ean13": "8901764175015", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3713913 }, { "title": "Coca-Cola Maaza", @@ -7096,7 +7168,16 @@ -0.08577512949705124 ], "nutrition_score": 58.9, - "health_score": 58.9 + "health_score": 58.9, + "barcode": "8901764175015", + "barcode_type": "EAN-13", + "gtin": "8901764175015", + "ean13": "8901764175015", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3713913 }, { "title": "Coca-Cola Maaza", @@ -7570,7 +7651,16 @@ -0.08577512949705124 ], "nutrition_score": 70.1, - "health_score": 70.1 + "health_score": 70.1, + "barcode": "8901764175015", + "barcode_type": "EAN-13", + "gtin": "8901764175015", + "ean13": "8901764175015", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3713913 }, { "title": "Coca-Cola Maaza", @@ -8044,7 +8134,16 @@ -0.08577512949705124 ], "nutrition_score": 70.1, - "health_score": 70.1 + "health_score": 70.1, + "barcode": "8901764175015", + "barcode_type": "EAN-13", + "gtin": "8901764175015", + "ean13": "8901764175015", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3713913 }, { "title": "Coca-Cola Maaza", @@ -8514,7 +8613,16 @@ -0.08577512949705124 ], "nutrition_score": 70.1, - "health_score": 70.1 + "health_score": 70.1, + "barcode": "8901764175015", + "barcode_type": "EAN-13", + "gtin": "8901764175015", + "ean13": "8901764175015", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3713913 }, { "title": "Coca-Cola Minute Maid", @@ -16067,7 +16175,16 @@ -0.06475505232810974 ], "nutrition_score": 58.9, - "health_score": 58.9 + "health_score": 58.9, + "barcode": "8901764112706", + "barcode_type": "EAN-13", + "gtin": "8901764112706", + "ean13": "8901764112706", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3840604 }, { "title": "Coca-Cola Zero", @@ -16523,7 +16640,16 @@ -0.06475505232810974 ], "nutrition_score": 70.1, - "health_score": 70.1 + "health_score": 70.1, + "barcode": "8901764112706", + "barcode_type": "EAN-13", + "gtin": "8901764112706", + "ean13": "8901764112706", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3840604 }, { "title": "Coca-Cola Zero", @@ -16982,7 +17108,16 @@ -0.06475505232810974 ], "nutrition_score": 70.1, - "health_score": 70.1 + "health_score": 70.1, + "barcode": "8901764112706", + "barcode_type": "EAN-13", + "gtin": "8901764112706", + "ean13": "8901764112706", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3840604 }, { "title": "Coca-Cola Zero", @@ -17439,7 +17574,16 @@ -0.06475505232810974 ], "nutrition_score": 70.1, - "health_score": 70.1 + "health_score": 70.1, + "barcode": "8901764112706", + "barcode_type": "EAN-13", + "gtin": "8901764112706", + "ean13": "8901764112706", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3840604 }, { "title": "Coca-Cola Zero", @@ -17897,7 +18041,16 @@ -0.06475505232810974 ], "nutrition_score": 70.1, - "health_score": 70.1 + "health_score": 70.1, + "barcode": "8901764112706", + "barcode_type": "EAN-13", + "gtin": "8901764112706", + "ean13": "8901764112706", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3840604 }, { "title": "Coca-Cola Zero", @@ -18353,7 +18506,16 @@ -0.06475505232810974 ], "nutrition_score": 70.1, - "health_score": 70.1 + "health_score": 70.1, + "barcode": "8901764112706", + "barcode_type": "EAN-13", + "gtin": "8901764112706", + "ean13": "8901764112706", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3840604 }, { "title": "Coca-Cola Kinley Water", @@ -21105,7 +21267,16 @@ -0.05626769736409187 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "89000601", + "barcode_type": "GTIN-8", + "gtin": "89000601", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3936577 }, { "title": "Coca-Cola Limca", @@ -21561,7 +21732,16 @@ -0.05626769736409187 ], "nutrition_score": 70.1, - "health_score": 70.1 + "health_score": 70.1, + "barcode": "89000601", + "barcode_type": "GTIN-8", + "gtin": "89000601", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.3936577 }, { "title": "Coca-Cola Fuze Tea", @@ -29460,7 +29640,16 @@ -0.06443993002176285 ], "nutrition_score": 60.6, - "health_score": 60.6 + "health_score": 60.6, + "barcode": "8901764385155", + "barcode_type": "EAN-13", + "gtin": "8901764385155", + "ean13": "8901764385155", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.4120922 }, { "title": "Coca-Cola Minute Maid Apple", @@ -29930,7 +30119,16 @@ -0.06443993002176285 ], "nutrition_score": 70.1, - "health_score": 70.1 + "health_score": 70.1, + "barcode": "8901764385155", + "barcode_type": "EAN-13", + "gtin": "8901764385155", + "ean13": "8901764385155", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.4120922 }, { "title": "Coca-Cola Minute Maid Apple", @@ -30400,7 +30598,16 @@ -0.06443993002176285 ], "nutrition_score": 37.5, - "health_score": 37.5 + "health_score": 37.5, + "barcode": "8901764385155", + "barcode_type": "EAN-13", + "gtin": "8901764385155", + "ean13": "8901764385155", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773807.4120922 }, { "title": "Coca-Cola Minute Maid Mixed Fruit", diff --git a/data/seed_catalogs/archive/brand_catalog_colgate_palmolive.json b/data/seed_catalogs/archive/brand_catalog_colgate_palmolive.json index 9f114aa..e579f37 100644 --- a/data/seed_catalogs/archive/brand_catalog_colgate_palmolive.json +++ b/data/seed_catalogs/archive/brand_catalog_colgate_palmolive.json @@ -463,7 +463,16 @@ -0.02113690972328186 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901314765352", + "barcode_type": "EAN-13", + "gtin": "8901314765352", + "ean13": "8901314765352", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773808.5714066 }, { "title": "Colgate-Palmolive Colgate Dental Cream", @@ -911,7 +920,16 @@ -0.02113690972328186 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901314765352", + "barcode_type": "EAN-13", + "gtin": "8901314765352", + "ean13": "8901314765352", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773808.5714066 }, { "title": "Colgate-Palmolive Colgate Dental Cream", @@ -1358,7 +1376,16 @@ -0.02113690972328186 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901314765352", + "barcode_type": "EAN-13", + "gtin": "8901314765352", + "ean13": "8901314765352", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773808.5714066 }, { "title": "Colgate-Palmolive Colgate Maxfresh", @@ -1801,7 +1828,16 @@ 0.015484657138586044 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901314543653", + "barcode_type": "EAN-13", + "gtin": "8901314543653", + "ean13": "8901314543653", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773808.5746639 }, { "title": "Colgate-Palmolive Colgate Maxfresh", @@ -2245,7 +2281,16 @@ 0.015484657138586044 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901314543653", + "barcode_type": "EAN-13", + "gtin": "8901314543653", + "ean13": "8901314543653", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773808.5746639 }, { "title": "Colgate-Palmolive Colgate Maxfresh", @@ -2688,7 +2733,16 @@ 0.015484657138586044 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901314543653", + "barcode_type": "EAN-13", + "gtin": "8901314543653", + "ean13": "8901314543653", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773808.5746639 }, { "title": "Colgate-Palmolive Colgate Sensitive", @@ -3137,7 +3191,16 @@ -0.0019142103847116232 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901314311832", + "barcode_type": "EAN-13", + "gtin": "8901314311832", + "ean13": "8901314311832", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773808.5771685 }, { "title": "Colgate-Palmolive Colgate Sensitive", @@ -3584,7 +3647,16 @@ -0.0019142103847116232 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901314311832", + "barcode_type": "EAN-13", + "gtin": "8901314311832", + "ean13": "8901314311832", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773808.5771685 }, { "title": "Colgate-Palmolive Colgate Sensitive", @@ -4032,7 +4104,16 @@ -0.0019142103847116232 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901314311832", + "barcode_type": "EAN-13", + "gtin": "8901314311832", + "ean13": "8901314311832", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773808.5771685 }, { "title": "Colgate-Palmolive Colgate Sensitive", @@ -4480,7 +4561,16 @@ -0.0019142103847116232 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901314311832", + "barcode_type": "EAN-13", + "gtin": "8901314311832", + "ean13": "8901314311832", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773808.5771685 }, { "title": "Colgate-Palmolive Colgate Total", @@ -16098,7 +16188,16 @@ 0.017558319494128227 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901314011183", + "barcode_type": "EAN-13", + "gtin": "8901314011183", + "ean13": "8901314011183", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773808.5915623 }, { "title": "Colgate-Palmolive Colgate Visible White", @@ -16549,7 +16648,16 @@ 0.017558319494128227 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901314011183", + "barcode_type": "EAN-13", + "gtin": "8901314011183", + "ean13": "8901314011183", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773808.5915623 }, { "title": "Colgate-Palmolive Colgate Visible White", @@ -16998,7 +17106,16 @@ 0.017558319494128227 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901314011183", + "barcode_type": "EAN-13", + "gtin": "8901314011183", + "ean13": "8901314011183", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773808.5915623 }, { "title": "Colgate-Palmolive Colgate Visible White", @@ -17447,7 +17564,16 @@ 0.017558319494128227 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901314011183", + "barcode_type": "EAN-13", + "gtin": "8901314011183", + "ean13": "8901314011183", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773808.5915623 }, { "title": "Colgate-Palmolive Palmolive Naturals", diff --git a/data/seed_catalogs/archive/brand_catalog_dabur.json b/data/seed_catalogs/archive/brand_catalog_dabur.json index 07d82c1..887e025 100644 --- a/data/seed_catalogs/archive/brand_catalog_dabur.json +++ b/data/seed_catalogs/archive/brand_catalog_dabur.json @@ -63,7 +63,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "red_chyawanprash_f122a959", + "image_id": "dabur_red_chyawanprash_20g", "highlights": [ "dabur Brand - Trusted Quality", "Health Care - Ayurvedic Category", @@ -516,7 +516,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "red_chyawanprash_f122a959", + "image_id": "dabur_red_chyawanprash_50g", "highlights": [ "dabur Brand - Trusted Quality", "Health Care - Ayurvedic Category", @@ -1427,7 +1427,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "lal_tail_meswak_329704a5", + "image_id": "dabur_lal_tail_meswak_5g", "highlights": [ "dabur Brand - Trusted Quality", "Baby Care Category", @@ -1885,7 +1885,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "lal_tail_meswak_329704a5", + "image_id": "dabur_lal_tail_meswak_10g", "highlights": [ "dabur Brand - Trusted Quality", "Baby Care Category", @@ -2798,7 +2798,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "red_vatika_161f8e51", + "image_id": "dabur_red_vatika_50ml", "highlights": [ "dabur Brand - Trusted Quality", "Hair Care Category", @@ -3253,7 +3253,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "red_vatika_161f8e51", + "image_id": "dabur_red_vatika_100ml", "highlights": [ "dabur Brand - Trusted Quality", "Hair Care Category", @@ -4170,7 +4170,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pudin_hara_208491ba", + "image_id": "dabur_pudin_hara_100g", "highlights": [ "dabur Brand - Trusted Quality", "Health Care - Digestive Category", @@ -4632,7 +4632,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pudin_hara_208491ba", + "image_id": "dabur_pudin_hara_250g", "highlights": [ "dabur Brand - Trusted Quality", "Health Care - Digestive Category", @@ -5550,7 +5550,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "chyawanprash_4705ca81", + "image_id": "dabur_chyawanprash_5g", "highlights": [ "dabur Brand - Trusted Quality", "Health Care - Ayurvedic Category", @@ -5947,7 +5947,16 @@ 0.07663212716579437 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901207036989", + "barcode_type": "EAN-13", + "gtin": "8901207036989", + "ean13": "8901207036989", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773809.447363 }, { "title": "Chyawanprash", @@ -6006,7 +6015,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "chyawanprash_4705ca81", + "image_id": "dabur_chyawanprash_10g", "highlights": [ "dabur Brand - Trusted Quality", "Health Care - Ayurvedic Category", @@ -6403,7 +6412,16 @@ 0.07663212716579437 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901207036989", + "barcode_type": "EAN-13", + "gtin": "8901207036989", + "ean13": "8901207036989", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773809.447363 }, { "title": "Chyawanprash", @@ -6859,7 +6877,16 @@ 0.07663212716579437 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901207036989", + "barcode_type": "EAN-13", + "gtin": "8901207036989", + "ean13": "8901207036989", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773809.447363 }, { "title": "Red Dabur Oral Care Toothpaste", @@ -6926,7 +6953,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "red_dabur_oral_care_toothpaste_1af95921", + "image_id": "dabur_red_dabur_oral_care_toothpaste_2g", "highlights": [ "dabur Brand - Trusted Quality", "Oral Care Category", @@ -7390,7 +7417,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "red_dabur_oral_care_toothpaste_1af95921", + "image_id": "dabur_red_dabur_oral_care_toothpaste_3g", "highlights": [ "dabur Brand - Trusted Quality", "Oral Care Category", @@ -8315,7 +8342,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "amla_dabur_oral_care_chewing_gum_556c4bba", + "image_id": "dabur_amla_dabur_oral_care_chewing_gum_10g", "highlights": [ "dabur Brand - Trusted Quality", "Hair Care Category", @@ -8776,7 +8803,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "amla_dabur_oral_care_chewing_gum_556c4bba", + "image_id": "dabur_amla_dabur_oral_care_chewing_gum_20g", "highlights": [ "dabur Brand - Trusted Quality", "Hair Care Category", @@ -9699,7 +9726,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "meswak_dabur_toothbrush_dd8c1f7a", + "image_id": "dabur_meswak_dabur_toothbrush_10cm", "highlights": [ "dabur Brand - Trusted Quality", "Oral Care Category", @@ -10161,7 +10188,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "meswak_dabur_toothbrush_dd8c1f7a", + "image_id": "dabur_meswak_dabur_toothbrush_20cm", "highlights": [ "dabur Brand - Trusted Quality", "Oral Care Category", @@ -11077,7 +11104,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "chyawanprash_100_natural_a110cae9", + "image_id": "dabur_chyawanprash_100_natural_30g", "highlights": [ "dabur Brand - Trusted Quality", "Health Care - Ayurvedic Category", @@ -11531,7 +11558,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "chyawanprash_100_natural_a110cae9", + "image_id": "dabur_chyawanprash_100_natural_50g", "highlights": [ "dabur Brand - Trusted Quality", "Health Care - Ayurvedic Category", @@ -12440,7 +12467,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "gulabari_milk_honey_56fdc0f6", + "image_id": "dabur_gulabari_milk_honey_200ml", "highlights": [ "dabur Brand - Trusted Quality", "Skin Care Category", @@ -12895,7 +12922,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "gulabari_milk_honey_56fdc0f6", + "image_id": "dabur_gulabari_milk_honey_500ml", "highlights": [ "dabur Brand - Trusted Quality", "Skin Care Category", @@ -13810,7 +13837,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "janam_ghutti_baby_oil_8eaee902", + "image_id": "dabur_janam_ghutti_baby_oil_50g", "highlights": [ "dabur Brand - Trusted Quality", "Baby Care Category", @@ -14270,7 +14297,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "janam_ghutti_baby_oil_8eaee902", + "image_id": "dabur_janam_ghutti_baby_oil_100g", "highlights": [ "dabur Brand - Trusted Quality", "Baby Care Category", @@ -15189,7 +15216,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "meswak_toothbrush_natural_brush_0586d5ab", + "image_id": "dabur_meswak_toothbrush_natural_brush_20g", "highlights": [ "dabur Brand - Trusted Quality", "Oral Care Category", @@ -15648,7 +15675,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "meswak_toothbrush_natural_brush_0586d5ab", + "image_id": "dabur_meswak_toothbrush_natural_brush_40g", "highlights": [ "dabur Brand - Trusted Quality", "Oral Care Category", @@ -16553,7 +16580,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "dabur_amla_d70299ad", + "image_id": "dabur_dabur_amla_200ml", "highlights": [ "dabur Brand - Trusted Quality", "Hair Care Category", @@ -16999,7 +17026,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "dabur_amla_d70299ad", + "image_id": "dabur_dabur_amla_500ml", "highlights": [ "dabur Brand - Trusted Quality", "Hair Care Category", @@ -17891,7 +17918,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "dabur_red_d47926d9", + "image_id": "dabur_dabur_red_20g", "highlights": [ "dabur Brand - Trusted Quality", "Oral Care Category", @@ -18337,7 +18364,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "dabur_red_d47926d9", + "image_id": "dabur_dabur_red_50g", "highlights": [ "dabur Brand - Trusted Quality", "Oral Care Category", @@ -19227,7 +19254,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "dabur_honitus_22e181b9", + "image_id": "dabur_dabur_honitus_200ml", "highlights": [ "dabur Brand - Trusted Quality", "Health Care - Cold & Cough Category", @@ -19671,7 +19698,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "dabur_honitus_22e181b9", + "image_id": "dabur_dabur_honitus_500ml", "highlights": [ "dabur Brand - Trusted Quality", "Health Care - Cold & Cough Category", @@ -20561,7 +20588,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "dabur_odomos_a27f3921", + "image_id": "dabur_dabur_odomos_20g", "highlights": [ "dabur Brand - Trusted Quality", "Personal Care - Mosquito Repellent Category", @@ -20958,7 +20985,16 @@ 0.030848752707242966 ], "nutrition_score": 37.6, - "health_score": 37.6 + "health_score": 37.6, + "barcode": "8901207500053", + "barcode_type": "EAN-13", + "gtin": "8901207500053", + "ean13": "8901207500053", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773809.519291 }, { "title": "Dabur Odomos", @@ -21007,7 +21043,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "dabur_odomos_a27f3921", + "image_id": "dabur_dabur_odomos_50g", "highlights": [ "dabur Brand - Trusted Quality", "Personal Care - Mosquito Repellent Category", @@ -21404,7 +21440,16 @@ 0.030848752707242966 ], "nutrition_score": 37.6, - "health_score": 37.6 + "health_score": 37.6, + "barcode": "8901207500053", + "barcode_type": "EAN-13", + "gtin": "8901207500053", + "ean13": "8901207500053", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773809.519291 }, { "title": "Dabur Odomos", @@ -21850,7 +21895,16 @@ 0.030848752707242966 ], "nutrition_score": 37.6, - "health_score": 37.6 + "health_score": 37.6, + "barcode": "8901207500053", + "barcode_type": "EAN-13", + "gtin": "8901207500053", + "ean13": "8901207500053", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773809.519291 }, { "title": "Dabur Gulabari", @@ -21897,7 +21951,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "dabur_gulabari_3c77c84e", + "image_id": "dabur_dabur_gulabari_59g", "highlights": [ "dabur Brand - Trusted Quality", "Skin Care Category", @@ -22294,7 +22348,16 @@ 0.008444451726973057 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "89005590", + "barcode_type": "GTIN-8", + "gtin": "89005590", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773809.5249188 }, { "title": "Dabur Gulabari", @@ -22341,7 +22404,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "dabur_gulabari_3c77c84e", + "image_id": "dabur_dabur_gulabari_75g", "highlights": [ "dabur Brand - Trusted Quality", "Skin Care Category", @@ -22738,7 +22801,16 @@ 0.008444451726973057 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "89005590", + "barcode_type": "GTIN-8", + "gtin": "89005590", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773809.5249188 }, { "title": "Dabur Gulabari", @@ -23182,7 +23254,16 @@ 0.008444451726973057 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "89005590", + "barcode_type": "GTIN-8", + "gtin": "89005590", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773809.5249188 }, { "title": "Dabur Janam Ghutti", @@ -23231,7 +23312,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "dabur_janam_ghutti_ebd6efe8", + "image_id": "dabur_dabur_janam_ghutti_50g", "highlights": [ "dabur Brand - Trusted Quality", "Baby Care Category", @@ -23677,7 +23758,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "dabur_janam_ghutti_ebd6efe8", + "image_id": "dabur_dabur_janam_ghutti_100g", "highlights": [ "dabur Brand - Trusted Quality", "Baby Care Category", diff --git a/data/seed_catalogs/archive/brand_catalog_godrej.json b/data/seed_catalogs/archive/brand_catalog_godrej.json index d6c3a6c..de1423e 100644 --- a/data/seed_catalogs/archive/brand_catalog_godrej.json +++ b/data/seed_catalogs/archive/brand_catalog_godrej.json @@ -75,7 +75,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_magic_db54f611", + "image_id": "godrej_godrej_magic_50ml", "highlights": [ "godrej Brand - Trusted Quality", "Personal Care Category", @@ -534,7 +534,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_magic_db54f611", + "image_id": "godrej_godrej_magic_100ml", "highlights": [ "godrej Brand - Trusted Quality", "Personal Care Category", @@ -1456,7 +1456,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_expert_611d0373", + "image_id": "godrej_godrej_expert_90ml", "highlights": [ "godrej Brand - Trusted Quality", "Hair Care Category", @@ -1919,7 +1919,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_expert_611d0373", + "image_id": "godrej_godrej_expert_100ml", "highlights": [ "godrej Brand - Trusted Quality", "Hair Care Category", @@ -2840,7 +2840,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_renew_ee734263", + "image_id": "godrej_godrej_renew_90ml", "highlights": [ "godrej Brand - Trusted Quality", "Hair Care Category", @@ -3298,7 +3298,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_renew_ee734263", + "image_id": "godrej_godrej_renew_100ml", "highlights": [ "godrej Brand - Trusted Quality", "Hair Care Category", @@ -4217,7 +4217,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_shikakai_b8f48c98", + "image_id": "godrej_godrej_shikakai_90ml", "highlights": [ "godrej Brand - Trusted Quality", "Hair Care Category", @@ -4678,7 +4678,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_shikakai_b8f48c98", + "image_id": "godrej_godrej_shikakai_100ml", "highlights": [ "godrej Brand - Trusted Quality", "Hair Care Category", @@ -5600,7 +5600,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_expert_hair_colour_18f6ecaf", + "image_id": "godrej_godrej_expert_hair_colour_90ml", "highlights": [ "godrej Brand - Trusted Quality", "Hair Care Category", @@ -6061,7 +6061,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_expert_hair_colour_18f6ecaf", + "image_id": "godrej_godrej_expert_hair_colour_100ml", "highlights": [ "godrej Brand - Trusted Quality", "Hair Care Category", @@ -6980,7 +6980,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_nupur_henna_249f79b7", + "image_id": "godrej_godrej_nupur_henna_90ml", "highlights": [ "godrej Brand - Trusted Quality", "Hair Care Category", @@ -7380,7 +7380,16 @@ 0.02515506185591221 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901023018602", + "barcode_type": "EAN-13", + "gtin": "8901023018602", + "ean13": "8901023018602", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773809.9603631 }, { "title": "Godrej Nupur Henna", @@ -7438,7 +7447,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_nupur_henna_249f79b7", + "image_id": "godrej_godrej_nupur_henna_100ml", "highlights": [ "godrej Brand - Trusted Quality", "Hair Care Category", @@ -7838,7 +7847,16 @@ 0.02515506185591221 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901023018602", + "barcode_type": "EAN-13", + "gtin": "8901023018602", + "ean13": "8901023018602", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773809.9603631 }, { "title": "Godrej Nupur Henna", @@ -8296,7 +8314,16 @@ 0.02515506185591221 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901023018602", + "barcode_type": "EAN-13", + "gtin": "8901023018602", + "ean13": "8901023018602", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773809.9603631 }, { "title": "Godrej Aer Room Freshener", @@ -8359,7 +8386,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_aer_room_freshener_806eef12", + "image_id": "godrej_godrej_aer_room_freshener_50ml", "highlights": [ "godrej Brand - Trusted Quality", "Household - Air Freshener Category", @@ -8822,7 +8849,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_aer_room_freshener_806eef12", + "image_id": "godrej_godrej_aer_room_freshener_100g", "highlights": [ "godrej Brand - Trusted Quality", "Household - Air Freshener Category", @@ -9748,7 +9775,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_good_knight_liquid_988d5dfa", + "image_id": "godrej_godrej_good_knight_liquid_50ml", "highlights": [ "godrej Brand - Trusted Quality", "Personal Care - Mosquito Repellent Category", @@ -10211,7 +10238,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_good_knight_liquid_988d5dfa", + "image_id": "godrej_godrej_good_knight_liquid_100g", "highlights": [ "godrej Brand - Trusted Quality", "Personal Care - Mosquito Repellent Category", @@ -11127,7 +11154,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_good_knight_3a3dfaa2", + "image_id": "godrej_godrej_good_knight_50ml", "highlights": [ "godrej Brand - Trusted Quality", "Personal Care - Mosquito Repellent Category", @@ -11580,7 +11607,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_good_knight_3a3dfaa2", + "image_id": "godrej_godrej_good_knight_100ml", "highlights": [ "godrej Brand - Trusted Quality", "Personal Care - Mosquito Repellent Category", @@ -12498,7 +12525,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_hit_spray_1101d017", + "image_id": "godrej_godrej_hit_spray_50ml", "highlights": [ "godrej Brand - Trusted Quality", "Personal Care - Mosquito Repellent Category", @@ -12963,7 +12990,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_hit_spray_1101d017", + "image_id": "godrej_godrej_hit_spray_100ml", "highlights": [ "godrej Brand - Trusted Quality", "Personal Care - Mosquito Repellent Category", @@ -13889,7 +13916,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_cinthol_db91ce4e", + "image_id": "godrej_godrej_cinthol_50g", "highlights": [ "godrej Brand - Trusted Quality", "Bath Soap Category", @@ -14289,7 +14316,16 @@ 0.02998628094792366 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901023020353", + "barcode_type": "EAN-13", + "gtin": "8901023020353", + "ean13": "8901023020353", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773809.976005 }, { "title": "Godrej Cinthol", @@ -14350,7 +14386,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_cinthol_db91ce4e", + "image_id": "godrej_godrej_cinthol_75g", "highlights": [ "godrej Brand - Trusted Quality", "Bath Soap Category", @@ -14750,7 +14786,16 @@ 0.02998628094792366 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901023020353", + "barcode_type": "EAN-13", + "gtin": "8901023020353", + "ean13": "8901023020353", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773809.976005 }, { "title": "Godrej Cinthol", @@ -15211,7 +15256,16 @@ 0.02998628094792366 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901023020353", + "barcode_type": "EAN-13", + "gtin": "8901023020353", + "ean13": "8901023020353", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773809.976005 }, { "title": "Godrej Protekt", @@ -15257,7 +15311,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_protekt_e2cafc40", + "image_id": "godrej_godrej_protekt_200g", "highlights": [ "godrej Brand - Trusted Quality", "Health Care - Antiseptic Category", @@ -15703,7 +15757,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_protekt_e2cafc40", + "image_id": "godrej_godrej_protekt_500g", "highlights": [ "godrej Brand - Trusted Quality", "Health Care - Antiseptic Category", @@ -16601,7 +16655,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_ezee_e12e2a72", + "image_id": "godrej_godrej_ezee_500g", "highlights": [ "godrej Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -17053,7 +17107,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_ezee_e12e2a72", + "image_id": "godrej_godrej_ezee_1kg", "highlights": [ "godrej Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -17505,7 +17559,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_ezee_e12e2a72", + "image_id": "godrej_godrej_ezee_2kg", "highlights": [ "godrej Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -18410,7 +18464,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_no_1_soap_5d2c3a5d", + "image_id": "godrej_godrej_no_1_soap_75g", "highlights": [ "godrej Brand - Trusted Quality", "Bath Soap Category", @@ -18863,7 +18917,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_no_1_soap_5d2c3a5d", + "image_id": "godrej_godrej_no_1_soap_200g", "highlights": [ "godrej Brand - Trusted Quality", "Bath Soap Category", @@ -19769,7 +19823,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_ca813422", + "image_id": "godrej_godrej_50ml", "highlights": [ "godrej Brand - Trusted Quality", "Personal Care - Mosquito Repellent Category", @@ -20222,7 +20276,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "godrej_ca813422", + "image_id": "godrej_godrej_100ml", "highlights": [ "godrej Brand - Trusted Quality", "Personal Care - Mosquito Repellent Category", diff --git a/data/seed_catalogs/archive/brand_catalog_manna.json b/data/seed_catalogs/archive/brand_catalog_manna.json index e8f39b7..32a106d 100644 --- a/data/seed_catalogs/archive/brand_catalog_manna.json +++ b/data/seed_catalogs/archive/brand_catalog_manna.json @@ -71,7 +71,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "manna_health_mix_50g_39ccca03", + "image_id": "manna_manna_health_mix_50g_25g", "highlights": [ "Manna Brand - Trusted Quality", "Health Foods Category", @@ -474,7 +474,16 @@ -0.03127254918217659 ], "nutrition_score": 87.8, - "health_score": 87.8 + "health_score": 87.8, + "barcode": "8906008350852", + "barcode_type": "EAN-13", + "gtin": "8906008350852", + "ean13": "8906008350852", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773810.4010751 }, { "title": "Manna Health Mix 50g", @@ -538,7 +547,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "manna_health_mix_50g_39ccca03", + "image_id": "manna_manna_health_mix_50g_50g", "highlights": [ "Manna Brand - Trusted Quality", "Health Foods Category", @@ -941,7 +950,16 @@ -0.03127254918217659 ], "nutrition_score": 87.8, - "health_score": 87.8 + "health_score": 87.8, + "barcode": "8906008350852", + "barcode_type": "EAN-13", + "gtin": "8906008350852", + "ean13": "8906008350852", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773810.4010751 }, { "title": "Manna Health Mix 50g", @@ -1408,7 +1426,16 @@ -0.03127254918217659 ], "nutrition_score": 87.8, - "health_score": 87.8 + "health_score": 87.8, + "barcode": "8906008350852", + "barcode_type": "EAN-13", + "gtin": "8906008350852", + "ean13": "8906008350852", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773810.4010751 }, { "title": "Manna Ragi Malt 50g", @@ -1473,7 +1500,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "manna_ragi_malt_50g_e82ff45f", + "image_id": "manna_manna_ragi_malt_50g_25g", "highlights": [ "Manna Brand - Trusted Quality", "Health Foods Category", @@ -1876,7 +1903,16 @@ -0.011148327961564064 ], "nutrition_score": 87.8, - "health_score": 87.8 + "health_score": 87.8, + "barcode": "8906008350388", + "barcode_type": "EAN-13", + "gtin": "8906008350388", + "ean13": "8906008350388", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773810.4015913 }, { "title": "Manna Ragi Malt 50g", @@ -1941,7 +1977,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "manna_ragi_malt_50g_e82ff45f", + "image_id": "manna_manna_ragi_malt_50g_50g", "highlights": [ "Manna Brand - Trusted Quality", "Health Foods Category", @@ -2344,7 +2380,16 @@ -0.011148327961564064 ], "nutrition_score": 87.8, - "health_score": 87.8 + "health_score": 87.8, + "barcode": "8906008350388", + "barcode_type": "EAN-13", + "gtin": "8906008350388", + "ean13": "8906008350388", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773810.4015913 }, { "title": "Manna Ragi Malt 50g", @@ -2812,7 +2857,16 @@ -0.011148327961564064 ], "nutrition_score": 87.8, - "health_score": 87.8 + "health_score": 87.8, + "barcode": "8906008350388", + "barcode_type": "EAN-13", + "gtin": "8906008350388", + "ean13": "8906008350388", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773810.4015913 }, { "title": "Manna Ready to Cook Millet Breakfasts 50g", @@ -2873,7 +2927,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "manna_ready_to_cook_millet_breakfasts_50g_d5128028", + "image_id": "manna_manna_ready_to_cook_millet_breakfasts_50g_25g", "highlights": [ "Manna Brand - Trusted Quality", "Health Foods Category", @@ -3337,7 +3391,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "manna_ready_to_cook_millet_breakfasts_50g_d5128028", + "image_id": "manna_manna_ready_to_cook_millet_breakfasts_50g_50g", "highlights": [ "Manna Brand - Trusted Quality", "Health Foods Category", @@ -4246,7 +4300,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "manna_millets_52118280", + "image_id": "manna_manna_millets_100g", "highlights": [ "Manna Brand - Trusted Quality", "Health Foods Category", @@ -4691,7 +4745,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "manna_millets_52118280", + "image_id": "manna_manna_millets_200_g", "highlights": [ "Manna Brand - Trusted Quality", "Health Foods Category", diff --git a/data/seed_catalogs/archive/brand_catalog_mtr.json b/data/seed_catalogs/archive/brand_catalog_mtr.json index d23b25a..d4cfb69 100644 --- a/data/seed_catalogs/archive/brand_catalog_mtr.json +++ b/data/seed_catalogs/archive/brand_catalog_mtr.json @@ -663,8 +663,8 @@ "hsn_code": "0910", "final_selling_price": 40.95, "selling_price": 39.0, - "barcode": null, - "barcode_type": null, + "barcode": "8901042954721", + "barcode_type": "EAN-13", "highlights": [ "mtr Brand - Trusted Quality", "Spices & Masalas Category", @@ -681,7 +681,14 @@ ], "search_query": "mtr Sambar Powder Spices & Masalas", "nutrition_score": null, - "health_score": null + "health_score": null, + "gtin": "8901042954721", + "ean13": "8901042954721", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773810.924069 }, { "brand": "Mtr", @@ -705,8 +712,8 @@ "hsn_code": "0910", "final_selling_price": 77.7, "selling_price": 74.0, - "barcode": null, - "barcode_type": null, + "barcode": "8901042954721", + "barcode_type": "EAN-13", "highlights": [ "mtr Brand - Trusted Quality", "Spices & Masalas Category", @@ -723,7 +730,14 @@ ], "search_query": "mtr Sambar Powder Spices & Masalas", "nutrition_score": 70.3, - "health_score": 70.3 + "health_score": 70.3, + "gtin": "8901042954721", + "ean13": "8901042954721", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773810.924069 }, { "brand": "Mtr", @@ -747,8 +761,8 @@ "hsn_code": "0910", "final_selling_price": 180.6, "selling_price": 172.0, - "barcode": null, - "barcode_type": null, + "barcode": "8901042954721", + "barcode_type": "EAN-13", "highlights": [ "mtr Brand - Trusted Quality", "Spices & Masalas Category", @@ -765,7 +779,14 @@ ], "search_query": "mtr Sambar Powder Spices & Masalas", "nutrition_score": 70.3, - "health_score": 70.3 + "health_score": 70.3, + "gtin": "8901042954721", + "ean13": "8901042954721", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773810.924069 }, { "brand": "Mtr", @@ -789,8 +810,8 @@ "hsn_code": "0910", "final_selling_price": 407.4, "selling_price": 388.0, - "barcode": null, - "barcode_type": null, + "barcode": "8901042954721", + "barcode_type": "EAN-13", "highlights": [ "mtr Brand - Trusted Quality", "Spices & Masalas Category", @@ -807,7 +828,14 @@ ], "search_query": "mtr Sambar Powder Spices & Masalas", "nutrition_score": 70.3, - "health_score": 70.3 + "health_score": 70.3, + "gtin": "8901042954721", + "ean13": "8901042954721", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773810.924069 }, { "brand": "Mtr", diff --git a/data/seed_catalogs/archive/brand_catalog_nestle.json b/data/seed_catalogs/archive/brand_catalog_nestle.json index 311fb5a..3481d9c 100644 --- a/data/seed_catalogs/archive/brand_catalog_nestle.json +++ b/data/seed_catalogs/archive/brand_catalog_nestle.json @@ -3257,7 +3257,16 @@ 0.009596233256161213 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "8901058857245", + "barcode_type": "EAN-13", + "gtin": "8901058857245", + "ean13": "8901058857245", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5304384 }, { "title": "Nestle Kitkat", @@ -3709,7 +3718,16 @@ 0.009596233256161213 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "8901058857245", + "barcode_type": "EAN-13", + "gtin": "8901058857245", + "ean13": "8901058857245", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5304384 }, { "title": "Nestle Kitkat", @@ -4164,7 +4182,16 @@ 0.009596233256161213 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901058857245", + "barcode_type": "EAN-13", + "gtin": "8901058857245", + "ean13": "8901058857245", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5304384 }, { "title": "Nestle Milkybar", @@ -4623,7 +4650,16 @@ 0.028627362102270126 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "89008478", + "barcode_type": "GTIN-8", + "gtin": "89008478", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5370526 }, { "title": "Nestle Milkybar", @@ -5080,7 +5116,16 @@ 0.028627362102270126 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "89008478", + "barcode_type": "GTIN-8", + "gtin": "89008478", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5370526 }, { "title": "Nestle Milkybar", @@ -5535,7 +5580,16 @@ 0.028627362102270126 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "89008478", + "barcode_type": "GTIN-8", + "gtin": "89008478", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5370526 }, { "title": "Nestle Milkybar", @@ -5992,7 +6046,16 @@ 0.028627362102270126 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "89008478", + "barcode_type": "GTIN-8", + "gtin": "89008478", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5370526 }, { "title": "Nestle Milkybar", @@ -6448,7 +6511,16 @@ 0.028627362102270126 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "89008478", + "barcode_type": "GTIN-8", + "gtin": "89008478", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5370526 }, { "title": "Nestle Milkybar", @@ -6902,7 +6974,16 @@ 0.028627362102270126 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "89008478", + "barcode_type": "GTIN-8", + "gtin": "89008478", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5370526 }, { "title": "Nestle Munch", @@ -7354,7 +7435,16 @@ 0.028525006026029587 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "89009802", + "barcode_type": "GTIN-8", + "gtin": "89009802", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5439541 }, { "title": "Nestle Munch", @@ -7805,7 +7895,16 @@ 0.028525006026029587 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "89009802", + "barcode_type": "GTIN-8", + "gtin": "89009802", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5439541 }, { "title": "Nestle Munch", @@ -8255,7 +8354,16 @@ 0.028525006026029587 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "89009802", + "barcode_type": "GTIN-8", + "gtin": "89009802", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5439541 }, { "title": "Nestle Munch", @@ -8706,7 +8814,16 @@ 0.028525006026029587 ], "nutrition_score": 37.5, - "health_score": 37.5 + "health_score": 37.5, + "barcode": "89009802", + "barcode_type": "GTIN-8", + "gtin": "89009802", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5439541 }, { "title": "Nestle Munch", @@ -9156,7 +9273,16 @@ 0.028525006026029587 ], "nutrition_score": 37.5, - "health_score": 37.5 + "health_score": 37.5, + "barcode": "89009802", + "barcode_type": "GTIN-8", + "gtin": "89009802", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5439541 }, { "title": "Nestle Munch", @@ -9605,7 +9731,16 @@ 0.028525006026029587 ], "nutrition_score": 37.5, - "health_score": 37.5 + "health_score": 37.5, + "barcode": "89009802", + "barcode_type": "GTIN-8", + "gtin": "89009802", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5439541 }, { "title": "Nestle Bar-One", @@ -22828,7 +22963,16 @@ 0.04849066585302353 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "8901058844627", + "barcode_type": "EAN-13", + "gtin": "8901058844627", + "ean13": "8901058844627", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5886683 }, { "title": "Nestle Cerelac", @@ -23278,7 +23422,16 @@ 0.04849066585302353 ], "nutrition_score": 37.5, - "health_score": 37.5 + "health_score": 37.5, + "barcode": "8901058844627", + "barcode_type": "EAN-13", + "gtin": "8901058844627", + "ean13": "8901058844627", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5886683 }, { "title": "Nestle Cerelac", @@ -23728,7 +23881,16 @@ 0.04849066585302353 ], "nutrition_score": 37.5, - "health_score": 37.5 + "health_score": 37.5, + "barcode": "8901058844627", + "barcode_type": "EAN-13", + "gtin": "8901058844627", + "ean13": "8901058844627", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5886683 }, { "title": "Nestle Cerelac", @@ -24179,7 +24341,16 @@ 0.04849066585302353 ], "nutrition_score": 37.5, - "health_score": 37.5 + "health_score": 37.5, + "barcode": "8901058844627", + "barcode_type": "EAN-13", + "gtin": "8901058844627", + "ean13": "8901058844627", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5886683 }, { "title": "Nestle Cerelac", @@ -24630,7 +24801,16 @@ 0.04849066585302353 ], "nutrition_score": 37.5, - "health_score": 37.5 + "health_score": 37.5, + "barcode": "8901058844627", + "barcode_type": "EAN-13", + "gtin": "8901058844627", + "ean13": "8901058844627", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5886683 }, { "title": "Nestle Everyday", @@ -27805,7 +27985,16 @@ 0.011869659647345543 ], "nutrition_score": 37.5, - "health_score": 37.5 + "health_score": 37.5, + "barcode": "89009871", + "barcode_type": "GTIN-8", + "gtin": "89009871", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5981793 }, { "title": "Nestle Polo", @@ -28257,7 +28446,16 @@ 0.011869659647345543 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "89009871", + "barcode_type": "GTIN-8", + "gtin": "89009871", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5981793 }, { "title": "Nestle Polo", @@ -28707,7 +28905,16 @@ 0.011869659647345543 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "89009871", + "barcode_type": "GTIN-8", + "gtin": "89009871", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5981793 }, { "title": "Nestle Polo", @@ -29157,7 +29364,16 @@ 0.011869659647345543 ], "nutrition_score": 37.5, - "health_score": 37.5 + "health_score": 37.5, + "barcode": "89009871", + "barcode_type": "GTIN-8", + "gtin": "89009871", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5981793 }, { "title": "Nestle Polo", @@ -29607,7 +29823,16 @@ 0.011869659647345543 ], "nutrition_score": 37.5, - "health_score": 37.5 + "health_score": 37.5, + "barcode": "89009871", + "barcode_type": "GTIN-8", + "gtin": "89009871", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5981793 }, { "title": "Nestle Polo", @@ -30057,7 +30282,16 @@ 0.011869659647345543 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "89009871", + "barcode_type": "GTIN-8", + "gtin": "89009871", + "ean13": null, + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.5981793 }, { "title": "Nestle Nestea", @@ -30510,7 +30744,16 @@ 0.03628866374492645 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "8901058869293", + "barcode_type": "EAN-13", + "gtin": "8901058869293", + "ean13": "8901058869293", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.6030266 }, { "title": "Nestle Nestea", @@ -30963,7 +31206,16 @@ 0.03628866374492645 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "8901058869293", + "barcode_type": "EAN-13", + "gtin": "8901058869293", + "ean13": "8901058869293", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.6030266 }, { "title": "Nestle Nestea", @@ -31419,7 +31671,16 @@ 0.03628866374492645 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901058869293", + "barcode_type": "EAN-13", + "gtin": "8901058869293", + "ean13": "8901058869293", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.6030266 }, { "title": "Nestle Nestea", @@ -31872,7 +32133,16 @@ 0.03628866374492645 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901058869293", + "barcode_type": "EAN-13", + "gtin": "8901058869293", + "ean13": "8901058869293", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.6030266 }, { "title": "Nestle Nestea", @@ -32325,7 +32595,16 @@ 0.03628866374492645 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901058869293", + "barcode_type": "EAN-13", + "gtin": "8901058869293", + "ean13": "8901058869293", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.6030266 }, { "title": "Nestle Nestea", @@ -32777,7 +33056,16 @@ 0.03628866374492645 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "8901058869293", + "barcode_type": "EAN-13", + "gtin": "8901058869293", + "ean13": "8901058869293", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.6030266 }, { "title": "Nestle A+ Toned Milk", @@ -39103,7 +39391,16 @@ -0.0023621099535375834 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "8901058904017", + "barcode_type": "EAN-13", + "gtin": "8901058904017", + "ean13": "8901058904017", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.6294699 }, { "title": "Nestle Milo", @@ -39559,7 +39856,16 @@ -0.0023621099535375834 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "8901058904017", + "barcode_type": "EAN-13", + "gtin": "8901058904017", + "ean13": "8901058904017", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.6294699 }, { "title": "Nestle Milo", @@ -40012,7 +40318,16 @@ -0.0023621099535375834 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "8901058904017", + "barcode_type": "EAN-13", + "gtin": "8901058904017", + "ean13": "8901058904017", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.6294699 }, { "title": "Nestle Milo", @@ -40465,7 +40780,16 @@ -0.0023621099535375834 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "8901058904017", + "barcode_type": "EAN-13", + "gtin": "8901058904017", + "ean13": "8901058904017", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.6294699 }, { "title": "Nestle Milo", @@ -40919,7 +41243,16 @@ -0.0023621099535375834 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901058904017", + "barcode_type": "EAN-13", + "gtin": "8901058904017", + "ean13": "8901058904017", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.6294699 }, { "title": "Nestle Milo", @@ -41375,7 +41708,16 @@ -0.0023621099535375834 ], "nutrition_score": 64.4, - "health_score": 64.4 + "health_score": 64.4, + "barcode": "8901058904017", + "barcode_type": "EAN-13", + "gtin": "8901058904017", + "ean13": "8901058904017", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.6294699 }, { "title": "Nestle Mithai Mate", @@ -48616,7 +48958,16 @@ -0.015285810455679893 ], "nutrition_score": 41.5, - "health_score": 37.8 + "health_score": 37.8, + "barcode": "8901058902938", + "barcode_type": "EAN-13", + "gtin": "8901058902938", + "ean13": "8901058902938", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.6650498 }, { "title": "Nestle Nescafe Sunrise", @@ -49062,7 +49413,16 @@ -0.015285810455679893 ], "nutrition_score": 41.5, - "health_score": 37.8 + "health_score": 37.8, + "barcode": "8901058902938", + "barcode_type": "EAN-13", + "gtin": "8901058902938", + "ean13": "8901058902938", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.6650498 }, { "title": "Nestle Nescafe Sunrise", @@ -49512,7 +49872,16 @@ -0.015285810455679893 ], "nutrition_score": 41.5, - "health_score": 37.8 + "health_score": 37.8, + "barcode": "8901058902938", + "barcode_type": "EAN-13", + "gtin": "8901058902938", + "ean13": "8901058902938", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.6650498 }, { "title": "Nestle Nescafe Sunrise", @@ -49960,7 +50329,16 @@ -0.015285810455679893 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901058902938", + "barcode_type": "EAN-13", + "gtin": "8901058902938", + "ean13": "8901058902938", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.6650498 }, { "title": "Nestle Nescafe Sunrise", @@ -50409,7 +50787,16 @@ -0.015285810455679893 ], "nutrition_score": 41.5, - "health_score": 37.8 + "health_score": 37.8, + "barcode": "8901058902938", + "barcode_type": "EAN-13", + "gtin": "8901058902938", + "ean13": "8901058902938", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773811.6650498 }, { "title": "Nestle Koko Krunch", diff --git a/data/seed_catalogs/archive/brand_catalog_p_and_g.json b/data/seed_catalogs/archive/brand_catalog_p_and_g.json index 57a5ed7..b073308 100644 --- a/data/seed_catalogs/archive/brand_catalog_p_and_g.json +++ b/data/seed_catalogs/archive/brand_catalog_p_and_g.json @@ -66,7 +66,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_pantene_b55bf659", + "image_id": "p_and_g_p_g_pg_pantene_90ml", "highlights": [ "p and g Brand - Trusted Quality", "Hair Care Category", @@ -518,7 +518,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_pantene_b55bf659", + "image_id": "p_and_g_p_g_pg_pantene_180ml", "highlights": [ "p and g Brand - Trusted Quality", "Hair Care Category", @@ -1419,7 +1419,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_head_shoulders_ff8376fb", + "image_id": "p_and_g_p_g_pg_head_shoulders_200ml", "highlights": [ "p and g Brand - Trusted Quality", "Hair Care Category", @@ -1870,7 +1870,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_head_shoulders_ff8376fb", + "image_id": "p_and_g_p_g_pg_head_shoulders_500ml", "highlights": [ "p and g Brand - Trusted Quality", "Hair Care Category", @@ -2772,7 +2772,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_gillette_ac6c1bd3", + "image_id": "p_and_g_p_g_pg_gillette_200g", "highlights": [ "p and g Brand - Trusted Quality", "Men's Grooming Category", @@ -3225,7 +3225,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_gillette_ac6c1bd3", + "image_id": "p_and_g_p_g_pg_gillette_500g", "highlights": [ "p and g Brand - Trusted Quality", "Men's Grooming Category", @@ -4127,7 +4127,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_vicks_cfdca1e0", + "image_id": "p_and_g_p_g_pg_vicks_100g", "highlights": [ "p and g Brand - Trusted Quality", "Health Care - Cold & Cough Category", @@ -4576,7 +4576,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_vicks_cfdca1e0", + "image_id": "p_and_g_p_g_pg_vicks_250g", "highlights": [ "p and g Brand - Trusted Quality", "Health Care - Cold & Cough Category", @@ -5478,7 +5478,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_ariel_8bb4b3da", + "image_id": "p_and_g_p_g_pg_ariel_500g", "highlights": [ "p and g Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -5931,7 +5931,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_ariel_8bb4b3da", + "image_id": "p_and_g_p_g_pg_ariel_1kg", "highlights": [ "p and g Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -6384,7 +6384,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_ariel_8bb4b3da", + "image_id": "p_and_g_p_g_pg_ariel_3kg", "highlights": [ "p and g Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -7282,7 +7282,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_tide_74edbeda", + "image_id": "p_and_g_p_g_pg_tide_200g", "highlights": [ "p and g Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -7727,7 +7727,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_tide_74edbeda", + "image_id": "p_and_g_p_g_pg_tide_500g", "highlights": [ "p and g Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -8174,7 +8174,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_tide_74edbeda", + "image_id": "p_and_g_p_g_pg_tide_1kg", "highlights": [ "p and g Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -9070,7 +9070,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_pampers_8a5c0ccb", + "image_id": "p_and_g_p_g_pg_pampers_100g", "highlights": [ "p and g Brand - Trusted Quality", "Baby Care Category", @@ -9523,7 +9523,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_pampers_8a5c0ccb", + "image_id": "p_and_g_p_g_pg_pampers_250g", "highlights": [ "p and g Brand - Trusted Quality", "Baby Care Category", @@ -10431,7 +10431,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_whisper_9e7623f9", + "image_id": "p_and_g_p_g_pg_whisper_2_boxes", "highlights": [ "p and g Brand - Trusted Quality", "Feminine Hygiene Category", @@ -10884,7 +10884,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_whisper_9e7623f9", + "image_id": "p_and_g_p_g_pg_whisper_5_packs", "highlights": [ "p and g Brand - Trusted Quality", "Feminine Hygiene Category", @@ -11783,7 +11783,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_oral_b_797666a8", + "image_id": "p_and_g_p_g_pg_oral_b_200g", "highlights": [ "p and g Brand - Trusted Quality", "Oral Care Category", @@ -12231,7 +12231,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_oral_b_797666a8", + "image_id": "p_and_g_p_g_pg_oral_b_500g", "highlights": [ "p and g Brand - Trusted Quality", "Oral Care Category", @@ -13130,7 +13130,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_old_spice_9e4545f8", + "image_id": "p_and_g_p_g_pg_old_spice_200g", "highlights": [ "p and g Brand - Trusted Quality", "Men's Grooming Category", @@ -13583,7 +13583,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_old_spice_9e4545f8", + "image_id": "p_and_g_p_g_pg_old_spice_500g", "highlights": [ "p and g Brand - Trusted Quality", "Men's Grooming Category", @@ -14484,7 +14484,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_ivory_soap_22277ace", + "image_id": "p_and_g_p_g_pg_ivory_soap_75g", "highlights": [ "p and g Brand - Trusted Quality", "Skin & Bath Care Category", @@ -14932,7 +14932,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_ivory_soap_22277ace", + "image_id": "p_and_g_p_g_pg_ivory_soap_100g", "highlights": [ "p and g Brand - Trusted Quality", "Skin & Bath Care Category", @@ -15833,7 +15833,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_pringles_25762ee6", + "image_id": "p_and_g_p_g_pg_pringles_200g", "highlights": [ "p and g Brand - Trusted Quality", "Snacks Category", @@ -16290,7 +16290,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_pringles_25762ee6", + "image_id": "p_and_g_p_g_pg_pringles_500g", "highlights": [ "p and g Brand - Trusted Quality", "Snacks Category", @@ -17204,7 +17204,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_downy_71c5e798", + "image_id": "p_and_g_p_g_pg_downy_500g", "highlights": [ "p and g Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -17657,7 +17657,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_downy_71c5e798", + "image_id": "p_and_g_p_g_pg_downy_1kg", "highlights": [ "p and g Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -18110,7 +18110,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_downy_71c5e798", + "image_id": "p_and_g_p_g_pg_downy_3kg", "highlights": [ "p and g Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -19012,7 +19012,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_tide_pods_5c9e736f", + "image_id": "p_and_g_p_g_pg_tide_pods_200g", "highlights": [ "p and g Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -19463,7 +19463,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_tide_pods_5c9e736f", + "image_id": "p_and_g_p_g_pg_tide_pods_500g", "highlights": [ "p and g Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -19912,7 +19912,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_tide_pods_5c9e736f", + "image_id": "p_and_g_p_g_pg_tide_pods_1kg", "highlights": [ "p and g Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -20813,7 +20813,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_fairy_cc56135a", + "image_id": "p_and_g_p_g_pg_fairy_500ml", "highlights": [ "p and g Brand - Trusted Quality", "Dishwash Category", @@ -21265,7 +21265,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_fairy_cc56135a", + "image_id": "p_and_g_p_g_pg_fairy_1l", "highlights": [ "p and g Brand - Trusted Quality", "Dishwash Category", @@ -22168,7 +22168,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_always_a13a4aa1", + "image_id": "p_and_g_p_g_pg_always_2_packs", "highlights": [ "p and g Brand - Trusted Quality", "Feminine Hygiene Category", @@ -22619,7 +22619,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_always_a13a4aa1", + "image_id": "p_and_g_p_g_pg_always_10_pcs", "highlights": [ "p and g Brand - Trusted Quality", "Feminine Hygiene Category", @@ -23520,7 +23520,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_dawn_903a13cf", + "image_id": "p_and_g_p_g_pg_dawn_500ml", "highlights": [ "p and g Brand - Trusted Quality", "Dishwash Category", @@ -23969,7 +23969,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_dawn_903a13cf", + "image_id": "p_and_g_p_g_pg_dawn_1l", "highlights": [ "p and g Brand - Trusted Quality", "Dishwash Category", @@ -25755,7 +25755,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_p_and_g_4a0a4a3f", + "image_id": "p_g_p_g_p_and_g_300g", "highlights": [ "p&g Brand - Trusted Quality", "General Category", @@ -26203,7 +26203,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_p_and_g_4a0a4a3f", + "image_id": "p_g_p_g_p_and_g_375_ml", "highlights": [ "p&g Brand - Trusted Quality", "General Category", @@ -27110,7 +27110,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_pantene_9a86f188", + "image_id": "p_g_p_g_pg_pantene_50ml", "highlights": [ "p&g Brand - Trusted Quality", "Hair Care Category", @@ -29348,7 +29348,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_head_shoulders_adc17a8a", + "image_id": "p_g_p_g_pg_head_shoulders_400ml", "highlights": [ "p&g Brand - Trusted Quality", "Hair Care Category", @@ -30249,7 +30249,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_gillette_93843109", + "image_id": "p_g_p_g_pg_gillette_50g", "highlights": [ "p&g Brand - Trusted Quality", "Men's Grooming Category", @@ -31152,7 +31152,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_vicks_2ac399bb", + "image_id": "p_g_p_g_pg_vicks_25g", "highlights": [ "p&g Brand - Trusted Quality", "Health Care - Cold & Cough Category", @@ -31604,7 +31604,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_vicks_2ac399bb", + "image_id": "p_g_p_g_pg_vicks_50g", "highlights": [ "p&g Brand - Trusted Quality", "Health Care - Cold & Cough Category", @@ -33384,7 +33384,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_ariel_bcdfdcb2", + "image_id": "p_g_p_g_pg_ariel_100g", "highlights": [ "p&g Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -34721,7 +34721,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_tide_378e0446", + "image_id": "p_g_p_g_pg_tide_500g", "highlights": [ "p&g Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -35165,7 +35165,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_tide_378e0446", + "image_id": "p_g_p_g_pg_tide_1kg", "highlights": [ "p&g Brand - Trusted Quality", "Detergents & Fabric Care Category", @@ -36505,7 +36505,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_pampers_780c3846", + "image_id": "p_g_p_g_pg_pampers_100g", "highlights": [ "p&g Brand - Trusted Quality", "Baby Care Category", @@ -39188,7 +39188,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_old_spice_7e0a6809", + "image_id": "p_g_p_g_pg_old_spice_50g", "highlights": [ "p&g Brand - Trusted Quality", "Men's Grooming Category", @@ -39639,7 +39639,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "p_g_pg_old_spice_7e0a6809", + "image_id": "p_g_p_g_pg_old_spice_100g", "highlights": [ "p&g Brand - Trusted Quality", "Men's Grooming Category", diff --git a/data/seed_catalogs/archive/brand_catalog_pepsico.json b/data/seed_catalogs/archive/brand_catalog_pepsico.json index 2ae715c..cf7343e 100644 --- a/data/seed_catalogs/archive/brand_catalog_pepsico.json +++ b/data/seed_catalogs/archive/brand_catalog_pepsico.json @@ -66,7 +66,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "lays_classic_crisps_b37984fe", + "image_id": "pepsico_lays_classic_crisps_20g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -527,7 +527,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "lays_classic_crisps_b37984fe", + "image_id": "pepsico_lays_classic_crisps_50g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -1453,7 +1453,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "kurkure_menthol_49ef2d35", + "image_id": "pepsico_kurkure_menthol_10g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -1917,7 +1917,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "kurkure_menthol_49ef2d35", + "image_id": "pepsico_kurkure_menthol_25g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -2845,7 +2845,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "cheerios_oatmeal_f1287bf0", + "image_id": "pepsico_cheerios_oatmeal_50g", "highlights": [ "pepsico Brand - Trusted Quality", "Breakfast Cereal Category", @@ -3311,7 +3311,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "cheerios_oatmeal_f1287bf0", + "image_id": "pepsico_cheerios_oatmeal_100g", "highlights": [ "pepsico Brand - Trusted Quality", "Breakfast Cereal Category", @@ -4240,7 +4240,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "mountain_dew_sparkling_3250adb3", + "image_id": "pepsico_mountain_dew_sparkling_50ml", "highlights": [ "pepsico Brand - Trusted Quality", "Beverages Category", @@ -4700,7 +4700,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "mountain_dew_sparkling_3250adb3", + "image_id": "pepsico_mountain_dew_sparkling_100ml", "highlights": [ "pepsico Brand - Trusted Quality", "Beverages Category", @@ -5625,7 +5625,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "lays_chips_21194f37", + "image_id": "pepsico_lays_chips_100g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -6091,7 +6091,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "lays_chips_21194f37", + "image_id": "pepsico_lays_chips_250g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -7017,7 +7017,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "kurkure_chai_40fe53d4", + "image_id": "pepsico_kurkure_chai_25g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -7477,7 +7477,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "kurkure_chai_40fe53d4", + "image_id": "pepsico_kurkure_chai_55g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -8401,7 +8401,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "cheerios_breakfast_cereal_3ba97874", + "image_id": "pepsico_cheerios_breakfast_cereal_100g", "highlights": [ "pepsico Brand - Trusted Quality", "Breakfast Cereal Category", @@ -8867,7 +8867,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "cheerios_breakfast_cereal_3ba97874", + "image_id": "pepsico_cheerios_breakfast_cereal_250g", "highlights": [ "pepsico Brand - Trusted Quality", "Breakfast Cereal Category", @@ -9796,7 +9796,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "doritos_chips_cbc1012e", + "image_id": "pepsico_doritos_chips_55g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -10257,7 +10257,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "doritos_chips_cbc1012e", + "image_id": "pepsico_doritos_chips_100g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -11180,7 +11180,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "cheetos_chips_2d6bf74f", + "image_id": "pepsico_cheetos_chips_55g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -11642,7 +11642,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "cheetos_chips_2d6bf74f", + "image_id": "pepsico_cheetos_chips_100g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -12565,7 +12565,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "lays_classic_salted_cheddar_b058c177", + "image_id": "pepsico_lays_classic_salted_cheddar_50g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -13027,7 +13027,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "lays_classic_salted_cheddar_b058c177", + "image_id": "pepsico_lays_classic_salted_cheddar_100g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -13949,7 +13949,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "lays_classic_salted_onion_4829f593", + "image_id": "pepsico_lays_classic_salted_onion_50g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -14409,7 +14409,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "lays_classic_salted_onion_4829f593", + "image_id": "pepsico_lays_classic_salted_onion_100g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -15330,7 +15330,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "lays_classic_salted_bacon_3805e0da", + "image_id": "pepsico_lays_classic_salted_bacon_50g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -15791,7 +15791,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "lays_classic_salted_bacon_3805e0da", + "image_id": "pepsico_lays_classic_salted_bacon_100g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -16712,7 +16712,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "lays_classic_salted_caramel_382b68d5", + "image_id": "pepsico_lays_classic_salted_caramel_50g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -17172,7 +17172,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "lays_classic_salted_caramel_382b68d5", + "image_id": "pepsico_lays_classic_salted_caramel_100g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -18079,7 +18079,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_lays_5766bff4", + "image_id": "pepsico_pepsico_lays_200g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -18480,7 +18480,16 @@ -0.033115386962890625 ], "nutrition_score": 44.2, - "health_score": 42.8 + "health_score": 42.8, + "barcode": "8901491502047", + "barcode_type": "EAN-13", + "gtin": "8901491502047", + "ean13": "8901491502047", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773813.5016623 }, { "title": "Pepsico Lays", @@ -18525,7 +18534,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_lays_5766bff4", + "image_id": "pepsico_pepsico_lays_500g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -18926,7 +18935,16 @@ -0.033115386962890625 ], "nutrition_score": 44.2, - "health_score": 42.8 + "health_score": 42.8, + "barcode": "8901491502047", + "barcode_type": "EAN-13", + "gtin": "8901491502047", + "ean13": "8901491502047", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773813.5016623 }, { "title": "Pepsico Lays", @@ -19372,7 +19390,16 @@ -0.033115386962890625 ], "nutrition_score": 44.2, - "health_score": 42.8 + "health_score": 42.8, + "barcode": "8901491502047", + "barcode_type": "EAN-13", + "gtin": "8901491502047", + "ean13": "8901491502047", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773813.5016623 }, { "title": "Pepsico Kurkure", @@ -19425,7 +19452,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_kurkure_5f337990", + "image_id": "pepsico_pepsico_kurkure_250g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -19884,7 +19911,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_kurkure_5f337990", + "image_id": "pepsico_pepsico_kurkure_350g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -20800,7 +20827,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_doritos_a0b6ec3d", + "image_id": "pepsico_pepsico_doritos_200g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -21252,7 +21279,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_doritos_a0b6ec3d", + "image_id": "pepsico_pepsico_doritos_500g", "highlights": [ "pepsico Brand - Trusted Quality", "Snacks Category", @@ -22151,7 +22178,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_7up_0e63c394", + "image_id": "pepsico_pepsico_7up_200g", "highlights": [ "pepsico Brand - Trusted Quality", "Beverages Category", @@ -22551,7 +22578,16 @@ -0.03288858383893967 ], "nutrition_score": 44.2, - "health_score": 42.8 + "health_score": 42.8, + "barcode": "8902080002290", + "barcode_type": "EAN-13", + "gtin": "8902080002290", + "ean13": "8902080002290", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773813.5105531 }, { "title": "Pepsico 7Up", @@ -22597,7 +22633,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_7up_0e63c394", + "image_id": "pepsico_pepsico_7up_500g", "highlights": [ "pepsico Brand - Trusted Quality", "Beverages Category", @@ -22997,7 +23033,16 @@ -0.03288858383893967 ], "nutrition_score": 44.2, - "health_score": 42.8 + "health_score": 42.8, + "barcode": "8902080002290", + "barcode_type": "EAN-13", + "gtin": "8902080002290", + "ean13": "8902080002290", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773813.5105531 }, { "title": "Pepsico 7Up", @@ -23443,7 +23488,16 @@ -0.03288858383893967 ], "nutrition_score": 44.2, - "health_score": 42.8 + "health_score": 42.8, + "barcode": "8902080002290", + "barcode_type": "EAN-13", + "gtin": "8902080002290", + "ean13": "8902080002290", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773813.5105531 }, { "title": "Pepsico Mountain Dew", @@ -23495,7 +23549,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_mountain_dew_e3764114", + "image_id": "pepsico_pepsico_mountain_dew_100g", "highlights": [ "pepsico Brand - Trusted Quality", "Beverages Category", @@ -23895,7 +23949,16 @@ -0.060521163046360016 ], "nutrition_score": 67.2, - "health_score": 61.8 + "health_score": 61.8, + "barcode": "8902080364022", + "barcode_type": "EAN-13", + "gtin": "8902080364022", + "ean13": "8902080364022", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773813.5143652 }, { "title": "Pepsico Mountain Dew", @@ -23947,7 +24010,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_mountain_dew_e3764114", + "image_id": "pepsico_pepsico_mountain_dew_250ml", "highlights": [ "pepsico Brand - Trusted Quality", "Beverages Category", @@ -24347,7 +24410,16 @@ -0.060521163046360016 ], "nutrition_score": 67.2, - "health_score": 61.8 + "health_score": 61.8, + "barcode": "8902080364022", + "barcode_type": "EAN-13", + "gtin": "8902080364022", + "ean13": "8902080364022", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773813.5143652 }, { "title": "Pepsico Mountain Dew", @@ -24799,7 +24871,16 @@ -0.060521163046360016 ], "nutrition_score": 67.2, - "health_score": 61.8 + "health_score": 61.8, + "barcode": "8902080364022", + "barcode_type": "EAN-13", + "gtin": "8902080364022", + "ean13": "8902080364022", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773813.5143652 }, { "title": "Pepsico Mirinda", @@ -24845,7 +24926,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_mirinda_28e54289", + "image_id": "pepsico_pepsico_mirinda_100g", "highlights": [ "pepsico Brand - Trusted Quality", "Beverages Category", @@ -25245,7 +25326,16 @@ -0.005497010424733162 ], "nutrition_score": 37.5, - "health_score": 37.5 + "health_score": 37.5, + "barcode": "8902080204021", + "barcode_type": "EAN-13", + "gtin": "8902080204021", + "ean13": "8902080204021", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773813.517687 }, { "title": "Pepsico Mirinda", @@ -25291,7 +25381,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_mirinda_28e54289", + "image_id": "pepsico_pepsico_mirinda_250ml", "highlights": [ "pepsico Brand - Trusted Quality", "Beverages Category", @@ -25691,7 +25781,16 @@ -0.005497010424733162 ], "nutrition_score": 37.5, - "health_score": 37.5 + "health_score": 37.5, + "barcode": "8902080204021", + "barcode_type": "EAN-13", + "gtin": "8902080204021", + "ean13": "8902080204021", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773813.517687 }, { "title": "Pepsico Mirinda", @@ -26137,7 +26236,16 @@ -0.005497010424733162 ], "nutrition_score": 37.5, - "health_score": 37.5 + "health_score": 37.5, + "barcode": "8902080204021", + "barcode_type": "EAN-13", + "gtin": "8902080204021", + "ean13": "8902080204021", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788773813.517687 }, { "title": "Pepsico Tropicana", @@ -26183,7 +26291,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_tropicana_d968f9e0", + "image_id": "pepsico_pepsico_tropicana_250ml", "highlights": [ "pepsico Brand - Trusted Quality", "Beverages Category", @@ -26629,7 +26737,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_tropicana_d968f9e0", + "image_id": "pepsico_pepsico_tropicana_500ml", "highlights": [ "pepsico Brand - Trusted Quality", "Beverages Category", @@ -27523,7 +27631,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_gatorade_78d84854", + "image_id": "pepsico_pepsico_gatorade_200ml", "highlights": [ "pepsico Brand - Trusted Quality", "Beverages Category", @@ -27971,7 +28079,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_gatorade_78d84854", + "image_id": "pepsico_pepsico_gatorade_500ml", "highlights": [ "pepsico Brand - Trusted Quality", "Beverages Category", @@ -28862,7 +28970,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_nimbooz_5c305c66", + "image_id": "pepsico_pepsico_nimbooz_250ml", "highlights": [ "pepsico Brand - Trusted Quality", "Beverages Category", @@ -29305,7 +29413,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "pepsico_nimbooz_5c305c66", + "image_id": "pepsico_pepsico_nimbooz_500ml", "highlights": [ "pepsico Brand - Trusted Quality", "Beverages Category", diff --git a/data/seed_catalogs/brand_catalog_amul.json b/data/seed_catalogs/brand_catalog_amul.json index 9f09e2a..0d8e2dd 100644 --- a/data/seed_catalogs/brand_catalog_amul.json +++ b/data/seed_catalogs/brand_catalog_amul.json @@ -7919,7 +7919,16 @@ -0.04201290011405945 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901262031059", + "barcode_type": "EAN-13", + "gtin": "8901262031059", + "ean13": "8901262031059", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.015503 }, { "title": "Amul Ghee", @@ -8380,7 +8389,16 @@ -0.04201289266347885 ], "nutrition_score": 42.7, - "health_score": 34.6 + "health_score": 34.6, + "barcode": "8901262031059", + "barcode_type": "EAN-13", + "gtin": "8901262031059", + "ean13": "8901262031059", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.015503 }, { "title": "Amul Ghee", @@ -8843,7 +8861,16 @@ -0.04201290011405945 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901262031059", + "barcode_type": "EAN-13", + "gtin": "8901262031059", + "ean13": "8901262031059", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.015503 }, { "title": "Amul Ghee", @@ -9302,7 +9329,16 @@ -0.04201290011405945 ], "nutrition_score": 42.7, - "health_score": 34.6 + "health_score": 34.6, + "barcode": "8901262031059", + "barcode_type": "EAN-13", + "gtin": "8901262031059", + "ean13": "8901262031059", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.015503 }, { "title": "Amul Paneer - Milk Paneer", @@ -16730,7 +16766,16 @@ -0.024072779342532158 ], "nutrition_score": 64.3, - "health_score": 64.3 + "health_score": 64.3, + "barcode": "8901262200271", + "barcode_type": "EAN-13", + "gtin": "8901262200271", + "ean13": "8901262200271", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.0632794 }, { "title": "Amul Dahi", @@ -17192,7 +17237,16 @@ -0.024072779342532158 ], "nutrition_score": 64.3, - "health_score": 64.3 + "health_score": 64.3, + "barcode": "8901262200271", + "barcode_type": "EAN-13", + "gtin": "8901262200271", + "ean13": "8901262200271", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.0632794 }, { "title": "Amul Dahi", @@ -17657,7 +17711,16 @@ -0.02407277375459671 ], "nutrition_score": 64.3, - "health_score": 64.3 + "health_score": 64.3, + "barcode": "8901262200271", + "barcode_type": "EAN-13", + "gtin": "8901262200271", + "ean13": "8901262200271", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.0632794 }, { "title": "Amul Dahi", @@ -18116,7 +18179,16 @@ -0.02407277375459671 ], "nutrition_score": 64.3, - "health_score": 64.3 + "health_score": 64.3, + "barcode": "8901262200271", + "barcode_type": "EAN-13", + "gtin": "8901262200271", + "ean13": "8901262200271", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.0632794 }, { "title": "Amul Lassi", @@ -18582,7 +18654,16 @@ -0.06332097202539444 ], "nutrition_score": 64.3, - "health_score": 64.3 + "health_score": 64.3, + "barcode": "8901262200189", + "barcode_type": "EAN-13", + "gtin": "8901262200189", + "ean13": "8901262200189", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.072889 }, { "title": "Amul Lassi", @@ -19047,7 +19128,16 @@ -0.06332097202539444 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901262200189", + "barcode_type": "EAN-13", + "gtin": "8901262200189", + "ean13": "8901262200189", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.072889 }, { "title": "Amul Lassi", @@ -19512,7 +19602,16 @@ -0.06332097202539444 ], "nutrition_score": 64.3, - "health_score": 64.3 + "health_score": 64.3, + "barcode": "8901262200189", + "barcode_type": "EAN-13", + "gtin": "8901262200189", + "ean13": "8901262200189", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.072889 }, { "title": "Amul Lassi", @@ -19980,7 +20079,16 @@ -0.06332097202539444 ], "nutrition_score": 64.3, - "health_score": 64.3 + "health_score": 64.3, + "barcode": "8901262200189", + "barcode_type": "EAN-13", + "gtin": "8901262200189", + "ean13": "8901262200189", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.072889 }, { "title": "Amul Kool Cafe", @@ -24571,7 +24679,16 @@ -0.07784871757030487 ], "nutrition_score": 42.7, - "health_score": 34.6 + "health_score": 34.6, + "barcode": "8901262172363", + "barcode_type": "EAN-13", + "gtin": "8901262172363", + "ean13": "8901262172363", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.1036828 }, { "title": "Amul Ice Cream", @@ -25029,7 +25146,16 @@ -0.07784871757030487 ], "nutrition_score": 42.7, - "health_score": 34.6 + "health_score": 34.6, + "barcode": "8901262172363", + "barcode_type": "EAN-13", + "gtin": "8901262172363", + "ean13": "8901262172363", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.1036828 }, { "title": "Amul Ice Cream", @@ -25491,7 +25617,16 @@ -0.07784871757030487 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901262172363", + "barcode_type": "EAN-13", + "gtin": "8901262172363", + "ean13": "8901262172363", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.1036828 }, { "title": "Amul Mithai", @@ -27757,7 +27892,16 @@ -0.028151601552963257 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901262153355", + "barcode_type": "EAN-13", + "gtin": "8901262153355", + "ean13": "8901262153355", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.123552 }, { "title": "Amul Kool", @@ -28207,7 +28351,16 @@ -0.028151601552963257 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901262153355", + "barcode_type": "EAN-13", + "gtin": "8901262153355", + "ean13": "8901262153355", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.123552 }, { "title": "Amul Kool", @@ -28657,7 +28810,16 @@ -0.028151601552963257 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901262153355", + "barcode_type": "EAN-13", + "gtin": "8901262153355", + "ean13": "8901262153355", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.123552 }, { "title": "Amul Pro", @@ -32750,7 +32912,16 @@ -0.04829597473144531 ], "nutrition_score": 100.0, - "health_score": 100.0 + "health_score": 100.0, + "barcode": "8901262040051", + "barcode_type": "EAN-13", + "gtin": "8901262040051", + "ean13": "8901262040051", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.152311 }, { "title": "Amul Shrikhand", @@ -33204,7 +33375,16 @@ -0.04829597473144531 ], "nutrition_score": 100.0, - "health_score": 100.0 + "health_score": 100.0, + "barcode": "8901262040051", + "barcode_type": "EAN-13", + "gtin": "8901262040051", + "ean13": "8901262040051", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.152311 }, { "title": "Amul Shrikhand", @@ -33655,7 +33835,16 @@ -0.04829597473144531 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901262040051", + "barcode_type": "EAN-13", + "gtin": "8901262040051", + "ean13": "8901262040051", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.152311 }, { "title": "Amul Basundi", @@ -41836,7 +42025,16 @@ -0.01778056100010872 ], "nutrition_score": 64.3, - "health_score": 64.3 + "health_score": 64.3, + "barcode": "8901262200677", + "barcode_type": "EAN-13", + "gtin": "8901262200677", + "ean13": "8901262200677", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.2026575 }, { "title": "Amul Masti Dahi", @@ -42288,7 +42486,16 @@ -0.01778056100010872 ], "nutrition_score": 64.3, - "health_score": 64.3 + "health_score": 64.3, + "barcode": "8901262200677", + "barcode_type": "EAN-13", + "gtin": "8901262200677", + "ean13": "8901262200677", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.2026575 }, { "title": "Amul Masti Dahi", @@ -42737,7 +42944,16 @@ -0.01778056100010872 ], "nutrition_score": 64.3, - "health_score": 64.3 + "health_score": 64.3, + "barcode": "8901262200677", + "barcode_type": "EAN-13", + "gtin": "8901262200677", + "ean13": "8901262200677", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.2026575 }, { "title": "Amul Masti Dahi", @@ -43189,7 +43405,16 @@ -0.01778056100010872 ], "nutrition_score": 64.3, - "health_score": 64.3 + "health_score": 64.3, + "barcode": "8901262200677", + "barcode_type": "EAN-13", + "gtin": "8901262200677", + "ean13": "8901262200677", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.2026575 }, { "title": "Amul Fresh Cream", @@ -43637,7 +43862,16 @@ -0.08329895883798599 ], "nutrition_score": 64.3, - "health_score": 64.3 + "health_score": 64.3, + "barcode": "8901262150118", + "barcode_type": "EAN-13", + "gtin": "8901262150118", + "ean13": "8901262150118", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.2152038 }, { "title": "Amul Fresh Cream", @@ -44089,7 +44323,16 @@ -0.08329895883798599 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901262150118", + "barcode_type": "EAN-13", + "gtin": "8901262150118", + "ean13": "8901262150118", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.2152038 }, { "title": "Amul Fresh Cream", @@ -44538,7 +44781,16 @@ -0.08329895883798599 ], "nutrition_score": 64.3, - "health_score": 64.3 + "health_score": 64.3, + "barcode": "8901262150118", + "barcode_type": "EAN-13", + "gtin": "8901262150118", + "ean13": "8901262150118", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.2152038 }, { "title": "Amul Malai Paneer", @@ -44993,7 +45245,16 @@ -0.0041502988897264 ], "nutrition_score": 70.3, - "health_score": 70.3 + "health_score": 70.3, + "barcode": "8901262180016", + "barcode_type": "EAN-13", + "gtin": "8901262180016", + "ean13": "8901262180016", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.2311263 }, { "title": "Amul Malai Paneer", @@ -45445,7 +45706,16 @@ -0.0041502988897264 ], "nutrition_score": 70.3, - "health_score": 70.3 + "health_score": 70.3, + "barcode": "8901262180016", + "barcode_type": "EAN-13", + "gtin": "8901262180016", + "ean13": "8901262180016", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.2311263 }, { "title": "Amul Malai Paneer", @@ -45898,7 +46168,16 @@ -0.0041502988897264 ], "nutrition_score": 70.3, - "health_score": 70.3 + "health_score": 70.3, + "barcode": "8901262180016", + "barcode_type": "EAN-13", + "gtin": "8901262180016", + "ean13": "8901262180016", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.2311263 }, { "title": "Amul Malai Paneer", @@ -46350,7 +46629,16 @@ -0.0041502988897264 ], "nutrition_score": 70.3, - "health_score": 70.3 + "health_score": 70.3, + "barcode": "8901262180016", + "barcode_type": "EAN-13", + "gtin": "8901262180016", + "ean13": "8901262180016", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.2311263 }, { "title": "Amul Taaza Toned Milk", @@ -50926,7 +51214,16 @@ -0.04795752093195915 ], "nutrition_score": 30.5, - "health_score": 30.5 + "health_score": 30.5, + "barcode": "8901262140065", + "barcode_type": "EAN-13", + "gtin": "8901262140065", + "ean13": "8901262140065", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.3098247 }, { "title": "Amul Lite Bread Spread", @@ -51385,7 +51682,16 @@ -0.04795752093195915 ], "nutrition_score": 42.7, - "health_score": 34.6 + "health_score": 34.6, + "barcode": "8901262140065", + "barcode_type": "EAN-13", + "gtin": "8901262140065", + "ean13": "8901262140065", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.3098247 }, { "title": "Amul Lite Bread Spread", @@ -51844,7 +52150,16 @@ -0.04795752093195915 ], "nutrition_score": 42.7, - "health_score": 34.6 + "health_score": 34.6, + "barcode": "8901262140065", + "barcode_type": "EAN-13", + "gtin": "8901262140065", + "ean13": "8901262140065", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768769.3098247 }, { "title": "Amul Chocozoo", diff --git a/data/seed_catalogs/brand_catalog_cadbury.json b/data/seed_catalogs/brand_catalog_cadbury.json index 02ca51b..97f8f6f 100644 --- a/data/seed_catalogs/brand_catalog_cadbury.json +++ b/data/seed_catalogs/brand_catalog_cadbury.json @@ -474,7 +474,16 @@ -0.06120147928595543 ], "nutrition_score": 21.2, - "health_score": 18.1 + "health_score": 18.1, + "barcode": "8901233020273", + "barcode_type": "EAN-13", + "gtin": "8901233020273", + "ean13": "8901233020273", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.8735542 }, { "title": "Cadbury 5 Star", @@ -931,7 +940,16 @@ -0.06120147928595543 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901233020273", + "barcode_type": "EAN-13", + "gtin": "8901233020273", + "ean13": "8901233020273", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.8735542 }, { "title": "Cadbury 5 Star", @@ -1388,7 +1406,16 @@ -0.06120147928595543 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901233020273", + "barcode_type": "EAN-13", + "gtin": "8901233020273", + "ean13": "8901233020273", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.8735542 }, { "title": "Cadbury 5 Star", @@ -1841,7 +1868,16 @@ -0.06120147928595543 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901233020273", + "barcode_type": "EAN-13", + "gtin": "8901233020273", + "ean13": "8901233020273", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.8735542 }, { "title": "Cadbury 5 Star", @@ -2297,7 +2333,16 @@ -0.06120147928595543 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901233020273", + "barcode_type": "EAN-13", + "gtin": "8901233020273", + "ean13": "8901233020273", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.8735542 }, { "title": "Cadbury 5 Star", @@ -2751,7 +2796,16 @@ -0.06120147928595543 ], "nutrition_score": 21.2, - "health_score": 18.1 + "health_score": 18.1, + "barcode": "8901233020273", + "barcode_type": "EAN-13", + "gtin": "8901233020273", + "ean13": "8901233020273", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.8735542 }, { "title": "Cadbury Bournvita", @@ -3206,7 +3260,16 @@ -0.08109696209430695 ], "nutrition_score": 60.2, - "health_score": 60.2 + "health_score": 60.2, + "barcode": "8901233018362", + "barcode_type": "EAN-13", + "gtin": "8901233018362", + "ean13": "8901233018362", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.8771605 }, { "title": "Cadbury Bournvita", @@ -3659,7 +3722,16 @@ -0.08109696209430695 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901233018362", + "barcode_type": "EAN-13", + "gtin": "8901233018362", + "ean13": "8901233018362", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.8771605 }, { "title": "Cadbury Bournvita", @@ -4115,7 +4187,16 @@ -0.08109696209430695 ], "nutrition_score": 60.2, - "health_score": 60.2 + "health_score": 60.2, + "barcode": "8901233018362", + "barcode_type": "EAN-13", + "gtin": "8901233018362", + "ean13": "8901233018362", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.8771605 }, { "title": "Cadbury Bournvita", @@ -4569,7 +4650,16 @@ -0.08109696209430695 ], "nutrition_score": 60.2, - "health_score": 60.2 + "health_score": 60.2, + "barcode": "8901233018362", + "barcode_type": "EAN-13", + "gtin": "8901233018362", + "ean13": "8901233018362", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.8771605 }, { "title": "Cadbury Bournvita", @@ -5024,7 +5114,16 @@ -0.08109696209430695 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901233018362", + "barcode_type": "EAN-13", + "gtin": "8901233018362", + "ean13": "8901233018362", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.8771605 }, { "title": "Cadbury Dairy Milk", @@ -5479,7 +5578,16 @@ -0.10200155526399612 ], "nutrition_score": 21.2, - "health_score": 18.1 + "health_score": 18.1, + "barcode": "8901233028361", + "barcode_type": "EAN-13", + "gtin": "8901233028361", + "ean13": "8901233028361", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.8806314 }, { "title": "Cadbury Dairy Milk", @@ -5934,7 +6042,16 @@ -0.10200155526399612 ], "nutrition_score": 21.2, - "health_score": 18.1 + "health_score": 18.1, + "barcode": "8901233028361", + "barcode_type": "EAN-13", + "gtin": "8901233028361", + "ean13": "8901233028361", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.8806314 }, { "title": "Cadbury Gems", @@ -8197,7 +8314,16 @@ -0.07452433556318283 ], "nutrition_score": 34.1, - "health_score": 33.6 + "health_score": 33.6, + "barcode": "8901233030272", + "barcode_type": "EAN-13", + "gtin": "8901233030272", + "ean13": "8901233030272", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.886849 }, { "title": "Cadbury Perk", @@ -8648,7 +8774,16 @@ -0.07452433556318283 ], "nutrition_score": 21.2, - "health_score": 18.1 + "health_score": 18.1, + "barcode": "8901233030272", + "barcode_type": "EAN-13", + "gtin": "8901233030272", + "ean13": "8901233030272", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.886849 }, { "title": "Cadbury Perk", @@ -9098,7 +9233,16 @@ -0.07452433556318283 ], "nutrition_score": 70.3, - "health_score": 70.3 + "health_score": 70.3, + "barcode": "8901233030272", + "barcode_type": "EAN-13", + "gtin": "8901233030272", + "ean13": "8901233030272", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.886849 }, { "title": "Cadbury Perk", @@ -9549,7 +9693,16 @@ -0.07452433556318283 ], "nutrition_score": 70.3, - "health_score": 70.3 + "health_score": 70.3, + "barcode": "8901233030272", + "barcode_type": "EAN-13", + "gtin": "8901233030272", + "ean13": "8901233030272", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.886849 }, { "title": "Cadbury Perk", @@ -10000,7 +10153,16 @@ -0.07452433556318283 ], "nutrition_score": 70.3, - "health_score": 70.3 + "health_score": 70.3, + "barcode": "8901233030272", + "barcode_type": "EAN-13", + "gtin": "8901233030272", + "ean13": "8901233030272", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.886849 }, { "title": "Cadbury Choclairs Gold", @@ -10978,7 +11140,7 @@ "best_deals": [], "total_variants": 1, "total_products_found": 0, - "image_id": "cadbury_perky_nano_827d185c", + "image_id": "cadbury_cadbury_perky_nano_50g", "highlights": [ "cadbury Brand - Trusted Quality", "Chocolates Category", @@ -24915,7 +25077,16 @@ -0.02898901328444481 ], "nutrition_score": 34.1, - "health_score": 33.6 + "health_score": 33.6, + "barcode": "8901233023687", + "barcode_type": "EAN-13", + "gtin": "8901233023687", + "ean13": "8901233023687", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.924282 }, { "title": "Cadbury Fuse", @@ -25371,7 +25542,16 @@ -0.02898901328444481 ], "nutrition_score": 34.1, - "health_score": 33.6 + "health_score": 33.6, + "barcode": "8901233023687", + "barcode_type": "EAN-13", + "gtin": "8901233023687", + "ean13": "8901233023687", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.924282 }, { "title": "Cadbury Fuse", @@ -25829,7 +26009,16 @@ -0.02898901328444481 ], "nutrition_score": null, - "health_score": null + "health_score": null, + "barcode": "8901233023687", + "barcode_type": "EAN-13", + "gtin": "8901233023687", + "ean13": "8901233023687", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.924282 }, { "title": "Cadbury Bournville", @@ -39469,7 +39658,16 @@ -0.09026454389095306 ], "nutrition_score": 24.0, - "health_score": 22.3 + "health_score": 22.3, + "barcode": "8901233021492", + "barcode_type": "EAN-13", + "gtin": "8901233021492", + "ean13": "8901233021492", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.9583745 }, { "title": "Cadbury Nutties", @@ -39925,7 +40123,16 @@ -0.09026454389095306 ], "nutrition_score": 24.0, - "health_score": 22.3 + "health_score": 22.3, + "barcode": "8901233021492", + "barcode_type": "EAN-13", + "gtin": "8901233021492", + "ean13": "8901233021492", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.9583745 }, { "title": "Cadbury Nutties", @@ -40380,7 +40587,16 @@ -0.09026454389095306 ], "nutrition_score": 24.0, - "health_score": 22.3 + "health_score": 22.3, + "barcode": "8901233021492", + "barcode_type": "EAN-13", + "gtin": "8901233021492", + "ean13": "8901233021492", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.9583745 }, { "title": "Cadbury Nutties", @@ -40835,7 +41051,16 @@ -0.09026454389095306 ], "nutrition_score": 24.0, - "health_score": 22.3 + "health_score": 22.3, + "barcode": "8901233021492", + "barcode_type": "EAN-13", + "gtin": "8901233021492", + "ean13": "8901233021492", + "upc": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", + "barcode_verified": false, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768771.9583745 }, { "title": "Cadbury Dairy Milk Lickables", diff --git a/data/seed_catalogs/brand_catalog_tata.json b/data/seed_catalogs/brand_catalog_tata.json index 93c6267..0e0de3a 100644 --- a/data/seed_catalogs/brand_catalog_tata.json +++ b/data/seed_catalogs/brand_catalog_tata.json @@ -79,15 +79,15 @@ "validation_status": "verified", "confidence_score": 0.9, "validation_issues": [], - "barcode": null, - "barcode_type": null, - "gtin": null, - "ean13": null, + "barcode": "8901052005604", + "barcode_type": "EAN-13", + "gtin": "8901052005604", + "ean13": "8901052005604", "upc": null, - "barcode_source": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", "barcode_verified": false, - "barcode_lookup_status": "not_found", - "barcode_last_updated": 1786092368.4297762, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768773.0995708, "hsn_code": "0902", "gst_percent": 5, "hsn_gst_needs_review": false, @@ -1011,15 +1011,15 @@ "validation_status": "verified", "confidence_score": 0.9, "validation_issues": [], - "barcode": null, - "barcode_type": null, - "gtin": null, - "ean13": null, + "barcode": "8901052005604", + "barcode_type": "EAN-13", + "gtin": "8901052005604", + "ean13": "8901052005604", "upc": null, - "barcode_source": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", "barcode_verified": false, - "barcode_lookup_status": "not_found", - "barcode_last_updated": 1786092368.4563048, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768773.0995708, "hsn_code": "0902", "gst_percent": 5, "hsn_gst_needs_review": false, @@ -1480,15 +1480,15 @@ "validation_status": "verified", "confidence_score": 0.9, "validation_issues": [], - "barcode": null, - "barcode_type": null, - "gtin": null, - "ean13": null, + "barcode": "8904043901015", + "barcode_type": "EAN-13", + "gtin": "8904043901015", + "ean13": "8904043901015", "upc": null, - "barcode_source": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", "barcode_verified": false, - "barcode_lookup_status": "not_found", - "barcode_last_updated": 1786092369.18314, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768773.1030667, "hsn_code": "2501", "gst_percent": 5, "hsn_gst_needs_review": false, @@ -1945,15 +1945,15 @@ "validation_status": "verified", "confidence_score": 0.9, "validation_issues": [], - "barcode": null, - "barcode_type": null, - "gtin": null, - "ean13": null, + "barcode": "8904043901015", + "barcode_type": "EAN-13", + "gtin": "8904043901015", + "ean13": "8904043901015", "upc": null, - "barcode_source": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", "barcode_verified": false, - "barcode_lookup_status": "not_found", - "barcode_last_updated": 1786092368.7786825, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768773.1030667, "hsn_code": "2501", "gst_percent": 5, "hsn_gst_needs_review": false, @@ -2412,15 +2412,15 @@ "validation_status": "verified", "confidence_score": 0.9, "validation_issues": [], - "barcode": null, - "barcode_type": null, - "gtin": null, - "ean13": null, + "barcode": "8904043901015", + "barcode_type": "EAN-13", + "gtin": "8904043901015", + "ean13": "8904043901015", "upc": null, - "barcode_source": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", "barcode_verified": false, - "barcode_lookup_status": "not_found", - "barcode_last_updated": 1786092382.648413, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768773.1030667, "hsn_code": "2501", "gst_percent": 5, "hsn_gst_needs_review": false, @@ -2879,15 +2879,15 @@ "validation_status": "verified", "confidence_score": 0.9, "validation_issues": [], - "barcode": null, - "barcode_type": null, - "gtin": null, - "ean13": null, + "barcode": "8904043901015", + "barcode_type": "EAN-13", + "gtin": "8904043901015", + "ean13": "8904043901015", "upc": null, - "barcode_source": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", "barcode_verified": false, - "barcode_lookup_status": "not_found", - "barcode_last_updated": 1786092385.8728337, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768773.1030667, "hsn_code": "2501", "gst_percent": 5, "hsn_gst_needs_review": false, @@ -5696,15 +5696,15 @@ "validation_status": "verified", "confidence_score": 0.9, "validation_issues": [], - "barcode": null, - "barcode_type": null, - "gtin": null, - "ean13": null, + "barcode": "8904043904061", + "barcode_type": "EAN-13", + "gtin": "8904043904061", + "ean13": "8904043904061", "upc": null, - "barcode_source": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", "barcode_verified": false, - "barcode_lookup_status": "not_found", - "barcode_last_updated": 1786092398.9515324, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768773.1124144, "hsn_code": "0713", "gst_percent": 5, "hsn_gst_needs_review": true, @@ -6168,15 +6168,15 @@ "validation_status": "verified", "confidence_score": 0.9, "validation_issues": [], - "barcode": null, - "barcode_type": null, - "gtin": null, - "ean13": null, + "barcode": "8904043904061", + "barcode_type": "EAN-13", + "gtin": "8904043904061", + "ean13": "8904043904061", "upc": null, - "barcode_source": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", "barcode_verified": false, - "barcode_lookup_status": "not_found", - "barcode_last_updated": 1786092395.9075098, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768773.1124144, "hsn_code": "0713", "gst_percent": 5, "hsn_gst_needs_review": true, @@ -6640,15 +6640,15 @@ "validation_status": "verified", "confidence_score": 0.9, "validation_issues": [], - "barcode": null, - "barcode_type": null, - "gtin": null, - "ean13": null, + "barcode": "8904043904061", + "barcode_type": "EAN-13", + "gtin": "8904043904061", + "ean13": "8904043904061", "upc": null, - "barcode_source": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", "barcode_verified": false, - "barcode_lookup_status": "not_found", - "barcode_last_updated": 1786092400.594347, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768773.1124144, "hsn_code": "0713", "gst_percent": 5, "hsn_gst_needs_review": true, @@ -7113,15 +7113,15 @@ "validation_status": "verified", "confidence_score": 0.9, "validation_issues": [], - "barcode": null, - "barcode_type": null, - "gtin": null, - "ean13": null, + "barcode": "8904043904061", + "barcode_type": "EAN-13", + "gtin": "8904043904061", + "ean13": "8904043904061", "upc": null, - "barcode_source": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", "barcode_verified": false, - "barcode_lookup_status": "not_found", - "barcode_last_updated": 1786092404.4328516, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768773.1124144, "hsn_code": "0713", "gst_percent": 5, "hsn_gst_needs_review": true, @@ -7587,15 +7587,15 @@ "validation_status": "verified", "confidence_score": 0.9, "validation_issues": [], - "barcode": null, - "barcode_type": null, - "gtin": null, - "ean13": null, + "barcode": "8904043904061", + "barcode_type": "EAN-13", + "gtin": "8904043904061", + "ean13": "8904043904061", "upc": null, - "barcode_source": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", "barcode_verified": false, - "barcode_lookup_status": "not_found", - "barcode_last_updated": 1786092402.963685, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768773.1124144, "hsn_code": "0713", "gst_percent": 5, "hsn_gst_needs_review": true, @@ -32376,15 +32376,15 @@ "validation_status": "verified", "confidence_score": 0.9, "validation_issues": [], - "barcode": null, - "barcode_type": null, - "gtin": null, - "ean13": null, + "barcode": "8901052010318", + "barcode_type": "EAN-13", + "gtin": "8901052010318", + "ean13": "8901052010318", "upc": null, - "barcode_source": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", "barcode_verified": false, - "barcode_lookup_status": "not_found", - "barcode_last_updated": 1786092539.042472, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768773.1740298, "hsn_code": "0902", "gst_percent": 5, "hsn_gst_needs_review": false, @@ -32847,15 +32847,15 @@ "validation_status": "verified", "confidence_score": 0.9, "validation_issues": [], - "barcode": null, - "barcode_type": null, - "gtin": null, - "ean13": null, + "barcode": "8901052010318", + "barcode_type": "EAN-13", + "gtin": "8901052010318", + "ean13": "8901052010318", "upc": null, - "barcode_source": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", "barcode_verified": false, - "barcode_lookup_status": "not_found", - "barcode_last_updated": 1786092539.4707644, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768773.1740298, "hsn_code": "0902", "gst_percent": 5, "hsn_gst_needs_review": false, @@ -33321,15 +33321,15 @@ "validation_status": "verified", "confidence_score": 0.9, "validation_issues": [], - "barcode": null, - "barcode_type": null, - "gtin": null, - "ean13": null, + "barcode": "8901052010318", + "barcode_type": "EAN-13", + "gtin": "8901052010318", + "ean13": "8901052010318", "upc": null, - "barcode_source": null, + "barcode_source": "openfoodfacts_bulk (search.openfoodfacts.org)", "barcode_verified": false, - "barcode_lookup_status": "not_found", - "barcode_last_updated": 1786092543.6144187, + "barcode_lookup_status": "name_matched", + "barcode_last_updated": 1788768773.1740298, "hsn_code": "0902", "gst_percent": 5, "hsn_gst_needs_review": false, diff --git a/scripts/backfill_barcodes_from_off.py b/scripts/backfill_barcodes_from_off.py new file mode 100644 index 0000000..89c6b6a --- /dev/null +++ b/scripts/backfill_barcodes_from_off.py @@ -0,0 +1,516 @@ +#!/usr/bin/env python3 +""" +Backfill product barcodes from Open Food Facts into the brand tables and the +seed catalog JSON files. + +WHY + 611 catalog products, 588 of them with no barcode. OFF has an India + catalogue for the food brands (amul 146, cadbury 123, tata 50, britannia + 233 products), keyed by a name that is usually recognisable but rarely + identical to ours - OFF says "Britannia Marie Gold", we say "Britannia + Marie Gold 250g". This script closes that gap by name similarity. + + It fetches each brand's ENTIRE OFF catalogue in one or two requests and + matches offline. The pre-existing per-product path + (`sources/open_food_facts.py`, driven by the enrichment pipeline) searches + OFF once per product against an endpoint capped at 10 requests/minute; + this run costs about five requests in total and is fully re-runnable from + the on-disk corpus cache with no further network traffic. + +WHAT IT TOUCHES + * brand_.barcode and .barcode_type - only where the current value is + absent OR fails checksum validation. A genuine barcode (Tata has 23 + manually sourced ones) is never overwritten; a value that is not a + barcode at all ('8900000000000.0', 38 rows) is repairable rather than + permanently locked in. The UPDATE pins the row's own current value in its + WHERE clause, so a concurrent real write is never lost. + * backend/data/seed_catalogs/brand_catalog_.json - the nine barcode + keys on matched products only, written in place. Every other key on + every product, including `embedding`, `size`, `variant_key` and + `gst_percent`, is preserved byte-for-byte. + * backend/data/cache/off_brand_corpus/.json - the fetched OFF corpus. + * The CSV review report. + +WHAT IT DOES NOT TOUCH + Nothing in the running app. `stage.py`, `service.py`, `pipeline.py`, + `sources/open_food_facts.py`, `matching.py`, `validators.py` and + `vector_store.py` are all consumed read-only; ENABLE_BARCODE_LOOKUP stays + off and the ingestion pipeline behaves exactly as before. + + In particular this does NOT call `brand_sync.export_brand_to_seed_file()`. + That helper rebuilds each product from EXPORT_COLUMNS and + `upsert_products_into_catalog_file` then REPLACES the whole product dict + (brand_sync.py:232) after stripping the embedding (:221) - running it here + would silently delete `size`, `variant_key`, `gst_percent`, `embedding` and + the seven JSON-only barcode keys from every product in the file. + +MATCHING RULES + Products are grouped by their size-less `title`, matched once per group, + and the winning barcode is written to every size variant in that group. + That is a deliberate choice: a GTIN identifies exactly one pack, so + "Amul Butter 90ml/200ml/500ml/1L" all carrying one real pack's barcode is + knowingly approximate. Every such write is tagged + barcode_source="openfoodfacts_bulk" and barcode_verified=false so these + rows stay selectable for later correction or a clean bulk revert. + + score >= --min-similarity (0.88) -> written + score >= --review-min (0.70) -> CSV only, nothing written + below -> dropped + +Usage: + + python -m scripts.backfill_barcodes_from_off # dry run, all brands + python -m scripts.backfill_barcodes_from_off --brand amul # repeatable flag + python -m scripts.backfill_barcodes_from_off --brand amul --apply + python -m scripts.backfill_barcodes_from_off --refresh-cache --report out.csv + python -m scripts.backfill_barcodes_from_off --apply --no-db # JSON only + +`--dry-run` is the default and `--apply` must be explicit: backend/.env points +at the PRODUCTION database, so an accidental run must not be able to write. +""" +from __future__ import annotations + +import argparse +import csv +import json +import logging +import os +import sys +import time +from collections import OrderedDict, defaultdict +from pathlib import Path +from typing import Any, Dict, List, Optional, Tuple + +sys.path.insert(0, str(Path(__file__).resolve().parents[1])) + +from app.infrastructure.settings import DB_HOST, DB_NAME +from app.services.brand_sync import SEED_DIR, brand_slug, seed_catalog_paths +from app.services.enrichment.barcode.models import BarcodeResult, LookupStatus +from app.services.enrichment.barcode.sources.off_bulk import ( + brand_tokens, + fetch_brand_corpus, + normalize_for_match, + score_candidates, +) +from app.services.enrichment.barcode.validators import validate_barcode +from app.services.vector_store import _connect + +logging.basicConfig(level=logging.INFO, format="%(message)s") +logger = logging.getLogger("backfill_barcodes_off") + +BARCODE_SOURCE = "openfoodfacts_bulk (search.openfoodfacts.org)" + +# The nine keys BarcodeResult.as_product_fields() emits. Named here so the JSON +# writer can prove it touches nothing else. +BARCODE_KEYS = ( + "barcode", "barcode_type", "gtin", "ean13", "upc", + "barcode_source", "barcode_verified", "barcode_lookup_status", + "barcode_last_updated", +) + + +# --------------------------------------------------------------------------- +# Catalog reading +# --------------------------------------------------------------------------- + +def load_catalogs(only: Optional[List[str]] = None, + include_archive: bool = False) -> "OrderedDict[Path, Dict[str, Any]]": + """Every active seed catalog, keyed by path. The JSON is the read source + rather than the database so that a dry run needs no DB connection at all - + which matters when the configured database is production. + + `seed_catalog_paths` deliberately returns the archive as well (28 more + brands, plus a stray-copy file), but those brands are not live and their + tables may not exist, so they are excluded unless asked for. + """ + wanted = {b.lower().strip() for b in (only or [])} + out: "OrderedDict[Path, Dict[str, Any]]" = OrderedDict() + for path in sorted(seed_catalog_paths(SEED_DIR)): + if not include_archive and path.parent != SEED_DIR: + continue + try: + data = json.loads(path.read_text(encoding="utf-8-sig")) + except Exception as e: # noqa: BLE001 + logger.warning("Skipping unreadable catalog %s: %s", path.name, e) + continue + if not isinstance(data, dict): + continue + products = data.get("products") + brand = data.get("brand") + if not brand or not isinstance(products, list) or not products: + continue + if wanted and brand.lower().strip() not in wanted and brand_slug(brand) not in wanted: + continue + out[path] = data + return out + + +def product_size(product: Dict[str, Any]) -> str: + """The product's pack size, from whichever field carries it.""" + size = str(product.get("size") or "").strip() + if size and size.lower() != "standard": + return size + variants = product.get("size_variants") or [] + if isinstance(variants, list) and variants: + return str(variants[0]).strip() + return "" + + +def group_by_title(products: List[Dict[str, Any]]) -> "OrderedDict[str, List[Dict[str, Any]]]": + """Bucket barcode-less products by their size-less title. + + Products that already carry a barcode are excluded entirely - they are + neither re-looked-up nor overwritten. + """ + groups: "OrderedDict[str, List[Dict[str, Any]]]" = OrderedDict() + for p in products: + if str(p.get("barcode") or "").strip(): + continue + if not str(p.get("image_id") or "").strip(): + continue + title = str(p.get("title") or p.get("product_name") or "").strip() + if not title: + continue + groups.setdefault(title, []).append(p) + return groups + + +# --------------------------------------------------------------------------- +# Writers +# --------------------------------------------------------------------------- + +def build_fields(candidate) -> Dict[str, Any]: + """The nine catalog barcode fields for one accepted candidate, built + through BarcodeResult so this script cannot drift from the shape the rest + of the codebase writes.""" + result = BarcodeResult( + barcode=candidate.barcode, + barcode_type=candidate.barcode_type, + gtin=candidate.barcode, + ean13=candidate.barcode if len(candidate.barcode) == 13 else None, + upc=candidate.source_upc, + barcode_source=BARCODE_SOURCE, + barcode_verified=False, + barcode_lookup_status=LookupStatus.NOT_FOUND.value, + match_confidence=candidate.score, + ) + fields = result.as_product_fields() + # Not VERIFIED: nothing here was confirmed against the physical pack, and + # for a multi-variant group the code is right for at most one member. + fields["barcode_lookup_status"] = "name_matched" + return fields + + +def write_json(path: Path, data: Dict[str, Any], + updates: Dict[str, Dict[str, Any]]) -> int: + """Apply barcode fields to products in one catalog file, in place. + + Only the nine barcode keys of matched products are assigned; the product + dicts are mutated rather than rebuilt, so `embedding`, `size`, + `variant_key`, `gst_percent` and anything else survive untouched. The write + is atomic so a crash cannot leave a half-written catalog that fails to + parse on the next boot. + """ + changed = 0 + for product in data.get("products") or []: + fields = updates.get(str(product.get("image_id") or "")) + if not fields: + continue + product.update(fields) + changed += 1 + if not changed: + return 0 + + payload = json.dumps(data, indent=2, ensure_ascii=False) + tmp = path.with_suffix(".json.tmp") + tmp.write_text(payload, encoding="utf-8") + os.replace(tmp, path) + return changed + + +def write_db(brand: str, updates: Dict[str, Dict[str, Any]]) -> Tuple[int, str]: + """UPDATE barcode/barcode_type on a brand table, keyed on image_id. + + Returns (rows_updated, note). A row is written only when its current + barcode is absent OR fails checksum validation, so this is idempotent and + can never clobber a genuine manually-sourced barcode. + + Treating an INVALID barcode as writable matters: 41 rows across the brand + tables hold values that are not barcodes at all - 38 of them the Excel + float '8900000000000.0'. Guarding on "IS NULL OR = ''" alone would declare + those rows already-done and leave them unrepairable forever, and because + the seed JSON has no such value the two stores would silently diverge on + exactly those rows. The UPDATE still pins the row's own current value in + its WHERE clause, so a real barcode written concurrently is never lost. + """ + table = f"brand_{brand_slug(brand)}" + conn = _connect() + if conn is None: + return 0, "no database connection (USE_PGVECTOR off or connect failed)" + + updated = 0 + kept = 0 + try: + with conn, conn.cursor() as cur: + cur.execute( + "SELECT column_name FROM information_schema.columns WHERE table_name = %s", + (table,), + ) + cols = {r[0] for r in cur.fetchall()} + if not cols: + return 0, f"table {table} does not exist" + missing = {"barcode", "barcode_type"} - cols + if missing: + return 0, f"table {table} is missing column(s) {sorted(missing)}" + + image_ids = list(updates) + cur.execute( + f"SELECT image_id, barcode FROM {table} WHERE image_id = ANY(%s)", + (image_ids,), + ) + current = dict(cur.fetchall()) + + for image_id, fields in updates.items(): + existing = current.get(image_id) + if existing and validate_barcode(existing) is not None: + kept += 1 + continue + cur.execute( + f"UPDATE {table} SET barcode = %s, barcode_type = %s, " + f"updated_at = NOW() " + f"WHERE image_id = %s AND (barcode IS NULL OR barcode = '' " + f"OR barcode = %s)", + (fields["barcode"], fields["barcode_type"], image_id, existing), + ) + updated += cur.rowcount + except Exception as e: # noqa: BLE001 - one brand failing must not abort the run + return updated, f"error: {e}" + finally: + conn.close() + note = f"table {table}" + if kept: + note += f", {kept} row(s) left alone (valid barcode already present)" + return updated, note + + +# --------------------------------------------------------------------------- +# Main +# --------------------------------------------------------------------------- + +def sync_json_to_db(path: Path, data: Dict[str, Any]) -> Tuple[int, str]: + """Push barcodes the seed JSON already has into the database. + + The matching path writes JSON and DB together, but it skips any product + whose JSON barcode is already set - so if the two stores ever disagree, a + rerun cannot heal them. They can disagree because a row may hold a value + that is not a barcode ('8900000000000.0' appears 38 times), which the + matcher happily replaced in JSON while the DB guard correctly refused to + overwrite what looked like existing data. + + This reconciles in the safe direction only: a DB barcode that passes + checksum validation always wins and is left alone. Only absent or invalid + DB values are replaced, and only from a JSON value that itself validates. + """ + updates: Dict[str, Dict[str, Any]] = {} + for product in data.get("products") or []: + image_id = str(product.get("image_id") or "").strip() + code = validate_barcode(str(product.get("barcode") or "").strip()) + if not image_id or not code: + continue + updates[image_id] = { + "barcode": code, + "barcode_type": product.get("barcode_type") or "EAN-13", + } + if not updates: + return 0, "no valid barcodes in JSON" + return write_db(data["brand"], updates) + + +def main() -> int: + parser = argparse.ArgumentParser( + description="Backfill barcodes from Open Food Facts into brand tables and seed JSON.") + parser.add_argument("--brand", action="append", default=None, + help="Brand to process (repeatable). Default: every seed catalog.") + parser.add_argument("--apply", action="store_true", + help="Actually write. Without this nothing is modified.") + parser.add_argument("--dry-run", action="store_true", + help="Force a dry run even if --apply is passed.") + parser.add_argument("--min-similarity", type=float, default=0.88, + help="Auto-apply threshold (default 0.88).") + parser.add_argument("--review-min", type=float, default=0.70, + help="Report-only threshold (default 0.70).") + parser.add_argument("--limit", type=int, default=None, + help="Stop after this many title groups per brand.") + parser.add_argument("--refresh-cache", action="store_true", + help="Re-fetch each brand's OFF corpus instead of using the disk cache.") + parser.add_argument("--report", type=str, default=None, + help="CSV report path (default backend/data/barcode_review_.csv).") + parser.add_argument("--no-db", action="store_true", help="Do not write to the database.") + parser.add_argument("--no-json", action="store_true", help="Do not write to the seed JSON.") + parser.add_argument("--sync-json-to-db", action="store_true", + help="Skip matching; push barcodes the seed JSON already has " + "into the DB wherever the DB value is absent or fails " + "checksum validation. Reconciles the two stores.") + parser.add_argument("--allow-foreign-prefix", action="store_true", + help="Accept barcodes not issued in India (GS1 prefix 890). " + "Off by default: the non-890 hits observed were the same " + "product line sold in another market, with a different pack.") + parser.add_argument("--include-archive", action="store_true", + help="Also process the archived catalogs under seed_catalogs/archive/.") + args = parser.parse_args() + + apply = args.apply and not args.dry_run + + logger.info("Database: %s / %s", DB_HOST, DB_NAME) + logger.info("Mode: %s", "APPLY (writes)" if apply else "DRY RUN (no writes)") + logger.info("Thresholds: apply >= %.2f, review >= %.2f", + args.min_similarity, args.review_min) + logger.info("") + + catalogs = load_catalogs(args.brand, include_archive=args.include_archive) + if not catalogs: + logger.error("No matching seed catalogs found in %s", SEED_DIR) + return 1 + + if args.sync_json_to_db: + total = 0 + for path, data in catalogs.items(): + if not apply: + logger.info("=== %s - dry run, would reconcile from %s", data["brand"], path.name) + continue + n, note = sync_json_to_db(path, data) + total += n + logger.info("=== %s - %d row(s) reconciled (%s)", data["brand"], n, note) + logger.info("---------------------------------------------------------") + logger.info("Rows reconciled: %d", total) + if not apply: + logger.info("DRY RUN - re-run with --apply to write.") + return 0 + + report_rows: List[Dict[str, Any]] = [] + totals = defaultdict(int) + + for path, data in catalogs.items(): + brand = data["brand"] + products = data.get("products") or [] + groups = group_by_title(products) + already = sum(1 for p in products if str(p.get("barcode") or "").strip()) + logger.info("=== %s (%s) - %d product(s), %d with a barcode already, " + "%d title group(s) to match", + brand, path.name, len(products), already, len(groups)) + + if not groups: + logger.info(" nothing to do") + logger.info("") + continue + + corpus = fetch_brand_corpus(brand, refresh=args.refresh_cache) + if not corpus: + logger.info(" OFF has no products for this brand - skipping") + logger.info("") + totals["brands_without_corpus"] += 1 + continue + + tokens = brand_tokens(brand) + used: Dict[str, Tuple[float, str]] = {} # barcode -> (score, title) + updates: Dict[str, Dict[str, Any]] = {} + applied_groups = 0 + + for i, (title, rows) in enumerate(groups.items()): + if args.limit is not None and i >= args.limit: + break + sizes = [product_size(r) for r in rows] + candidates = score_candidates( + corpus, title, sizes, tokens, args.review_min, + require_india_prefix=not args.allow_foreign_prefix) + if not candidates: + totals["no_candidate"] += 1 + continue + + best = candidates[0] + decision = "apply" if best.score >= args.min_similarity else "review" + + # One OFF product cannot be the barcode for two different title + # groups. The higher-scoring group keeps it; this one is demoted to + # the report rather than silently duplicating a code. + claim = used.get(best.barcode) + if decision == "apply" and claim is not None: + decision = "review" + note = f"barcode already claimed by {claim[1]!r} (score {claim[0]:.3f})" + else: + note = "" + if decision == "apply": + used[best.barcode] = (best.score, title) + + if decision == "apply": + fields = build_fields(best) + for row in rows: + updates[str(row["image_id"])] = fields + applied_groups += 1 + totals["rows_matched"] += len(rows) + else: + totals["needs_review"] += 1 + + for row in rows: + report_rows.append({ + "brand": brand, + "image_id": row.get("image_id"), + "our_title": title, + "our_product_name": row.get("product_name"), + "our_size": product_size(row), + "off_name": best.off_name, + "off_qty": best.off_qty or "", + "barcode": best.barcode, + "barcode_type": best.barcode_type, + "score": f"{best.score:.3f}", + "size_bonus": best.size_bonus, + "variants_in_group": len(rows), + "decision": decision, + "note": note, + "runner_up": candidates[1].off_name if len(candidates) > 1 else "", + }) + + logger.info(" %d group(s) matched at >= %.2f -> %d product row(s)", + applied_groups, args.min_similarity, len(updates)) + + if updates and apply: + if not args.no_json: + n = write_json(path, data, updates) + logger.info(" JSON: updated %d product(s) in %s", n, path.name) + totals["json_rows"] += n + if not args.no_db: + n, note = write_db(brand, updates) + logger.info(" DB: updated %d row(s) (%s)", n, note) + totals["db_rows"] += n + elif updates: + logger.info(" (dry run - nothing written)") + logger.info("") + + report_path = Path(args.report) if args.report else ( + _BACKEND_DATA / f"barcode_review_{time.strftime('%Y%m%d_%H%M%S')}.csv") + if report_rows: + report_path.parent.mkdir(parents=True, exist_ok=True) + with report_path.open("w", newline="", encoding="utf-8") as fh: + writer = csv.DictWriter(fh, fieldnames=list(report_rows[0].keys())) + writer.writeheader() + writer.writerows(report_rows) + + logger.info("---------------------------------------------------------") + logger.info("Product rows matched at >= %.2f : %d", args.min_similarity, totals["rows_matched"]) + logger.info("Title groups needing review : %d", totals["needs_review"]) + logger.info("Title groups with no candidate : %d", totals["no_candidate"]) + if apply: + logger.info("JSON products written : %d", totals["json_rows"]) + logger.info("DB rows written : %d", totals["db_rows"]) + else: + logger.info("DRY RUN - re-run with --apply to write.") + if report_rows: + logger.info("Report: %s (%d row(s))", report_path, len(report_rows)) + return 0 + + +_BACKEND_DATA = Path(__file__).resolve().parents[1] / "data" + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/fix_duplicate_image_ids.py b/scripts/fix_duplicate_image_ids.py index c0b9619..90f8667 100644 --- a/scripts/fix_duplicate_image_ids.py +++ b/scripts/fix_duplicate_image_ids.py @@ -1,103 +1,223 @@ #!/usr/bin/env python3 """ -Fix duplicate image_ids in seed catalog JSON files. +Give each pack-size variant its own image_id in the seed catalogs. -Products sharing the same `title` (e.g. "Nestle Kitkat" with sizes 30g, 50g, 70g) -previously all got the same `image_id` (generated from `title` only). Since the -database uses `ON CONFLICT (image_id) DO UPDATE`, only one variant per title -survived the upsert. +WHY + Six catalogs share one `image_id` across several genuinely different + products. In brand_catalog_dabur.json, "Red Chyawanprash" 20g, 50g and + 100g all carry `red_chyawanprash_f122a959` - they differ in + product_name, size, variant_key, product_sku, price_range and highlights, + so they are three real products, not three copies of one. -This script re-generates `image_id` from `product_name` (or `title` + `size`) -so every product variant gets a unique, deterministic image_id. + `image_id` is `TEXT UNIQUE NOT NULL` and is the seeder's dedup key, so + only ONE variant per group ever reaches the database; the rest are + silently discarded on every seed. That is why brand_dabur holds 22 rows + for a 54-product catalog. The ids look scraper-generated + (`_`), which is the path that does not derive a + per-variant id. + +WHAT IT CHANGES + Only the `image_id` field, only on the extra members of a duplicate group, + only in backend/data/seed_catalogs/ (including archive/). No product is + added, removed or reordered, and no other field is touched. + + The variant that already owns the database row KEEPS its original id. That + is deliberate: `image_id` is also the S3 path component + (`daily/brands/{brand}/{image_id}/image_000.jpg` - s3_service.py:246), so + renaming the resident variant would orphan its row and point its image URL + at a prefix that holds no objects. The other variants have no row and no S3 + objects today, so giving them a new id cannot break anything that works. + + New ids come from `variant_key`, which is already unique within every + affected file and never collides with an existing image_id (both verified + before writing). + +WHAT IT DOES NOT DO + It does not touch the database. The renamed variants gain rows only when + someone deliberately reseeds; archived catalogs are not loaded at boot. Usage: - python scripts/fix_duplicate_image_ids.py + + python -m scripts.fix_duplicate_image_ids # dry run + python -m scripts.fix_duplicate_image_ids --apply + python -m scripts.fix_duplicate_image_ids --file brand_catalog_cadbury.json + +`--dry-run` is the default and `--apply` must be explicit. """ from __future__ import annotations +import argparse import json import logging +import os import sys -import uuid +from collections import Counter, defaultdict from pathlib import Path +from typing import Any, Dict, List, Optional, Tuple sys.path.insert(0, str(Path(__file__).resolve().parents[1])) -logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s") -logger = logging.getLogger(__name__) +from app.infrastructure.settings import DB_HOST, DB_NAME +from app.services.brand_sync import SEED_DIR, brand_slug, seed_catalog_paths +from app.services.vector_store import _connect -SEED_DIR = Path(__file__).resolve().parents[1] / "data" / "seed_catalogs" +logging.basicConfig(level=logging.INFO, format="%(message)s") +logger = logging.getLogger("fix_duplicate_image_ids") -def make_image_id(source: str) -> str: - """Deterministic image_id: sanitize source name + short hash suffix.""" - sanitized = source.lower() - sanitized = ''.join(c if c.isalnum() else '_' for c in sanitized) - sanitized = '_'.join(filter(None, sanitized.split('_'))) - if len(sanitized) > 50: - sanitized = sanitized[:50] - # Use a hash of the source string so the same source always produces the same ID - short_hash = str(uuid.uuid5(uuid.NAMESPACE_DNS, source))[:8] - return f"{sanitized}_{short_hash}" - - -def fix_seed_file(path: Path) -> int: - with open(path, encoding="utf-8-sig") as f: - data = json.load(f) - - products = data.get("products", []) - fixed = 0 - seen_ids: set[str] = set() - +def duplicate_groups(products: List[Dict[str, Any]]) -> Dict[str, List[Dict[str, Any]]]: + by_id: Dict[str, List[Dict[str, Any]]] = defaultdict(list) for product in products: - # Determine the source for the image_id: prefer product_name, fall back to title+size, then title - source = product.get("product_name") or "" - if not source: - title = product.get("title", "") - size = product.get("size", "") - source = f"{title}_{size}" if size else title + image_id = str(product.get("image_id") or "").strip() + if image_id: + by_id[image_id].append(product) + return {k: v for k, v in by_id.items() if len(v) > 1} - if not source: + +def db_resident_names(brand: str, image_ids: List[str]) -> Dict[str, str]: + """product_name of the row each duplicated image_id currently points at. + + Empty when the database is unreachable - the caller then falls back to + keeping the first entry, which is still safe because every candidate in the + group is equally unbacked in that case. + """ + if not image_ids: + return {} + conn = _connect() + if conn is None: + logger.warning(" no database connection - keeping the first entry of each group") + return {} + table = f"brand_{brand_slug(brand)}" + out: Dict[str, str] = {} + try: + with conn, conn.cursor() as cur: + cur.execute("SELECT to_regclass(%s)", (table,)) + if cur.fetchone()[0] is None: + return {} + cur.execute( + f"SELECT image_id, product_name FROM {table} WHERE image_id = ANY(%s)", + (image_ids,), + ) + out = {i: (n or "") for i, n in cur.fetchall()} + except Exception as e: # noqa: BLE001 - one file failing must not abort the sweep + logger.warning(" could not read %s: %s", table, e) + finally: + conn.close() + return out + + +def plan_renames(products: List[Dict[str, Any]], + resident: Dict[str, str]) -> List[Tuple[Dict[str, Any], str, str]]: + """(product, old_id, new_id) for every entry that must be renamed. + + The keeper is the entry whose product_name matches the database row; with + no row, the first entry keeps the id. Everything else takes its + `variant_key`. + """ + taken = {str(p.get("image_id") or "").strip() for p in products} + renames: List[Tuple[Dict[str, Any], str, str]] = [] + + for image_id, group in duplicate_groups(products).items(): + db_name = resident.get(image_id) + keeper = next( + (p for p in group if db_name and str(p.get("product_name") or "") == db_name), + group[0], + ) + for product in group: + if product is keeper: + continue + new_id = str(product.get("variant_key") or "").strip() + if not new_id or new_id in taken: + logger.warning(" cannot rename %r (%s): variant_key %r is missing or taken", + product.get("product_name"), image_id, new_id) + continue + taken.add(new_id) + renames.append((product, image_id, new_id)) + return renames + + +def main() -> int: + parser = argparse.ArgumentParser( + description="Give each pack-size variant a unique image_id in the seed catalogs.") + parser.add_argument("--apply", action="store_true", help="Actually write.") + parser.add_argument("--dry-run", action="store_true", help="Force a dry run.") + parser.add_argument("--file", action="append", default=None, + help="Catalog filename to process (repeatable). Default: all.") + args = parser.parse_args() + + apply = args.apply and not args.dry_run + wanted = set(args.file or []) + + logger.info("Database: %s / %s (read-only - used to find the resident row)", DB_HOST, DB_NAME) + logger.info("Mode: %s", "APPLY (writes JSON)" if apply else "DRY RUN (no writes)") + logger.info("") + + total_renamed = 0 + total_files = 0 + + for path in sorted(seed_catalog_paths(SEED_DIR)): + if wanted and path.name not in wanted: + continue + try: + data = json.loads(path.read_text(encoding="utf-8-sig")) + except Exception as e: # noqa: BLE001 + logger.warning("Skipping unreadable catalog %s: %s", path.name, e) + continue + if not isinstance(data, dict): + continue + products = data.get("products") + brand = data.get("brand") + if not brand or not isinstance(products, list) or not products: continue - new_id = make_image_id(source) + groups = duplicate_groups(products) + if not groups: + continue - # Ensure no collisions across all products - while new_id in seen_ids: - new_id = make_image_id(source + "_" + str(uuid.uuid4())[:4]) + total_files += 1 + logger.info("=== %s (%s) - %d entries, %d duplicated id(s)", + path.name, brand, len(products), len(groups)) - old_id = product.get("image_id", "") - if old_id != new_id: - logger.debug(f" {old_id} -> {new_id} (source={source!r})") - product["image_id"] = new_id - seen_ids.add(new_id) - fixed += 1 + resident = db_resident_names(brand, list(groups)) + renames = plan_renames(products, resident) + if not renames: + logger.info(" nothing renameable") + continue - data["total_products"] = len(products) - with open(path, "w", encoding="utf-8") as f: - json.dump(data, f, indent=2, ensure_ascii=False) + for product, old_id, new_id in renames[:4]: + logger.info(" %-42s %s -> %s", str(product.get("product_name"))[:42], old_id, new_id) + if len(renames) > 4: + logger.info(" ... and %d more", len(renames) - 4) - logger.info(f"Fixed {fixed} products in {path.name}") - return fixed + if apply: + before = len(products) + for product, _old, new_id in renames: + product["image_id"] = new_id + ids = [str(p.get("image_id") or "") for p in products] + still_dup = [i for i, n in Counter(ids).items() if n > 1 and i] + assert len(products) == before, "product count changed" + if still_dup: + logger.error(" ABORTING %s - %d id(s) still duplicated", path.name, len(still_dup)) + continue + payload = json.dumps(data, indent=2, ensure_ascii=False) + tmp = path.with_suffix(".json.tmp") + tmp.write_text(payload, encoding="utf-8") + os.replace(tmp, path) + logger.info(" wrote %s (%d renamed)", path.name, len(renames)) + else: + logger.info(" (dry run - nothing written)") -def main() -> None: - if not SEED_DIR.exists(): - logger.error("Seed directory not found: %s", SEED_DIR) - sys.exit(1) + total_renamed += len(renames) + logger.info("") - files = sorted(SEED_DIR.glob("*.json")) - if not files: - logger.warning("No JSON files found in %s", SEED_DIR) - return - - total = 0 - for f in files: - total += fix_seed_file(f) - - print(f"\nDone. Fixed {total} total products across {len(files)} file(s).") - print("Now re-run: python scripts/seed_sample_data.py") + logger.info("---------------------------------------------------------") + logger.info("Catalogs with duplicates : %d", total_files) + logger.info("Entries renamed : %d", total_renamed) + if not apply: + logger.info("DRY RUN - re-run with --apply to write.") + return 0 if __name__ == "__main__": - main() + raise SystemExit(main()) diff --git a/tests/test_off_bulk_backfill.py b/tests/test_off_bulk_backfill.py new file mode 100644 index 0000000..6ca4d63 --- /dev/null +++ b/tests/test_off_bulk_backfill.py @@ -0,0 +1,318 @@ +"""Guards on the Open Food Facts bulk barcode backfill. + +Every product name and barcode below is real - taken from the live catalogue +and from what `search.openfoodfacts.org` actually returns for those brands. The +three rules being locked down here each cost a measurable number of wrong +barcodes when they were absent from a dry run over the real data: + +1. THE ASYMMETRY + `matching.name_similarity` divides the token overlap by the TARGET's token + count only, so an OFF name that is a superset of ours scores near-perfectly. + Uncorrected it accepted "Butter milk amul" for our "Amul Butter" at 0.882 - + buttermilk sold as butter - and "Dairy Milk Silk Minis" for "Dairy Milk + Silk" at 0.933. Scoring both directions and keeping the minimum drops those + to 0.418 and 0.783 while true matches stay at 1.000, because a real match is + symmetric by construction. + +2. THE WRONG MARKET + Cadbury's OFF entries are dominated by Mondelez EU codes (7622...). Eight of + them were accepted at 1.000 - "Bournvita", "Gems", "Celebrations", + "Bournville" - all the right product line in the wrong market, with a + different pack and a different code. Requiring the Indian GS1 prefix 890 + replaced every one with its correct 8901233... Indian code. + +3. THE ANONYMOUS ROW + The catalogue holds rows titled only by brand and size ("Amul 90g", "Amul + 1kg") and OFF holds an entry named just "Amul". Normalising both to "amul" + matched them at 1.000 and stamped a real barcode onto six products with no + identity in common. A title that is nothing but its brand has no product + identity, and must yield no candidates at all. +""" +from __future__ import annotations + +import json + +import pytest + +from app.services.enrichment.barcode.sources.off_bulk import ( + accept_barcode, + brand_tokens, + has_extra_variant_conflict, + normalize_for_match, + score_candidates, + strip_sizes, + symmetric_similarity, +) + +AMUL = brand_tokens("amul") +CADBURY = brand_tokens("cadbury") +BRITANNIA = brand_tokens("britannia") +HUL = brand_tokens("hindustan unilever") + + +def _hit(code, name, quantity=None): + return {"code": code, "product_name": name, "quantity": quantity} + + +# --------------------------------------------------------------------------- +# Normalisation +# --------------------------------------------------------------------------- + +@pytest.mark.parametrize("raw, expected", [ + ("Britannia Marie Gold 250g", "Britannia Marie Gold"), + ("Amul Butter 1L", "Amul Butter"), + ("Cadbury 5 Star 9.8 g", "Cadbury 5 Star"), + ("Brit 50-50 maska chaska 40g (20)", "Brit 50-50 maska chaska"), + ("Amul Milk Powder 200mL", "Amul Milk Powder"), +]) +def test_strip_sizes_removes_pack_sizes_and_pack_counts(raw, expected): + assert strip_sizes(raw) == expected + + +def test_brand_prefix_is_stripped_from_both_sides(): + """Our names carry the brand, OFF's frequently do not - the comparison key + has to survive either.""" + assert normalize_for_match("Britannia Marie Gold 250g", BRITANNIA) == "marie gold" + assert normalize_for_match("Britannia Marie Gold", BRITANNIA) == "marie gold" + assert normalize_for_match("Milk Bikis", BRITANNIA) == "milk bikis" + + +def test_hul_noise_token_is_recovered_from_aliases(): + """Every Hindustan Unilever alias is "hul ", so "hul" is brand + noise while "lux" appears once and is a real product name. Without this our + mangled "Hindustan Unilever Hul Lux" could never reach OFF's "Lux".""" + assert "hul" in HUL + assert "lux" not in HUL + assert normalize_for_match("Hindustan Unilever Hul Lux 500g", HUL) == "lux" + assert normalize_for_match("Lux", HUL) == "lux" + + +def test_tata_does_not_inherit_hindustan_unilever_tokens(): + """Tata's catalogue is stored in brand_hindustan_unilever, so + resolve_parent_brand("tata") is "hindustan unilever". Inheriting that + parent's alias tokens would strip real words from Tata product names.""" + tata = brand_tokens("tata") + assert "tata" in tata + assert "hul" not in tata + assert "unilever" not in tata + + +def test_brand_only_title_has_no_product_identity(): + """Rule 3. "Amul 90g" is a brand and a size, nothing else.""" + assert normalize_for_match("Amul 90g", AMUL) == "" + assert normalize_for_match("Amul", AMUL) == "" + + +# --------------------------------------------------------------------------- +# Scoring +# --------------------------------------------------------------------------- + +@pytest.mark.parametrize("off_name, our_title, tokens, ceiling", [ + ("Butter milk amul", "Amul Butter", AMUL, 0.70), + ("Amul Masala Buttermilk", "Amul Butter", AMUL, 0.70), + ("Dairy Milk Silk Minis", "Cadbury Dairy Milk Silk", CADBURY, 0.88), + ("dairy milk silk bubbly", "Cadbury Dairy Milk Silk", CADBURY, 0.88), + ("Amul Pro Plus", "Amul Pro", AMUL, 0.70), +]) +def test_superset_names_are_not_auto_applied(off_name, our_title, tokens, ceiling): + """Rule 1: each of these scored high enough to be written before symmetric + scoring, and each is a different retail product.""" + score = symmetric_similarity( + normalize_for_match(off_name, tokens), + normalize_for_match(our_title, tokens), + ) + assert score < ceiling + + +@pytest.mark.parametrize("off_name, our_title, tokens", [ + ("Britannia Marie Gold", "Britannia Marie Gold 250g", BRITANNIA), + ("Amul ghee", "Amul Ghee 500g", AMUL), + ("amul masti dahi", "Amul Masti Dahi 1kg", AMUL), + ("Malai Paneer", "Amul Malai Paneer 200g", AMUL), + ("Cadbury 5 star", "Cadbury 5 Star 18g", CADBURY), +]) +def test_genuine_matches_still_score_perfectly(off_name, our_title, tokens): + """Symmetric scoring must not cost a single true positive: a real match is + symmetric, so both directions agree.""" + score = symmetric_similarity( + normalize_for_match(off_name, tokens), + normalize_for_match(our_title, tokens), + ) + assert score == pytest.approx(1.0) + + +def test_extra_variant_terms_are_conflicts(): + assert has_extra_variant_conflict("Dairy Milk Silk Minis", "Dairy Milk Silk") + assert has_extra_variant_conflict("Amul Pro Plus", "Amul Pro") + assert not has_extra_variant_conflict("Amul Lite Bread Spread", "Amul Lite Bread Spread") + + +# --------------------------------------------------------------------------- +# Barcode acceptance - "valid 8 or 13 digit code" +# --------------------------------------------------------------------------- + +def test_ean13_and_gtin8_are_accepted_as_is(): + assert accept_barcode("8901063014206") == ("8901063014206", "EAN-13", None) + assert accept_barcode("32220520") == ("32220520", "GTIN-8", None) + + +def test_upc_a_is_widened_to_ean13_keeping_the_original(): + """A leading zero contributes nothing to the GTIN checksum, so the padded + code is still valid; the 12-digit original is kept for the `upc` field.""" + assert accept_barcode("036000291452") == ("0036000291452", "EAN-13", "036000291452") + + +@pytest.mark.parametrize("raw", [ + "12345678901234", # valid GTIN-14: a shipping carton, not a retail pack + "8901063014207", # EAN-13 body with a wrong check digit + "890106301420", # 12 digits, checksum fails + "1234567", # too short + "8900000000000.0", # the Excel-float junk already sitting in some rows + "", + None, + "not-a-barcode", +]) +def test_invalid_or_out_of_scope_codes_are_rejected(raw): + assert accept_barcode(raw) is None + + +# --------------------------------------------------------------------------- +# End-to-end candidate selection +# --------------------------------------------------------------------------- + +def test_marie_gold_matches_despite_off_having_no_quantity(): + """The case this backfill exists for. `matching.is_match` cannot express it + because its size gate rejects a blank size outright, and 57 of 146 Amul + hits carry quantity: null.""" + corpus = [_hit("8901063014206", "Britannia Marie Gold", None)] + got = score_candidates(corpus, "Britannia Marie Gold", ["250g"], BRITANNIA, 0.70) + assert len(got) == 1 + assert got[0].barcode == "8901063014206" + assert got[0].score == pytest.approx(1.0) + assert got[0].size_bonus == 0 + + +def test_matching_quantity_outranks_a_better_name_score(): + """Size never vetoes, but among acceptable candidates it decides.""" + corpus = [ + _hit("8901063014206", "Britannia Marie Gold", None), + _hit("8901063014213", "Britannia Marie Gold", "250g"), + ] + got = score_candidates(corpus, "Britannia Marie Gold", ["250g"], BRITANNIA, 0.70) + assert got[0].barcode == "8901063014213" + assert got[0].size_bonus == 1 + + +def test_foreign_market_codes_are_rejected_by_default(): + """Rule 2. The Mondelez EU Bournvita is the right line, wrong market.""" + corpus = [_hit("7622201766269", "Bournvita", "2 kg")] + assert score_candidates(corpus, "Cadbury Bournvita", ["500g"], CADBURY, 0.70) == [] + + allowed = score_candidates(corpus, "Cadbury Bournvita", ["500g"], CADBURY, 0.70, + require_india_prefix=False) + assert allowed and allowed[0].barcode == "7622201766269" + + +def test_anonymous_brand_only_group_yields_nothing(): + """Rule 3: "Amul 90g" against OFF's "Amul" must not produce a candidate.""" + corpus = [_hit("8901262010320", "Amul", "200gm")] + assert score_candidates(corpus, "Amul", ["90g"], AMUL, 0.70) == [] + + +def test_buttermilk_is_never_offered_for_butter(): + corpus = [ + _hit("8901262200004", "Butter milk amul", "500ml"), + _hit("8901262201995", "Amul Buttermilk", "310ml"), + ] + assert score_candidates(corpus, "Amul Butter", ["500ml"], AMUL, 0.70) == [] + + +def test_ranking_is_deterministic_for_equal_scores(): + """A rerun over an unchanged corpus must pick the same product, so the + barcode breaks the tie.""" + corpus = [ + _hit("8901262031060", "Amul ghee", None), + _hit("8901262031059", "Amul ghee", None), + ] + first = score_candidates(corpus, "Amul Ghee", ["500g"], AMUL, 0.70) + second = score_candidates(list(reversed(corpus)), "Amul Ghee", ["500g"], AMUL, 0.70) + assert first[0].barcode == second[0].barcode == "8901262031059" + + +def test_nameless_hits_are_ignored(): + corpus = [_hit("8901262031059", None), _hit("8901262031059", "")] + assert score_candidates(corpus, "Amul Ghee", ["500g"], AMUL, 0.70) == [] + + +# --------------------------------------------------------------------------- +# The JSON writer - regression on the export_brand_to_seed_file trap +# --------------------------------------------------------------------------- + +def test_json_writer_preserves_every_other_key(tmp_path): + """`brand_sync.export_brand_to_seed_file` rebuilds each product from + EXPORT_COLUMNS and `upsert_products_into_catalog_file` then replaces the + whole dict, which would delete `embedding`, `size`, `variant_key`, + `gst_percent` and the seven JSON-only barcode keys. This writer mutates in + place; that difference is the whole reason it exists. + """ + from scripts.backfill_barcodes_from_off import BARCODE_KEYS, write_json + + product = { + "image_id": "amul_amul_ghee_500g", + "product_name": "Amul Ghee 500g", + "title": "Amul Ghee", + "size": "500g", + "variant_key": "amul_amul_ghee_500g", + "gst_percent": 12, + "cost_price": 240.0, + "embedding": [0.1, 0.2, 0.3], + "barcode": None, + } + original = json.loads(json.dumps(product)) + path = tmp_path / "brand_catalog_amul.json" + data = {"brand": "amul", "total_products": 1, "products": [product]} + path.write_text(json.dumps(data), encoding="utf-8") + + changed = write_json(path, data, { + "amul_amul_ghee_500g": { + "barcode": "8901262031059", "barcode_type": "EAN-13", + "gtin": "8901262031059", "ean13": "8901262031059", "upc": None, + "barcode_source": "openfoodfacts_bulk", "barcode_verified": False, + "barcode_lookup_status": "name_matched", "barcode_last_updated": 1.0, + }, + }) + assert changed == 1 + + written = json.loads(path.read_text(encoding="utf-8"))["products"][0] + assert written["barcode"] == "8901262031059" + for key, value in original.items(): + if key not in BARCODE_KEYS: + assert written[key] == value, f"{key} was altered" + assert set(written) == set(original) | set(BARCODE_KEYS) + assert json.loads(path.read_text(encoding="utf-8"))["total_products"] == 1 + + +def test_json_writer_leaves_unmatched_products_alone(tmp_path): + from scripts.backfill_barcodes_from_off import write_json + + path = tmp_path / "brand_catalog_amul.json" + data = {"brand": "amul", "products": [{"image_id": "other", "barcode": None}]} + payload = json.dumps(data) + path.write_text(payload, encoding="utf-8") + + assert write_json(path, data, {"not_present": {"barcode": "8901262031059"}}) == 0 + assert path.read_text(encoding="utf-8") == payload + + +def test_existing_barcodes_are_never_regrouped(tmp_path): + """Tata has 23 manually sourced barcodes; a product that already has one is + excluded from matching entirely rather than re-looked-up.""" + from scripts.backfill_barcodes_from_off import group_by_title + + products = [ + {"image_id": "a", "title": "Tata Salt", "barcode": "8904043901015"}, + {"image_id": "b", "title": "Tata Salt", "barcode": ""}, + {"image_id": "c", "title": "Tata Salt"}, + ] + groups = group_by_title(products) + assert [p["image_id"] for p in groups["Tata Salt"]] == ["b", "c"]