init
Release Please / release-please (push) Failing after 4m2s
Web CI / web typecheck + build (push) Successful in 3m39s
CodeQL Analysis / Analyze (javascript-typescript) (push) Failing after 1h1m49s
CodeQL Analysis / Analyze (go) (push) Failing after 1h1m49s

This commit is contained in:
redlineo committed 2026-07-13 10:14:00 +03:00
commit d295c7f139
1527 files changed
+270726

No files matched your search

@@ -0,0 +1,140 @@
# Evaluación: Т-Банк — Frontend-разработчик React (Junior)
**Fecha:** 2026-07-08
**Arquetipo:** Frontend Developer (React) — off-archetype (primary del candidato es Vue.js)
**Score:** 1.7/5
**Legitimacy:** Proceed with Caution
**URL:** https://hh.ru/vacancy/119867578?query=frontend&hhtmFrom=vacancy_search_list
**PDF:** not generated — run /career-ops pdf t-bank-react-junior-perm to create on demand
**Batch ID:** 7
---
## Machine Summary
```yaml
company: "Т-Банк"
role: "Frontend-разработчик React (Junior)"
score: 1.7
legitimacy_tier: "Proceed with Caution"
archetype: "Frontend Developer (React) — off-archetype"
final_decision: "Skip"
hard_stops:
- "Основной стек — React, у кандидата нет коммерческого опыта на React (только Vue 3, её primary архетип)"
soft_gaps:
- "Уровень Junior — ниже фактического уровня ответственности кандидата (владеет продуктами end-to-end, спроектировала RBAC-модель); junior-компенсация вероятно ниже минимума кандидата (100 000 ₽/мес)"
- "JD крайне лаконичен (нет команды, нет зарплаты, нет деталей о проекте) — сложно оценить реальный контекст роли"
top_strengths:
- "Крепкие JS/TypeScript основы и опыт компонентной архитектуры (Vue 3 Composition API), переносимые на React"
risk_level: "Low"
confidence: "Medium"
next_action: "Не применять; при появлении вакансии на Vue в продуктовых командах Т-Банка (удалённо) — переоценить"
```
## A) Resumen del Rol
| Campo | Valor |
|---|---|
| Arquetipo detectado | Frontend Developer (React) — no coincide con ninguno de los 3 arquetipos objetivo de la candidata (Vue.js, Flutter, Fullstack Vue+Node) |
| Domain | Fintech / Banking (Т-Банк — productos que abarcan banca, viajes, inversiones, entretenimiento, educación) |
| Function | Frontend Developer — interfaces cliente e internas + herramientas de soporte |
| Seniority | Junior (mínimo 1 año de experiencia comercial en JS) |
| Remote | Sí — "на месте работодателя или удалённо" (oficina en Perm, ул. Куйбышева, 95Б, o remoto) |
| Team size | No especificado en el JD; solo se menciona que la comunidad React de la empresa supera los 350 desarrolladores |
| TL;DR | Vacante Junior de Frontend React en el hub de Perm de Т-Банк, con opción remota explícita. La ubicación no es bloqueo (a diferencia de otras vacantes de Т-Банк evaluadas previamente), pero el stack (React, no Vue) sigue siendo un choque directo con el archetype primario de la candidata, y el nivel Junior está por debajo de su alcance real de responsabilidad. |
**Vibe команды (сигнал из JD, не подтверждённый факт):** JD крайне лаконичен — упоминает только "внедрение новых технологий и практик" и "постоянное обучение и повышение квалификации" как часть обязанностей, а также поддержку менторства и платформу "Т-Банк Апгрейд" в бенефитах. Это слабый позитивный сигнал в пользу культуры обучения, но текста недостаточно, чтобы судить об автономии, бюрократии или гибкости — стоит уточнять на собеседовании. Внешние отзывы о бюрократии в компании (см. Блок D) касаются организации в целом, не конкретно этой команды в Perm.
## B) Match con CV
| Requisito JD | Match en CV | Estado |
|---|---|---|
| Опыт коммерческой frontend-разработки с JavaScript от 1 года | cv.md:16-17, 33-51 — с ноября 2024 в «Здравсервис» (~1 год 8 мес.) + фриланс-проект ТулГУ 2022 (~10 мес.) | ✅ Match (con margen amplio) |
| Высшее образование по техническому направлению | cv.md:68-71 — ТулГУ, Институт прикладной математики и компьютерных наук, «Информационная безопасность автоматизированных систем» | ✅ Match |
| React | Sin referencia en cv.md — стек кандидата: Vue 3, Composition API, Pinia (cv.md:85) | ❌ Gap crítico |
| Node.js | cv.md:95 — «Backend (ознакомительный уровень): Node.js, Express, MongoDB» (проект ТулГУ + хакатон) | ⚠️ Match débil — nivel introductorio |
| UI-Kit / librerías internas | cv.md:85 — experiencia con shadcn/shadcn-vue, Tailwind CSS (kits de componentes, aunque no el UI-Kit propietario de Т-Банк) | ⚠️ Match parcial — patrón transferible, no la librería específica |
| Разработка клиентских и внутренних интерфейсов | cv.md:21-38 — desarrolló desde cero el frontend de ЕКОМ (interfaz interna) y trabajó en «Здесь Аптека» (app cliente) | ✅ Match fuerte (conceptualmente, en Vue no React) |
| Внедрение новых технологий и практик | cv.md:44-47 — introdujo Feature Branching, Playwright E2E, versionado de builds en РМК | ✅ Match |
### Gaps y estrategia de mitigación
1. **React (hard blocker)**
- ¿Bloqueador duro o nice-to-have? Duro — es el stack central mencionado explícitamente en el JD, sin mención de Vue en ningún punto.
- ¿Experiencia adyacente demostrable? Sí, parcial: Composition API (Vue) y hooks (React) comparten el mismo modelo mental de UI reactiva y componentización; los fundamentos de JS/TS son agnósticos de framework.
- ¿Proyecto de portfolio que cubra el gap? No — todo el trabajo comercial documentado en cv.md es Vue 3 o Flutter.
- Plan de mitigación: dado que es un puesto Junior, el argumento "aprendo rápido" es más creíble aquí que en un rol Middle/Senior (cv.md:77 — completó un curso de reconversión y pasó a shippear Flutter en semanas). Aun así, no hay garantía de que el proceso de selección de un banco grande acepte un cambio de framework a este nivel de filtro.
2. **Nivel Junior vs. alcance real de la candidata (soft gap, mismatch inverso)**
- A diferencia de otras vacantes evaluadas donde el JD pide más seniority del que tiene la candidata, aquí ocurre lo contrario: el JD pide "1+ año", pero la candidata ya diseñó un frontend completo desde cero (ЕКОМ), diseñó un modelo de autorización RBAC y explicado a un equipo de backend, y mentoreó a un colega con 11 años de antigüedad (cv.md:33-51).
- Riesgo: un puesto Junior probablemente implica menor autonomía y una banda salarial (~55.000-80.000 ₽/mes según Bloque D) muy por debajo de su mínimo declarado (100.000 ₽/mes, config/profile.yml).
- Plan de mitigación: no aplica una estrategia de "vender senior sin mentir" aquí en el sentido habitual — el problema no es convencer al reclutador de mayor nivel, sino que el puesto en sí está diseñado para pagar y dar alcance de Junior.
## C) Nivel y Estrategia
- **Nivel detectado en el JD:** Junior (mínimo 1 año de experiencia comercial).
- **Nivel natural de la candidata:** Middle en ascenso — dueña end-to-end de un producto interno (ЕКОМ) desde cero, con diseño de modelo de autorización (RBAC) y mentoría a un colega senior, pese a ~1.5-2.5 años de trayectoria total.
- **Plan "vender senior sin mentir":** No aplica de forma útil aquí — el JD ya está calibrado a Junior; subir el nivel percibido no cambia la banda salarial ni el stack ofrecido.
- **Plan "si me downlevelan":** Es la situación inversa: la candidata estaría aceptando un downlevel voluntario. Solo tendría sentido si (a) el objetivo fuera exclusivamente aprender React de forma remunerada, y (b) la compensación ofrecida en la entrevista superara su mínimo — algo poco probable dado el rango de mercado para Junior (Bloque D). No se recomienda perseguir esta vacante bajo esa lógica.
## D) Comp y Demanda
| Fuente | Dato |
|---|---|
| JD | Salario no especificado — "Достойную зарплату — обсудим её на собеседовании" |
| WebSearch (Skillbox Media, Habr Career, getgrade.ru) | Salarios de Junior frontend en Rusia en 2026 rondan ~55.000-80.000 ₽/mes en regiones fuera de Moscú; remoto reduce algo la brecha regional (10-15%) pero no la elimina para el nivel Junior |
| WebSearch (dreamjob.ru, enigmai.ru) sobre Т-Банк | Comp de Middle frontend en Т-Банк descrita como fuerte (~257.000+ ₽/mes), pero esa cifra no aplica a Junior; reseñas mencionan buena comida/DMS con estomatología, plataforma de aprendizaje "Т-Банк Апгрейд", pero también quejas de burocracia e indexación salarial insuficiente frente a inflación |
**Score de comp: 1.5/5** — el rango de mercado Junior (~55.000-80.000 ₽/mes) está por debajo del mínimo declarado de la candidata (100.000 ₽/mes, config/profile.yml), y no hay cifra confirmada en el JD que sugiera una excepción positiva.
## E) Plan de Personalización
Dado el score bajo (stack fuera del archetype primario + compensación probablemente por debajo del mínimo), **no se recomienda invertir en personalización de CV/LinkedIn para esta vacante.** Se documentan los cambios que se harían solo por completitud:
| # | Sección | Estado actual | Cambio propuesto | Por qué |
|---|---|---|---|---|
| 1 | Summary | Enfatiza Vue 3 + Flutter | Reescribir enfatizando fundamentos JS/TS y velocidad de aprendizaje de nuevos frameworks | Para intentar pasar un primer filtro de keywords, sin fabricar experiencia React |
| 2 | Experiencia | Bullets en términos de Vue/Composition API | Reformular en vocabulario agnóstico de framework donde sea honesto (ej. "arquitectura de componentes reactivos") | Suaviza el mismatch sin inventar |
| 3 | Skills | Vue 3 listado primero | No aplicable — no hay React real que destacar | No inventar experiencia no existente |
**Top 5 cambios al CV:** no recomendado dado el score.
**Top 5 cambios a LinkedIn:** no recomendado dado el score.
## F) Plan de Entrevistas
STAR stories disponibles si la candidata decidiera aplicar de todos modos (por ejemplo, si busca activamente aprender React de forma remunerada):
| # | Requisito del JD | Historia STAR | S | T | A | R |
|---|---|---|---|---|---|---|
| 1 | Разработка внутренних интерфейсов | Frontend de ЕКОМ desde cero | Necesidad de sistema interno de gestión de pedidos/logística | Construir el frontend completo | Vue 3 + Composition API + TS + Pinia + Vite, desde arquitectura hasta despliegue | Sistema en uso activo por logística, soporte y desarrollo (cv.md:33-38) |
| 2 | Клиентские интерфейсы | Diagnóstico y fix del bug de «Избранное» en «Здесь Аптека» | Usuarios se quejaban de que la sección no cargaba | Diagnosticar la causa raíz | Identificó carga de todos los productos en una sola query; implementó carga paginada | Quejas de usuarios cesaron (cv.md:23) |
| 3 | Внедрение новых технологий и практик | Introducción de Feature Branching en GitLab | Releases inestables, features "colgadas" | Implementar Git Flow y capacitar a un colega | Enseñó control de versiones a colega con 11 años de antigüedad | Equipo pasó a releases semanales estables (cv.md:46) |
| 4 | Разграничение доступа / internal tools | Diseño del modelo RBAC en ЕКОМ | Necesidad de separar accesos entre departamentos | Diseñar y explicar el modelo de roles al equipo de backend | Aplicó fundamentos de su formación en seguridad de la información | Modelo implementado y adoptado (cv.md:37) |
| 5 | Node.js (soporte/backend ligero) | Proyecto de hackathon TulaHack.Digital | App con filtrado de recetas por ingredientes | Construir un backend ligero | Express + Node.js + MongoDB | App funcional entregada en el hackathon (cv.md:63-64) |
| 6 | Continuous learning / postoyanное обучение | Transición Flutter → Vue 3 en «Здравсервис» | Empezó como desarrolladora Flutter tras un curso de reconversión | Asumir el frontend de ЕКОМ (Vue 3) sin experiencia previa en ese framework | Aprendió Composition API/Pinia/TS en el puesto y lo llevó a producción | Producto en uso activo ~1 año después (cv.md:17, 33) |
**Case study recomendado (si aplicara):** transición Flutter → Vue 3 en «Здравсервис» — es la evidencia más directa de que puede aprender un framework nuevo en producción, que es exactamente lo que este puesto exigiría con React.
**Preguntas red-flag y cómo responderlas:**
- *"Vemos que tu experiencia es en Vue, no React — ¿por qué deberíamos considerarte para este puesto Junior?"* → Honestidad directa + evidencia concreta: ya hizo esta transición de framework una vez (Flutter → Vue 3) en producción real, en semanas, sin experiencia previa.
- *"¿Por qué buscarías un puesto Junior teniendo ya experiencia de dueño de producto?"* → Respuesta honesta: el interés sería aprender React remunerado; sería razonable pedir aclaración sobre banda salarial y alcance real de responsabilidades antes de avanzar, ya que un desajuste de nivel/comp descartaría el puesto rápidamente.
## G) Posting Legitimacy
**Assessment: Proceed with Caution**
| Señal | Resultado |
|---|---|
| Especificidad de la descripción | Media — incluye dirección física exacta (Perm, ул. Куйбышева, 95Б), horario 5/2, beneficios (DMS con estomatología, T-Upgrade, compensación de comida/transporte), pero los requisitos técnicos son muy genéricos (1 año de experiencia, sin detalle de proyecto/equipo/producto específico) |
| Empresa | Т-Банк — banco/fintech grande y verificable, sin señales de estafa |
| Reposting / historial | `data/scan-history.tsv` muestra que esta misma URL ya fue escaneada el 2026-07-07 (fuente: telegram-api) — una sola aparición, no hay patrón de repost sospechoso |
| Freshness de la publicación | No verificado (batch mode) — Playwright no disponible en este contexto; no se pudo confirmar el estado exacto del botón "Responder" ni días desde publicación |
| Señales de mercado / despidos | No se encontraron señales de freeze o layoffs en la búsqueda de comp (Bloque D); la empresa aparece descrita como reclutadora activa en el mercado fintech ruso |
**Nota:** posting freshness unverified (batch mode). Se marca "Proceed with Caution" (en vez de "High Confidence") porque la descripción es notablemente más genérica que otras vacantes de Т-Банк evaluadas previamente (menos detalle de stack/equipo/proyecto) — no hay señal de fraude, pero sí menos información verificable que en el caso típico "High Confidence".
---
## Keywords extraídas
React, JavaScript, Node.js, UI-Kit, internal libraries, frontend, client interfaces, internal tools, Perm, hybrid, remote, 5/2 schedule, junior, T-Upgrade, banking, fintech, mentoring, continuous learning, DMS, meal compensation, transportation compensation, higher education