diff --git a/components/AIAssist.tsx b/components/AIAssist.tsx index 8a51a1e..1b500a6 100644 --- a/components/AIAssist.tsx +++ b/components/AIAssist.tsx @@ -780,7 +780,7 @@ export default function AIAssist({ vibeMode = false }: { vibeMode?: boolean } = } // If no URL found and web search not enabled, auto-enable web search for SEO - if ((currentAgent === "seo" || currentAgent === "leads") && uniqueUrls.length === 0 && !webSearchEnabled) { + if (uniqueUrls.length === 0 && !webSearchEnabled) { try { setStatus("Searching for SEO context..."); const searchRes = await fetch("/api/search?q=" + encodeURIComponent(finalInput.split("\n")[0].substring(0, 200))); @@ -798,6 +798,24 @@ export default function AIAssist({ vibeMode = false }: { vibeMode?: boolean } = } } + // Leads mode: auto-search for leads + if (currentAgent === "leads" && !webSearchEnabled) { + try { + setStatus("Finding leads..."); + const searchRes = await fetch("/api/search?q=" + encodeURIComponent(finalInput.split("\n")[0].substring(0, 200))); + if (searchRes.ok) { + const searchData = await searchRes.json(); + if (searchData.results && searchData.results.length > 0) { + const searchContext = searchData.results.slice(0, 5).map((r: { title: string; url: string; snippet: string }, i: number) => + (i + 1) + ". **" + r.title + "** (" + r.url + ") - " + r.snippet + ).join("\n"); + enrichedInput = "[WEB SEARCH CONTEXT - Use these results to find leads]\n" + searchContext + "\n\n---\nExtract leads/prospects from the above results. Search for more leads using [WEB_SEARCH:query] with different angles. Then output results as a [PREVIEW:leads:html] table.\n\nUser request: " + finalInput; + } + } + } catch (e) { console.warn("Leads web search failed:", e); } + setStatus(null); + } + const response = await modelAdapter.generateAIAssistStream( { messages: [...formattedHistory, { role: "user" as const, content: enrichedInput, timestamp: new Date() }], diff --git a/lib/services/openrouter.ts b/lib/services/openrouter.ts index d8e58f3..f9682f2 100644 --- a/lib/services/openrouter.ts +++ b/lib/services/openrouter.ts @@ -534,64 +534,27 @@ AGENTS & CAPABILITIES: - design: UI/UX Designer. Create high-fidelity mockups and components. - web: Frontend Developer. Build responsive sites. Use [PREVIEW:web:html]. Tailwind CSS CDN by default. - app: Mobile App Developer. Create mobile-first interfaces and dashboards. Use [PREVIEW:app:javascript]. -- leads: Leads Finder. Expert at finding relevant influencers, prospects, and leads across social media platforms. When given a niche, industry, topic, or target audience, use [WEB_SEARCH:query] to find relevant leads from Instagram, Twitter/X, LinkedIn, YouTube, and TikTok. - **MUST wrap results in [PREVIEW:leads:html] so they render as a table in the Canvas.** +- leads: Leads Finder. You are a silent data-finding tool. DO NOT chat, ask questions, or have conversations. Your ONLY job is to search for leads and return them as a table. + **STRICT BEHAVIOR:** + - NEVER greet the user, NEVER ask clarifying questions, NEVER explain what you will do. + - IMMEDIATELY use [WEB_SEARCH:query] to find leads based on whatever the user typed. + - If the query is vague (e.g. just "forex"), infer the best search and find leads anyway. + - Use MULTIPLE [WEB_SEARCH:query] calls with different angles to find more leads. + - After searching, output ONLY: a one-line summary (e.g. "Found 25 forex leads across 3 platforms"), then the full [PREVIEW:leads:html] table, then a brief changelog. NOTHING ELSE. + - NEVER say "I'd be happy to help" or "Sure, let me search" or "Here are some leads I found:" — just output the data. - **OUTPUT FORMAT:** - Before [PREVIEW], give a brief chat summary (e.g. "Found 25 leads in forex across Singapore and UAE"). - Then output the full table inside [PREVIEW:leads:html]...[/PREVIEW] using this HTML template: - -
-Generated by PromptArch Leads Finder
| # | Name | Platform | Followers | Region | Bio | Link |
|---|