Turn your CV and GitHub into a hiring-ready README.
GitGlow is a single-page Phoenix LiveView app that takes a CV PDF, a GitHub
profile, and an optional website, asks a few sharp follow-up questions, and
turns that context into a polished GitHub profile README.md.
Live app: https://gitglow.michaelmunavu.com
The app is built as a single step-based LiveView:
landing -> input -> processing -> questions -> generating -> result
The screenshots below are the uploaded captures from docs/readme/, renamed to
match the flow. The input stage is shown in three separate captures, and the
brief generating state is not included in this screenshot set.
The hero explains the product and sends the user into the guided flow.
The user uploads a CV, enters a GitHub username or URL, optionally adds a personal website, and picks a README style.
The second setup screen adds an optional website for extra context.
The final setup screen lets the user choose the tone of the README.
GitGlow parses the CV, fetches GitHub data, and scrapes the website in parallel.
OpenAI generates six clarifying questions so the README reflects the user better.
The user can preview the README, switch to raw markdown, copy it, download it, or start over.
lib/gitglow_web/live/gitglow_live.exdrives the full flow.lib/gitglow_web/components/contains one component per stage.lib/gitglow/parser/handles CV, GitHub, and website extraction.lib/gitglow/readme_builder.exgathers context concurrently.lib/gitglow/ai.exwraps the OpenAI calls for questions and README output.Earmarkrenders the markdown preview in the result view.
Prerequisites:
- Elixir and Erlang
- Poppler for
pdftotextsupport
On macOS:
brew install popplerOn Debian or Ubuntu:
apt install poppler-utilsEnvironment variables:
export OPENAI_API_KEY=sk-...
export GITHUB_TOKEN=ghp_...GITHUB_TOKEN is optional, but it raises the GitHub API rate limit.
Run the app:
mix setup
mix phx.serverThen open http://localhost:4000.
mix testThe production host is gitglow.michaelmunavu.com.
Set these runtime variables in production:
OPENAI_API_KEYSECRET_KEY_BASEPHX_HOSTPORTGITHUB_TOKENif you want the higher GitHub rate limit
The app is stateless and does not require a database.






