Parser Lab

Parser releases

История версий

Release notes по версиям parser platform. Technical module rows спрятаны внутрь релиза.

Показано 32 из 32 релизов

Сбросить

Release

0.2.0

parser_app_fast_pipeline

1 запуск
success 1
Модулей
1
Первый запуск
2026-06-19 09:12
Последний запуск
2026-06-19 09:12
Создано
2026-06-19 09:12

Что изменилось

Нет точной changelog-записи для этой версии.

Изменений состава модулей не найдено
Технические записи: 1 запись
parser_app_fast_pipeline 1 запуск
success 1
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.42

parser_app_fast_pipeline

20 запусков
success 20
Модулей
1
Первый запуск
2026-05-31 14:32
Последний запуск
2026-06-04 07:00
Создано
2026-05-31 14:32

Что изменилось

Нет точной changelog-записи для этой версии.

Изменений состава модулей не найдено
Технические записи: 1 запись
parser_app_fast_pipeline 20 запусков
success 20
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.41

parser_app_fast_pipeline

13 запусков
success 13
Модулей
1
Первый запуск
2026-05-31 13:44
Последний запуск
2026-05-31 14:13
Создано
2026-05-31 13:44

Что изменилось

Нет точной changelog-записи для этой версии.

Изменений состава модулей не найдено
Технические записи: 1 запись
parser_app_fast_pipeline 13 запусков
success 13
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.40

parser_app_fast_pipeline

49 запусков
success 49
Модулей
1
Первый запуск
2026-05-31 12:54
Последний запуск
2026-05-31 13:15
Создано
2026-05-31 12:54

Что изменилось

Нет точной changelog-записи для этой версии.

Изменений состава модулей не найдено
Технические записи: 1 запись
parser_app_fast_pipeline 49 запусков
success 49
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.39

parser_app_fast_pipeline

52 запуска
success 52
Модулей
1
Первый запуск
2026-05-31 10:08
Последний запуск
2026-05-31 11:38
Создано
2026-05-31 10:08

Что изменилось

Нет точной changelog-записи для этой версии.

Изменений состава модулей не найдено
Технические записи: 1 запись
parser_app_fast_pipeline 52 запуска
success 52
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.38

parser_app_fast_pipeline

3 запуска
success 3
Модулей
1
Первый запуск
2026-05-31 09:07
Последний запуск
2026-05-31 09:10
Создано
2026-05-31 09:07

Что изменилось

Нет точной changelog-записи для этой версии.

Изменений состава модулей не найдено
Технические записи: 1 запись
parser_app_fast_pipeline 3 запуска
success 3
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.36

parser_app_fast_pipeline

3 запуска
success 3
Модулей
1
Первый запуск
2026-05-30 23:33
Последний запуск
2026-05-30 23:35
Создано
2026-05-30 23:33

Что изменилось

Нет точной changelog-записи для этой версии.

Удалены: parser_pipeline
Технические записи: 1 запись
parser_app_fast_pipeline 3 запуска
success 3
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.35

parser_app_fast_pipeline, parser_pipeline

210 запусков
success 210
Модулей
2
Первый запуск
2026-05-23 11:52
Последний запуск
2026-05-30 23:19
Создано
2026-05-28 08:44

Что изменилось

Нет точной changelog-записи для этой версии.

Добавлены: parser_app_fast_pipelineИзменены: parser_pipeline
Технические записи: 4 записи
parser_app_fast_pipeline 100 запусков
success 100
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config
parser_pipeline 37 запусков
success 37
Prompt
Schema
Model
Yandex AI Studio Deepseek V4 Flash
Profile
yandex-ai-studio-deepseek-v4-flash-latest-default
Code
Config
parser_pipeline 35 запусков
success 35
Prompt
Schema
Model
Yandex AI Studio Aliceai Llm Flash
Profile
yandex-ai-studio-aliceai-llm-flash-latest-default
Code
Config
parser_pipeline 38 запусков
success 38
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.26

parser_pipeline

173 запуска
success 173
Модулей
1
Первый запуск
2026-05-18 22:21
Последний запуск
2026-05-19 17:28
Создано
2026-05-18 22:23

Что изменилось

Нет точной changelog-записи для этой версии.

Изменены: parser_pipeline
Технические записи: 4 записи
parser_pipeline 38 запусков
success 38
Prompt
Schema
Model
Yandex AI Studio Qwen3 235B A22B Instruct 2507 FP8
Profile
yandex-ai-studio-qwen3-235b-a22b-fp8-latest-default
Code
Config
parser_pipeline 47 запусков
success 47
Prompt
Schema
Model
Yandex AI Studio Alice AI LLM
Profile
yandex-ai-studio-aliceai-llm-latest-default
Code
Config
parser_pipeline 43 запуска
success 43
Prompt
Schema
Model
Yandex AI Studio Qwen3.5-35B
Profile
yandex-ai-studio-qwen3-5-35b-a3b-fp8-latest-default
Code
Config
parser_pipeline 45 запусков
success 45
Prompt
Schema
Model
Yandex AI Studio YandexGPT 5.1 Pro
Profile
yandex-ai-studio-yandexgpt-5-1-latest-default
Code
Config

Release

0.1.24

parser_pipeline

729 запусков
success 729
Модулей
1
Первый запуск
2026-05-17 21:38
Последний запуск
2026-05-18 19:37
Создано
2026-05-18 08:07

Что изменилось

Нет точной changelog-записи для этой версии.

Изменены: parser_pipeline
Технические записи: 6 записей
parser_pipeline 182 запуска
success 182
Prompt
Schema
Model
OpenRouter OpenAI: gpt-oss-20b
Profile
openrouter-openai-gpt-oss-20b-default
Code
Config
parser_pipeline 182 запуска
success 182
Prompt
Schema
Model
OpenRouter Mistral Small 3.2 24B
Profile
openrouter-mistral-small-3-2-24b-default
Code
Config
parser_pipeline 123 запуска
success 123
Prompt
Schema
Model
Yandex AI Studio YandexGPT 5.1 Pro
Profile
yandex-ai-studio-yandexgpt-5-1-latest-default
Code
Config
parser_pipeline 122 запуска
success 122
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config
parser_pipeline 62 запуска
success 62
Prompt
Schema
Model
Yandex AI Studio YandexGPT 5 Lite
Profile
yandex-ai-studio-yandexgpt-5-lite-latest-default
Code
Config
parser_pipeline 58 запусков
success 58
Prompt
Schema
Model
OpenRouter OpenAI: gpt-oss-120b
Profile
openrouter-openai-gpt-oss-120b-default
Code
Config

Release

0.1.23

parser_pipeline

56 запусков
success 56
Модулей
1
Первый запуск
2026-05-17 17:05
Последний запуск
2026-05-17 21:36
Создано
2026-05-17 21:01

Что изменилось

Нет точной changelog-записи для этой версии.

Изменены: parser_pipeline
Технические записи: 4 записи
parser_pipeline 17 запусков
success 17
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config
parser_pipeline 13 запусков
success 13
Prompt
Schema
Model
OpenRouter OpenAI: gpt-oss-20b
Profile
openrouter-openai-gpt-oss-20b-default
Code
Config
parser_pipeline 13 запусков
success 13
Prompt
Schema
Model
OpenRouter Mistral Small 3.2 24B
Profile
openrouter-mistral-small-3-2-24b-default
Code
Config
parser_pipeline 13 запусков
success 13
Prompt
Schema
Model
Yandex AI Studio YandexGPT 5.1 Pro
Profile
yandex-ai-studio-yandexgpt-5-1-latest-default
Code
Config

Release

0.1.22

parser_pipeline

3 запуска
success 3
Модулей
1
Первый запуск
2026-05-17 16:51
Последний запуск
2026-05-17 16:53
Создано
2026-05-17 16:51

Что изменилось

Нет точной changelog-записи для этой версии.

Изменений состава модулей не найдено
Технические записи: 1 запись
parser_pipeline 3 запуска
success 3
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.21

parser_pipeline

3 запуска
success 3
Модулей
1
Первый запуск
2026-05-17 13:18
Последний запуск
2026-05-17 13:19
Создано
2026-05-17 13:18

Что изменилось

Нет точной changelog-записи для этой версии.

Изменений состава модулей не найдено
Технические записи: 1 запись
parser_pipeline 3 запуска
success 3
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.20

parser_pipeline

3 запуска
success 3
Модулей
1
Первый запуск
2026-05-17 13:08
Последний запуск
2026-05-17 13:09
Создано
2026-05-17 13:08

Что изменилось

Нет точной changelog-записи для этой версии.

Изменений состава модулей не найдено
Технические записи: 1 запись
parser_pipeline 3 запуска
success 3
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.19

parser_pipeline

3 запуска
success 3
Модулей
1
Первый запуск
2026-05-17 13:02
Последний запуск
2026-05-17 13:03
Создано
2026-05-17 13:02

Что изменилось

Нет точной changelog-записи для этой версии.

Изменений состава модулей не найдено
Технические записи: 1 запись
parser_pipeline 3 запуска
success 3
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.18

parser_pipeline

3 запуска
success 3
Модулей
1
Первый запуск
2026-05-17 12:54
Последний запуск
2026-05-17 12:56
Создано
2026-05-17 12:54

Что изменилось

Нет точной changelog-записи для этой версии.

Изменений состава модулей не найдено
Технические записи: 1 запись
parser_pipeline 3 запуска
success 3
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.17

parser_pipeline

3 запуска
success 3
Модулей
1
Первый запуск
2026-05-17 12:43
Последний запуск
2026-05-17 12:44
Создано
2026-05-17 12:43

Что изменилось

Нет точной changelog-записи для этой версии.

Удалены: experiment_reference_extractor, quality_comparator, reference_extractor
Технические записи: 1 запись
parser_pipeline 3 запуска
success 3
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.15

experiment_reference_extractor, parser_pipeline, quality_comparator, reference_extractor

269 запусков
success 269
Модулей
4
Первый запуск
2026-05-16 23:03
Последний запуск
2026-05-28 10:47
Создано
2026-05-18 08:38

Что изменилось

Нет точной changelog-записи для этой версии.

Добавлены: quality_comparator, reference_extractorУдалены: file_extractor, parser_app_file_extractor
Технические записи: 6 записей
experiment_reference_extractor 262 запуска
success 262
Prompt
Schema
Model
Reference extractor A
Profile
reference-default-a
Code
Config
parser_pipeline 3 запуска
success 3
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config
quality_comparator 1 запуск
success 1
Prompt
Schema
Model
Gemini quality evaluator B
Profile
quality-comparator-default-b
Code
Config
quality_comparator 1 запуск
success 1
Prompt
Schema
Model
GPT-4o mini quality evaluator A
Profile
quality-comparator-default-a
Code
Config
reference_extractor 1 запуск
success 1
Prompt
Schema
Model
Gemini reference extractor B
Profile
reference-default-b
Code
Config
reference_extractor 1 запуск
success 1
Prompt
Schema
Model
Reference extractor A
Profile
reference-default-a
Code
Config

Release

0.1.14

experiment_reference_extractor, file_extractor, parser_app_file_extractor, parser_pipeline

291 запуск
success 291
Модулей
4
Первый запуск
2026-05-16 22:52
Последний запуск
2026-06-19 09:12
Создано
2026-05-23 11:51

Что изменилось

Нет точной changelog-записи для этой версии.

Добавлены: file_extractor, parser_app_file_extractor
Технические записи: 4 записи
experiment_reference_extractor 41 запуск
success 41
Prompt
Schema
Model
Reference extractor A
Profile
reference-default-a
Code
Config
file_extractor 1 запуск
success 1
Prompt
Schema
Model
Profile
Code
Config
parser_app_file_extractor 246 запусков
success 246
Prompt
Schema
Model
Profile
Code
Config
parser_pipeline 3 запуска
success 3
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.13

experiment_reference_extractor, parser_pipeline

6 запусков
success 6
Модулей
2
Первый запуск
2026-05-16 22:34
Последний запуск
2026-05-16 22:36
Создано
2026-05-16 22:34

Что изменилось

Нет точной changelog-записи для этой версии.

Изменены: parser_pipeline
Технические записи: 2 записи
experiment_reference_extractor 3 запуска
success 3
Prompt
Schema
Model
Reference extractor A
Profile
reference-default-a
Code
Config
parser_pipeline 3 запуска
success 3
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.12

experiment_reference_extractor, parser_pipeline

1547 запусков
success 1547
Модулей
2
Первый запуск
2026-05-12 23:01
Последний запуск
2026-05-16 21:35
Создано
2026-05-15 18:13

Что изменилось

  • Добавить страницу `/versions`: release view по версиям parser platform с заметками из changelog и техническими module records внутри раскрытия.
  • Добавить приватный parser-agent: ночные parser campaigns, preflight backup базы, Basic Auth control room, allowlist правок, локальные проверки и auto-deploy gate.
  • Добавить live-панель parser-agent campaign: JSON snapshot, progress bar, автообновление, фильтры событий, остановку кампании и живые события эксперимента.
  • Добавить patch loop parser-agent: сбор контекста ошибок, вызов patch executor, allowlist/tests/gate, commit/push/deploy и постановку следующей итерации.
  • Добавить OpenRouter patch executor для parser-agent: модель возвращает unified diff, который применяется через `git apply`.
  • Исправить правила эксперимента 8: parser читает локацию, текущую компанию, зарплату и опыт из структурного блока анкеты, не засоряет skills дампом Full Candidate Profile и не валит PII-аудит на безопасных работодателях или городах.
  • Переделать `/versions` из технического списка module records в release view: одна карточка на версию, уникальный список модулей в summary, technical records внутри раскрытия.
  • Русифицировать журнал parser-agent, показывать понятные провайдеры моделей и последние события сверху вместо пустого polling-шума.
  • Не закрывать parser-agent campaign как готовую после baseline-прогона, если качество ниже цели или остались unresolved quality issues.
  • Открыть parser-agent под `/agent` и починить выбор пресетов и моделей в форме кампании.
Изменены: parser_pipeline
Технические записи: 13 записей
experiment_reference_extractor 434 запуска
success 434
Prompt
Schema
Model
Reference extractor A
Profile
reference-default-a
Code
Config
parser_pipeline 229 запусков
success 229
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config
parser_pipeline 9 запусков
success 9
Prompt
Schema
Model
Yandex AI Studio YandexGPT 5 Lite
Profile
yandex-ai-studio-yandexgpt-5-lite-latest-default
Code
Config
parser_pipeline 138 запусков
success 138
Prompt
Schema
Model
OpenRouter OpenAI: gpt-oss-120b
Profile
openrouter-openai-gpt-oss-120b-default
Code
Config
parser_pipeline 4 запуска
success 4
Prompt
Schema
Model
Yandex AI Studio YandexGPT 5.1 Pro
Profile
yandex-ai-studio-yandexgpt-5-1-latest-default
Code
Config
parser_pipeline 4 запуска
success 4
Prompt
Schema
Model
Yandex AI Studio Alice AI LLM
Profile
yandex-ai-studio-aliceai-llm-latest-default
Code
Config
parser_pipeline 99 запусков
success 99
Prompt
Schema
Model
OpenRouter Qwen: Qwen3.5-Flash
Profile
openrouter-qwen-qwen3-5-flash-02-23-default
Code
Config
parser_pipeline 99 запусков
success 99
Prompt
Schema
Model
OpenRouter OpenAI: gpt-oss-20b
Profile
openrouter-openai-gpt-oss-20b-default
Code
Config
parser_pipeline 134 запуска
success 134
Prompt
Schema
Model
OpenRouter Mistral Small 3.2 24B
Profile
openrouter-mistral-small-3-2-24b-default
Code
Config
parser_pipeline 98 запусков
success 98
Prompt
Schema
Model
OpenRouter DeepSeek: DeepSeek V3.2
Profile
openrouter-deepseek-deepseek-v3-2-default
Code
Config
parser_pipeline 100 запусков
success 100
Prompt
Schema
Model
OpenRouter OpenAI: GPT-5 Nano
Profile
openrouter-openai-gpt-5-nano-default
Code
Config
parser_pipeline 99 запусков
success 99
Prompt
Schema
Model
OpenRouter OpenAI: GPT-4.1 Nano
Profile
openrouter-openai-gpt-4-1-nano-default
Code
Config
parser_pipeline 100 запусков
success 100
Prompt
Schema
Model
OpenRouter Mistral: Mistral Small 4
Profile
openrouter-mistralai-mistral-small-2603-default
Code
Config

Release

0.1.11

experiment_reference_extractor, parser_pipeline

151 запуск
success 151
Модулей
2
Первый запуск
2026-05-12 16:31
Последний запуск
2026-05-12 18:22
Создано
2026-05-12 16:34

Что изменилось

  • Исправить ошибки эксперимента 7: parser сохраняет префиксы населённых пунктов, добирает expected salary и languages из сырого текста, не принимает `[ИМЯ]` и `[КОМПАНИЯ ...]` как текущую компанию и вычищает дамп анкеты из skills.
  • Поднять версии parser, reference extractor, quality comparator и file extractor до `0.1.11`, чтобы новые эксперименты не смешивались со старым поведением.
Добавлены: experiment_reference_extractorИзменены: parser_pipeline
Технические записи: 4 записи
experiment_reference_extractor 39 запусков
success 39
Prompt
Schema
Model
Reference extractor A
Profile
reference-default-a
Code
Config
parser_pipeline 38 запусков
success 38
Prompt
Schema
Model
OpenRouter Mistral: Mistral Small 4
Profile
openrouter-mistralai-mistral-small-2603-default
Code
Config
parser_pipeline 36 запусков
success 36
Prompt
Schema
Model
OpenRouter Mistral Small 3.2 24B
Profile
openrouter-mistral-small-3-2-24b-default
Code
Config
parser_pipeline 38 запусков
success 38
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.10

parser_pipeline

12 запусков
success 12
Модулей
1
Первый запуск
2026-05-11 23:19
Последний запуск
2026-05-12 07:18
Создано
2026-05-11 23:38

Что изменилось

  • Закрыть остаточные PII-failures в экспериментах: AI-аудит больше не блокирует pipeline из-за безопасных claim’ов про работодателя, город, страну, гражданство или уже обезличенные placeholder’ы.
  • Маскировать email с переносом внутри доменного слова, generic profile URL и неполные ссылки, чтобы clean text не протаскивал реальные контакты.
Изменений состава модулей не найдено
Технические записи: 3 записи
parser_pipeline 6 запусков
success 6
Prompt
Schema
Model
OpenRouter DeepSeek: DeepSeek V3.2
Profile
openrouter-deepseek-deepseek-v3-2-default
Code
Config
parser_pipeline 3 запуска
success 3
Prompt
Schema
Model
OpenRouter Mistral: Mistral Small 4
Profile
openrouter-mistralai-mistral-small-2603-default
Code
Config
parser_pipeline 3 запуска
success 3
Prompt
Schema
Model
OpenRouter OpenAI: gpt-oss-120b
Profile
openrouter-openai-gpt-oss-120b-default
Code
Config

Release

0.1.9

parser_pipeline

32 запуска
success 32
Модулей
1
Первый запуск
2026-05-11 20:37
Последний запуск
2026-05-11 22:56
Создано
2026-05-11 20:40

Что изменилось

  • Маскировать email, который PDF text layer разрывает переносом строки внутри домена: хвосты адреса больше не остаются в clean text и не валят проверку ПД.
  • Не снижать качество вырезания ПД из-за безопасных `[КОНТАКТ]` или city/location-only claim’ов.
Изменены: parser_pipeline
Технические записи: 3 записи
parser_pipeline 11 запусков
success 11
Prompt
Schema
Model
OpenRouter OpenAI: gpt-oss-120b
Profile
openrouter-openai-gpt-oss-120b-default
Code
Config
parser_pipeline 11 запусков
success 11
Prompt
Schema
Model
OpenRouter DeepSeek: DeepSeek V3.2
Profile
openrouter-deepseek-deepseek-v3-2-default
Code
Config
parser_pipeline 10 запусков
success 10
Prompt
Schema
Model
OpenRouter Mistral: Mistral Small 4
Profile
openrouter-mistralai-mistral-small-2603-default
Code
Config

Release

0.1.8

parser_pipeline

1 запуск
success 1
Модулей
1
Первый запуск
2026-05-11 20:30
Последний запуск
2026-05-11 20:30
Создано
2026-05-11 20:30

Что изменилось

  • Не валить parser pipeline на безопасных PII-claims: `[EMAIL]`, `[ИМЯ]`, город, страна и гражданство не считаются утечкой, если реальные email и соцсети уже удалены.
  • Сохранить блокирующее поведение для настоящих контактов: реальные email, телефоны и соцсети по-прежнему останавливают pipeline.
Изменены: parser_pipeline
Технические записи: 1 запись
parser_pipeline 1 запуск
success 1
Prompt
Schema
Model
OpenRouter OpenAI: gpt-oss-120b
Profile
openrouter-openai-gpt-oss-120b-default
Code
Config

Release

0.1.7

parser_pipeline

146 запусков
success 146
Модулей
1
Первый запуск
2026-05-10 20:05
Последний запуск
2026-05-11 18:30
Создано
2026-05-11 08:35

Что изменилось

  • Добавить страницу `/model-stats`: количество проверок, качество, точность ПД, production time и стоимость parser-моделей в рублях.
  • Добавить каталог OpenRouter на `/model-stats`: parser-модели с поддержкой `response_format` можно добавить в profiles без правки кода.
  • Поднять reference extractor и quality comparator до `0.1.2` вместе с parser `0.1.7`.
  • Показывать качество experiment runs в `/database` и `/quality-issues` из `experiment_quality_consensus` и `experiment_quality_issues`, а не только из одиночных parser runs.
  • Не считать ошибкой качества country-only локацию, безопасные social placeholders и небольшую разницу общего опыта из-за округления.
Изменены: parser_pipeline
Технические записи: 4 записи
parser_pipeline 50 запусков
success 50
Prompt
Schema
Model
OpenRouter Mistral: Mistral Small 4
Profile
openrouter-mistralai-mistral-small-2603-default
Code
Config
parser_pipeline 48 запусков
success 48
Prompt
Schema
Model
OpenRouter OpenAI: gpt-oss-120b
Profile
openrouter-openai-gpt-oss-120b-default
Code
Config
parser_pipeline 46 запусков
success 46
Prompt
Schema
Model
OpenRouter DeepSeek: DeepSeek V3.2
Profile
openrouter-deepseek-deepseek-v3-2-default
Code
Config
parser_pipeline 2 запуска
success 2
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.6

parser_pipeline

4 запуска
success 4
Модулей
1
Первый запуск
2026-05-10 17:11
Последний запуск
2026-05-10 17:14
Создано
2026-05-10 17:13

Что изменилось

  • Промежуточная историческая module version из серии правок quality audit перед `0.1.7`; отдельного bump-коммита в git нет.
  • По коммитам этого окна поведение относится к ручной верификации quality issues, скрытию false positives и сохранению verdict’ов.
Изменены: parser_pipeline
Технические записи: 3 записи
parser_pipeline 2 запуска
success 2
Prompt
Schema
Model
OpenRouter Gemini 2.5 Flash
Profile
openrouter-google-gemini-2-5-flash-default
Code
Config
parser_pipeline 1 запуск
success 1
Prompt
Schema
Model
OpenRouter Mistral Small 3.2 24B
Profile
openrouter-mistral-small-3-2-24b-default
Code
Config
parser_pipeline 1 запуск
success 1
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.5

parser_pipeline

1 запуск
success 1
Модулей
1
Первый запуск
2026-05-10 17:02
Последний запуск
2026-05-10 17:02
Создано
2026-05-10 17:02

Что изменилось

  • Промежуточная историческая module version из серии правок quality audit перед `0.1.7`; отдельного bump-коммита в git нет.
  • По коммитам этого окна поведение относится к parser-профилям Gemini/Mistral, ручной оценке ошибок и стабилизации quality pipeline.
Изменены: parser_pipeline
Технические записи: 1 запись
parser_pipeline 1 запуск
success 1
Prompt
Schema
Model
OpenRouter Mistral Small 3.2 24B
Profile
openrouter-mistral-small-3-2-24b-default
Code
Config

Release

0.1.4

parser_pipeline

109 запусков
success 109
Модулей
1
Первый запуск
2026-05-10 15:23
Последний запуск
2026-05-10 16:51
Создано
2026-05-10 15:24

Что изменилось

  • Промежуточная историческая module version из серии правок quality audit перед `0.1.7`; отдельного bump-коммита в git нет.
  • По коммитам этого окна поведение относится к разбору проблемных quality issues и подготовке статистики моделей.
Изменены: parser_pipelineУдалены: experiment_reference_extractor, quality_comparator, reference_extractor
Технические записи: 3 записи
parser_pipeline 36 запусков
success 36
Prompt
Schema
Model
OpenRouter Mistral Small 3.2 24B
Profile
openrouter-mistral-small-3-2-24b-default
Code
Config
parser_pipeline 36 запусков
success 36
Prompt
Schema
Model
OpenRouter Gemini 2.5 Flash
Profile
openrouter-google-gemini-2-5-flash-default
Code
Config
parser_pipeline 37 запусков
success 37
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config

Release

0.1.2

experiment_reference_extractor, parser_pipeline, quality_comparator, reference_extractor

117 запусков
success 117
Модулей
4
Первый запуск
2026-05-10 13:44
Последний запуск
2026-05-11 18:29
Создано
2026-05-10 22:47

Что изменилось

  • Исправить нормализацию полей резюме на ошибках эксперимента 2: ФИО с меткой `ФИО`, дата рождения в ISO, полный список желаемых ролей, salary/current company из исходного текста и явные skills из раздела навыков.
  • Не доверять сокращённому LLM-ответу, если поле можно восстановить из raw-текста.
  • Исправить PII-redaction телефонов с неразрывными пробелами, email с кириллическим local-part, порядок имя-отчество-фамилия и компании в work-experience header.
Добавлены: quality_comparator, reference_extractorИзменены: parser_pipeline
Технические записи: 6 записей
experiment_reference_extractor 75 запусков
success 75
Prompt
Schema
Model
Reference extractor A
Profile
reference-default-a
Code
Config
parser_pipeline 34 запуска
success 34
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config
quality_comparator 2 запуска
success 2
Prompt
Schema
Model
Gemini quality evaluator B
Profile
quality-comparator-default-b
Code
Config
quality_comparator 2 запуска
success 2
Prompt
Schema
Model
GPT-4o mini quality evaluator A
Profile
quality-comparator-default-a
Code
Config
reference_extractor 2 запуска
success 2
Prompt
Schema
Model
Gemini reference extractor B
Profile
reference-default-b
Code
Config
reference_extractor 2 запуска
success 2
Prompt
Schema
Model
Reference extractor A
Profile
reference-default-a
Code
Config

Release

0.1.1

experiment_reference_extractor, parser_pipeline

188 запусков
success 188
Модулей
2
Первый запуск
2026-05-10 11:57
Последний запуск
2026-05-10 17:11
Создано
2026-05-10 11:58

Что изменилось

  • Вынести версии parser platform, parser, schema, reference extractor, quality comparator и file extractor в `src.versioning`; новые эксперименты сохраняют snapshot версии компонентов.
  • Добавить прогресс-панель эксперимента, остановку running-эксперимента, reset run results и поддержку RTF-файлов в экспериментах.
  • Улучшить эксперименты и PII-гейт: DOCX с текстом вне модели `python-docx` читается через XML fallback, PDF-сканы идут в OCR, OCR-блоки документов маскируются локально.
  • Показывать выбранные batch upload-файлы, общий счётчик файлов и version snapshot в витрине эксперимента.
  • Обновить навигацию parser lab: витрина экспериментов вынесена в левое меню, матрица эксперимента расширена под длинные названия моделей.
Удалены: file_extractor, quality_comparator, reference_extractor
Технические записи: 4 записи
experiment_reference_extractor 114 запусков
success 114
Prompt
Schema
Model
Reference extractor A
Profile
reference-default-a
Code
Config
parser_pipeline 33 запуска
success 33
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config
parser_pipeline 21 запуск
success 21
Prompt
Schema
Model
OpenRouter Mistral Small 3.2 24B
Profile
openrouter-mistral-small-3-2-24b-default
Code
Config
parser_pipeline 20 запусков
success 20
Prompt
Schema
Model
OpenRouter Gemini 2.5 Flash
Profile
openrouter-google-gemini-2-5-flash-default
Code
Config

Release

0.1.0

experiment_reference_extractor, file_extractor, parser_pipeline, quality_comparator, reference_extractor

104 запуска
success 104
Модулей
5
Первый запуск
2026-05-09 22:20
Последний запуск
2026-05-10 21:22
Создано
2026-05-10 07:22

Что изменилось

  • Добавить parser foundation: Python/FastAPI package, контракты parser platform, model profiles, run logging schema, PII-safe parser pipeline и минимальные API routes.
  • Добавить file ingestion: загрузку резюме, extractor для TXT/PDF/DOCX/DOC/RTF/image OCR, защищённое storage и single-file processing service.
  • Добавить reference extraction и quality comparator: A/B reference profiles, quality consensus, field scores, timing breakdown и trace costs.
  • Добавить UI одиночного парсинга, `/database`, `/quality-issues`, benchmark runner и API benchmark.
  • Добавить сохраняемые parser experiments: набор файлов прогоняется через 1-3 модели, можно продолжать упавшие запуски и экспортировать ошибки в Markdown.
  • Добавить live parsing UI и quality audit: pipeline status, extracted fields, Skillaz DTO, проблемные поля, expected/actual и копирование prompt’а ошибки.
  • Зафиксировать `SkillazCandidateCreateRequest v1` как целевой DTO из внутреннего parse result и request context.
  • Сохранять module versions и module runs для parser, file extractor, reference extractor и quality comparator, чтобы последующие эксперименты можно было сравнивать по версии.
Добавлены: experiment_reference_extractor, file_extractor, parser_pipeline, quality_comparator, reference_extractor
Технические записи: 9 записей
experiment_reference_extractor 16 запусков
success 16
Prompt
Schema
Model
Reference extractor A
Profile
reference-default-a
Code
Config
file_extractor 16 запусков
success 16
Prompt
Schema
Model
Profile
Code
Config
parser_pipeline 19 запусков
success 19
Prompt
Schema
Model
OpenRouter Gemini 2.5 Flash
Profile
openrouter-google-gemini-2-5-flash-default
Code
Config
parser_pipeline 17 запусков
success 17
Prompt
Schema
Model
OpenRouter Mistral Small 3.2 24B
Profile
openrouter-mistral-small-3-2-24b-default
Code
Config
parser_pipeline 24 запуска
success 24
Prompt
Schema
Model
OpenRouter GPT-4o mini baseline
Profile
openai-gpt-4o-mini-default
Code
Config
quality_comparator 3 запуска
success 3
Prompt
Schema
Model
Gemini quality evaluator B
Profile
quality-comparator-default-b
Code
Config
quality_comparator 3 запуска
success 3
Prompt
Schema
Model
GPT-4o mini quality evaluator A
Profile
quality-comparator-default-a
Code
Config
reference_extractor 3 запуска
success 3
Prompt
Schema
Model
Gemini reference extractor B
Profile
reference-default-b
Code
Config
reference_extractor 3 запуска
success 3
Prompt
Schema
Model
Reference extractor A
Profile
reference-default-a
Code
Config
Unreleased · 370 заметок
  • Parser App 0.2.0 официально поддерживает LinkedIn, загрузку файлов через приложение, Habr Career и расширенный импорт кандидатов из внешних источников.
  • Поднять версии parser runtime, parser package и browser extension до `0.2.0`, чтобы backend metadata, popup и manifest показывали единый публичный релиз.
  • Для HeadHunter sourcing добавить сортировку оценённых кандидатов в правом drawer: рекрутер может показывать зелёные, жёлтые и красные карточки, а список перестраивается целыми HH-карточками от сильных к слабым.
  • HeadHunter vacancy-first открывает выбор вакансии и требования справа как drawer, чтобы панель Skillaz не перекрывала список кандидатов.
  • HeadHunter vacancy-first после выбора вакансии показывает summary, критерии, источники требований и предупреждения, чтобы рекрутер видел параметры оценки до запуска проверки кандидатов.
  • HeadHunter vacancy-first оценка теперь берёт требования выбранной вакансии из `Data.ExtraData.dop_ai`, дополняя их `dop`, `Comment` и городом из raw Skillaz vacancy payload.
  • Добавлен безопасный debug endpoint `/parser/skillaz/vacancies/{vacancy_id}/raw-schema`, который показывает дерево raw-полей вакансии Skillaz с типами, но без значений.
  • Зафиксирована design spec для explainable HeadHunter vacancy match: оценка кандидата должна строиться по требованиям выбранной вакансии, публикации и AI-полям Skillaz, а score должен возвращаться с критериями, за/против, missing requirements, risks и confidence.
  • Добавлен vacancy-first режим для HeadHunter: расширение встраивает Skillaz блок на страницы HH, выбранная вакансия запускает оценку кандидатов, а загрузка в Skillaz идёт из сохранённой локальной candidate card.
  • Добавлен endpoint `/parser/sources/headhunter/resume-match`, который создаёт или обновляет HH candidate card, сохраняет match под выбранную вакансию и возвращает компактную оценку для UI на странице HH.
  • Поднять версию browser extension до `0.1.18`, чтобы manifest, popup и bridge показывали релиз с HH vacancy-first sourcing.
  • Для structured import HeadHunter добавлять детерминированные инсайты по активности, контактам, логистике, предпочтениям, достижениям, уровню и sales-сигналам в карточку popup и текст резюме.
  • Для structured import HeadHunter отправлять `hh_resume_id` в Skillaz `ExternalIds` с типом `headhunter_resume_id`.
  • Для structured import HeadHunter добавлять в текст резюме полезные поля HH, которым нет отдельного места в Skillaz: контактный статус, доступ к полной информации, формат работы, варианты занятости/графика, портфолио, рекомендации, водительские права и другие recruiter-facing детали.
  • Для structured import HeadHunter сохранять и показывать recruiter-facing metadata: обновление резюме, статус поиска, район/метро, занятость, график, переезд, командировки, гражданство, сертификаты и диагностику unmapped HH fields.
  • Для structured import HeadHunter добавлять признак скрытых контактов: `contacts.contact_hidden` в карточке и `CommonCandidateInfo.ContactsHidden` в payload для Skillaz.
  • Добавить structured import HeadHunter: расширение передаёт resume id на backend, Parser App забирает JSON через HH API и сразу показывает карточку кандидата без DOM-парсинга и LLM pipeline.
  • Во время проверки LinkedIn-профиля popup сразу показывает предупреждение о долгом сборе страницы и ротирует короткие факты про рынок найма в России.
  • Поднять версию browser extension до `0.1.17`, чтобы popup и bridge показывали релиз с LinkedIn-подсказкой во время проверки страницы.
  • HeadHunter vacancy-first теперь показывает короткое summary вакансии в списке выбора, чтобы похожие Product Manager-вакансии отличались по смыслу требований.
  • HeadHunter vacancy-first теперь показывает в списке вакансий короткий id, город, ответственного и preview требований, чтобы дубли Skillaz-вакансий не выглядели одинаково.
  • HeadHunter vacancy-first теперь показывает полный текст требований Skillaz без обрезанных строк и не применяет жёсткие Product Manager-фильтры к роли продуктового инженера с vibe-coding.
  • Расширение больше не считает обычные страницы с email и телефоном резюме, если на странице нет разделов опыта, образования или навыков.
  • HeadHunter sourcing sorting теперь умеет менять направление сильные сверху / слабые сверху и при фильтрации убирает целую HH-карточку, а не оставляет пустой контейнер в списке; перед применением drawer-контролов расширение повторно находит текущие HH-карточки после перерисовки списка, сопоставляет резюме по id при изменении query params и выбирает внешний wrapper карточки. Блок сортировки показывается только на витрине кандидатов, а не на отдельной странице резюме. Сортировка идёт по score внутри цветов, а `unknown` с числовым score раскладывается в зелёный, жёлтый или красный уровень вместо отдельной серой категории. Если сохранённый `level` конфликтует со score, UI считает score главным источником цвета кандидата. Статус `duplicate` больше не перекрашивает score-карточку в серый.
  • HeadHunter structured import теперь делает `ResumeText` читаемым: bullet-описания в `О себе` и опыте работы попадают в Skillaz с переносами строк, а не одной длинной склейкой.
  • HeadHunter hidden submit подставляет для скрытого ФИО нейтральное имя `Скрытый кандидат`, потому что Skillaz API требует `FirstName` и `LastName`, а отдельного API-флага для скрытия имени в OpenAPI нет.
  • Поднять версии parser runtime до `0.1.48` и parser package до `0.1.26`, чтобы backend metadata показывала релиз с neutral hidden name для HH-submit.
  • HeadHunter hidden submit снова отправляет технический `Email`, потому что Skillaz API требует email так же, как телефон; контакт остаётся скрытым через `ContactsHidden=true`.
  • Поднять версии parser runtime до `0.1.47` и parser package до `0.1.25`, чтобы backend metadata показывала релиз с обязательным hidden email для HH-submit.
  • HeadHunter hidden submit снова отправляет технический `PhoneNumber`, потому что Skillaz API требует телефон, но вместе с `ContactsHidden=true`, чтобы контакт оставался скрытым.
  • Поднять версии parser runtime до `0.1.46` и parser package до `0.1.24`, чтобы backend metadata показывала релиз с обязательным hidden phone для HH-submit.
  • HeadHunter hidden submit больше не отправляет пустые `FirstName` и `LastName`: реальные имена сохраняются, а скрытые HH-псевдо-имена заменяются техническими обязательными полями с hidden email и hidden phone.
  • Поднять версии parser runtime до `0.1.45` и parser package до `0.1.23`, чтобы backend metadata показывала релиз с обязательным ФИО для hidden HH-submit.
  • HeadHunter structured import теперь считает кандидата скрытым, если HH не отдаёт полную информацию или контакты даже без `hidden_fields`; такие кандидаты не получают технические email/телефон и псевдо-имя `headhunter`.
  • Поднять версии parser runtime до `0.1.44` и parser package до `0.1.22`, чтобы backend metadata показывала релиз с распознаванием скрытых HH-контактов без `hidden_fields`.
  • HeadHunter structured submit больше не генерирует технические email и телефон для кандидатов со скрытыми контактами: при `ContactsHidden=true` в Skillaz уходит `Email=None`, `PhoneNumber=None` и сам флаг скрытых контактов.
  • HeadHunter hidden candidates больше не отправляют в Skillaz псевдо-имена из закрытого поля `names_and_photo`; старые сохранённые технические email и телефоны также очищаются перед submit.
  • Поднять версии parser runtime до `0.1.43`, parser package до `0.1.21` и browser extension до `0.1.58`, чтобы свежий fix скрытых HH-контактов было видно в backend metadata, manifest, popup и extension bundle.
  • HeadHunter vacancy-first больше не отдаёт относительный `icons/logo-icon.svg` при недоступном Chrome runtime: логотипы используют inline SVG fallback и не провоцируют 404 на `hh.ru/search/icons/logo-icon.svg`.
  • Поднять версию browser extension до `0.1.57`, чтобы manifest, popup и bridge показывали релиз с безопасным fallback для логотипа Skillaz.
  • HeadHunter vacancy-first на общей выдаче теперь держит Skillaz action-кнопку внутри блока оценки, а сама карточка ближе к визуальному стилю резюме HH: мягче рамка, меньше отдельной тени и компактнее сетка объяснений.
  • Поднять версию browser extension до `0.1.56`, чтобы manifest, popup и bridge показывали релиз с обновлённым дизайном блока оценки на выдаче HH.
  • HeadHunter vacancy-first на общей выдаче больше не показывает красную кнопку `Загрузить в Skillaz` при ошибке оценки вроде invalidated extension context: action остаётся disabled и переходит в нейтральное состояние `Недоступно`.
  • Поднять версию browser extension до `0.1.55`, чтобы manifest, popup и bridge показывали релиз с нейтральным failed action на выдаче HH.
  • HeadHunter vacancy-first action-кнопка на отдельной странице резюме теперь визуально встроена внутрь карточки оценки: wrapper стал relative, кнопка стоит overlay в правом верхнем углу, а карточка резервирует место под неё.
  • Поднять версию browser extension до `0.1.54`, чтобы manifest, popup и bridge показывали релиз со встроенной action-кнопкой wide-блока.
  • HeadHunter vacancy-first wide-блок оценки на отдельной странице резюме стал компактнее: карточка получила desktop-сетку для объяснений, мягкий section style, а action-кнопка теперь стоит справа внутри общего блока.
  • Поднять версию browser extension до `0.1.53`, чтобы manifest, popup и bridge показывали релиз с приведённым в порядок UI wide-блока оценки.
  • HeadHunter vacancy-first на отдельной странице резюме больше не использует `sticky-sidebar-helper`: оценка и кнопка Skillaz вставляются в общий блок на всю ширину после основного блока резюме в main column HeadHunter.
  • Поднять версию browser extension до `0.1.52`, чтобы manifest, popup и bridge показывали релиз с отказом от sidebar-вставки на странице резюме.
  • HeadHunter vacancy-first теперь ищет вложенную визуальную карточку внутри `sticky-sidebar-helper`, а не только прямого ребёнка helper; это удерживает Skillaz-оценку в ширине блока Комментарии на отдельной странице резюме.
  • Поднять версию browser extension до `0.1.51`, чтобы manifest, popup и bridge показывали релиз с вложенным измерением правого sidebar.
  • HeadHunter vacancy-first теперь измеряет ширину sidebar-виджета по первому реальному блоку внутри `sticky-sidebar-helper`, а не по helper-контейнеру: карточка оценки выравнивается с правой колонкой HH и не распирает layout.
  • Поднять версию browser extension до `0.1.50`, чтобы manifest, popup и bridge показывали релиз с точным измерением ширины sidebar-виджета.
  • HeadHunter vacancy-first больше не вставляет виджет внутрь `sticky-sidebar-helper`: карточка снова монтируется рядом с helper, но получает измеренную ширину правой колонки, чтобы не разрывать страницу и не ломать sticky-расчёты HeadHunter.
  • Поднять версию browser extension до `0.1.49`, чтобы manifest, popup и bridge показывали hotfix ширины sidebar-виджета без изменения sticky-helper.
  • HeadHunter vacancy-first теперь вставляет карточку оценки внутрь `sticky-sidebar-helper`, а не sibling рядом с ним; это удерживает виджет в ширине правой колонки и не ломает grid-layout отдельной страницы резюме.
  • Поднять версию browser extension до `0.1.48`, чтобы manifest, popup и bridge показывали релиз с фиксом ширины sidebar-виджета.
  • HeadHunter vacancy-first больше не remount'ит уже вставленные sidebar-виджеты при повторном сканировании страницы после клика `Оценить`; это убирает self-triggered mutation loop, из-за которого страница могла обрезаться и зависать в бесконечной оценке.
  • Поднять версию browser extension до `0.1.47`, чтобы manifest, popup и bridge показывали релиз с защитой от повторного remount sidebar-виджетов.
  • Parser App HeadHunter endpoints теперь принимают ссылки резюме с региональных доменов вроде `spb.hh.ru`; backend больше не отклоняет оценку кандидата ошибкой `URL host is not hh.ru`.
  • Поднять версию parser platform до `0.1.20`, чтобы backend-релиз отражал поддержку региональных доменов HeadHunter.
  • HeadHunter vacancy-first теперь работает на региональных доменах HH вроде `spb.hh.ru`: content script инжектится на `*.hh.ru`, а внутренние guards принимают страницы поиска и отдельные страницы резюме на поддоменах.
  • Поднять версию browser extension до `0.1.46`, чтобы manifest, popup и bridge показывали релиз с поддержкой региональных доменов HeadHunter.
  • HeadHunter vacancy-first больше не игнорирует удаление Skillaz-виджетов из DOM: если HH перерисовал sidebar и выкинул карточку оценки, расширение снова сканирует страницу и вставляет виджет обратно.
  • Поднять версию browser extension до `0.1.45`, чтобы manifest, popup и bridge показывали релиз с восстановлением виджетов после rerender sidebar.
  • HeadHunter vacancy-first больше не падает на старых вкладках HH, если Chrome инвалидировал `chrome.storage` или `chrome.runtime.sendMessage` после перезагрузки расширения.
  • Поднять версию browser extension до `0.1.44`, чтобы manifest, popup и bridge показывали релиз с полным guard для invalidated extension context.
  • HeadHunter vacancy-first на отдельной странице резюме теперь переносит Skillaz action-кнопку под карточку оценки в правом sidebar, а не оставляет её в нижнем action row HH.
  • Поднять версию browser extension до `0.1.43`, чтобы manifest, popup и bridge показывали релиз с переносом action-кнопки под sidebar-оценку.
  • HeadHunter vacancy-first больше не падает на старой вкладке HH после перезагрузки расширения, если `chrome.runtime.getURL` отдаёт `Extension context invalidated`.
  • Поднять версию browser extension до `0.1.42`, чтобы manifest, popup и bridge показывали релиз с фиксом invalidated runtime при рендере логотипов.
  • Поднять версию browser extension до `0.1.41`, чтобы manifest, popup и bridge показывали релиз с переносом Skillaz-оценки резюме в sidebar.
  • HeadHunter vacancy-first на отдельной странице резюме теперь вставляет Skillaz-оценку в правый sidebar после sticky-sidebar helper.
  • HeadHunter vacancy-first больше не падает, если HH запускает content script до стабильного `document.body` на странице резюме.
  • HeadHunter vacancy-first больше не падает, если HH отрывает DOM-узел для layout-style во время загрузки страницы резюме.
  • HeadHunter vacancy-first больше не падает на старте, если content script запускается до появления `document.head` на странице резюме.
  • HeadHunter vacancy-first теперь встраивает оценку и Skillaz action в отдельную страницу резюме HH, а не добавляет виджеты в конец `body`.
  • HeadHunter vacancy-first launcher tooltip теперь открывается в свободную сторону после перетаскивания кнопки и стал компактнее.
  • HeadHunter vacancy-first launcher теперь по умолчанию стоит над HH-чатами и стрелкой вверх, перетаскивается по экрану и сохраняет позицию в storage расширения.
  • HeadHunter vacancy-first drawer снова получил боковую тень, а launcher использует тот же жёлтый цвет, что и логотип Skillaz.
  • HeadHunter vacancy-first launcher перенесён на правый край страницы выше HH-виджетов, чтобы открытие drawer совпадало с направлением действия.
  • HeadHunter vacancy-first после завершения оценки возвращает кнопку `Оценить` из состояния `Оцениваем`, не выключая автосканирование новых карточек.
  • HeadHunter vacancy-first drawer больше не показывает пустую полосу под поиском вакансии, а кнопка закрытия получила центрированную icon-разметку.
  • HeadHunter vacancy-first drawer при открытии теперь стартует из нулевой ширины и раскрывается тем же transition, что и сдвиг страницы HH.
  • HeadHunter vacancy-first drawer при закрытии теперь схлопывает окно по ширине синхронно с обратным сдвигом страницы, без мигания в конце.
  • HeadHunter vacancy-first drawer при закрытии по крестику и Escape теперь ждёт обратный сдвиг страницы и только потом возвращается в launcher.
  • HeadHunter vacancy-first drawer больше не анимирует выезд отдельно от HH страницы: открытие выглядит как единый сдвиг страницы без рассинхрона.
  • HeadHunter vacancy-first drawer теперь открывается с той же скоростью, что и сдвиг страницы, а выбранная вакансия, параметры оценки и кнопка `Оценить` больше не растягиваются по высоте.
  • HeadHunter vacancy-first drawer теперь резервирует правый отступ на уровне всей страницы HH, чтобы фильтры и результаты двигались вместе.
  • HeadHunter vacancy-first drawer теперь сжимает общий контейнер страницы с результатами, а не только верхнюю панель фильтров HH.
  • HeadHunter vacancy-first больше не падает на старте, если Chrome storage недоступен или контекст расширения устарел: расширение использует default config, а entrypoint логирует понятную ошибку запуска вместо голого `headhunterSourcingEntry.js:2`.
  • HeadHunter vacancy-first после повторной оценки восстанавливает сохранённый `skillaz_status` candidate card и сразу показывает `Посмотреть в Skillaz` для уже добавленных кандидатов на выбранной вакансии.
  • HeadHunter vacancy-first показывает `Посмотреть в Skillaz` как компактную secondary-кнопку с обводкой, hover/focus-состояниями и выравниванием по ряду действий HH.
  • HeadHunter vacancy-first задаёт Skillaz action-кнопкам фиксированную высоту `32px`, чтобы `Посмотреть в Skillaz` совпадала с высотой кнопок HH, а `Загрузить в Skillaz` стала менее акцентной soft-blue кнопкой.
  • HeadHunter vacancy-first возвращает Skillaz action-кнопкам нормальную высоту `40px`: кнопки больше не выглядят мелкими, а сниженная акцентность остаётся за счёт soft-blue оформления.
  • Поднять версию browser extension до `0.1.40`, чтобы manifest, popup и bridge показывали релиз с нормальной высотой Skillaz action-кнопок.
  • Поднять версию browser extension до `0.1.39`, чтобы manifest, popup и bridge показывали релиз с выравниванием Skillaz action-кнопок.
  • Поднять версию browser extension до `0.1.38`, чтобы manifest, popup и bridge показывали релиз с обновлённой кнопкой `Посмотреть в Skillaz`.
  • Поднять версию browser extension до `0.1.37`, чтобы manifest, popup и bridge показывали релиз с восстановлением статуса уже добавленных HH кандидатов.
  • Поднять версию browser extension до `0.1.36`, чтобы manifest, popup и bridge показывали релиз с фиксом запуска HH sourcing.
  • HeadHunter vacancy-first после загрузки кандидата меняет кнопку карточки на ссылку `Посмотреть в Skillaz` на конкретную карточку кандидата.
  • Повторная отправка уже добавленной candidate card на ту же вакансию больше не создаёт новый запрос в Skillaz: Parser App возвращает сохранённый `skillaz_candidate_id`, а UI показывает состояние `Уже добавлен в Skillaz`.
  • Popup больше не предлагает повторно отправить candidate card, если она уже была добавлена в Skillaz на выбранную вакансию.
  • Поднять версию browser extension до `0.1.35`, чтобы manifest, popup и bridge показывали релиз с ссылкой на загруженного кандидата.
  • HeadHunter vacancy-first теперь использует `icons/logo-icon.svg` в launcher и header панели Skillaz, а manifest открывает этот SVG для injected UI на страницах HH.
  • Поднять версию browser extension до `0.1.34`, чтобы manifest, popup и bridge показывали релиз с исправленным логотипом Skillaz.
  • HeadHunter vacancy-first использует новые пороги match score: `85%+` — зелёная рекомендация загрузить, `51–84%` — проверить, `50% и ниже` — не рекомендуем.
  • Поднять версию browser extension до `0.1.33`, чтобы manifest, popup и bridge показывали релиз с новыми порогами оценки.
  • Кнопка загрузки HeadHunter кандидата в Skillaz теперь использует `icons/logo-icon.svg` из расширения вместо текстовой буквы.
  • HeadHunter vacancy-first больше не переносит кнопку Skillaz в другой ряд при повторном сканировании карточки: если host уже стоит в native action row, он остаётся там и только переупорядочивается последним.
  • Поднять версию browser extension до `0.1.32`, чтобы manifest, popup и bridge показывали релиз с настоящим лого и стабильным placement кнопки.
  • HeadHunter vacancy-first теперь ищет native action row вверх по карточке HH, чтобы кнопка Skillaz вставала последней рядом с `Открыть контакты` и `Комментарии`, а не отдельной строкой над ними.
  • Кнопка загрузки HeadHunter кандидата в Skillaz теперь показывает компактное лого Skillaz перед текстом.
  • Поднять версию browser extension до `0.1.31`, чтобы manifest, popup и bridge показывали релиз с исправленным placement кнопки Skillaz.
  • HeadHunter vacancy-first теперь вставляет блок оценки внутрь карточки резюме HH, а кнопку загрузки в Skillaz добавляет в native action row рядом с кнопками HH.
  • Поднять версию browser extension до `0.1.30`, чтобы manifest, popup и bridge показывали релиз с inline-встраиванием в карточку HH.
  • HeadHunter vacancy-first теперь показывает explainable score прямо в candidate widget: причины оценки, недостающие требования и риски, а цветовая индикация оценки стала зелёной, жёлтой и красной вместо синей.
  • HeadHunter product match больше не завышает score только за Product title и общий стаж: обязательный B2B SaaS / enterprise / HRTech контекст и product ownership теперь ограничивают верхнюю оценку.
  • Поднять версию browser extension до `0.1.29`, чтобы manifest, popup и bridge показывали релиз с explainable HH vacancy-first scoring.
  • HeadHunter vacancy-first оценка больше не вставляет служебные виджеты внутрь React-карточек HH, чтобы запуск оценки не ломал страницу поиска резюме ошибками React 418/423.
  • HeadHunter vacancy-first launcher перенесён в левый нижний угол как круглая жёлтая кнопка с подсказкой, а прокрутка параметров оценки теперь ограничена текстовым блоком требований вместо всей панели.
  • HeadHunter vacancy-first overlay больше не перекрывает страницу постоянно: панель Skillaz стартует свернутой, а оценка кандидата встраивается внутрь карточки резюме без floating-позиционирования.
  • HeadHunter vacancy match теперь снижает оценку B2C product background, если в требованиях обязательны B2B SaaS, enterprise, HRTech или ATS, и показывает до 8 критериев оценки в overlay.
  • HeadHunter vacancy assessment preview больше не дублирует требования: если критерии распознаны, overlay показывает список без обрезанного summary над ним.
  • HeadHunter vacancy assessment preview больше не показывает HTML-теги и inline styles из Skillaz `dop_ai`; требования очищаются до читаемого текста, а источники в блоке оценки отображаются компактными тегами.
  • Исправить сборку HeadHunter vacancy-first content script: manifest-файл `headhunterSourcingEntry.js` больше не содержит ESM `import` и запускается Chrome как обычный content script.
  • Поднять версию browser extension до `0.1.20`, чтобы manifest, popup и bridge показывали релиз с исправленной сборкой HH sourcing entry.
  • Исправить падение HeadHunter vacancy-first блока на страницах поиска резюме: расширение больше не ищет вставленные карточки через CSS selector с полным URL резюме.
  • Поднять версию browser extension до `0.1.19`, чтобы manifest, popup и bridge показывали релиз с фиксом HH sourcing overlay.
  • Для добавления кандидатов из HeadHunter в Skillaz больше не отправлять русские HH labels в строгие enum-поля `EmploymentType`, `ScheduleType` и `EducationType`; валюту HH `RUR` нормализовать в `RUB`.
  • Для structured import HeadHunter считать контакты скрытыми, если HH вернул `null` в `contact[].value` или `contact[].contact_value` без явного `hidden_fields`.
  • Кнопка `Сообщить об ошибке` в готовой карточке кандидата теперь сразу отправляет багрепорт с parser context и показывает inline-подтверждение без отдельной формы.
  • В багрепорт из документации popup добавлять текущую вкладку браузера, чтобы GitHub issue сразу показывал страницу, на которой пользователь столкнулся с проблемой.
  • После отправки багрепорта показывать пользователю обычное сообщение об успешной отправке без ссылки на внутренний GitHub issue.
  • Ужесточить определение резюме на обычных страницах: отдельные слова вроде `experience`, `education`, `skills`, email и телефон больше не превращают маркетинговую страницу в найденное резюме.
  • Поднять версию browser extension до `0.1.16`, чтобы popup и bridge показывали релиз с отправкой багрепортов.
  • Не обрезать LinkedIn detail-секции `Experience`, `Skills` и другие, если LinkedIn вставил перед контентом счётчик контактов профиля.
  • Не принимать LinkedIn headline с запятой за локацию: роли вроде `Motion Designer, 3d Designer` теперь сохраняются как текущая должность, а списки контактов LinkedIn не попадают в `Other profile text`.
  • Исправлять ссылки соцсетей с одной косой чертой после схемы: `https:/runwayer.com/` теперь уходит в Skillaz как `https://runwayer.com/` с названием `runwayer.com`, а не как `http://https/runwayer.com/`.
  • Не добавлять LinkedIn-подтверждения навыков вроде `Подтверждения навыков от участника...` в список навыков кандидата.
  • Показывать домен неизвестного сайта в `SocialMediaName` вместо `Другое`: личные сайты из LinkedIn теперь уходят в Skillaz с читаемым названием.
  • Убрать системные поля `Файл` и `Статус` с экрана `Парсим резюме` в popup: во время обработки рекрутер видит только понятную стадию и прогресс.
  • Показывать кнопку `Другой кандидат` сразу после состояния `Найдено резюме`, чтобы можно было отказаться от найденной страницы до отправки в Parser App.
  • Расширить документацию popup расширения по поддерживаемым источникам: файлы, HeadHunter, LinkedIn, Habr Career, fallback для обычных страниц и ограничения теперь описаны отдельно, а changelog показывает историю версий расширения от `0.1.0` до `0.1.15` с датами и описаниями.
  • Исправить модалки popup расширения: документация и changelog больше не открываются обрезанными, а кнопка документации использует нормальную иконку вместо текстовой `i`.
  • Поднять версию browser extension до `0.1.15`, чтобы popup и bridge показывали номер текущей сборки после UX-обновления.
  • Чистить новые false positives LLM-аудита по уже заполненным рекомендациям, языкам и country-only city, а также не брать LinkedIn `Location` из строк должностей и навыков.
  • Разделить запуск `/parser/extension-tests` на новые, проблемные и полный перезапуск, чтобы случайно не прогонять все LinkedIn-профили заново.
  • Отфильтровать ложные issues LLM-аудита по inferred skills, уже покрытому опыту и уже найденным телефонам, а также не брать имя и город LinkedIn из skill-like и служебных строк.
  • Пересобирать summary LLM-аудита после фильтрации false positive issues и доставать рекомендации LinkedIn из исходного блока, если LLM-парсер их пропустил.
  • Выбирать город и страну через единый backend location resolver: `Location` из источника теперь сильнее LLM-догадки, а должности и headline больше не отправляются в Skillaz как город.
  • Проверять навыки и образование в LLM-аудите по наличию и смысловому покрытию блоков, а не по количеству пунктов, запятым и формату.
  • Сохранять рекомендации LinkedIn в Skillaz payload, не принимать headline за город кандидата и разделять навыки LinkedIn, склеенные через `•`.
  • Разделить `/parser/extension-tests` на сохранение snapshot и отдельную backend-обработку, чтобы прогресс LinkedIn-прогона обновлялся по этапам, а аудит показывал оценку соответствия рядом со списком проблем.
  • Готовить LinkedIn detail-страницу к extraction только один раз на URL: retry теперь повторяет чтение DOM без новой прокрутки страницы на каждой попытке.
  • Сделать подготовку LinkedIn-страницы best-effort: timeout подготовки больше не валит extraction целиком, а сама прокрутка стала короче для inactive tabs.
  • Ограничить подготовку LinkedIn-страницы в расширении по времени и убрать зависимость от `requestAnimationFrame`, чтобы inactive tab не зависал до bridge timeout и закрывался после ошибки.
  • Переиспользовать временную LinkedIn-вкладку в `/parser/extension-tests` для сбора contact/details-страниц вместо открытия дополнительной фоновой вкладки на каждого кандидата.
  • Перед чтением LinkedIn-профилей и detail-страниц расширение теперь ждёт основной контент и прокручивает страницу, чтобы лениво отрисованные секции `skills`, `experience`, `education`, `certifications` и `recommendations` попадали в extraction pipeline.
  • Добавить отправку багрепортов из popup расширения: из документации, состояния `Не найдено`, ошибок и карточки кандидата можно описать проблему, а расширение приложит браузер, время, страницу, результат парсинга и trace.
  • Добавить в popup расширения changelog по клику на версию, текстовую документацию, inline-состояние `Не найдено` для проверки страницы и скрытие debug details вне dev-сборки.
  • Добавить в Parser App раздел `/parser/extension-tests` для тестового пайплайна LinkedIn: список профилей, запуск расширения, обработка через парсер, trace/fix prompt и статусы попыток.
  • Добавить в Parser App безопасную `trace.debug`-диагностику LinkedIn-контактов: счётчики PII и маркеры входного текста без самих email и телефонов.
  • Показывать `trace.debug`-диагностику LinkedIn прямо в карточке кандидата Parser App, чтобы не искать её вручную в JSON.
  • Показывать версию загруженного browser extension в popup, чтобы сразу видеть, какая локальная сборка реально запущена в Chrome.
  • Добавить парсинг профилей LinkedIn из browser extension: расширение распознаёт страницы `/in/...`, собирает чистый профильный текст по секциям, передаёт ссылку на профиль, внешние ссылки и профильное фото в текущий Parser App flow.
  • Загружать резюме HeadHunter через backend HH API adapter: расширение распознаёт страницу HH, скачивает документ через Parser App и оставляет ручной fallback на видимый текст страницы.
  • Передавать в Skillaz заглушку `Рыбный текст` в кастомное поле кандидата `ai-judge` через `Data.ExtraData`.
  • Извлекать несколько фото кандидата из DOM-страницы расширения, давать выбрать нужный снимок перед отправкой страницы, сохранять URL в parser payload и выводить снимок в карточке кандидата Parser App.
  • Добавить в Parser App переключатель одиночного и массового импорта: одиночный режим принимает один файл, массовый принимает пачку файлов или ZIP, показывает очередь обработки и отправляет готовые резюме в Skillaz пакетом.
  • Добавить в Parser App отправку карточки кандидата в Skillaz: после парсинга можно выбрать открытую вакансию, отправить кандидата через backend proxy и увидеть статус создания или дубликата прямо в модальном окне.
  • Показывать диагностические данные дедупликации Skillaz в карточке кандидата: raw `DuplicateDecisionInfo` и список ключей ответа API.
  • Показывать результат отправки кандидата в Skillaz отдельным уведомлением и открывать модальное окно с деталями дубликата, если Skillaz вернул `DuplicateDecisionInfo`.
  • Добавить в модальное окно дубля Skillaz действие перевода существующего кандидата на выбранную вакансию без создания нового кандидата.
  • Добавить явный сценарий обновления дубля Skillaz: рекрутер выбирает, прикреплять ли найденного кандидата к текущей вакансии, обновлять ли карточку без смены вакансии и какие конфликтующие поля оставить.
  • Дособирать профили LinkedIn из фоновых страниц `/details/skills/`, `/details/experience/`, `/details/education/`, `/details/certifications/` и `/details/recommendations/`, чтобы карточка кандидата получала полные секции вместо урезанного текста основной страницы.
  • Открывать результат Parser App в двухпанельном модальном окне: слева исходный документ резюме, справа подробная карточка кандидата со всеми распознанными секциями.
  • Сделать карточку кандидата в модальном окне Parser App ближе к ATS-странице: шире модалка, больше места под исходник, отдельные белые секции и шапка кандидата с аватаром-заглушкой.
  • Конвертировать исходные резюме Parser App в PDF для предпросмотра в модалке, включая текстовые файлы и изображения.
  • Добавить PDF.js-просмотрщик в модалку Parser App и подсвечивать жёлтым прямые совпадения полей карточки в текстовом слое резюме.
  • Завендорить PDF.js локально, чтобы просмотр резюме в Parser App не зависел от CDN в runtime.
  • Детализировать быстрый pipeline Parser App: PII, маскирование компаний, запрос к LLM, получение ответа, восстановление компаний и сборка карточки теперь идут отдельными стадиями прогресса.
  • Показывать в upload-круге Parser App итог парсинга с галочкой или ошибкой и открывать карточку кандидата только по кнопке `Посмотреть резюме`.
  • Перенести статус, проценты, progress bar и компактный список файлов Parser App внутрь upload-круга во время обработки.
  • Показывать в центральном круге Parser App среднее время парсинга выбранной модели по последним 30 успешным прогонам экспериментатора.
  • Перевести upload-круг Parser App в рабочий режим после загрузки: скрывать стартовый текст, показывать прогресс, стадию, счётчик файлов и расчёт оставшегося времени внутри круга.
  • Добавить внутреннюю страницу `/parser/database` для карточек, созданных Parser App, чтобы модуль не отправлял рекрутера в общую базу экспериментов.
  • Заменить системный выбор модели в Parser App на кастомный dropdown, чтобы меню не выбивалось из интерфейса на macOS.
  • Сортировать модели Parser App по рейтингу, показывать точность в списке и брать только активные parser-модели, добавленные в экспериментатор.
  • Разрешить выбирать больше 3 моделей при создании parser experiment и заменить селекты на карточки моделей с метриками, рейтингом и защитой от повторного выбора.
  • Добавить рейтинг в карточки добавленных parser-моделей и сортировать общий каталог по нему.
  • Добавлен рейтинг parser-моделей с постаментом топ-3: качество последних проверок, стоимость и время теперь собираются в один понятный score.
  • Добавить пиксельный hamster favicon для Parser Lab и Parser Agent.
  • Добавить ссылку `/agent` в левую навигацию Parser Lab.
  • Привести Parser Agent к визуальному стилю Parser Lab и заменить журнал на timeline-диалог Хранителя Парсера с живыми heartbeat-событиями.
  • Добавить экран `/quality-progress` с историей verified quality score: общий график сгруппирован по 20 проверок, графики моделей — по 10.
  • Добавить в Parser App ручной LLM-аудит карточки кандидата: модель сравнивает исходный текст, поля парсера и Skillaz API payload, но не меняет результат парсинга автоматически.
  • Добавить LLM-аудит парсинга в popup расширения, чтобы проверять полноту карточки сразу после разбора страницы кандидата.
  • Показывать в выборе Skillaz все доступные пользователю вакансии, а вакансии текущего исполнителя поднимать в начало списка.
  • Поднять версию основного LLM prompt парсера до `parser_prompt.v3` для новых parser app запусков и профилей, добавляемых из OpenRouter/Yandex catalog.
  • Переформатировать поля парсера в popup расширения: показывать понятные русские названия, навыки облачками, а опыт, образование и языки отдельными структурными секциями.
  • Показывать pipeline LLM-аудита в popup расширения, чтобы долгий запрос к ИИ не выглядел как зависшая проверка.
  • Поднять browser extension до `0.1.11` и добавить в debug test pipeline диагностику LinkedIn detail collection: какие секции запрошены, собраны, пропущены, сколько было попыток и символов по каждой секции.
  • Не принимать stale contact overlay LinkedIn за готовые `/details/...` секции в test pipeline расширения, чтобы опыт, образование и навыки не терялись при SPA-навигации.
  • Не превращать кириллический LinkedIn slug в мусорную ссылку `https://linkedin.com/in/in` при сборке social media из текста профиля.
  • Локализовать LinkedIn extension test UI на русский, показывать summary LLM-аудита прямо в таблице попыток и добавить скачивание полного audit report по всему запуску.
  • Запускать реальный LLM quality audit в LinkedIn extension test pipeline вместо временной заглушки `Audit skipped for MVP`, чтобы результат теста получал оценку потерь парсинга.
  • Дожидаться содержательного DOM на фоновых LinkedIn `/overlay/contact-info/` и `/details/...` страницах в test pipeline расширения, чтобы Parser App не получал огрызок профиля только с именем и контактами.
  • Восстанавливать последний LinkedIn test run после перезагрузки страницы `/parser/extension-tests`, чтобы завершённые попытки и outputs не исчезали из UI.
  • Показывать результаты LinkedIn test pipeline в UI: карточку кандидата, parser batch, extracted text, parsed resume, Skillaz payload, LLM audit и fix prompt вместо одного финального `trace_ready`.
  • Заворачивать content script test bridge в отдельную block scope, чтобы повторная инъекция в Яндекс Браузере не падала с `Identifier has already been declared` до установки listener.
  • Сохранять версию расширения и debug ответа bridge в trace тестового пайплайна LinkedIn, а отсутствие bridge определять быстрым ping перед extraction вместо долгого неинформативного timeout.
  • Подключать test bridge расширения к локальному Parser App на любом `localhost`/`127.0.0.1` порту, чтобы тесты LinkedIn не падали по таймауту в Codex Browser.
  • Принимать LinkedIn-профили с Unicode slug в тестовом пайплайне расширения.
  • Разрешить тестовому bridge расширения работать с локальным Parser App на `127.0.0.1:8000`, чтобы browser smoke не зависел от резолва `localhost`.
  • Отправлять LinkedIn-кандидатов из расширения в Skillaz со способом добавления `search`, а остальных кандидатов оставлять `manual`.
  • Не дублировать ссылку источника в `CommonCandidateInfo.SocialMedia`, если она уже отправлена в `SourceUrl`.
  • Отправлять LinkedIn-кандидатов в Skillaz с отдельным источником `SKILLAZ_LINKEDIN_SF_SOURCE_ID`, если он задан.
  • Разрешить строковый ключ `SKILLAZ_LINKEDIN_SF_SOURCE_ID`, чтобы источник LinkedIn можно было передавать как `Linkedin`.
  • Не принимать LinkedIn-блоки рекомендаций вроде `Люди в регионе ...` за имя, город или текст профиля кандидата.
  • Убирать дубли LinkedIn-ссылок из `social_media` в нормализованном результате парсинга.
  • Требовать числовой `SKILLAZ_LINKEDIN_SF_SOURCE_ID`, потому что Skillaz принимает `SfSource` только как Integer.
  • Подписывать комментарий о технических контактах по факту: отдельно для технического телефона и отдельно для технического email.
  • Создавать технические телефоны Skillaz с префиксом `+7111`, чтобы их было проще отличать от настоящих номеров.
  • Убирать дубли соцсетей и профилей перед отправкой кандидата в Skillaz.
  • Преобразовывать частичные дни рождения LinkedIn вроде `9 июля` в DateTime для Skillaz с техническим годом `1900`.
  • Показывать конкретные поля validation-ошибок Skillaz вместо общего сообщения `Please refer to the errors property for additional details`.
  • Передавать parser session из расширения в cookie Parser App, чтобы выбор вакансий на веб-странице фильтровался по текущему аккаунту Skillaz.
  • Не включать LinkedIn endorsement-счётчики вроде `Подтверждено 1 человеком за последние 6 месяцев` в навыки кандидата.
  • Не показывать в LLM-аудите parser popup ложные missing/wrong issues, если текущее значение уже совпадает с предложенным значением.
  • Не показывать в LLM-аудите parser popup ложный missing `CommonCandidateInfo.WorkExperience`, если нужный опыт уже есть в структурном списке позиций.
  • Для LinkedIn не затирать русское описание опыта английским source-блоком и явно требовать русский `positions.description` в prompt schema.
  • Разделить извлечение фактов кандидата и вырезание PII: local parser model теперь может получать сырой текст без потери имени, контактов, gender и дня рождения, а внешний company masking в этом режиме не запускается.
  • Определять `male` для частых латинских транслитераций мужских имён, включая `Artem`.
  • Не терять `Source kind`, `Source URL` и `Full resume URL` перед final assembly Parser App: LinkedIn guards теперь работают в реальном pipeline расширения, а не только в unit-тестах.
  • Чистить LinkedIn-город прямо перед отправкой в Skillaz: старые карточки с `City=CMO` больше не отправляют headline как город, а локация подтягивается из исходного текста резюме.
  • Передавать LLM безопасный маркер `Source kind: LinkedIn profile`, чтобы LinkedIn `about` и candidate-facing поля переводились на русский по prompt.
  • Не принимать LinkedIn connection degree (`2-й`) за headline и длинный headline с запятыми за `Location` в браузерном расширении.
  • Отбрасывать LinkedIn-строки вида `Neoversity - CMO` из поля города.
  • Показывать `Trace parser` и debug исходного текста страницы в popup расширения, чтобы видеть, где именно теряются город, страна и контакты.
  • Нормализовать известные алиасы стран в русские canonical-значения, чтобы parser output не смешивал `Germany`, `Russia`, `USA` и русские названия.
  • Поднять prompt парсера до `parser_prompt.v4`: просить LLM возвращать распознанные страны на русском языке.
  • Не терять LinkedIn-локацию, когда LinkedIn кладёт `CMO` в top-card, а город и страну рендерит рядом вне узкого top-card node.
  • Определять LinkedIn source по `Source URL`, если `Source kind` потерялся, и всё равно отбрасывать headline вроде `CMO` из поля города.
  • Не восстанавливать старую popup-карточку после reload расширения, если она была сохранена другой версией extension bundle.
  • Для LinkedIn не показывать английский `about`, если LLM уже вернула русский `summary`.
  • Нормализовать польские страны и локации в русский вариант `Польша`, а не `Poland`.
  • Отбрасывать LinkedIn headline вроде `CMO`, если LLM ошибочно вернула его как город, и расширять explicit top-card до родительского блока с локацией.
  • Не терять LinkedIn-локацию в текущей nested-разметке top-card, где headline `CMO` лежит отдельно от строки города.
  • Сохранять день рождения из LinkedIn contact info даже без года, показывать день рождения и страну в popup расширения и передавать страну в Skillaz.
  • Распознавать польскую локацию LinkedIn с формой `Польши`, чтобы страна не терялась при разборе профиля.
  • Жёстче требовать русский язык для LinkedIn-поля `about`, чтобы блок о себе не оставался на английском.
  • Жёстче требовать русский язык для LinkedIn-должностей, описаний опыта и степеней образования в основном prompt парсера.
  • Открывать LinkedIn `/overlay/contact-info/` из browser extension при чтении обычного профиля, чтобы телефон, email и внешние ссылки попадали в Parser App.
  • Обновлять версию ассетов Parser App после изменений интерфейса, чтобы браузер не держал старый `parser-app.js` и показывал новую диагностику LinkedIn в карточке.
  • Передавать в Skillaz реальные email, телефон, город и страну кандидата из карточки Parser App, а не заменять их техническими hidden-контактами при отправке LinkedIn-профилей.
  • Не терять контакты LinkedIn после фонового добора `/details/...` и при старте с `/overlay/contact-info/` дополнительно читать canonical profile, чтобы подтянуть город из top-card.
  • Читать данные из LinkedIn contact overlay `/overlay/contact-info/`: профиль, внешние сайты, телефон, e-mail и дату рождения теперь не теряются из-за удаления modal dialog при очистке страницы.
  • Распознавать LinkedIn `/overlay/contact-info/` как страницу профиля, сохранять canonical profile URL и не терять top-card location вроде `Варшава, Мазовецкое воеводство, Польша`.
  • Сохранять город и страну из LinkedIn top-card, когда LinkedIn показывает регион без запятых и страны, например `Варшава-Мазовецкое воеводство`.
  • Не показывать в LLM-аудите parser popup бесполезные location/gender issues без конкретного `suggested_value`, например `Город должен быть указан`.
  • Определять `female` для латинской транслитерации имени `Yuliya`.
  • Не показывать в LLM-аудите parser popup ложные проблемы по техническим hidden-контактам Skillaz и пустому legacy-полю `CommonCandidateInfo.Education`, если реальные записи лежат в `CommonCandidateInfo.Educations`.
  • Показывать в popup расширения названия языков из поля `lang`, а не только уровни владения.
  • Находить фото LinkedIn, когда аватар вынесен рядом с текстовой top-card, а не лежит внутри найденного блока профиля.
  • Определять локацию LinkedIn `Варшава, Мазовецкое воеводство, Польша` как город Варшава и страну Poland, а пустые education placeholder не показывать как реальное образование.
  • Показывать в карточке кандидата Parser App фактический Skillaz API payload и все поля парсера отдельными строками вместо скрытия данных в raw JSON.
  • Проверять Skillaz-авторизацию перед чтением страницы в popup, чтобы пользователь не выбирал кандидата и фото при протухшей parser session.
  • Предпочитать фото человека логотипам компаний в LinkedIn top-card и всегда давать в popup вариант `Без фото` последним пунктом выбора снимка.
  • Сохранять фото LinkedIn при запуске проверки с detail-страниц профиля и читать фоновые LinkedIn-разделы в одной временной неактивной вкладке без создания отдельного окна браузера.
  • Находить фото LinkedIn в новых top-card layout, не открывать пачку вкладок при сборе деталей профиля и показывать прогресс чтения LinkedIn в popup.
  • Считать страницы профилей LinkedIn найденными кандидатами, даже если в отрендеренном тексте нет обычных маркеров резюме вроде email или телефона.
  • Считать общий опыт LinkedIn по всем периодам работы, а не по первой найденной длительности позиции вроде `1 г. 6 мес.`, и распознавать позиции с длительностью только в месяцах.
  • Не смешивать рекомендации и прочий текст LinkedIn с навыками кандидата, даже когда LinkedIn склеивает `Skills` и `Recommendations` в одну строку.
  • Находить фото профиля LinkedIn без старого marker top-card и учитывать фактический размер видимой картинки, если у `img` нет `width` и `height`.
  • Для описания профиля LinkedIn брать переведённый текст вместо сырого английского.
  • Находить фото профиля LinkedIn, когда страница хранит реальный URL в lazy image атрибутах вместо обычного `src`.
  • Показывать в popup расширения контекст созданного кандидата: фото, имя, краткое описание и выбранную вакансию перед переходом в Skillaz.
  • Показывать в popup расширения русские названия стадий Parser App вместо технических ключей вроде `llm_waiting`.
  • Для Habr Career выбирать фото из профильного sidebar и игнорировать аватар залогиненного пользователя в шапке страницы.
  • Не схлопывать разных Habr Career кандидатов по одному техническому телефону, когда источник скрывает реальные контакты.
  • Подставлять технический email для кандидатов без открытой почты и передавать найденное фото кандидата в `CommonCandidateInfo.Avatar` при отправке в Skillaz, включая карточки, где фото уже есть в Parser App, но отсутствует в старом DTO; после создания кандидата дополнительно загружать фото как файл аватара.
  • Делать технический email читаемым для скрытых контактов, не отправлять URL фото кандидата как соцсеть `Другое`, сохранять исходную страницу в `SourceUrl` и добавлять её в комментарий отправки из расширения.
  • Всегда добавлять ссылку на исходную страницу в комментарий Skillaz, дублировать `SourceUrl` в соцсети кандидата как Habr Career и отправлять `.txt`-вложение в Skillaz как UTF-8 с BOM.
  • Читать metadata `Source URL` из `.txt` с UTF-8 BOM и доставать ссылку из сохранённого исходного файла при отправке старых карточек в Skillaz.
  • Повторять OpenRouter LLM-запрос до 3 раз при ошибке `unsupported_country_region_territory` и возвращать понятное сообщение, если провайдер остаётся недоступен из-за региона.
  • В popup расширения не считать найденный дубль завершённой отправкой: показывать выбранную вакансию и давать явно прикрепить существующего кандидата к ней через `duplicate-transfer`.
  • Добавить безопасную диагностику отклонённых upload-файлов Parser App: backend пишет имя файла, MIME, размер, первые байты и причину отказа без полного содержимого резюме.
  • Отправлять кандидатов в Skillaz даже когда парсер не нашёл имя и фамилию: backend восстанавливает ФИО из метаданных резюме или ставит техническое имя с комментарием для ручной правки.
  • Убрать из карточки кандидата Parser App лишние кнопки оценки, блок тегов и верхний таб-бар, не трогая ссылку на полное резюме.
  • Не переносить заголовки секции IT Skills и перечисленные навыки в образование кандидата, когда модель ошибочно размечает их как учебные записи.
  • Исправить bulk-модалки Parser App: крестик закрывает окно с первого клика, в просмотре резюме доступны `Назад` и `Вперед`, а выбор вакансии остаётся черновым до применения массовой отправки.
  • Закрепить выбор вакансии Skillaz в footer модалки резюме, убрать его из скролла карточки и приглушить визуальный вес крестиков и bulk-строк.
  • Фильтровать вакансии Skillaz в Parser App по `SKILLAZ_CURRENT_USER_ID`, чтобы в выборе показывались только вакансии текущего ответственного.
  • Считать ответ Skillaz дубликатом по непустому `DuplicateDecisionInfo`, даже если API вернул top-level `CandidateId`, и не прикреплять исходный файл резюме к уже существующему кандидату автоматически.
  • Переработать выбор вакансии Skillaz в Parser App: результаты показывают ключ, ID, город и ответственного, поиск находит вакансии по ответственному, пустая выдача стала отдельным состоянием вместо голой строки статуса.
  • Не схлопывать блок выбора вакансии Skillaz в карточке кандидата: список вакансий теперь не режется и не налезает на кнопку отправки.
  • Закрыть небезопасные загрузки резюме: единая проверка размера, MIME, расширения и сигнатуры файла теперь режет подменённые изображения/PDF, DOCX zip bomb, слишком большие PDF и oversized uploads до парсинга.
  • 0.1.36: Открывать карточки из базы Parser App в модальном окне с переходом по соседним карточкам без ухода на JSON-страницу.
  • 0.1.35: Поднять зубья загрузочной шестерёнки Parser App, выровнять таймер прогресса и убрать дубль статуса ожидания ответа модели.
  • 0.1.34: Досветить LinkedIn и многострочные сертификаты в PDF-превью Parser App: letter-spaced ссылки и длинные названия теперь матчятся по частям.
  • 0.1.33: Стабилизировать загрузочный экран Parser App: процент, статус, прогресс и карточка файла больше не прыгают при смене текста, таймер вернулся.
  • 0.1.32: Убрать двойную жёлтую подсветку в PDF-превью Parser App: короткие совпадения больше не накладываются поверх длинных.
  • 0.1.31: Уменьшить загрузочную шестерёнку Parser App: зубья теперь выступают из-под белого круга примерно на 15px без широкого жёлтого пояса.
  • 0.1.30: Закрыть белой подложкой центр загрузочной шестерёнки Parser App, чтобы жёлтый слой не просвечивал через контент обработки файла.
  • 0.1.29: Нормализовать регистр в опыте кандидата Parser App и не просвечивать жёлтую шестерёнку через карточку файла во время обработки.
  • 0.1.28: Добирать и подсвечивать данные из колонного PDF-резюме Parser App: опыт теперь сортируется по датам, языки, LinkedIn, локация, IT-навыки и сертификаты попадают в карточку и жёлтую разметку исходного документа.
  • 0.1.27: Не принимать навыки и сертификаты из боковых колонок PDF за ФИО: parser теперь находит позднее all-caps имя в колонном текстовом слое и сохраняет `Google Tools`/`Plan Grid` как навыки.
  • Убрать лишние числовые счётчики из Parser App во время обработки: оставить только общий процент внутри upload-круга.
  • Скрывать кнопки `Предыдущая` и `Следующая` в модальном окне Parser App, когда соседней карточки кандидата нет.
  • Показывать предпросмотр Parser App через единый PDF-viewer вместо разных браузерных fallback для PDF, текста и изображений.
  • Сделать вращающуюся границу Parser App заметнее: более плотное кольцо, крупные разрывы между сегментами и пульсирующая тень во время парсинга.
  • Центрировать upload-круг Parser App в viewport и масштабировать его по ширине и высоте экрана, чтобы на маленьких экранах текст не обрезался.
  • Ограничить высоту dropdown выбора модели Parser App и включить внутренний скролл, чтобы длинный список не вылезал за экран.
  • Сделать `/quality-progress` полезнее для решения, когда остановиться: общий график и каждая модель открываются отдельными вкладками, есть режим последних оценок, старт/текущее качество, трендлайн и сортировка моделей по качеству.
  • Дать Yandex AI Studio parser-моделям отдельный увеличенный timeout, чтобы крупные модели вроде Qwen3 235B не валили experiment cells на длинных резюме, и отключить скрытые SDK retries для предсказуемого времени cell.
  • Починить график `/quality-progress`: плотная история больше не превращает подписи оси X в кашу, а шкала Y показывает полный `100%`.
  • 0.1.26: Убрать `skills` из quality score и промпта верификатора, нормализовать country/city-эквиваленты вроде `USA`/`United States`, `Россия`/`Russia` и `г. Дудинка`/`Дудинка`, добирать salary, work_experience, position, languages и social links из исходного текста, когда модель вернула пустоту или `[ИМЯ]`.
  • 0.1.25: Ретраить пустой OpenRouter chat completion для parser-моделей и принимать валидный JSON-объект, если модель обернула его пояснением или markdown-блоком; не валить проверку ПД на city/location claim’ах с нестандартным `kind` и маскировать email, разорванный переносом внутри local-part.
  • 0.1.24: Синхронизировать расчёт общего опыта между parser final assembly, reference extractor и quality comparator: при наличии датированных периодов работы явная фраза общего опыта больше не перетирает сумму периодов.
  • Обновлять строку Итого, сводку и блоки ошибок на странице эксперимента во время live polling, пока эксперимент ещё выполняется.
  • Починить композицию карточек моделей на экране создания эксперимента: выбранные модели показывают summary и метрики, а переключатель источника файлов не прилипает к выбору пресета.
  • Показывать стоимость в рублях вместо `credits` в UI parser runs, experiment-карточках и markdown-экспорте ошибок, а также не растягивать кнопку добавления модели на всю форму.
  • Показывать в Parser Agent честный статус `Деплой без проверки` и краткий отчёт по deployed-итерациям, если after-check ещё не запускался.
  • Показывать причину падения patch-команды в журнале Parser Agent и давать патчеру 2 попытки починить невалидный diff.
  • Починить hamster-иконки Parser Agent под `/agent`, добавить ссылку назад в Parser Lab и привести layout к sidebar-стилю основного парсера.
  • Выровнять палитру Parser Agent с актуальной тёплой темой Parser Lab: progress, статусы и controls больше не используют старую синюю гамму.
  • Почистить ленту Parser Agent: скрыть пустые heartbeat-сообщения, показать typing-состояние во время долгого эксперимента и увеличить avatar Хранителя.
  • Починить фильтры диалога Хранителя: скрытые карточки теперь реально пропадают из ленты.
  • Заменить упрощённую hamster-иконку Parser Agent на крупного пиксельного Хранителя с очками, халатом, ключом и JSON-листом.
  • Применять LLM-generated patch через `git apply --recount`, если обычная проверка падает на битых hunk header.
  • Передавать `REPOSITORY_PATH` в patch-команду и запускать все git-команды агента с `safe.directory`, чтобы container pipeline не падал на mounted repo.
  • Возобновлять кампании Parser Agent после рестарта worker-а, если он был остановлен во время уже запущенного эксперимента.
  • Дать Parser Agent применять diff с небольшим смещением контекста, чтобы patch loop не останавливал кампанию на крупных parser-файлах.
  • Нормализовать hunk header в diff от Parser Agent, если модель вернула строку с лишней точкой вместо закрывающего маркера.
  • Добавить повтор patch loop для blocked-кампаний Parser Agent: кнопка `Повторить правки` возвращает последнюю итерацию в работу без нового эксперимента.
  • Не оставлять Parser Agent в `verifying`, если в контейнере не найдена команда локальной проверки; добавить parser dev-зависимости в agent image.
  • Не создавать `.orig` backup-файлы при fallback-применении diff через `patch`.
  • Возобновлять Parser Agent после рестарта worker-а на этапе `verifying`, чтобы кампания не зависала между применением patch и локальными проверками.
  • Отправлять patch Parser Agent на repair, если модель поменяла parser-файл без обновления версии и changelog; после лимита попыток откатывать diff и показывать понятные причины deploy gate.
  • Нормализовать пустые context-строки внутри diff hunk, чтобы Parser Agent не падал на `malformed patch` из-за bare blank lines от модели.
  • Пересчитывать размеры diff hunk по фактическим строкам, чтобы Parser Agent не падал на `malformed patch`, если модель ошиблась в header counts.
  • Добавить fallback на полную замену allowlist-файлов, если LLM несколько раз возвращает diff с неприменимым контекстом.
  • Передавать полные файлы fallback-режима через base64, чтобы модель не ломала JSON raw multiline-содержимым.
  • Ретраить временно битые ответы OpenRouter при генерации patch, чтобы transient invalid JSON от провайдера не останавливал кампанию.
  • Запускать fallback на полную замену файлов не только при `git apply` ошибках, но и когда модель после repair не добавила version/changelog.
  • Автоматически обновлять parser version и changelog после успешного parser patch, если модель исправила target-файл, но пропустила support-файлы.
  • Откатывать сгенерированные изменения после `verification.failed`, чтобы следующий retry не наслаивался на грязный repo state.
  • Показывать в событии `verification.failed` команду проверки, код выхода и хвост stdout/stderr, чтобы в UI было видно реальную причину падения.
  • Завершать patch loop понятным `patch.failed`, если patch-команда превысила timeout, вместо падения worker-а без события.
  • 0.1.19: Уточнить выбор страны проживания: labeled residence/location hints из исходного текста имеют приоритет над generic country/citizenship, чтобы гражданство не подменяло страну проживания.
  • Принимать raw multiline `content` в file replacement fallback, если модель проигнорировала `content_base64` и вернула формально невалидный JSON.
  • Принимать raw multiline содержимое и в ключе `content_base64`, если модель назвала поле правильно, но положила туда не base64.
  • Не запускать full-file fallback Parser Agent для больших patch-файлов, чтобы после провала snippet fallback показывалась исходная причина ошибки.
  • Запускать parser verification с `DATABASE_URL`/`DATA_DIR` и бампать `PARSER_PLATFORM_VERSION` вместе с `PARSER_VERSION`.
  • После упавших проверок откатывать правки и автоматически повторять patch с деталями verification failure в контексте модели.
  • 0.1.23: Разбирать общий опыт из формулировок вроде `10 летним опытом` и `десятилетний опыт`, а также учитывать present-периоды в comma-style заголовках с `настоящее время` / `по настоящее время`, не завышая расчёт синтетических present-year floor случаев.
  • 0.1.20: Не подменять страну проживания generic country, найденной в гражданстве: явная страна/город проживания и страна, выведенная из города, теперь имеют приоритет над общим country-scan текста.
  • 0.1.18: Учитывать текущий present-период из source work headers при
  • 0.1.22: Распознавать Крымск в составных значениях города и выводить страну проживания как Россию, а также разбирать общий опыт с сокращением `л.` и hyphenated-форматами вроде `11-летний опыт`.
  • 0.1.21: Уточнить выбор страны проживания: country-hints рядом с location или известным городом имеют приоритет над гражданством/LLM-страной, чтобы гражданство не подменяло страну резюме.
  • 0.1.21: Разбирать общий опыт в формате `4 года 6 месяцев`, с союзом `и` и сокращениями `г.`/`мес.`, а также явный total в месяцах. расчёте общего опыта, включая comma-style заголовки работы с датами в той же строке.
  • 0.1.17: Учитывать текущий present-период при расчёте общего опыта, если PDF text layer перенёс даты на строку после заголовка работы, но не завышать total, когда завершённые source-периоды уже больше LLM-оценки.
  • 0.1.16: Разбирать несколько skill-секций в одном резюме, не принимать username-like контакты за город при наличии Moscow/Москва в исходнике и учитывать минимальный год текущего present-периода при расчёте общего опыта из завершённых периодов.
  • 0.1.15: Добрать явные навыки из inline/длинных skill-секций, распознавать общий опыт вида `Опыт работы: 9 лет` и не принимать username-like контакты за город при наличии Moscow/Москва в исходном тексте.
  • 0.1.14: Уточнить разбор локации резюме: username-like контакты больше не попадают в город при наличии Moscow/Москва в исходном тексте, а гражданство не перебивает страну проживания, выведенную из location/city hints.
  • Добавлять запись с целевой версией в changelog, даже если LLM уже изменила `CHANGELOG.md`, но не указала версию для deploy gate.
  • 0.1.13: Исправить разбор локации и опыта: гражданство больше не перебивает страну, выведенную из города, username-like значения не принимаются за город при наличии исходного city hint, а общий опыт добирается из годовых и текстовых периодов работы.
  • Добавлять целевую parser-версию именно в `[Unreleased]`, даже если такая версия уже встречалась в старых changelog-секциях.