AI and Digital Systems

These projects represent the cutting edge of my recent work in AI, automation, and intelligent interfaces.

Conversational Avatar Hub

A modular, self-hosted conversational avatar framework that wires together speech recognition, a large language model, text-to-speech, and video rendering behind a clean set of swappable interfaces. The system supports wake-word activation, real-time lip-sync, RAG knowledge bases with semantic search, tool calling for live data, content moderation, and a full analytics dashboard. It runs entirely on local hardware using llama.cpp and whisper.cpp.

Caricature Maker Kiosk

An interactive touchscreen kiosk application built for a display totem with a webcam and a GPU. Visitors trigger a photo capture by making a V gesture, which is detected in real time using MediaPipe Hands. The captured photo is then passed through a Stable Diffusion XL image-to-image pipeline with a caricature-style prompt and a LoRA adapter to generate a stylised portrait. The finished caricature is displayed on screen and can be delivered to the visitor by email. The application runs as a Python FastAPI backend and a React frontend in fullscreen kiosk mode, designed to auto-launch on Linux and run unattended.

AI Chatbot Agents

A functional multi-agent AI architecture sitting behind a customer service chatbot. The prototype presents a customer-facing interface, while behind the scenes an orchestrator AI routes each customer message to specialist agents: a research agent, a summariser, a fact checker and RAG agent, and an editor agent: each of which reasons over company data using AI tool calling. A “behind the scenes” panel exposes the full reasoning trace for auditing.

Hard Hat Detector

A proof of concept webcam application for real-time PPE compliance monitoring. Using a pretrained YOLOv8 model, the app detects hard hat presence in a live camera feed and distinguishes between compliant and non-compliant individuals in frame. A face detection filter is applied to reduce false positives where bald heads might otherwise register as hard hats (guess how I found out!)

In-Browser LLM Personal Finance Assistant

A fully client-side, zero-server personal finance account assistant that runs a small language model entirely in the browser using WebAssembly via the Wllama runtime. The app renders a mobile-first account overview page driven by a JSON data file and provides a collapsible chat drawer where users can ask questions about their account in plain text. Every inference call runs locally in the browser: no user message or financial data is sent to a server. Useful for regulated environments where cloud inference is not acceptable.

Vision Attribute Pipeline

A real-time computer vision pipeline that detects people in a camera feed and extracts descriptive attributes about each person (“hey, you in the red shirt!”) People are detected first with YOLOv8; face crops are passed to a YuNet face detector and an OpenVINO age and gender estimation model; upper-body crops are passed to a person attributes recognition model. An IoU tracker caches per-track results so expensive secondary models do not rerun on every frame. The pipeline outputs a short natural language description of each detected person without requiring an LLM. Designed as an attraction state detector for interactive installations and digital signage.

Campaign QA Suite

An automated campaign testing tool that runs a suite of checks against live campaign pages using Playwright browser automation, then generates an issue report. A dashboard lists active campaigns and lets a user trigger a test run for both desktop and mobile viewports, checking for correct prices, CTA text and clickability, form presence, hero image rendering, footer legal disclaimers, broken links, and visual regression against a reference screenshot. Results include browser screenshots and a summary of all issues sorted by priority. The project demonstrates how AI-assisted QA can catch content errors before a campaign goes live.

Visual Product Classification

A prototype and technical specification for a fine-grained visual classification API designed to identify specific products from customer-submitted photographs. The system is intended to power a self-help app where a customer photographs a hardware product and the app identifies the model automatically to guide fault diagnosis. The technical design covers a full iterative improvement loop using misclassified examples to continuously retrain the model.

Gen-AI Workflows for Media Production

Custom workflows for media production that automate the path from raw creative assets to platform-ready deliverables. The pipelines handle automatic resizing of master assets into multiple specification formats, schema-driven compositing that assembles multi-layer images programmatically based on configurable layer rules, and super-resolution upscaling and enhancement stages. Existing brand guidelines (palettes, tone, and composition rules) are referenced to automatically harmonise incoming creatives toward brand standards.

CV Steering Wheel Demo

A browser-based demo that uses a laptop webcam to track a dummy steering wheel and display a real-time steering indicator. The application detects the steering wheel, estimates the wheel plane orientation using planar pose estimation across four known marker positions, computes a signed steering angle compensating for off-axis tilt, and applies light exponential smoothing to reduce jitter. The output is mapped to a −90° to +90° range and displayed as a circular steering gauge, a moving needle, and a numeric readout. The demo handles tracking loss gracefully, holding briefly before easing the needle back to centre and resuming immediately when the wheel re-enters frame.

All images on this page have been created using AI-generated assets