diff --git a/general-market-intelligence/README.md b/general-market-intelligence/README.md new file mode 100644 index 00000000..b3aadcc7 --- /dev/null +++ b/general-market-intelligence/README.md @@ -0,0 +1,20 @@ +
+GHBanner +
+ +# Run and deploy your AI Studio app + +This contains everything you need to run your app locally. + +View your app in AI Studio: https://ai.studio/apps/drive/1hqAT_ZEgFV0rmyyCHSDAQMucb_tpEWUp + +## Run Locally + +**Prerequisites:** Node.js + + +1. Install dependencies: + `npm install` +2. Set the `GEMINI_API_KEY` in [.env.local](.env.local) to your Gemini API key +3. Run the app: + `npm run dev` diff --git a/general-market-intelligence/metadata.json b/general-market-intelligence/metadata.json new file mode 100644 index 00000000..7fd6c53f --- /dev/null +++ b/general-market-intelligence/metadata.json @@ -0,0 +1,5 @@ +{ + "name": "General Market Intelligence", + "description": "A B2B sales intelligence agent helping SDRs identify leads and analyze competitor technology stacks using AI-powered search.", + "requestFramePermissions": [] +} \ No newline at end of file diff --git a/general-market-intelligence/package.json b/general-market-intelligence/package.json new file mode 100644 index 00000000..f0b447c5 --- /dev/null +++ b/general-market-intelligence/package.json @@ -0,0 +1,27 @@ +{ + "name": "general-market-intelligence", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "react": "^19.2.0", + "react-dom": "^19.2.0", + "@google/genai": "^1.29.0", + "lucide-react": "^0.554.0", + "uuid": "^13.0.0", + "nanoid": "^5.1.6", + "jspdf": "^2.5.1", + "jspdf-autotable": "^3.8.1" + }, + "devDependencies": { + "@types/node": "^22.14.0", + "@vitejs/plugin-react": "^5.0.0", + "typescript": "~5.8.2", + "vite": "^6.2.0" + } +} diff --git a/general-market-intelligence/types.ts b/general-market-intelligence/types.ts new file mode 100644 index 00000000..5b725a8a --- /dev/null +++ b/general-market-intelligence/types.ts @@ -0,0 +1,87 @@ + +export enum AppStep { + INPUT = 0, + STRATEGY = 1, + REVIEW_LIST = 2, + ANALYSIS = 3, + REPORT = 4, + OUTREACH = 5, +} + +export type Language = 'en' | 'de' | 'fr'; + +export interface Competitor { + id: string; + name: string; + url?: string; + description?: string; +} + +export enum LeadStatus { + CUSTOMER = 'Bestandskunde', + COMPETITOR = 'Nutzt Wettbewerber', + POTENTIAL = 'Greenfield / Potenzial', + UNKNOWN = 'Unklar / Manuelle Prüfung' +} + +export enum Tier { + TIER_1 = 'Tier 1', // Enterprise + TIER_2 = 'Tier 2', // Mid-Market + TIER_3 = 'Tier 3' // SMB +} + +// NEW: Flexible Signal Definition +export interface SearchSignal { + id: string; + name: string; // e.g. "ISO Certification" or "Return Policy" + description: string; // e.g. "Check for ISO 27001 badge" + targetPageKeywords: string[]; // e.g. ["compliance", "about", "legal"] +} + +export interface SearchStrategy { + productContext: string; // What are we selling? + idealCustomerProfile: string; + signals: SearchSignal[]; +} + +export interface AnalysisResult { + companyName: string; + status: LeadStatus; + + // Core Data + revenue: string; + employees: string; + tier: Tier; + dataSource: string; // "Wikipedia", "Web Search", etc. + + // Dynamic Data based on Signals + dynamicAnalysis: Record; + + recommendation: string; + sources?: string[]; + + // Meta + processingChecks: { + wiki: boolean; + revenue: boolean; + signalsChecked: boolean; + }; +} + +export interface AnalysisState { + currentCompany: string; + progress: number; + total: number; + completed: number; +} + +export interface EmailDraft { + persona: string; + subject: string; + body: string; + keyPoints: string[]; +}