Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Resume Job Match Score Laravel Package

sharpapi/laravel-resume-job-match-score

Laravel package that uses SharpAPI to calculate a resume-to-job match score, helping you rank candidates and assess fit. Simple integration for adding AI-powered job matching to your PHP app.

View on GitHub
Deep Wiki
Context7

Getting Started

  • Install the package and let Composer resolve sharpapi/php-core ^1.4.1. The newer core is important: failed jobs with null results no longer raise TypeError, and missing API keys throw a clear InvalidArgumentException.
  • Publish the config using the corrected tag:
    php artisan vendor:publish --tag=sharpapi-resume-match-score
    
  • Set SHARP_API_KEY in .env. If you use Laravel Boost, look first at the shipped core guideline (resources/boost/guidelines/core.blade.php) and the sharpapi-resume-job-match-score skill.
  • First use case: submit a resume and job description, receive a SharpApiJob, then call fetchResults() to retrieve the match score. Start with one queued job so you can observe polling and result handling before wiring it into a larger workflow.

Implementation Patterns

  • Use the submit → poll/fetch workflow: submit the resume/job match request, persist the returned job identifier/status, and call fetchResults() from a queued Laravel job rather than inside a web request. Set the queue job timeout high enough for your polling strategy.
  • Choose your polling behavior deliberately. By default the client can honor the API’s Retry-After; setting SHARP_API_JOB_STATUS_USE_POLLING_INTERVAL=true makes fetchResults() use SHARP_API_JOB_STATUS_POLLING_INTERVAL instead. Use this when you need predictable intervals for queue workers or rate-limit control.
  • Handle failures as first-class outcomes. With sharpapi/php-core ^1.4.1, a failed job with a null result returns a SharpApiJob; inspect the job status/result before reading the score. Catch InvalidArgumentException early for missing API keys, especially in queue workers and CI environments.
  • Wrap calls in your own application service or action class, then dispatch a Laravel job. Store the SharpAPI job id, status, and final result payload so retries and audits are straightforward.
  • Use the shipped Pest + Orchestra Testbench suite as a reference for expected behavior and fakes. For app-level tests, fake the HTTP boundary or inject a test double around your own service wrapper.
  • If using Laravel Boost, lean on the core guideline and sharpapi-resume-job-match-score skill to scaffold usage patterns, but keep your own domain validation around resume/job inputs.

Gotchas and Tips

  • The config publish tag is sharpapi-resume-match-score, not sharpapi-resume-job-match-score as older README text suggested. Use the corrected tag.
  • Polling env vars had no effect before v1.2.0 because the service did not pass the setting to the client. After upgrading, clear cached config:
    php artisan config:clear
    
  • Do not set SHARP_API_JOB_STATUS_POLLING_INTERVAL too aggressively. Overriding Retry-After can increase API load and trigger rate limits; keep it aligned with your queue concurrency.
  • Ensure every environment that runs queue workers has SHARP_API_KEY. The improved exception is clearer, but it still fails at runtime if the key is absent.
  • Do not assume fetchResults() always returns a populated score. A failed job may now return a SharpApiJob with a null result; check status and log the job payload before accessing score fields.
  • Confirm sharpapi/php-core is actually updated to ^1.4.1. If Composer is locked to an older core, the null-result and missing-key behavior fixes will not apply.
  • If your app caches Laravel Boost resources, refresh them after upgrading so the new guideline and skill are available.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
ippanelcom/laravel-sdk
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus