# Режим: oferta — Повна оцінка A-F

Коли кандидат вставляє вакансію (текст або URL), ЗАВЖДИ видати 6 блоків:

## Крок 0 — Визначення архетипу

Класифікувати вакансію за одним з архетипів (див. `_shared.md`). Якщо гібрид — вказати 2 найближчих. Це визначає:

- Які proof points пріоритизувати в блоці B
- Як переписати summary в блоці E
- Які історії STAR готувати в блоці F

## Блок A — Резюме ролі

Таблиця з:

- Визначений архетип
- Domain (platform/agentic/LLMOps/ML/enterprise/backend/frontend/devops)
- Function (build/consult/manage/deploy)
- Seniority
- Формат роботи (віддалено/гібрид/офіс)
- Розмір команди (якщо вказано)
- Оформлення (ФОП / КЗпП / ГПД / Дія City — якщо вказано)
- TL;DR в 1 реченні

## Блок B — Збіг з CV

Прочитати `cv.md`. Створити таблицю: кожна вимога JD → точні рядки CV.

**Адаптовано під архетип:**

- Якщо FDE → пріоритизувати proof points швидкої поставки та клієнтської роботи
- Якщо SA → пріоритизувати системний дизайн та інтеграції
- Якщо PM → пріоритизувати product discovery та метрики
- Якщо LLMOps → пріоритизувати evals, observability, pipelines
- Якщо Agentic → пріоритизувати мульти-агент, HITL, оркестрацію
- Якщо Backend → пріоритизувати highload, мікросервіси, масштабування
- Якщо DevOps/SRE → пріоритизувати інфраструктуру, CI/CD, моніторинг

Розділ **прогалин** зі стратегією закриття кожної:

1. Це hard blocker чи nice-to-have?
2. Чи може кандидат продемонструвати суміжний досвід?
3. Чи є портфоліо-проєкт, що закриває цю прогалину?
4. Конкретний план закриття (фраза для супровідного листа, швидкий проєкт тощо)

## Блок C — Рівень і стратегія

1. **Рівень у JD** vs **природний рівень кандидата для цього архетипу**
2. **План "продати senior без обману"**: конкретні фрази, адаптовані під архетип, досягнення для акценту, як позиціонувати досвід
3. **План "якщо знизять рівень"**: прийняти якщо компенсація справедлива, домовитися про перегляд через 6 місяців, чіткі критерії зростання

## Блок D — Компенсація та попит

Використовувати WebSearch для:

- Актуальні зарплати за роллю (DOU.ua/salaries, djinni.co/salaries, Glassdoor, Levels.fyi, Blind)
- Репутація компанії щодо компенсації
- Тренд попиту на роль
- **Валюта**: уточнити USD чи UAH; для ФОП — net чи gross

Таблиця з даними та цитуванням джерел. Якщо даних немає — сказати про це замість вигадування.

**Специфіка України:**

- Зарплати в українському ІТ переважно в **USD** (навіть для ФОП)
- Для ФОП 3-тя група: net ≈ gross × 0.95 (5% єдиний податок) + ЄСВ (~1760 грн/міс)
- Для штатних: net ≈ gross × 0.77 (ПДФО 18% + військовий збір 5%)
- Врахувати бенефіти: медстрахування, навчання, обладнання
- Оформлення: КЗпП/Дія City дають більше гарантій, ніж звичайний ФОП

## Блок E — План персоналізації

| #   | Розділ  | Поточний стан | Пропонована зміна | Чому |
| --- | ------- | ------------- | ----------------- | ---- |
| 1   | Summary | ...           | ...               | ...  |
| ... | ...     | ...           | ...               | ...  |

Топ 5 змін CV + Топ 5 змін у LinkedIn/DOU для максимального збігу.

## Блок F — План співбесід

6-10 історій STAR+R, прив'язаних до вимог JD (STAR + **Рефлексія**):

| #   | Вимога JD | Історія STAR+R | С   | З   | Д   | Р   | Рефлексія |
| --- | --------- | -------------- | --- | --- | --- | --- | --------- |

Стовпець **Рефлексія** фіксує, що було вивчено або що можна було б зробити інакше. Це сигнал сеньйорності — джуніори описують що сталося, сеньйори витягують уроки.

**Банк історій:** Якщо `interview-prep/story-bank.md` існує, перевірити, чи є там ці історії. Якщо ні — додати нові. З часом це формує банк з 5-10 майстер-історій для будь-якого питання на співбесіді.

**Підібрані й обрамлені за архетипом:**

- FDE → акцент на швидкості поставки та клієнтській роботі
- SA → акцент на архітектурних рішеннях
- PM → акцент на discovery та trade-offs
- Backend → акцент на highload, масштабуванні, надійності
- DevOps → акцент на автоматизації, інцидентах, reliability

Включити також:

- 1 рекомендований кейс (який проєкт представити і як)
- Питання-пастки та як на них відповідати (напр.: "Чому пішли з попереднього місця?", "Чому вирішили змінити стек?")

---

## Пост-оцінка

**ЗАВЖДИ** після генерації блоків A-F:

### 1. Зберегти звіт .md

Зберегти повну оцінку в `reports/{###}-{company-slug}-{YYYY-MM-DD}.md`.

- `{###}` = наступний порядковий номер (3 цифри, zero-padded). Щоб виділити цей номер атомарно та уникнути станів гонки, ви ПОВИННІ виконати `node reserve-report-num.mjs` для резервування номера (stdout поверне `{###}`), записати звіт, а потім виконати `node reserve-report-num.mjs --release {###}` для звільнення маркера (sentinel).
- `{company-slug}` = назва компанії: lowercase, пробіли замінити на `-`, прибрати спецсимволи (наприклад, `Acme Corp` → `acme-corp`)
- `{YYYY-MM-DD}` = поточна дата

**Формат звіту:**

```markdown
# Оцінка: {Компанія} — {Роль}

**Дата:** {YYYY-MM-DD}
**Архетип:** {визначений}
**Бал:** {X/5}
**Легітимність:** {tier}
**URL:** {посилання на вакансію}
**PDF:** {шлях або "очікується"}

---

## A) Резюме ролі

(повний вміст блоку A)

## B) Збіг з CV

(повний вміст блоку B)

## C) Рівень і стратегія

(повний вміст блоку C)

## D) Компенсація та попит

(повний вміст блоку D)

## E) План персоналізації

(повний вміст блоку E)

## F) План співбесід

(повний вміст блоку F)

## G) Чернетки відповідей на форму

(тільки якщо бал >= 4.5 — чернетки відповідей для форми відгуку)

---

## Витягнуті ключові слова

(список з 15-20 keywords з JD для ATS-оптимізації)
```

### 2. Зареєструвати в трекері

Для **нового** запису не редагувати `data/applications.md` напряму. Замість цього записати один TSV-рядок у `batch/tracker-additions/{num}-{company-slug}.tsv` з 8 або 9 колонками через табуляцію:

```
{num}\t{date}\t{company}\t{role}\t{status}\t{score}\t{pdf_emoji}\t[{num}](reports/{num}-{slug}-{date}.md)\t{note}
```

- `{num}` = наступний порядковий номер (ціле число, обчислити з `reports/`)
- `{status}` = `Evaluated`
- `{score}` = формат `X.X/5` (наприклад, `4.2/5`)
- `{pdf_emoji}` = `✅` або `❌`
- `{note}` = короткий коментар (опціонально, колонку можна опустити)

Потім виконати `node merge-tracker.mjs` для злиття в `data/applications.md`.

Для **існуючого** запису допустиме пряме оновлення в `data/applications.md` (статус, PDF, посилання на звіт).
