Skip to content

[Feature]: Profile wizard: parse work-experience blocks from resumes #8

Description

@Aditya-00a

What problem does this solve?

The profile wizard at agent/profile_wizard.py already extracts name, email, phone, school, degree, and skills from a resume PDF. But the resulting data/master-resume.json ships with experience: [] — the user's actual work history isn't parsed.

This blocks resume tailoring (the loop's tailor.py re-ranks bullets per JD, but only if there are bullets to re-rank).

What to do

  1. Open agent/resume_parser.py. The text extraction (extract_resume_text) already returns plain text from PDF/DOCX.
  2. Add an _extract_experience() function that finds work-history blocks. Heuristics that work:
    • Lines matching ^(.+?)\s+(\d{4}.*?(present|\d{4})) are likely role/dates
    • Bullets starting with , -, or * under a role are bullets for that role
    • Section headers like "EXPERIENCE", "WORK EXPERIENCE", "PROFESSIONAL EXPERIENCE" mark the boundary
  3. Return a list of {"company": str, "title": str, "start": str, "end": str, "bullets": [str]} dicts.
  4. Wire it into profile_wizard.pyto_master_resume_json() so experience gets populated.

Proposed solution

Acceptance

  • A real PDF resume produces a non-empty experience array
  • Bullets keep their order
  • agent/run.py boots clean and the tailor module sees the bullets

Notes

  • Don't try LLM-based parsing yet — keep it deterministic so it works without Ollama
  • Test against 3-5 different real resumes (different formats) before considering done

Alternatives you considered

No response

Are you up for contributing this?

  • Yes, I'd like to send a PR
  • Yes, with some guidance
  • No, just suggesting

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions