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:
@@ -15,48 +15,57 @@ Analysiere die Beschreibung des Nutzers und erstelle 2–4 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 });
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user