sharpapi / laravel-resume-job-match-score
AI Resume & Job Description Matching for Laravel powered by SharpAPI.com
Requires
- php: ^8.1
- ext-json: *
- guzzlehttp/guzzle: ^7.0
- laravel/framework: ^9.0|^10.0|^11.0|^12.0
- sharpapi/php-core: ^1.0.2
- spatie/url: ^2.4
Requires (Dev)
- laravel/pint: ^1.0
- pestphp/pest: ^2.0
- phpstan/phpstan: ^1.10
README
Resume/CV & Job Description Compatibility Scoring API for Laravel
🎯 Instantly evaluate how well a candidate's resume aligns with your job descriptions — powered by SharpAPI AI.
Check the full documentation on the Resume/CV Job Match Scoring API page.
Requirements
- PHP >= 8.1
- Laravel >= 9.0
Installation
composer require sharpapi/laravel-resume-job-match-score --prefer-dist
Then, in your .env
file:
SHARP_API_KEY=your_api_key_here
Optionally, publish the config if you want to tweak the default settings:
php artisan vendor:publish --tag=sharpapi-resume-job-match-score
What it does
This package sends a resume file and a job description to the SharpAPI AI endpoint and returns a structured JSON scoring output based on 20+ compatibility factors:
- Skills match
- Experience and industry relevance
- Education and certifications
- Soft skills, language, cultural fit
- Stability score and more
Perfect for recruiters, ATS platforms, and job-matching tools.
Usage
Inject the ResumeMatchScoreService
into your controller or command and call matchResumeToJob()
:
use SharpAPI\ResumeMatchScore\ResumeMatchScoreService; use GuzzleHttp\Exception\GuzzleException; $resumePath = storage_path('resume.pdf'); // make sure this file exists $jobDescription = 'We are hiring a PHP Developer with Laravel experience…'; $language = 'English'; $service = new ResumeMatchScoreService(); try { $statusUrl = $service->matchResumeToJob( $resumePath, $jobDescription, $language // optional – English is default ); $result = $service->fetchResults($statusUrl)->toArray(); print_r($result); } catch (GuzzleException $e) { // Handle SharpAPI or network errors echo $e->getMessage(); }
Example Response
{ "data": { "type": "api_job_result", "id": "5a113c4d-38e9-43e5-80f4-ec3fdea3420e", "attributes": { "status": "success", "type": "hr_resume_job_match_score", "result": { "match_scores": { "overall_match": 88, "skills_match": 92, "experience_match": 85, "education_match": 80, "certifications_match": 70, "job_title_relevance": 84, "industry_experience_match": 75, "project_experience_match": 78, "technical_stack_match": 90, "soft_skills_match": 88, "methodologies_match": 82, "language_proficiency_match": 95, "location_preference_match": 100, "remote_work_flexibility": 90, "certifications_training_relevance": 70, "years_experience_weighting": 80, "recent_role_relevance": 83, "management_experience_match": 60, "cultural_fit_potential": 85, "stability_score": 77 }, "explanations": { "skills_match": "Candidate lists React, Node.js, and JavaScript with strong proficiency.", "experience_match": "5+ years experience in a similar role within a tech startup.", "education_match": "Bachelor's degree in Computer Science aligns with job requirements.", "certifications_match": "Has partial certification coverage (e.g., Scrum Master).", "language_proficiency_match": "Fluent in English as required." } } } } }
Do you think our API is missing some obvious functionality?
Changelog
Please see CHANGELOG for more information on what has changed recently.
Credits
- A2Z WEB LTD
- Dawid Makowski
- Boost your Laravel AI capabilities!
License
The MIT License (MIT). Please see License File for more information.
Social Media
🚀 For the latest news, tutorials, and case studies, don't forget to follow us on: