curriculum

Lucas Ferreira — CV

https://lflucasferreira.github.io/curriculum/

https://my-cv-8vzv.vercel.app/

Rodar localmente

npm install
npm run dev

Abrir http://localhost:3000

Atualizar conteúdo do CV

Os CVs usam JSON + refs compartilhados resolvidos por loadCvLocale() em src/lib/cv-locale.ts e renderizados por src/components/cv/cv-template.tsx.

Estrutura

career/professional-profile.md  # fact base canônica
career/
├── pipeline.md          # tracker de status de todas as candidaturas
├── applications/        # dossiers + PDFs finais por vaga ({empresa}-{cargo}/, cada uma com jd-raw.md = JD original arquivado)
├── companies/           # cache de pesquisa por empresa
├── people/              # cache de pesquisa LinkedIn por participante de entrevista, agrupado por empresa
│   ├── people.md        # índice tipo shortlist, uma seção por empresa
│   └── {empresa}/       # ex.: mv/, cesar/, avanade/
├── interview/           # prep de entrevista
│   └── questions-answers/  # Q&A por role/tema
├── linkedin/            # drafts de posts
│   └── posts/
└── shortlist/           # triagem de vagas
    └── notes/
jobs/sources/            # catálogos markdown dos scrapers
partner/yane/            # fontes do parceiro (rotas em src/app/yane*)
research/                # imigração, coda, mbti raw
scripts/{cv,jobs,content}/
src/data/
├── cv/                # currículo (única fonte de verdade do CV)
│   ├── sections/      # contact, work, skills, education, languages, projects
│   ├── locales/       # meta, config e overrides por idioma
│   ├── labels/        # rótulos da UI por idioma
│   ├── abbr/          # glossário de siglas
│   ├── variants/      # patches por candidatura (_template.json = base pra novas vagas)
│   └── schema/
├── covers/            # dados das cartas de apresentação
└── interview/         # Q&A de entrevista + chunks (site)
    └── chunks/

Rotas

Rota Locale / variante
/cv seletor de idioma
/en, /pt, /fr, /es, /de CV por idioma
/gft EN + variante gft
/en-deloitte EN + variante deloitte

Editar texto

Variante para nova vaga

  1. Copie src/data/cv/variants/_template.json como referência (shape canônico de todo campo de override; apague os blocos placeholder que a vaga não precisar).
  2. Crie src/data/cv/variants/en-{empresa}.json com patches (content, work, skills, …).
  3. Registre a variante em src/lib/cv-locale.ts.
  4. Adicione rota fina em src/app/{empresa}/page.tsx chamando loadCvLocale("en", "{empresa}").
  5. Liste em src/app/cvs/page.tsx se quiser no hub de candidaturas.

Scripts

Comando Descrição
npm run cv:validate Valida JSON (ids, abbrKeys, languageOrder)
npm run cv:export Exporta JSON flat ATS em exports/cv-json/
npm run build Roda cv:validate antes do next build

Skills (Claude Code)

Instruções em .claude/skills/*/SKILL.md, espelhadas automaticamente (via npm run skills:sync) para .agents/, .cursor/, .antigravitycli/, .kimi/ e .qwen/, então funcionam igual em qualquer CLI de agente, não só no Claude Code. Ordem abaixo segue o fluxo real de uma candidatura, da descoberta da vaga até o ensaio de entrevista.

Skill O que faz
scrape Roda o scraper multi-plataforma (scripts/jobs/scrape-jobs.mts) contra as empresas já catalogadas em src/data/jobs/ (Greenhouse, Quickin, Lever, GeekHunter, custom, Ashby, InHire, Workable, Gupy), filtra por vagas de QA Sênior+/Especialista/Staff/Líder e reporta um resumo. Só descobre, não avalia nenhuma vaga.
scout Mesmo scraper do scrape, filtra geografia (BR remoto/Recife-PE ou CA/US), rankeia por aderência heurística ao perfil (título/empresa/local vs career/professional-profile.md, bandas A/B/C, não é ATS %), apresenta a lista ordenada e pergunta quais avaliar com audit. Nunca avalia tudo sozinho, Lucas sempre escolhe as candidatas.
audit Avalia uma vaga específica (link ou texto colado) contra o CV base como um ATS faria: rating inicial, caminho até 90-95% de match, red flags, checagem de referral e overqualification. Só avalia, nunca cria CV/PDF/dossiê nem mexe em git.
tailor Cria o CV tailorizado (variant JSON + PDF de 1 página), a rota do site e o dossiê da candidatura pra uma vaga já avaliada pelo audit. Só roda quando Lucas pede explicitamente pra aplicar.
interview Aprofunda a preparação de entrevista de um dossiê já existente: gap analysis, pesquisa sobre a empresa, perfis dos participantes confirmados (via interviewer-profile), perguntas prováveis, prática STARL e perguntas pra fazer, além dos Cinco Pilares de RH, cheat sheet e checklist. Exige que tailor já tenha rodado antes.
interviewer-profile Pesquisa no LinkedIn cada participante já confirmado por nome numa entrevista (gestor, entrevistador técnico, painel, ou recrutador que conduz a chamada): About, histórico completo de experiência, educação, certificações, skills, recomendações, honras, e uma leitura analítica de prováveis tópicos de conversa. Escreve um cache durável em career/people/{empresa}/{nome-slug}.md (agrupado por empresa) mais um resumo compacto no dossiê, e mantém o índice career/people/people.md atualizado. Roda automaticamente dentro de interview, ou sozinha quando um novo nome é confirmado depois. Nunca chuta quem seria um entrevistador sem nome confirmado.
mock-interview Simulação de entrevista ao vivo, uma pergunta de cada vez, com respostas reais digitadas por Lucas e avaliação de cada resposta antes da próxima pergunta. Diferente de escrever um banco de perguntas pronto (isso é career/interview/questions-answers/*.md, não uma skill).
linkedin-match-review Compara o perfil atual do LinkedIn (headline, About, bullets de experiência) contra uma ou mais vagas específicas, pra checar se a história contada bate com o que as vagas pedem.

Detalhes de cada uma (regras, formato de dossiê, convenções) ficam no próprio SKILL.md, este README só resume o que cada uma faz.

Cover Letters

Rota Descrição
/cover-letter Genérica PT
/cover-letter-en, -fr, -es Por idioma
/cover-template Template editável (logo + empresa + vaga + parágrafos)
/cover-alternative Layout alternativo
/ilia-cover, /stackadapt-cover Candidaturas específicas
/covers Hub interno

Template de candidatura (/cover-template)

  1. Preencha empresa, vaga e cores (duplo clique no texto ou Carregar JSON).
  2. Baixar JSON para salvar o estado (inclui letter se os parágrafos foram alterados).
  3. Imprima / exporte PDF.

Guia detalhado: src/app/cover-template/README.md

Ferramentas

Arquivo Descrição
docs/SCRIPTS.md Referência de todo script em scripts/, comando npm ou não

Deploy

Push para main dispara o GitHub Actions (GitHub Pages) e o Vercel automaticamente.