2 / 19

A 30-year-old dental hospital firm ran on unstructured legacy data spread across disconnected processes, with no unified way to manage patient relationships, scheduling, inventory, or clinical protocols.
Led a full platform rebuild spanning CRM, CMS, planning & scheduling, order management, inventory, and RBAC systems. Except for order management, every module sits as a child of the Laravel-powered RBAC layer, sharing a common stack: Laravel, Next.js 14 with Redux, MySQL, Redis (queues and caching), Pusher, Postmark, Laravel Horizon, and Laravel Telescope. Migrated 30+ years of legacy data into a normalised relational database and cut API development time from 6 hours to 30 minutes with a CLI-based CRUD generator.
Security and transparency across CRM, CMS, HRMS, planning, OMS, and the protocols AI tool needed to be enforced consistently by role, department, and sub-department, rather than per-module.
Built a Laravel-powered RBAC system integrated into the main gateway, reflecting security and transparency across roles, departments, and sub-departments, connected to the CRM, CMS, HRMS, Planning system, the revamped OMS, and the RAG-powered Protocols AI tool.
Doctors info, services (fed from the CRM), and blog content needed to be managed from a backend and reflected in the Next.js frontend, with the site also needing proper SEO foundations.
Built a CMS on Next.js and Laravel purely to manage Next.js UI components from the backend - blog writing, doctors info management, and services management sourced from the CRM - and integrated the SEO rules the site needed: SEO schema, meta tags, sitemap.xml, Google Tag Manager, GA4, Meta Pixel, and CAPI tracking.
Leads and patient relationships were managed manually across scattered channels - Meta comments and messages, WhatsApp, and email - with no unified system to track or respond to them.
Built a CRM in Laravel that centralises lead communication: Meta comments and messages to leads, WhatsApp messaging to leads, and email to leads, with Postmark powering transactional email and the notification system.
Clinical staff needed instant, standardised answers to internal protocols in Dutch, the clinic's working language.
Built a RAG-based assistant that embeds protocol and reference documents as vector data and integrates OpenAI's API with Dutch-language prompts to return standardised, structured answers to dentists, assistants, and hospital staff.
C-level leadership needed visibility into monthly staff scheduling across countries, locations, rooms, departments, and sub-departments, while keeping room availability, patient appointments, and staff leave in sync.
Built a planning and scheduling system for monthly schedules across roles, countries, locations, rooms, departments, and sub-departments - interconnected with the HRMS for leave management, patient appointment tracking and notifications, room availability and occupancy monitoring, and C-level monthly planning dashboards.
Dubai clinics needed to place orders for transparent tooth aligners manufactured in the Netherlands, tracking everything down to tooth-scan machine output, estimated delivery dates, and customer updates.
Built on a standalone Nest.js/Next.js monorepo (unlike every other module, which sits under the Laravel-powered RBAC layer), the OMS handled the full order lifecycle between Dubai clinics and Netherlands manufacturing: tooth-scan files from scanning machine APIs uploaded to AWS S3, estimated delivery dates tracked, and customers updated through a Twilio-powered notification system. Later deprecated due to slow performance.
IT assets, team desktop devices, and medical equipment across the Netherlands, Dubai, and Pakistan offices had no unified way to be tracked and managed.
Built an inventory system to track IT assets and their association with team desktop devices, plus medical equipment and other assets across the Netherlands, Dubai, and Pakistan offices.