R238Company/meu-emprego-novo
Productivity & UtilitiesAn AI agent pipeline that tailors resumes to job postings and keeps career history truthful.
What it is
This project packages a job-search method and a Python CLI that turns a candidate's existing resumes and a master career profile into a resume tailored to a specific job posting. It targets job seekers who want to personalize many applications without fabricating experience; the CLI is aimed at developers comfortable with Python and LaTeX, while a prompt-only track works with any AI assistant.
The CLI extracts PDF/DOCX resumes into an editable resume.json, then runs five CrewAI agents: a career strategist reorders experience for the role, a hiring manager scores and critiques the draft, an editor applies feedback and produces LaTeX/PDF, a candidate reports the final score and open gaps, and an interview coach drafts preparation notes. The hiring-manager/editor loop stops at a score of 8.5, when a revision no longer improves the score, or after three revisions by default. Every position in the original resume is preserved, so output may exceed two pages.
Quick start
Requirements: Python 3.12 and an API key for one supported LLM provider (Anthropic, OpenAI, Gemini, Grok, or AWS Bedrock). LaTeX is optional; without pdflatex the CLI falls back to a simpler reportlab PDF. Commands below assume Linux, macOS, or Git Bash on Windows.
git clone https://github.com/R238Company/meu-emprego-novo.git
cd meu-emprego-novo
python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
Edit .env: set LLM_PROVIDER to anthropic, openai, gemini, grok, or bedrock and fill the matching key. The example file defaults to Bedrock, so change it if you are not using AWS.
Test with the bundled fictional candidate. These commands make real API calls and consume credits:
mkdir -p input/dev_procurando data/dev_procurando/job_profiles
cp examples/dev_procurando/profile_truth.md examples/dev_procurando/job_desc.md input/dev_procurando/
cp examples/dev_procurando/resume.json data/dev_procurando/
cp examples/dev_procurando/job_profiles/*.txt data/dev_procurando/job_profiles/
python main.py --person dev_procurando --job --lang en
Output lands under outputs/dev_procurando/senior_full_stack_engineer_react_node_example_corp/; compare it with the reference PDF. For your own data, create input/<you>/, add at least one PDF/DOCX resume and a profile_truth.md from the template, then run python -m src.scripts.ingest_resume --person <you> and review data/<you>/resume.json. Put a job description in input/<you>/job_desc.md and run python main.py --person <you> --job or add --lang en. The directory will contain resume.json, .tex, PDF, coverage_review.md, rating_report.md, and interview_prep.md. The CLI stops there; you still review facts and submit manually.
Constraints
Personal data such as resumes, job descriptions, and outputs are sent to the chosen LLM provider, and API usage is billed per execution; a single run can call the provider more times than the number of agents because of revision loops. input/, data/, outputs/, and privado/ are gitignored, and API keys belong in .env. Re-running ingest_resume overwrites resume.json, including manual corrections. The agent prompts reduce but do not eliminate fabrication, so every date, title, and number must be checked before submission. A final score below 8.5 can reflect a real gap and is a valid result. The CLI covers only resume generation, coverage review, and interview-prep drafting; job search, triage, submission, and tracking remain manual. The project does not support mass applications without reading postings and is licensed under MIT.
HotRepo's take
The repository appeared on HotRepo's new-project list for Python on 2026-11-03, gaining 9 stars and 1 fork in a one-hour window that started with 100 stars and ended at 109. That single snapshot supports only the fact of early traction, not a trend. The more concrete differentiators are the explicit guardrails: a master profile with priority over all other inputs, a revision loop that stops rather than forcing a score, and a published method with prompt-only and CLI tracks. For developers who apply to many roles, the CLI is a readable automation layer rather than a polished SaaS; anyone without Python or API experience is better served by the prompt track.
Written by AI from the project's README, updated . The project's own docs are the source of truth.