Ignore non-real-estate sales in TG leads
All checks were successful
CI / go (push) Successful in 26s
CI / python (push) Successful in 2s
Build and Deploy / build-and-deploy (push) Successful in 27s

This commit is contained in:
Grendgi
2026-06-11 14:51:29 +03:00
parent eb12190729
commit f66ca4b6d4
2 changed files with 18 additions and 0 deletions

View File

@@ -201,6 +201,7 @@ func (c *classifier) classify(ctx context.Context, msg pendingMessage) (json.Raw
if err != nil {
return nil, err
}
systemPrompt = promptWithVerticalGuard(msg.Vertical, systemPrompt)
responseFormat, _ := json.Marshal(responseFmt{Type: "json_object"})
payload := aiservice.ChatInput{
@@ -403,6 +404,16 @@ func defaultPrompt(vertical string) string {
return defaultREPrompt
}
func promptWithVerticalGuard(vertical, prompt string) string {
if vertical == verticalHR {
return prompt
}
if strings.Contains(prompt, realEstateOnlyGuard) {
return prompt
}
return strings.TrimSpace(prompt) + "\n\n" + realEstateOnlyGuard
}
func loadConfig() config {
return config{
PostgresUser: env("POSTGRES_USER", "parser"),
@@ -466,6 +477,8 @@ func envBool(key string, fallback bool) bool {
const defaultREPrompt = `Ты — аналитик объявлений о недвижимости. Тебе дают текст из Telegram-канала.
Определи, является ли сообщение реальным объявлением о покупке, продаже или аренде недвижимости.
Учитывай только сделки с недвижимостью: квартиры, дома, апартаменты, участки, коммерческие помещения и другие объекты недвижимости.
Любые продажи или заявки по стройматериалам, мебели, бытовой/строительной технике, автомобилям, услугам, оборудованию и прочим товарам не являются лидами недвижимости — для них is_listing=false.
Отвечай строго валидным JSON без markdown:
{
"is_listing": boolean,
@@ -484,6 +497,9 @@ const defaultREPrompt = `Ты — аналитик объявлений о не
}
summary всегда по-русски, confidence в диапазоне 0..1.`
const realEstateOnlyGuard = `Жёсткое правило для недвижимости: учитывай только сделки с недвижимостью.
Если сообщение продаёт или покупает стройматериалы, мебель, бытовую/строительную технику, автомобили, услуги, оборудование или любые другие товары/работы не по недвижимости — это НЕ лид недвижимости, верни is_listing=false.`
const defaultHRPrompt = `Ты — аналитик HR-объявлений. Тебе дают текст из Telegram-канала.
Определи, относится ли сообщение к рынку труда: вакансия, резюме или короткий HR-контакт.
Отвечай строго валидным JSON без markdown:

View File

@@ -1875,6 +1875,8 @@ func envBool(key string, fallback bool) bool {
const defaultREPrompt = `Ты — аналитик объявлений о недвижимости. Тебе дают текст из Telegram-канала.
Определи, является ли сообщение реальным объявлением о покупке, продаже или аренде недвижимости.
Учитывай только сделки с недвижимостью: квартиры, дома, апартаменты, участки, коммерческие помещения и другие объекты недвижимости.
Любые продажи или заявки по стройматериалам, мебели, бытовой/строительной технике, автомобилям, услугам, оборудованию и прочим товарам не являются лидами недвижимости — для них is_listing=false.
Отвечай строго валидным JSON без markdown:
{
"is_listing": boolean,