/** * Discovery layer types — what the LLM agents emit at each stage. * * The discovery agents are dispatched by Bun scripts that wrap the * Agent tool. Each emits structured YAML/JSON for downstream layers. */ /** L0 — Industry → subcategories. */ export interface IndustryExpansion { readonly industry: string; readonly description: string; readonly subcategories: ReadonlyArray<{ readonly slug: string; readonly name: string; readonly description: string; readonly priority: "high" | "medium" | "low"; readonly indianContext?: string; }>; readonly notes?: string; readonly sourcedAt: string; } /** L1 — (industry, subcategory) → brands. */ export interface BrandDiscovery { readonly industry: string; readonly subcategory: string; readonly brands: ReadonlyArray; readonly sourcedAt: string; } export interface DiscoveredBrand { readonly slug: string; readonly name: string; readonly parent: string | null; readonly officialDomain: string | null; readonly officialLocatorUrl: string | null; readonly indiaPresence: "yes" | "no" | "limited" | "unknown"; readonly approxStoreCount: number | null; readonly storeCountCitation: string | null; readonly siblings: readonly string[]; readonly authenticitySignals: { readonly hasWikipediaArticle: boolean; readonly publicCompany: boolean; readonly knownBrand: boolean; }; readonly priorityHint: "high" | "medium" | "low"; readonly notes: string; } /** YAML output we write to disk for downstream layers. */ export interface BrandStub { readonly brand: string; readonly slug: string; readonly industry: string; readonly subcategory: string; readonly country: string; readonly priority: "high" | "medium" | "low" | "parked"; readonly status: "discovered" | "reconned" | "extracted" | "drifted" | "parked"; readonly schedule: "daily" | "weekly" | "monthly" | "quarterly" | "manual"; readonly parent: string | null; readonly siblings: readonly string[]; readonly official_domain: string | null; readonly official_locator_url: string | null; readonly authoritative_count: number | null; readonly authoritative_citation: string | null; readonly tolerance_pct: number; readonly authenticity: { readonly has_wikipedia_article: boolean; readonly public_company: boolean; readonly known_brand: boolean; readonly domain_matches_brand: boolean; }; readonly notes: string; }