Match-Your-Resume is your a friendly tool to match your resume with the latest job openings on the market, powered by Groq, LinkUp, LlamaIndex, Gradio and FastAPI
Required: Docker and docker compose
The first step, common to both the Docker and the source code setup approaches, is to clone the repository and access it:
git clone https://github.com/AstraBert/resume-matcher.git
cd resume-matcher
Once there, you can follow this approach
- Add the
groq_api_key
,linkup_api_key
,llamacloud_api_key
,supabase_key
,supabase_url
andinternal_api_key
variable in the.env.example
file and modify the name of the file to.env
. Get these keys:- On Groq Console
- On Linkup Dashboard
- On LlamaCloud Dashboard
- On Supabase Console
- Create your own internal API key
mv .env.example .env
- Create an extraction agent on LlamaCloud with the following schema, and name it
resume-parser
:
{
"additionalProperties": false,
"properties": {
"potential_job_titles": {
"description": "Potential job titles matching the experiences and the skills in the resume",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"type": "array"
},
"seniority": {
"description": "Seniority, based on years of experience. Must be one of: 'entry level', 'junior', 'mid-level', 'senior'",
"type": "string"
},
"skills": {
"description": "Skills reported in the resume",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"type": "array"
},
"based_in": {
"anyOf": [
{
"description": "Where the person is based in the World, if available",
"type": "string"
},
{
"type": "null"
}
],
"description": "Where the person is based in the World, if available"
},
"work_location": {
"anyOf": [
{
"description": "Location where the person is available to work. Must be one of: 'remote', 'hybrid', 'on site', a combination of these options or None, if the information is not available",
"type": "string"
},
{
"type": "null"
}
],
"description": "Location where the person is available to work. Must be one of: 'remote', 'hybrid', 'on site', a combination of these options or None, if the information is not available"
}
},
"required": [
"potential_job_titles",
"seniority",
"skills",
"based_in",
"work_location"
],
"type": "object"
}
- And now launch the docker containers:
docker compose -f compose.local.yaml up resume_matcher_redis resume_matcher_register -d
docker compose -f compose.local.yaml up resume_matcher_mcp_server -d
docker compose -f compose.local.yaml up resume_matcher_app -d
You can register yourself as a user on http://localhost:7860 and you can login to the application on http://localhost:7500. Depending on your connection and on your hardware, the set up might take some time (up to 15 mins to set up) - but this is only for the first time your run it!
- Redis is used for API rate limiting control
- Supabase is used for user management and registration
You must have a Postgres instance running externally, in which you will see the analytics of the searches that LlamaResearcher performs.
- When you upload your resume, the
resume-parser
agent will parse your resume and extract structured data from it - The resume data are then passed on to the Job Matching Agent, which will turn them into a query to search the web for the top 5 latest job postings
- The web search is processed via LinkUp and the results are returned in a structured format
- Each of the jobs resulting from the web search is evaluated too see how much it matches the candidate profile
- Once the agent gathered all the information, it writes the final response and it returns it to the user
Contributions are always welcome! Follow the contributions guidelines reported here.
The software is provided under MIT license.