export interface ProductRecord { asin: string; name: string; unitCost: number; brand?: string; category?: string; amazonRank?: number; avgPrice90FromSheet?: number; sellingPriceFromSheet?: number; fbaNet?: number; grossProfit?: number; grossProfitPct?: number; netProfitFromSheet?: number; roiFromSheet?: number; moq?: number; moqCost?: number; totalQtyAvail?: number; link?: string; asinLink?: string; sourceUrl?: string; supplier?: string; promoCouponCode?: string; notes?: string; leadDate?: string; [key: string]: unknown; } export interface KeepaData { currentPrice: number | null; avgPrice90: number | null; minPrice90: number | null; maxPrice90: number | null; salesRank: number | null; salesRankAvg90: number | null; salesRankDrops30: number | null; salesRankDrops90: number | null; sellerCount: number | null; buyBoxSeller: string | null; buyBoxPrice: number | null; monthlySold: number | null; categoryTree: string[]; } export interface SpApiData { fbaFee: number; fbmFee: number; referralFeePercent: number; estimatedSalePrice: number; } export interface EnrichedProduct { record: ProductRecord; keepa: KeepaData | null; spApi: SpApiData; fetchedAt: string; } export interface LlmVerdict { asin: string; verdict: "FBA" | "FBM" | "SKIP"; confidence: number; reasoning: string; } export interface AnalysisResult { product: EnrichedProduct; verdict: LlmVerdict; }