Skip to content

[PAV-177] otimizar-geracao-de-curriculo-para-ats - #309

Open
Benevanio wants to merge 8 commits into
developfrom
feat/PAV-177-otimizar-geracao-curriculo-ats
Open

Benevanio wants to merge 8 commits into
developfrom
feat/PAV-177-otimizar-geracao-curriculo-ats

Conversation

@Benevanio

Copy link
Copy Markdown
Collaborator

Descrição

Otimização da geração de currículos para ATS, com melhorias na estrutura e apresentação do currículo e preparação do fluxo para personalização baseada na descrição da vaga. O currículo passa a priorizar informações, experiências e competências mais relevantes para cada oportunidade, mantendo o conteúdo fiel às informações reais do candidato e compatível com ATS.

Também foi estruturado o conceito de enriquecimento do perfil através de fontes profissionais como GitHub e LinkedIn, permitindo utilizar projetos, tecnologias, experiências e outras informações públicas relevantes durante a geração do currículo. A adaptação considera os requisitos e palavras-chave da vaga para produzir um currículo mais direcionado à oportunidade.

Linear link

https://linear.app/candidateappbr/issue/PAV-177/otimizar-geracao-de-curriculo-para-ats

Como foi testado

  • Testes unitários do backend executados.
  • Testes unitários do frontend executados.
  • Validação da geração do currículo.
  • Validação da adaptação do conteúdo com base na descrição da vaga.
  • Validação da estrutura do currículo para manter compatibilidade com ATS.

hltav
hltav previously approved these changes Oct 8, 2026
Copilot AI lite review requested due to automatic review settings October 11, 2026 13:08
@Benevanio
Benevanio dismissed stale reviews from hltav and nayarakarinesilva via b5dd2df October 11, 2026 13:08

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved moderate issues affect authorization, response headers, payload limits, service exposure, and preview robustness.

4 open findings
What changed in this PR

This PR integrates ATS resume generation and analysis through ats-forge, including backend APIs, frontend preview/editing, personalization, and supporting documentation and tests.

Changes:

  • Adds authenticated resume generation and analysis endpoints.
  • Adds frontend generation forms, ATS preview, scoring, and downloads.
  • Integrates Docker configuration, environment variables, documentation, and tests.
File Change Final review comments
SECURITY_AUDIT_LINEAR_CARDS.md Adds security audit documentation. Nit (1): Move to a dedicated audit PR or explain its scope.
README.md Updates Linear reference. —
LOCAL_DEVELOPMENT.md Documents local ats-forge usage. —
frontend/​tests/​unit/​infrastructure/​resumeApi.test.ts Tests the frontend resume API. —
frontend/​tests/​unit/​components/​ResumePreview.test.tsx Tests ATS preview rendering. —
frontend/​tests/​unit/​components/​ProfileTab.test.tsx Tests profile integration. —
frontend/​tests/​unit/​components/​GenerateResumeCard.test.tsx Tests generation form flows. —
frontend/​src/​domains/​new_dashboard/​infrastructure/​resumeApi.ts Implements resume API calls. —
frontend/​src/​domains/​new_dashboard/​components/​profile/​ResumePreview.tsx Renders resume and ATS analysis. Moderate (2): Safely default missing recommendations to an empty list.
frontend/​src/​domains/​new_dashboard/​components/​profile/​ProfileTab.tsx Integrates the generator into the profile. —
frontend/​src/​domains/​new_dashboard/​components/​profile/​GenerateResumeCard.tsx Adds the resume generation form. Nit (1): Add accessible labels to experience fields.
docker-compose.yml Adds the ats-forge service. Moderate (4): Avoid exposing port 8089 without mandatory authentication.
backend/​tests/​unit/​scripts/​seed.test.ts Tests asynchronous seed completion. —
backend/​tests/​unit/​scripts/​backfillUserPii.test.ts Tests asynchronous backfill completion. —
backend/​tests/​unit/​resume/​resume.service.test.ts Tests the resume service. —
backend/​tests/​unit/​resume/​resume.mapper.test.ts Tests profile normalization. —
backend/​tests/​unit/​resume/​resume.controller.test.ts Tests the resume controller. —
backend/​tests/​unit/​resume/​resume.client.test.ts Tests ATS client communication. —
backend/​tests/​integration/​routes/​resume.routes.test.ts Tests integrated resume routes. —
backend/​src/​scripts/​seed.ts Exposes asynchronous seed completion. —
backend/​src/​scripts/​backfillUserPii.ts Exposes asynchronous backfill completion. —
backend/​src/​routes/​resume.routes.ts Defines resume endpoints. —
backend/​src/​modules/​resume/​schemas/​resume.schemas.ts Validates resume requests. Moderate (4): Add an aggregate payload limit consistent with the JSON parser limit.
backend/​src/​modules/​resume/​resume.types.ts Defines resume contracts. —
backend/​src/​modules/​resume/​resume.service.ts Orchestrates profile mapping and generation. —
backend/​src/​modules/​resume/​resume.mapper.ts Normalizes candidate data. —
backend/​src/​modules/​resume/​resume.controller.ts Handles resume responses and headers. Moderate (4): Expose Content-Disposition on every successful response.
Moderate (1): Avoid placing an unbounded full ATS report in X-Ats-Report.
backend/​src/​modules/​resume/​resume.client.ts Implements the ats-forge HTTP client. —
backend/​src/​config.ts Adds ATS configuration. —
backend/​src/​app.ts Registers resume routes. Moderate (1): Enforce active-user/session-revocation checks for blocked users.
.env.example Documents ATS environment variables. —

🧠 Review effort: Lite


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +89 to +98
if (resume.atsReport) {
res.setHeader("X-Ats-Score", String(resume.atsReport.score));
res.setHeader(
"X-Ats-Report",
Buffer.from(JSON.stringify(resume.atsReport), "utf-8").toString("base64"),
);
res.setHeader(
"Access-Control-Expose-Headers",
"X-Ats-Score, X-Ats-Report, Content-Disposition",
);
Comment on lines +14 to +15
// Capped below the app-wide 16kb JSON body limit (see app.ts).
jobDescription: z.string().max(12000).optional(),
Comment thread docker-compose.yml
Comment on lines +60 to +62
# Publicado porque o frontend (navegador) chama o ats-forge diretamente.
ports:
- "8089:8089"
Comment on lines +420 to +424
{atsReport.recommendations.length > 0 && (
<div className="rounded-xl border border-border bg-card p-4 shadow-sm">
<p className="text-sm font-semibold">Recomendações</p>
<ul className="mt-2 list-disc space-y-1 pl-4 text-xs text-muted-foreground">
{atsReport.recommendations.map((r, i) => (

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants