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 Parser Laravel Package

sharpapi/laravel-resume-parser

A Laravel package for parsing resumes and CVs into structured candidate data using SharpAPI. Upload PDF or Word documents and extract contact details, work history, education, skills, and other key fields to streamline recruitment and applicant-tracking workflows.

View on GitHub
Deep Wiki
Context7

Getting Started

Start by installing the package and confirming it pulls sharpapi/php-core ^1.4.1. Publish the package config, set SHARP_API_KEY, and clear config cache after changing environment values.

Look first at:

  • config/sharpapi.php for API key, job-status polling flag, and polling interval.
  • The package README for the current client/facade entry point.
  • resources/boost/guidelines/core.blade.php and the sharpapi-resume-parser Boost skill if you use Laravel Boost.
  • The new Pest + Orchestra Testbench tests as executable examples of expected behavior.

A good first use case is a resume-parsing flow: submit a job, wait for completion, call fetchResults(), and handle both successful and failed SharpApiJob results. If your app cannot rely on the API’s Retry-After header, enable polling explicitly:

SHARP_API_JOB_STATUS_USE_POLLING_INTERVAL=true
SHARP_API_JOB_STATUS_POLLING_INTERVAL=5

Implementation Patterns

Wrap SharpAPI calls in a small application service or action rather than scattering client calls through controllers. Resolve the client through Laravel’s container so tests and future client bindings remain easy to swap.

For asynchronous resume parsing, submit from a queued job and persist the SharpAPI job identifier. Retrieve results in a separate queued job or controlled polling loop. Keep the polling decision in configuration, not code, and read the same config keys the package uses.

When using polling mode, set both the boolean flag and the interval. When polling mode is disabled, let the package use the API’s Retry-After behavior. Do not hard-code sleeps around fetchResults() unless you are deliberately building your own retry layer.

Treat SharpApiJob as the primary result object. After v1.1.0, a failed job with a null result returns a SharpApiJob instead of raising a TypeError, so check job status and result presence before passing data into parsers or transformers. Catch InvalidArgumentException around startup or health-check paths where a missing API key should fail clearly.

If you use Laravel Boost, load the shipped core guideline and sharpapi-resume-parser skill into the assistant context. These resources are useful for generating consistent integration code and reducing invented API usage.

Use the new Pest + Orchestra Testbench suite as a reference for package-level testing. In application tests, fake HTTP responses where possible and assert both success and failed-job/null-result paths.

Gotchas and Tips

The v1.1.0 polling fix is important: before this release, SHARP_API_JOB_STATUS_USE_POLLING_INTERVAL / api_job_status_use_polling_interval had no effect because the service did not pass it to the client. After upgrading, verify the flag is actually reaching the client via your published config and that config cache has been refreshed.

Polling interval only applies when polling mode is enabled. Setting SHARP_API_JOB_STATUS_POLLING_INTERVAL alone will not change behavior if SHARP_API_JOB_STATUS_USE_POLLING_INTERVAL is false.

Boolean environment variables are a common source of confusion. Confirm how your Laravel version casts the value and prefer explicit true / false in .env files. After deployment, run php artisan config:clear or rebuild config cache.

Do not assume failed SharpAPI jobs throw. A failed job may now return a SharpApiJob with a null result. Check the job object before reading result data.

A missing API key now throws a clear InvalidArgumentException. Use this for fail-fast deployment checks, but avoid exposing the key or raw exception details to end users.

Keep sharpapi/php-core at ^1.4.1 or newer. The Laravel package’s improved failure handling and missing-key behavior depend on that core release.

The Boost resources are development guidance, not runtime features. They will not affect production behavior, but they are useful extension points for keeping AI-assisted code aligned with the package’s intended patterns.

For customization, prefer publishing config and binding a customized client through the service provider over editing vendor files. Add regression tests around polling mode, failed-job/null-result handling, and missing API key behavior when upgrading.

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.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager