This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
What I Built
I built an Agent that turns your CV into a website that can be easily shared with your clients or employers
ResumeFolio turns a CV PDF into a shareable portfolio website.
It is designed for non tech professionals like lawyers , Doctors , Teachers who do not know hoew to build a website so ResumeFolio does it for them in minutes , making there experience well presented and shareable to the world in just a few clicks !
Demo
Code
ResumeFolio
Upload a CV (PDF), get a portfolio website with its own link. No account, no design skills The only input is the CV file. Gemma, an open-weight model that runs on your own machine through Ollama reads the CV. No paid API is used anywhere.
Why open models matter here
- A CV is personal data. Gemma runs locally, so the CV text never goes to a third party, and the app itself never writes the CV file anywhere.
- No per-page cost. You pay for hardware you already have, not per token.
- The model never has the last word. Whatever it writes is validated, sanitised and checked, and a deterministic template and rule-based parser guarantee the user still gets a page if the model fails.
Quick start
pip install -r requirements.txt
pip install -r requirements-dev.txt # only for sample CVs and tests
python scripts/make_samples.py # fictional sample CVs into ./samples…How I Built It
So I used Gemma model gemma4:e4b-it-qat for the website building part and built the app around python , the agent creates a html file from the uploaded CV and then presents in the frontend with a unique link given to the user for sharing the website ! python handles tasks like extract , design and pipeline etc.
Deployed with render!
Why Does Open Innovation Matter?
Open Innovation helps support people who want to contribute to society by providing resources that are open-sourced or not computationally expensive further motivating them to build with ease!
Prize Categories
Best use of Gemma
Best use of Render
Top comments (0)