Skip to content

v2.2.2 — a JD is source material, not a language signal

Choose a tag to compare

@Da6ka Da6ka released this 17 Jul 10:07
2c4d945

Corrects v2.2.1, which fixed the wrong half of the rule. If you are on v2.2.1, upgrade.

The bug is older than v2.2.1

"Output language" said: write in English by default, and match another language if either the user is clearly writing in one or the JD/briefing is in one.

Two different signals joined by an or — and the JD half let a piece of input data decide what language the user got spoken to in. Paste a Russian JD while writing in English, get a Russian report. The live run said so outright:

«Вакансия на русском языке, поэтому весь прогон веду по-русски.»

v2.2.1 made that branch work more reliably, which was the wrong direction.

The fix

The JD branch is gone. Only the user's own messages set the output language:

A JD, briefing, or profile is source material, not a language signal. Only the user's own messages decide the output language. A Russian JD pasted by someone who writes to you in English gets an English run: the posting is data to work from, not a sample of how they want to be spoken to. When a JD is the only input and there is no user message to judge — a hosted API call, for example — use the English default.

The Module 4 exception is unchanged: outreach still follows the candidate's likely language, with a one-line note when it differs. Its example was realigned — it described a Russian JD producing a Russian persona, which is what this release removes.

isCyrillicJd, added in v2.2.1, is removed: with the JD no longer a language signal there is nothing to detect, and the demo's turn-cap note is unconditionally English.

Anglicism rule

The banned list is unchanged («наблюдение», not «финдинг»). What is new is an explicit carve-out for established IT and recruiting usage — «кандидат», «гипотеза», «воронка», «локация», «стек», «аутрич», «сеньорность» are ordinary Russian and stay.

The rule previously carried one example, too few to generalise from, leaving the model to guess which borrowings count as jargon. A naive "no anglicisms" reading over-corrects into «соискатель» and «предположение», which is worse than any drift it would fix. Spelling is pinned to «сеньорность» over «сениорность».

Verification

Live run against the deployed demo with the same 3470-character Russian JD used to find the bug:

v2.2.1 v2.2.2
headings 11 RU / 3 EN 15 EN / 0 RU
addressed to the user Russian English
mixed-language headings none none
hh.ru consent gate held held
outreach (Module 4) candidate's language candidate's language

The consent gate still declines explicitly and states why — "a Russian-language JD alone is not sufficient to fire that branch" — so the language change did not weaken it.

Full changelog: v2.2.1...v2.2.2