Zpět na domů

AI pro automatické vyplňování filtrů volných pozic

Článek popisuje data-driven pipeline pro automatické vyplňování filtrů hledání volných pozic na HH, SuperJob a další. LLM analyzuje dotazy, databáze resolvuje ID. Úspora 150x na tokenech, růst konverze.

Automatické vyplňování filtrů hledání práce AI a DB
Advertisement 728x90

Automatické vyplňování filtrů hledání volných míst pomocí AI a databáze

Uživatelé portálů pro hledání práce často nejsou schopni správně nastavit filtry na jobových deskách jako HH, SuperJob, Zarplata.ru nebo TrudVsem. Analýza ukazuje: návštěvníci otevřou panel filtrů, zadávají data chaoticky, dostanou nerelevantní výsledky – od tisíců nabídek uklízečů po prázdný seznam – a odejdou. Pokusy o řešení prostřednictvím upozornění, povinných polí nebo zvýraznění selhaly: konverze klesala, uživatelé se báli nebo zadávali nesmyslné dotazy jako „práce“.

Klíčový postřeh: problém je v složitosti. Každá služba používá unikátní ID pro města (HH má 1600 měst s ID, SuperJob svá vlastní), specializace, praxi. Předání všech slovníků do LLM vede k 140 000 tokenům na požadavek (25–40 Kč), halucinacím nebo bankrotu.

Architektura datově řízeného pipeline pro AI

Řešení je postaveno na existující databázi s tabulkami job_filters, job_filter_options, job_service_filters, city_master a city_source_map. Tyto struktury již mapují kanonická hodnoty na ID služeb (např. Praha: HH=1, SuperJob=4).

Google AdInline article slot

Systém automaticky dělí filtry do kategorií podle příznaku is_ai_eligible = true:

  • Malé slovníky (≤30 hodnot): praxe (noExperience, between1And3), zaměstnanost (FULL, PART). Předají se do promptu (~400 tokenů).
  • Velké slovníky (>30): města, role. LLM vrátí text („Praha“), kód vyřeší ID z DB.
  • Volný text: dotaz jako „Python backend developer“.
  • Čísla: plat z CV nebo LLM.

Prompt se generuje dynamicky z DB. Příklad:

== FILTRY S VÝBĚREM ==
experience: noExperience="Bez praxe", between1And3="Od 1 do 3 let"
employment_form: FULL="Plný úvazek"

== SLOVNÍKOVÁ POLA ==
city_name: "Praha"

== TEXTové ==
text: 2-8 slov

Vstup: shrnutí CV (dovednosti, praxe), požadovaná pozice, služby. Výstup – JSON bez ID:

Google AdInline article slot
{
  "text": "Python backend developer",
  "area_name": "Praha",
  "experience": "between1And3",
  "salary": {"from": 250000}
}

Fáze zpracování a rezolvování

Fáze 1: Generování promptu a volání LLM

BuildSearchFiltersPromptTask shromáždí instrukci. LLM (GigaChat) parsuje záměry uživatele, vybere z malých slovníků, pojmenuje velké.

Fáze 2: Postprocessing v kódu

  • Rezolvování: SearchCitiesAction hledá „Praha“ v city_master, mapuje na ID podle city_source_map.
  • Adaptace: převádí between1And3 do formátu API služby.
  • Sestavení: unified_filters + filter_labels pro frontend.

Výsledek: vyplněné filtry pro všechny služby. Uživatel je zkontroluje a uloží.

Škálovatelnost: nová služba/filtr – jen data v DB, prompt a pipeline se adaptují automaticky.

Google AdInline article slot

Metriky efektivity

| Přístup | Tokeny | Cena požadavku | Přesnost |

|--------|--------|----------------|----------|

| Naivní (všechny slovníky) | 140 000 | 25–40 Kč | Nízká (halucinace) |

| Datově řízený | 850 + 150 | 0,1 Kč | Vysoká (DB rezolv) |

Úspora: 150x. Bounce rate na vyhledávání klesl, růst průměrného cheku z placených funkcí.

Co je důležité

  • Rozdělení rolí: LLM pro sémantiku, DB pro mapování ID – minimalizuje tokeny a chyby.
  • Autoklasifikace: práh 30 hodnot je dynamický, nové filtry se integrují bez kódu.
  • JSON struktura: striktní výstup LLM usnadňuje parsování.
  • Škálovatelnost: tisíce uživatelů bez zdražení.
  • UX: automatické vyplňování snižuje bariéru vstupu.

— Editorial Team

Advertisement 728x90

Číst dál