// Enhanced Types for Deep Analysis export type PlatformId = string export type SearchStrategy = | 'direct-keywords' | 'problem-pain' | 'competitor-alternative' | 'how-to' | 'emotional-frustrated' | 'comparison' | 'recommendation' export interface PlatformConfig { id: PlatformId name: string icon: string enabled: boolean searchTemplate: string rateLimit: number site?: string custom?: boolean } export interface SearchConfig { platforms: PlatformConfig[] strategies: SearchStrategy[] maxResults: number timeFilter?: 'past-day' | 'past-week' | 'past-month' | 'past-year' | 'all' } export interface GeneratedQuery { query: string platform: PlatformId strategy: SearchStrategy priority: number expectedIntent: string } export interface Opportunity { id: string title: string url: string snippet: string platform: string source: string relevanceScore: number emotionalIntensity: 'low' | 'medium' | 'high' intent: 'frustrated' | 'looking' | 'comparing' | 'learning' | 'recommending' matchedKeywords: string[] matchedProblems: string[] matchedPersona?: string engagement?: { upvotes?: number comments?: number views?: number } postedAt?: string status: 'new' | 'viewed' | 'contacted' | 'responded' | 'converted' | 'ignored' notes?: string tags?: string[] suggestedApproach: string replyTemplate?: string softPitch: boolean scoringBreakdown?: { keywordMatches: number problemMatches: number emotionalIntensity: number competitorMention: number recency: number engagement: number } } export interface Feature { name: string description: string benefits: string[] useCases: string[] } export interface Problem { problem: string severity: 'high' | 'medium' | 'low' currentWorkarounds: string[] emotionalImpact: string searchTerms: string[] } export interface Persona { name: string role: string companySize: string industry: string painPoints: string[] goals: string[] techSavvy: 'low' | 'medium' | 'high' objections: string[] searchBehavior: string[] } export interface Keyword { term: string type: 'product' | 'problem' | 'solution' | 'competitor' | 'feature' | 'longtail' | 'differentiator' searchVolume: 'high' | 'medium' | 'low' intent: 'informational' | 'navigational' | 'transactional' funnel: 'awareness' | 'consideration' | 'decision' emotionalIntensity: 'frustrated' | 'curious' | 'ready' } export interface UseCase { scenario: string trigger: string emotionalState: string currentWorkflow: string[] desiredOutcome: string alternativeProducts: string[] whyThisProduct: string churnRisk: string[] } export interface Competitor { name: string differentiator: string theirStrength: string switchTrigger: string theirWeakness: string } export interface DorkQuery { query: string platform: 'reddit' | 'hackernews' | 'indiehackers' | 'twitter' | 'quora' | 'stackoverflow' intent: 'looking-for' | 'frustrated' | 'alternative' | 'comparison' | 'problem-solving' | 'tutorial' priority: 'high' | 'medium' | 'low' } export interface EnhancedProductAnalysis { productName: string tagline: string description: string category: string positioning: string features: Feature[] problemsSolved: Problem[] personas: Persona[] keywords: Keyword[] useCases: UseCase[] competitors: Competitor[] dorkQueries: DorkQuery[] scrapedAt: string analysisVersion: string } // Legacy types for backwards compatibility export interface ProductAnalysis { productName: string tagline: string description: string features: string[] problemsSolved: string[] targetAudience: string[] valuePropositions: string[] keywords: string[] scrapedAt: string } export interface ScrapedContent { url: string title: string metaDescription: string headings: string[] paragraphs: string[] featureList: string[] links: string[] rawText: string } export interface SearchResults { productAnalysis: EnhancedProductAnalysis totalFound: number opportunities: Opportunity[] searchStats: { queriesUsed: number platformsSearched: string[] averageRelevance: number } }