Ad-MOTO Portal — AI-Powered Rider Management System

Laravel 12
Filament 3
Livewire 3
Claude API
Stripe
GoCardless
Sinch SMS
Flespi GPS

The Brief

Ad-MOTO’s rider fleet required a modern management portal to handle onboarding, document verification, payments, GPS tracking, and daily operations. The previous system involved manual document checking by admin staff — a time-consuming process that was becoming a bottleneck as the fleet grew. The new portal needed to automate as much of this as possible while maintaining compliance with insurance and regulatory requirements.

A key requirement was AI-powered document verification: riders upload driving licences, CBT certificates, and DVLA check codes, and the system needs to verify these automatically with confidence scoring and fraud detection.

The Approach

The Claude API was integrated for document verification — the first time we’ve used AI for a compliance-critical workflow in production. The system analyses uploaded document images, extracts key fields (name, licence number, expiry date, categories), cross-references against the rider’s profile data, assigns a confidence score, and flags potential issues (expired documents, name mismatches, suspected alterations).

Dual guard authentication separates rider and admin sessions completely — a rider logging into their portal and an admin logging into Filament use independent authentication guards, preventing session confusion and ensuring clean security boundaries.

The Build

The rider onboarding flow collects personal details, uploads required documents, and triggers the AI verification pipeline. Claude analyses each document image and returns structured verification results: extracted data fields, confidence scores per field, an overall verification status (verified, needs review, rejected), and natural language explanations of any concerns. Documents scoring above the confidence threshold are auto-approved; those below enter a manual review queue in the Filament admin panel.

Fraud detection looks for specific patterns: inconsistencies between document fields, image manipulation artifacts, documents that don’t match the expected format for their issuing authority, and cross-document inconsistencies (e.g., different names on different documents). An AI chatbot provides rider support for common questions, reducing admin support burden.

Payment processing supports both Stripe (for card payments) and GoCardless (for direct debit) — a dual-provider approach that gives riders flexibility. The credit system allows riders to top up their account balance, with admin ability to gift credits as incentives. A charge dispute workflow handles contested charges with configurable payment plan options.

Google and Facebook OAuth provide social login alongside standard email/password authentication. Sinch SMS integration sends notification messages for shift reminders, document expiry warnings, and payment confirmations.

GPS fleet tracking via Flespi shows real-time rider locations on an admin map view, with historical route data for operational analysis. QR code check-in at hub locations records rider attendance for shift tracking. An admin masquerade feature allows support staff to view the portal as a specific rider for troubleshooting, with full audit logging of masquerade sessions.

The Result

AI-powered document verification reduced the average onboarding time from several days of manual checking to hours for most riders. The confidence scoring system catches the vast majority of document issues automatically, while the manual review queue ensures nothing slips through for edge cases the AI flags for human attention.

The dual payment provider approach increased successful payment rates — riders who had issues with card payments could switch to direct debit, and vice versa. The credit and dispute system reduced payment-related support tickets significantly.

Let's build something great

Tell us about your project and we'll get back to you within one working day. No hard sell, just a straight conversation about what you need.

Start a conversation