import OpenAI from "openai"; /** * Generates an optimized alternative search query when the primary Maps search * returned fewer results than requested. Uses GPT-4.1 to find synonyms, * related terms, or slight regional variations that surface different businesses. * * Returns null if OpenAI is not configured or the call fails (caller should fall * back to the original query). */ export async function generateSupplementQuery( query: string, region: string, foundCount: number, targetCount: number, apiKey: string, ): Promise { const client = new OpenAI({ apiKey }); const searchQuery = region ? `${query} ${region}` : query; try { const response = await client.chat.completions.create({ model: "gpt-4.1", messages: [ { role: "system", content: "Du bist ein Experte für B2B-Lead-Generierung in Deutschland. " + "Antworte immer nur mit der Suchanfrage selbst — keine Anführungszeichen, keine Erklärungen.", }, { role: "user", content: `Eine Google-Suche nach "${searchQuery}" hat nur ${foundCount} von ${targetCount} Unternehmen gefunden. ` + `Erstelle eine alternative Suchanfrage (max. 6 Wörter), die weitere passende Unternehmen findet, ` + `die die erste Suche nicht erfasst hat. Nutze Synonyme, verwandte Branchen-Begriffe oder ` + `leichte Variationen der Region — aber halte den Fokus auf dieselbe Branche und Region.`, }, ], max_tokens: 30, temperature: 0.7, }); const text = response.choices[0]?.message?.content?.trim(); return text || null; } catch (err) { console.error("OpenAI query generation failed:", err); return null; } }