Automated CRM for Visa Support
Project type: B2B/B2C Platform Automated by CRM Role: Software Architect, Senior Full-Stack Developer Stack: PHP, Laravel, MySQL, Nginx, Alpine.js, Tailwind CSS, Telegram Bot API, Spatie PDF-to-Text
Project description The visa process involves a huge amount of routine work: collecting passports, tracking filing vouchers, manually transferring data from files and constantly informing customers. This CRM was created as a centralized hub to fully automate the workflow between tourists, managers and visa centers. The system autonomously intercepts documents, recognizes customer data, leads them through a strict status funnel and provides both a convenient panel for employees and a secure personal account for the end user.
Architecture and technical solutions The project is based on the framework Laravel. The architecture is based on a pragmatic approach: the system should be fast, fault-tolerant and require a minimum of manual actions from the manager. Key nodes of the system:
-
Automated document conveyor (Telegram Pipeline): Written custom service handler that intercepts files (PDF, ZIP, TXT) directly from Telegram chats. The « system determines the direction (country), binds the document to the desired client or automatically creates a new application.
-
Asynchronous processing (Queues & Batches): All the heavy logic of — reading PDF files, mass downloading hundreds of applications, generating reports and sending notifications — is brought to the background processes (Laravel Jobs/Supervisor). This completely eliminates the blocking of the interface at high loads.
-
Deep Logging (Audit Trail): Developed independent
LoggerService, which records any mutations of models (changes in status, dates, deletion of files, mass actions). The manager always sees a detailed history for each client (in the format « It was -> Becamelo»), which is critical for resolving conflict situations.
User interface and dashboard Instead of using heavy-duty SPA frameworks (React/Vue), the minimalist and ultra-fast Alpine.js + Tailwind CSS stack was chosen. This allows you to create a reactive interface that works instantly. Advanced management functions are implemented: « seamless » filtering and sorting tables with URL change without reloading the page (History API), convenient modal windows for mass editing of data and visual color coding of related applications (for example, when submitting with the whole family).
Multi-level parsing and fallbacks (Fallbacks) Since visa centers (VFS Global, BLS, etc.) use completely different formats of coupons and questionnaires, a smart data extraction algorithm is implemented in the system:
-
First, the system tries to extract passports, names, and record dates using regular expressions from the strict structure of file names.
-
In the case of non-standard naming, a backup mechanism (fallback) is triggered: the system physically opens the PDF document on the server, extracts raw text and, using complex patterns, finds the exact date of the record and the applicant’s data.
Overcoming technical challenges When implementing mass file processing and interaction with Telegram API, the risks of race conditions (race state) and exhaustion of server space with temporary files arose. The problem was solved by strict control of the execution of scripts through locks (Cache Locks), task grouping (Bus::batch) to monitor progress and reliable control. try-finally designs that guarantee the cleanup of the file system (temp files) even in case of critical failures of third-party libraries.
The result CRM is a fast, scalable and intuitive CRM that reduces the processing time of one client from a few minutes to seconds. The project demonstrates a confident command of a modern backend stack, the ability to build a reliable queue architecture, write complex parsing algorithms and create pragmatic interfaces that solve real business problems.







