Brand Discovery-LLM Updates

This commit is contained in:
sriram
2026-09-29 16:42:49 +05:30
parent c0489d89d6
commit c0601b65fe
16 changed files with 1971 additions and 5 deletions

View File

@@ -347,6 +347,25 @@ BRAND_DISCOVERY_DEADLINE_SECONDS = float(
os.getenv("BRAND_DISCOVERY_DEADLINE_SECONDS", "300")
)
# Web & retail listing discovery (app/services/web_discovery/) - the optional
# Brand Discovery source for brands Open Food Facts does not carry. It reads
# ONLY search-engine results (title, URL, snippet) that point at Indian
# retailers' product pages; it never fetches a retailer page and never asks a
# language model. A product is kept only when a real listing names the brand
# and states a pack size. Off in a request unless the admin ticks it.
WEB_DISCOVERY_ENABLED = _bool("WEB_DISCOVERY_ENABLED", "true")
# Searches per brand job. A parent brand fans out to its sub-brands (Reckitt ->
# Dettol, Harpic, Lizol, ...) times the retailers, so this is the cost ceiling.
WEB_DISCOVERY_MAX_QUERIES = int(os.getenv("WEB_DISCOVERY_MAX_QUERIES", "80"))
# Seconds between two LIVE searches (cached ones are free). DuckDuckGo throttles
# a burst; a throttled search is "could not ask", never "nothing found".
WEB_DISCOVERY_PAUSE_SECONDS = float(os.getenv("WEB_DISCOVERY_PAUSE_SECONDS", "2.0"))
WEB_DISCOVERY_RESULTS_PER_QUERY = int(os.getenv("WEB_DISCOVERY_RESULTS_PER_QUERY", "20"))
# How long a search answer is reused. An EMPTY answer is kept one day only:
# search reach is unstable, and a flaky empty page must not become a week-long fact.
WEB_DISCOVERY_CACHE_DAYS = float(os.getenv("WEB_DISCOVERY_CACHE_DAYS", "7"))
WEB_DISCOVERY_DIR = _dir("WEB_DISCOVERY_DIR", DATA_DIR / "cache" / "web_discovery")
# ---------------------------------------------------------------------------
# S3 / DigitalOcean Spaces (product image storage) - optional
# ---------------------------------------------------------------------------