At Sapere, I build AI applications from architecture through to deployment and scaling on Azure. My work spans real-time voice agents, retrieval-augmented generation and multi-tenant platforms, backed by full-stack development in Python, .NET and Vue.
I designed and led development of a cross-platform Ionic application to replace paper-based warehouse operations. Working closely with operations teams, I identified the problems in their existing processes and tested successive versions with warehouse staff who had never used the app before. Watching them navigate it independently helped us spot difficulties and refine the experience. Clear terminology, familiar icons and a simple layout made it accessible to staff with different backgrounds, education levels and technical experience. An offline-first architecture kept the app working in areas with unreliable connectivity.
Digitising the workflow delivered a 100% reduction in manual data entry, while automated validation and simpler processes reduced errors by 80%. The telesales team no longer had to manually enter and edit orders for picked products, freeing them to focus on higher-level tasks. More efficient workflows across warehouse teams also meant fewer incorrect product deliveries and a significant improvement in customer satisfaction.
I designed and developed a logistics microservice to replace core functionality in the legacy monolith. A Kanban-style interface let managers drag and drop stops between routes, while batch operations made it possible to act on multiple items in a single click. I also reworked repetitive processing and inefficient loops to improve performance. A data connector periodically synchronised with the legacy system, with automatic email alerts when data retrieval failed. For route allocation, I combined historical data with Google OR-Tools, reducing the business’s reliance on a single route-planning expert.
Google Maps gave managers a clearer view of routes for faster, better-informed decisions. Embedded vehicle tracking provided real-time order statuses and driver KPI data, improving driver management and customer service. Together, the batch operations and revised interface increased team throughput by 40%, while automated allocation reduced manual route-planning intervention by 90%.
I contributed to the architecture and migration strategy as we moved from a monolith towards microservices. I learned and adopted Vue.js quickly, taking responsibility for a large part of the frontend overhaul. I established Bitbucket CI/CD pipelines for automated deployments and used PM2 to create and manage server-side microservices, improving reliability and making them easier to operate.
I built a reusable UI component library and introduced state-management patterns that reduced prop drilling and made complex interfaces easier to maintain. The shared components accelerated development and kept the experience and branding consistent across the platform—particularly valuable in a small team without a dedicated design function. Automated delivery significantly reduced deployment errors and downtime, while the more cohesive interface improved usability and employee satisfaction.