{"id":18372732,"url":"https://github.com/marttp/resumize","last_synced_at":"2026-03-06T13:04:06.561Z","repository":{"id":236538961,"uuid":"792805790","full_name":"marttp/resumize","owner":"marttp","description":"Application to help generate resume content based on your experience and your interesting job.","archived":false,"fork":false,"pushed_at":"2024-05-01T10:13:29.000Z","size":184,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-27T13:45:48.356Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marttp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-27T16:23:23.000Z","updated_at":"2025-01-24T06:30:57.000Z","dependencies_parsed_at":"2024-12-24T02:42:09.370Z","dependency_job_id":null,"html_url":"https://github.com/marttp/resumize","commit_stats":null,"previous_names":["marttp/rag-resume-generate","marttp/resumize"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marttp%2Fresumize","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marttp%2Fresumize/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marttp%2Fresumize/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marttp%2Fresumize/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marttp","download_url":"https://codeload.github.com/marttp/resumize/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248797407,"owners_count":21163140,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T00:06:59.829Z","updated_at":"2026-03-06T13:04:01.507Z","avatar_url":"https://github.com/marttp.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Resumize (เรซูมั้ย?)\n\n## Overview\nThis application helps generate resume content based on your experience and the job description of your interest.\n\n![CleanShot 2567-04-28 at 01 25 21@2x](https://github.com/marttp/rag-resume-generate/assets/34801905/b04e820e-68a5-4c15-b93c-c43aad035fe6)\n\n## Article\n- [Guide for your new resume to apply the dream job with Resumize (My Rust \u0026 RAG side project)](https://tpbabparn.medium.com/guide-for-your-new-resume-to-apply-the-dream-job-with-resumize-my-rust-rag-side-project-486cce64e7ea)\n- [ช่วยตัดสินใจสร้าง Resume โดยอิงจาก Job description ด้วย Resumize (My Rust \u0026 RAG side project)](https://tpbabparn.medium.com/ช่วยตัดสินใจสร้าง-resume-โดยอิงจาก-job-description-ด้วย-resumize-my-rust-rag-side-project-1f70e2ef5eeb)\n\n## Tech Stack\n- [Dioxus](https://dioxuslabs.com/) 0.5.1\n- [Actix Web](https://actix.rs/) 4.5.1\n- [Qdrant](https://qdrant.tech/) 1.9.0\n- [LlamaEdge](https://github.com/LlamaEdge/LlamaEdge) with [Meta Llama 3](https://llama.meta.com/llama3/)\n\n## Features\n- **Generate Resume Content**: Input your dream job description and get a customized resume content. Please note that the result is not perfect.\n- **Upload Experience**: Upload your past experiences in JSON format to be used for generating the resume content.\n\n## Demo\n\n[Video demo](https://youtu.be/fBumbjukAF8?si=uSV3iefK_bEs8au0)\n\n[![Demo - Resumize (Dioxus, Actix Web, Qdrant, LlamaEdge)](https://img.youtube.com/vi/fBumbjukAF8/0.jpg)](https://youtu.be/fBumbjukAF8?si=uSV3iefK_bEs8au0)\n\n## How it's designed\n\nThe project has been designed for few use-cases\n1. Upload my own experience (as JSON)\n2. Upload Job description from recruiter by copy from job market\n3. Create Resume content based on job description with suggestion\n\n![CleanShot 2567-04-28 at 01 25 38@2x](https://github.com/marttp/rag-resume-generate/assets/34801905/eb8564e7-d3dc-46ac-a8d5-ca8745e2102b)\n\n### Upload my own experience (as JSON)\n\n![CleanShot 2567-04-28 at 01 26 00@2x](https://github.com/marttp/rag-resume-generate/assets/34801905/3e222f35-80da-4b7a-ae17-d517545ed31c)\n\n#### Description\n\nThe idea behind is I want to apply RAG on this project. So I think about the scenario that we can use to matching with resume content, Why don't we use some datasource or original resume? This decision as you already know, I was using dataset approach and it's easier for me to use JSON because I have it on my own portfolio site.\n\nHere is current JSON format which acceptable by Backend\n\nReference: https://github.com/marttp/tpcoder-portfolio/blob/main/src/data/experiences.json\n\n```json\n{\n  \"professional\": [\n    {\n      \"company\": \"company\",\n      \"country\": \"country\",\n      \"position\": \"position\",\n      \"startDate\": \"startDate\",\n      \"endDate\": \"endDate\",\n      \"highlights\": [\n        \"...list of achievement on this company\"\n      ]\n    }\n  ],\n  \"education\": [\n    {\n      \"school\": \"school\",\n      \"degree\": \"degree\",\n      \"fieldOfStudy\": \"fieldOfStudy\",\n      \"startDate\": \"startDate\",\n      \"endDate\": \"endDate\",\n      \"courses\": [\n        \"...list of string storing course\"\n      ]\n    }\n  ]\n}\n```\n\n#### Enhancement\n- Consider to use PDF file should be general for many use-cases.\n- Could be implemented as asynchronous approach. User upload the file =\u003e Pass the file to workload which upsert document on vector database.\n- For each user upload, right now I read from constant value. However, I believe identify user identity on each upload should be much more usable on the future.\n\n### Upload job description and generate new resume content\n\n![CleanShot 2567-04-30 at 13 47 35@2x](https://github.com/marttp/rag-resume-generate/assets/34801905/f82b17db-a380-4d19-ba9b-42f28c393b88)\n\n#### Description\n\nFind the role you interested, put job title and job description to get your suggestion and score of encouragement to apply your dream role depending on your past experience.\n\n#### Enhancement\n- Currently, The result has shown in the group of text. Not the markdown. Meanwhile markdown result is responsed from LLM. I cannot do it on this project because currently, Dioxus don't have official Markdown support on desktop.\n- Because my Macbook Pro 2019 13 inches computation power could not process well with LLM project, I think it's better to designed as asynchronous approach as well as upload experience. For this scenarios, Send email about the result or send push notification and store it to inbox should be okay for the UX.\n- Better if the final result produce complete version of resume.\n\n## How to run locally\n\n### Prerequisite\n- [Git](https://git-scm.com/)\n- [Install Rust](https://www.rust-lang.org/tools/install)\n- [Docker](https://www.docker.com/products/docker-desktop/) or [Podman](https://podman.io/) or whatever you like e.g. [Colima](https://github.com/abiosoft/colima) to run Qdrant\n\n### Make it run locally\n- Clone the repository: `git clone https://github.com/marttp/resumize`\n\n### Run LlamaEdge for your local\n\nPlease follow this article about how to run WASM on your locally [Getting Started with Llama-3-8B](https://www.secondstate.io/articles/llama-3-8b/). Below are the steps required for the project only\n\n1. Install WasmEdge via the following command line.\n    ```shell\n    curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | bash -s -- --plugin wasi_nn-ggml\n    ```\n\n2. Download the Llama-3-8B model GGUF file.\n    ```shell\n    curl -LO https://huggingface.co/second-state/Llama-3-8B-Instruct-GGUF/resolve/main/Meta-Llama-3-8B-Instruct-Q5_K_M.gguf\n    ```\n\n3. Download an API server app. It is also a cross-platform portable Wasm app that can run on many CPU and GPU devices.\n    ```shell\n    curl -LO https://github.com/LlamaEdge/LlamaEdge/releases/latest/download/llama-api-server.wasm\n    ```\n\n4. Download the chatbot web UI to interact with the model with a chatbot UI.\n    ```shell\n    curl -LO https://github.com/LlamaEdge/chatbot-ui/releases/latest/download/chatbot-ui.tar.gz\n    tar xzf chatbot-ui.tar.gz\n    rm chatbot-ui.tar.gz\n    ```\n\n5. Start an API server for the model\n    ```shell\n    wasmedge --dir .:. --nn-preload default:GGML:AUTO:Meta-Llama-3-8B-Instruct-Q5_K_M.gguf \\\n      llama-api-server.wasm \\\n      --prompt-template llama-3-chat \\\n      --ctx-size 4096 \\\n      --model-name Llama-3-8B\n    ```\n\nFeel free to take a look on the mentioned article if you couldn't understand them well. 🙇‍♂️\n\n### Run Qdrant on locally\n\nDepending on your approach, I would suggest to using container technology to speed up on build your playground\n\n#### Standalone container\n\n1. Open terminal and run below command if using docker - reference: https://qdrant.tech/documentation/quick-start/\n    ```shell\n    docker run -p 6333:6333 -p 6334:6334 \\\n    -v $(pwd)/qdrant_storage:/qdrant/storage:z \\\n    qdrant/qdrant\n    ```\n\n#### Compose file (I used this approach)\n\n1. Navigate to the project directory: `cd actix-rag-qdrant`\n2. Open terminal Run relate compose command (This example is using podman)\n    ```shell\n    podman compose up -d\n    ```\n\n### Run Actix Web\n\n1. Navigate to the project directory: `cd actix-rag-qdrant`\n2. Run below command to start dev server\n     ```shell\n     cargo watch -x \"run --bin server\"\n     ```\n\n### Run Dioxus\n\n#### Locally\n\n1. Navigate to the project directory: `cd dx-app`\n2. Install npm: https://docs.npmjs.com/downloading-and-installing-node-js-and-npm\n3. Install the tailwind css cli: https://tailwindcss.com/docs/installation\n4. Run the following command in the root of the project to start the tailwind CSS compiler:\n    ```bash\n    npx tailwindcss -i ./input.css -o ./assets/tailwind.css --watch\n    ```\n5. Run the following command in the root of the project to start the Dioxus dev server:\n    ```bash\n    dx serve --hot-reload --platform desktop\n    ```\n\n#### Bundle version (Only for macOS)\n\n1. Follow all step from *Locally* section\n2. Stop development mode and run below command instead\n    ```bash\n    dx bundle --release\n    ```\n3. If you success, You will have this dmg file.\n\n    ![CleanShot 2567-04-30 at 21 03 36@2x](https://github.com/marttp/resumize/assets/34801905/ec09b53c-d46f-4e72-81dd-14230954cf10)\n\n\nApologize for haven't tried on Windows or Linux, I have only 1 laptop. 🙇‍♂️\n\n## License\nThis project is licensed under the MIT License.\n\n## Contact\nIf you have any questions, feel free to reach out to me at below contact\n- Facebook: [Thanaphoom Babparn](https://www.facebook.com/thanaphoom.mart/)\n- FB Page: [TP Coder](https://www.facebook.com/tpcoder)\n- LinkedIn: [Thanaphoom Babparn](https://www.linkedin.com/in/thanaphoom-babparn/)\n- Website: [TP Coder — Portfolio](https://portfolio.tpcoder.dev/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarttp%2Fresumize","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarttp%2Fresumize","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarttp%2Fresumize/lists"}