export interface Evidence { url: string; snippet: string; } export interface Product { name: string; purpose: string; evidence: Evidence[]; } export interface TargetIndustry { name: string; evidence: Evidence[]; } export interface Keyword { term: string; rationale: string; } export interface CompetitorCandidate { name: string; url: string; confidence: number; why: string; evidence: Evidence[]; manual_urls?: string; } export interface ShortlistedCompetitor { name: string; url: string; } export interface Analysis { competitor: { name: string; url: string; }; portfolio: { product: string; purpose: string; category?: string; }[]; target_industries: string[]; delivery_model: string; overlap_score: number; differentiators: string[]; evidence: Evidence[]; } export interface SilverBullet { competitor_name: string; statement: string; } export interface Conclusion { product_matrix: { product: string; availability: { competitor: string; has_offering: boolean; }[]; }[]; industry_matrix: { industry: string; availability: { competitor: string; has_offering: boolean; }[]; }[]; overlap_scores: { competitor: string; score: number }[]; summary: string; opportunities: string; next_questions: string[]; } export interface Battlecard { competitor_name: string; competitor_profile: { focus: string; positioning: string; }; strengths_vs_weaknesses: (string | { text: string; category: string })[]; landmine_questions: (string | { text: string; category: string })[]; silver_bullet: string; } export interface ReferenceCustomer { name: string; industry: string; testimonial_snippet: string; case_study_url: string; } export interface ReferenceAnalysis { competitor_name: string; references: ReferenceCustomer[]; } export interface AppState { step: number; initial_params: { start_url: string; max_competitors: number; market_scope: string; language: 'de' | 'en'; }; company: { name: string; start_url: string; }; products: Product[]; target_industries: TargetIndustry[]; keywords: Keyword[]; competitor_candidates: CompetitorCandidate[]; competitors_shortlist: ShortlistedCompetitor[]; analyses: Analysis[]; silver_bullets: SilverBullet[]; conclusion: Conclusion | null; battlecards: Battlecard[]; reference_analysis: ReferenceAnalysis[]; reference_analysis_grounding: any[]; }