---
Introduction to the Problem
On one hectic day, while discussing current issues in Slack, one of the developers raised the concern about slow AI parsing. The discussion heated up as we realized that users had started complaining about delays in data processing. At that moment, it became clear: something needed to change.
Context: Why It Matters
Slow data parsing not only hampered our internal processes but also negatively impacted the user experience. Clients using our product for resume analysis began to lose trust in the system. If we couldn't resolve this issue quickly, it could lead to a decrease in subscriptions and, consequently, a loss of revenue. In this situation, each of us felt the pressure: it was important for the team, the business, and, most importantly, for our users.
Details of the Problem
The problem manifested itself in that requests to the AI parser took too much time—sometimes up to 10 seconds per resume. When multiple users were working in the system simultaneously, the load increased, and wait times grew to 20 seconds. This triggered a series of complaints, and one example we received was from a client who could not get timely results for their candidate analyses. We realized that if the situation did not change, it would lead to client attrition.
Initial Attempts at Resolution
As a first step, we decided to optimize the parser itself by reducing the size of the data being processed. However, this did not yield the expected results. We also tried increasing the number of servers handling requests, but this raised costs without noticeable performance improvements. Each of these solutions faced new challenges, and we understood that we needed to explore other approaches to address this issue.
Technical Approach: Implementing Laravel Queue
Eventually, we arrived at the decision to use Laravel queue. This allowed us to distribute the tasks of processing resumes among multiple workers, significantly increasing processing speed. Here’s how we implemented it:
use App\Jobs\ParseResume;
foreach ($resumes as $resume) {
ParseResume::dispatch($resume);
}
This solution enabled us to process requests asynchronously, greatly improving system responsiveness and reducing server load.
Changes in the Product
After implementing Laravel queue, we managed to reduce the resume processing time to 3-5 seconds. Users began receiving results almost instantly. This not only increased customer satisfaction but also helped us regain trust in our product. We received positive feedback, and the number of complaints dropped sharply. Now users could focus on other aspects of their work without wasting time waiting for results.
Lessons Learned
This process taught us several important lessons:
- Asynchronous task processing significantly enhances performance.
- Not all solutions are obvious; sometimes it is worth trying multiple approaches before finding the right one.
- It is crucial to consider user feedback and respond promptly to complaints.
- Code-level optimization may be insufficient without the right architecture.
- Teamwork and open discussion of problems help find more effective solutions.
What This Means for Candidates
For candidates, this means that at Fitlane AI, we are actively looking for engineers ready to tackle real problems and enhance user experience. We offer the opportunity to implement your ideas and see how they impact the product. If you want to work in a team that values your input and strives for continuous improvement, we would be happy to have you.
What This Means for Recruiters
Recruiters should understand that we are looking for not only technical skills but also critical thinking abilities. We need specialists who can propose solutions, not just execute tasks. If you have candidates ready to work in a dynamic environment and able to adapt, be sure to pay attention to them.
Next Steps
Despite our success, we understand that we need to continue monitoring performance and seek new optimization opportunities. We are considering integrating other technologies, such as containerization, to improve system scalability. If we had to start over, we might have tested this approach earlier to arrive at an effective solution more quickly. ---