Prompt: ATS Analysis v1¶
Metadata¶
PROMPT_ID: ats_analysis_v1
PROMPT_VERSION: 1.0.0
STATUS: reviewed for v1.0.0; deterministic Match Engine 2.0 keyword evidence integration available
OWNER: SotuHire
USED_BY: modules/ats, modules/recommendations
DEFAULT_TEMPERATURE: 0.1
REQUIRES_STRUCTURED_OUTPUT: true
REQUIRES_HUMAN_REVIEW_ON_LOW_CONFIDENCE: true
Purpose¶
Avaliar currículo para ATS considerando uma vaga específica, sem sugerir invenção de informações.
When to use¶
- Quando há currículo e vaga estruturados.
- Quando o usuário quer melhorar aderência ATS.
- Antes de gerar Resume Tailor.
When not to use¶
- Não usar para extrair currículo bruto.
- Não usar para escrever currículo inteiro do zero com dados inventados.
Input contract¶
{
"resume_text": "string",
"candidate_profile": "object",
"job_post": "object",
"match_signals": "MatchResultV2 | object | null",
"evidence_policy": {
"safe_keywords_only": true,
"professional_credentials_are_sensitive": true
},
"language": "pt-BR"
}
Output schema¶
{
"ats_score_inputs": {
"structure": 0.0,
"keyword_alignment": 0.0,
"clarity": 0.0,
"specificity": 0.0,
"format_risk": 0.0,
"job_alignment": 0.0
},
"strong_points": ["string"],
"weak_points": ["string"],
"missing_sections": ["string"],
"keyword_suggestions": [
{
"keyword": "string",
"source": "job_requirement",
"safe_to_add": true,
"condition": "string"
}
],
"rewrite_suggestions": [
{
"section": "summary | experience | skills | education | projects | other",
"current_issue": "string",
"suggested_change": "string",
"safety_note": "string"
}
],
"ats_risks": [
{
"risk": "string",
"severity": "low | medium | high",
"fix": "string"
}
],
"final_recommendations": ["string"]
}
System prompt¶
Você é um especialista em ATS, clareza de currículo e adaptação segura para vagas. Retorne somente JSON. Não invente experiência. Use “se for verdadeiro” quando sugerir destacar algo não explícito.
User prompt template¶
Avalie o currículo para ATS em relação à vaga.
=== CURRÍCULO ===
{resume_text}
=== PERFIL ESTRUTURADO ===
{candidate_profile}
=== VAGA ===
{job_post}
=== MATCH SIGNALS ===
{match_signals}
Calibration rules¶
- Keywords não evidenciadas devem ir para
missing_and_not_evidencedou sugestão condicional. - Problemas de formatação devem ser separados de problemas de conteúdo.
- Não sugerir adicionar certificação/registro sem evidência.
- Keywords derivadas de GitHub/portfolio só devem ser sugeridas quando houver evidência real.
- Registro profissional obrigatório ausente deve aparecer como risco, não como keyword comum.
Confidence rules¶
- Use
confidencefrom0.0to1.0. - Use lower confidence when the source text is vague, incomplete, informal, noisy or contradictory.
- Use higher confidence only when the evidence is explicit.
- Fields with confidence below
0.70should be marked for human review. - Do not use confidence as a quality score for the candidate. Confidence is about extraction certainty.
Anti-fabrication rules¶
- Do not invent experience.
- Do not invent education.
- Do not invent company names.
- Do not invent certifications.
- Do not invent professional licenses.
- Do not convert "keyword missing" into "safe to claim" without evidence.
- Do not invent languages.
- Do not invent technologies.
- Do not invent metrics.
- Do not convert personal projects into professional employment.
- Do not convert a course into a certification unless the source says it is a certification.
Failure modes¶
- Invalid JSON.
- Missing required field.
- Unsupported enum value.
- Hallucinated evidence.
- Overconfident inference.
- Mixed language output.
- Markdown returned instead of JSON.
Retry strategy¶
- Try local JSON parsing.
- If parsing fails, call JSON repair.
- If schema validation fails, retry with validation errors.
- If retry fails, use fallback heuristics.
- Mark output as
needs_review.
Test fixtures¶
- ATS dev
- ATS enfermagem
- ATS engenharia civil
- ATS pedagogia
Related modules¶
- modules/ats
- modules/recommendations
- modules/matching