A Python CLI pipeline that converts audio recordings into structured resumes. Speak your background - the tool handles transcription, extraction, and formatting.
Audio (MP3/WAV)
↓
Whisper (local transcription → English text)
↓
LangChain + GPT-4o mini (structured extraction)
↓
Resume JSON + Markdown
Transcription is fully local - Whisper runs on your machine, no audio ever leaves it. The extraction step (turning raw transcript into structured resume sections) calls the OpenAI API via LangChain.
From a raw spoken recording, the pipeline produces:
- Professional summary
- Work experience
- Projects (with tech stack)
- Education
- Categorized technical skills
Output is both machine-readable JSON (ATS-compatible) and human-readable Markdown.
| Component | Technology |
|---|---|
| Speech-to-text | OpenAI Whisper (local) |
| LLM orchestration | LangChain |
| Extraction model | GPT-4o mini |
| Config | Python (config.py) |
| Packaging | Docker |
Prerequisites: Python 3.10+ or Docker, OpenAI API key, 2GB+ disk space for Whisper model.
git clone https://github.com/koi-bito/audio_to_resume.git
cd audio_to_resumeOption 1 - Docker:
docker build -t audio-to-resume .
docker run -v $(pwd)/audio:/app/audio audio-to-resume --input audio/sample.mp3Option 2 - Python:
pip install -r requirements.txt
python main.py --input audio/sample.mp3Set your OpenAI API key in config.py before running.
output/
├── resume.json # Machine-readable, ATS-compatible
└── resume.md # Human-readable Markdown
Built to explore multi-modal AI pipelines - specifically the boundary between local inference (Whisper) and cloud LLM calls (GPT-4o mini via LangChain). The interesting engineering problem here isn't the transcription or the extraction individually - it's prompt engineering the extraction step to handle the messiness of real spoken language: filler words, non-linear storytelling, mixed languages.