Remove count from AI search prompt, add query prioritization

- count no longer part of prompt or JSON output — fixed at 50 in backend
- Added prioritization rules: most common term wins (Dachdecker > Spengler)
- Cleaner examples without count field

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Timo Uttenweiler
2026-04-08 14:07:11 +02:00
parent edbf8cb1e2
commit e5172cbdc5
2 changed files with 27 additions and 19 deletions

View File

@@ -15,48 +15,57 @@ Analysiere die Beschreibung des Nutzers und erstelle 24 Google-Maps-optimiert
## Feldmuster ## Feldmuster
- **query**: Die Branche oder Tätigkeit — so kurz wie möglich, auf Deutsch, wie ein Mensch bei Google Maps tippt. Keine Adjektive wie "klein" oder "professionell". Keine Firmennamen. Keine URLs. - **query**: Die Branche oder Tätigkeit — so kurz wie möglich, auf Deutsch, wie ein Mensch bei Google Maps tippt. Keine Adjektive wie "klein" oder "professionell". Keine Firmennamen. Keine URLs.
- **region**: Bundesland, Stadt oder geografisches Gebiet. Wenn der Nutzer eine große Region nennt (z.B. "Deutschland" oder "Bayern"), splitte sinnvoll auf mehrere Städte oder Bundesländer auf um Abdeckung zu maximieren. - **region**: Bundesland, Stadt oder geografisches Gebiet. Wenn der Nutzer eine große Region nennt (z.B. "Deutschland" oder "Bayern"), splitte sinnvoll auf mehrere Städte oder Bundesländer auf um mehr Ergebnisse zu erzielen.
- **count**: Wie viele Ergebnisse pro Query gewünscht sind. Leite das aus dem Kontext ab — wenn der Nutzer eine Zahl nennt, verteile sie auf die Queries. Wenn keine Zahl genannt wird, wähle 50 als Standard. Minimum 25, Maximum 100 pro Query.
## Priorisierung
Wähle immer den geläufigsten, meistgesuchten Begriff für eine Branche — nicht Nischenbegriffe oder Synonyme. Beispiele:
- "Dachdecker" vor "Spengler" oder "Klempner"
- "Elektriker" vor "Elektroinstallateur"
- "Steuerberater" vor "Steuerkanzlei"
- "Solaranlage" vor "Photovoltaik Fachbetrieb"
Wenn der Nutzer mehrere Branchen nennt, priorisiere die volumenstärkste zuerst.
## Splitting-Strategie ## Splitting-Strategie
Nutze mehrere Queries wenn: Nutze mehrere Queries wenn:
- Die Region zu groß ist für eine Suche (Deutschland → München, Hamburg, Berlin, Köln) - Die Region zu groß ist für eine Suche (Deutschland → München, Hamburg, Berlin, Köln)
- Es mehrere verwandte Branchen gibt ("Dachdecker und Spengler" → je eine Query) - Der Nutzer explizit mehrere verschiedene Branchen nennt (dann je eine Query pro Branche)
- Der Nutzer breite Abdeckung möchte - Der Nutzer breite Abdeckung möchte
Maximal 4 Queries. Keine Duplikate (gleiche query + gleiche region). Maximal 4 Queries. Keine Duplikate (gleiche query + gleiche region).
## Beispiele ## Beispiele
Eingabe: "Ich suche Dachdecker in Bayern, circa 80 Firmen" Eingabe: "Dachdecker in Bayern"
Ausgabe: Ausgabe:
[ [
{ "query": "Dachdecker", "region": "München", "count": 40 }, { "query": "Dachdecker", "region": "München" },
{ "query": "Dachdecker", "region": "Nürnberg", "count": 40 } { "query": "Dachdecker", "region": "Nürnberg" }
] ]
Eingabe: "Steuerberater und Wirtschaftsprüfer in ganz Deutschland" Eingabe: "Steuerberater in ganz Deutschland"
Ausgabe: Ausgabe:
[ [
{ "query": "Steuerberater", "region": "Bayern", "count": 50 }, { "query": "Steuerberater", "region": "Bayern" },
{ "query": "Steuerberater", "region": "NRW", "count": 50 }, { "query": "Steuerberater", "region": "NRW" },
{ "query": "Wirtschaftsprüfer", "region": "Hamburg", "count": 50 }, { "query": "Steuerberater", "region": "Hamburg" },
{ "query": "Wirtschaftsprüfer", "region": "Berlin", "count": 50 } { "query": "Steuerberater", "region": "Berlin" }
] ]
Eingabe: "Solaranlagen Installateure in der Nähe von Stuttgart" Eingabe: "Solaranlagen Installateure und Elektriker in Stuttgart"
Ausgabe: Ausgabe:
[ [
{ "query": "Solaranlage Installateur", "region": "Stuttgart", "count": 50 }, { "query": "Solaranlage", "region": "Stuttgart" },
{ "query": "Photovoltaik", "region": "Stuttgart", "count": 50 } { "query": "Elektriker", "region": "Stuttgart" }
] ]
Eingabe: "Kleine Metallbaubetriebe in Süddeutschland" Eingabe: "Metallbaubetriebe in Süddeutschland"
Ausgabe: Ausgabe:
[ [
{ "query": "Metallbau", "region": "Bayern", "count": 50 }, { "query": "Metallbau", "region": "Bayern" },
{ "query": "Metallbau", "region": "Baden-Württemberg", "count": 50 } { "query": "Metallbau", "region": "Baden-Württemberg" }
] ]
## Ausgabeformat ## Ausgabeformat
@@ -122,7 +131,7 @@ export async function POST(req: NextRequest) {
.map(q => ({ .map(q => ({
query: q.query.trim(), query: q.query.trim(),
region: (q.region ?? "").trim(), region: (q.region ?? "").trim(),
count: Math.min(Math.max(Number(q.count) || 50, 25), 100), count: 50,
})); }));
return NextResponse.json({ queries }); return NextResponse.json({ queries });

View File

@@ -173,7 +173,6 @@ export function AiSearchModal({ onStart, onClose }: AiSearchModalProps) {
)} )}
</div> </div>
<div style={{ display: "flex", alignItems: "center", gap: 8 }}> <div style={{ display: "flex", alignItems: "center", gap: 8 }}>
<span style={{ fontSize: 11, color: "#4b5563" }}>{q.count} Leads</span>
<div style={{ <div style={{
width: 16, height: 16, borderRadius: 4, width: 16, height: 16, borderRadius: 4,
border: selected.has(i) ? "none" : "1px solid #2e2e3e", border: selected.has(i) ? "none" : "1px solid #2e2e3e",