Selected work

Built, shipped,
still running.

Everything I’ve built since 2000, from neural networks I hand-coded as a student to the AI platforms in production today. Anything marked live you can open and use right now.

AI Models Gemini DeepSeek Llama Chatbot LLM Comparison Interactive AI

Multi-Model AI ChatBot Platform

Interactive AI platform featuring three powerful language models: Gemini (Google's most capable AI for complex queries), DeepSeek-R1 (advanced reasoning model with enhanced problem-solving), and Llama-3.1-8B (Meta's fast and efficient model for direct responses). Compare different AI approaches and capabilities in one unified interface.

Case study

Multi-Model AI ChatBot Platform

The problem

Every model is sold as the best one. They are not interchangeable: one reasons carefully, one answers fast, one handles the complex queries. You cannot feel that difference from a benchmark table. Picking wrong is expensive twice: once in the bill, once in the answers.

The approach

One interface with three models behind it, so the comparison is the product rather than a footnote. The work was normalising three different APIs into a single conversation without flattening what makes each one distinct: same prompt, same screen, three honest answers.

What shipped

Gemini, DeepSeek-R1 and Llama-3.1-8B, live and open to anyone. Ask all three the same awkward question and the choice makes itself.

Python OCR NLP AI PDF Processing Text Analysis Document AI

AI Document Reader & Analyzer

Advanced AI platform that extracts, analyzes, and summarizes content from PDFs, images, and various document formats. Features cutting-edge OCR technology for precise text recognition, natural language processing for intelligent content analysis, and AI-driven summarization to transform lengthy documents into actionable insights instantly.

Case study

AI Document Reader & Analyzer

The problem

A PDF is where information goes to stop being useful. Scanned invoices, contracts, reports. The content is right there and completely unavailable to anything that needs to act on it, so a person re-types it and the business calls that a process.

The approach

Three stages, in order. OCR to turn pixels back into text, natural language processing over the result to find structure rather than just keywords, then summarisation on top. Images and PDFs enter the same pipeline, because in practice nobody sorts them first.

What shipped

A live platform that takes a long document and returns the parts you would have highlighted yourself. Open it and feed it something of your own.

JavaScript Drag & Drop Analytics Bootstrap Data Visualization Real-time

Interactive Dynamic Dashboard Pro

Interactive dashboard featuring sortable and draggable cards with real-time analytics, revenue tracking, and fully customizable layouts. Built with JavaScript and Bootstrap, this powerful tool provides comprehensive data visualization, dynamic content management, and intuitive drag-and-drop functionality for optimal user experience and enhanced productivity.

Case study

Interactive Dynamic Dashboard Pro

The problem

A dashboard gets laid out once, by whoever built it, and then used every day by somebody else. The number you check first ends up three rows down, and the one you have never opened sits at the top.

The approach

Make the layout belong to whoever is looking at it. Sortable, draggable cards that stay where they are put, sitting over live data rather than a snapshot, so rearranging it costs nothing and does not need a ticket raised.

What shipped

A live dashboard with drag-and-drop cards, revenue tracking and real-time analytics, built in plain JavaScript and Bootstrap.

Python Gradio AI API Text-to-Image Creative AI

AI-Powered Image Generation ๐ŸŽจ+

Type a creative prompt and generate stunning AI-generated images! ๐Ÿš€ Built with advanced Gradio and Python frameworks, this powerful tool leverages cutting-edge AI models to transform your text descriptions into unique, high-quality visual artwork. Perfect for artists, designers, and creative professionals seeking inspiration and rapid prototyping.

Case study

AI-Powered Image Generation

The problem

A capable image model with no interface is useless to the people who would actually use it. Artists and designers should not have to open a terminal to find out whether a prompt was any good.

The approach

Gradio over Python as the shortest honest path from a model to something a person can use: type the description, get the image, change the words, go again. The value is in how fast that loop runs, not in the wrapper around it.

What shipped

A live text-to-image tool built for rapid prototyping and idea-finding. Describe it, see it, and iterate in seconds.

AI JavaScript Image Processing NLP Visual Storytelling Content Creation

Multi-Image Story Generator ๐Ÿ“š+

Transform multiple images into one captivating, comprehensive story with the power of AI! Upload a collection of images and watch as the intelligent system analyzes visual elements and weaves them into a coherent narrative that connects all components. Perfect for creative storytelling, content creation, and visual narrative development.

Case study

Multi-Image Story Generator

The problem

One image captioned is a caption. A set of images is a story, but only if something works out what actually connects them, rather than describing each one in turn and calling the list a narrative.

The approach

Analyse the visual elements across the whole collection instead of image by image, then build a single narrative that has to account for all of them and stay coherent from first picture to last.

What shipped

Upload a collection and get back one story that connects every component, live and free to try with your own images.

AI Audio Generation Image Analysis Text-to-Speech Python Gradio API

Image-to-Audio Story Creator ๐Ÿ”Š+

Transform your images into captivating audio stories with AI! Upload multiple images and customize comprehensive story preferences including genre, time period, tone, narrative style, and character development to create unique, personalized narratives brought to life through high-quality audio generation and voice synthesis.

Case study

Image-to-Audio Story Creator

The problem

A generated story is a wall of text that nobody reads to the end. And a story you cannot steer, with no say over tone, genre or who the characters are, is somebody else’s story, not yours.

The approach

Put the narrative decisions in the reader’s hands: genre, time period, tone, narrative style and character development are all set before generation. Then send the result through voice generation so it arrives as something you listen to.

What shipped

Images in, a personalised narrated story out. The preferences change the output rather than decorating the form.

JavaScript HTML/CSS Web Tools Code Beautifier Syntax Validation

Code Formatter & Beautifier ๐Ÿงน+

Transform messy, minified code into clean, readable formats with just one click! This powerful versatile tool supports multiple programming languages, offers extensive customizable formatting options, advanced syntax validation, error detection, and includes a comprehensive snippet library for efficiently saving and managing your commonly used code patterns and templates.

Case study

Code Formatter & Beautifier

The problem

Minified code is readable by machines and by nobody else. Inherit somebody else’s file and formatting is the difference between reading it and guessing at it.

The approach

Handle several languages from one place, then go past whitespace: validate the syntax and surface the errors, because code that reads badly is often formed badly too. A snippet library alongside it, since the patterns you reach for repeat.

What shipped

One click from minified to readable across multiple languages, with syntax validation, error detection and somewhere to keep the snippets you use constantly.

JavaScript HTML/CSS Educational Interactive Kids Learning

Interactive Kids Games Hub ๐ŸŽฎ+

A vibrant colorful collection of 100+ engaging educational games designed specifically for children! Features beloved classic games like Tic-Tac-Toe and Snake alongside interactive educational activities such as Math Quiz, ABC Clicker, and comprehensive Solar System Quiz. Each game is thoughtfully designed with bright vibrant visuals and intuitive simple controls perfect for young learners and educational development.

Case study

Interactive Kids Games Hub

The problem

Children’s games tend to be either fun or educational. The fun ones teach nothing and the educational ones get closed after two minutes, usually because they were designed by adults reasoning about children rather than watching them play.

The approach

Put both kinds in one place and hold the same bar for each: bright visuals, and controls simple enough that a young child can start without reading anything or asking anyone. Classics like Tic-Tac-Toe and Snake sit next to Math Quiz, ABC Clicker and a Solar System Quiz.

What shipped

Over 100 games in a single hub, live and free to play, each one built for young learners rather than adapted down to them.

JavaScript File Management Organization Visualization

Project Folder Structure Pro ๐Ÿ“‚+

Advanced powerful tool for visualizing and organizing complex file hierarchies and directory structures! Upload your project files to generate an interactive comprehensive tree-view visualization of your complete folder structure, making it incredibly easy to understand, navigate, and efficiently manage large-scale projects with multiple nested directories, subdirectories, and numerous files across various formats.

Case study

Project Folder Structure Pro

The problem

You cannot reason about a codebase whose shape you cannot see. A large project is nested directories most of the way down, and a flat list of files tells you nothing about how any of it is organised.

The approach

Turn the upload into a picture. An interactive tree view of the whole hierarchy, so the nesting becomes something you scan rather than something you have to hold in your head while you click through it.

What shipped

Upload a project and get a navigable map of every directory and file, however deeply nested, across whatever formats are in there.

AI Agent LLM Research Planning Python APIs

Strategic AI Research Agent ๐Ÿค–+

Advanced intelligent AI agent that follows a sophisticated sparkle plan โ†’ search โ†’ replan โ†’ act workflow methodology. Dynamically accesses powerful research tools like Wikipedia and Google to significantly enhance responses, intelligently adapts strategic plans based on comprehensive search results, and consistently delivers thorough, well-researched, accurate answers.

Case study

Strategic AI Research Agent

The problem

A model answering from memory is confidently wrong at exactly the moments that matter: anything recent, anything niche, anything it half-remembers. The answer looks the same either way, which is the dangerous part.

The approach

Give it a plan, real tools, and permission to change its mind: plan, search, replan, act. It reaches for research tools like Wikipedia and Google, then adapts the plan to what it actually found instead of pushing on with the one it started with.

What shipped

A live agent that researches before it answers and revises its strategy mid-task, which is what makes the answers hold up.

AI Agent Voice AI Speech Recognition Text-to-Speech Python APIs

Voice-Powered Talking AI Agent ๐Ÿ’ญ+

Revolutionary interactive voice-powered AI agent that seamlessly combines advanced speech recognition and sophisticated text-to-speech capabilities. Engage in completely natural conversational interactions with the AI through intuitive voice commands and receive high-quality spoken responses, creating an exceptionally smooth, hands-free AI interaction experience for enhanced productivity and accessibility.

Case study

Voice-Powered Talking AI Agent

The problem

Typing is a bottleneck that hides how good a model is. A conversation you have to type is not really a conversation. It is form-filling with better grammar.

The approach

Speech recognition on the way in and text-to-speech on the way out, with enough attention paid to the join that taking turns feels natural rather than like dictating into a machine.

What shipped

An agent you talk to and that talks back, in natural spoken conversation. Live, and open in a browser.

JavaScript Image Processing WebAssembly Canvas API PWA

UltraCompress Pro sparkle

Advanced image compression web application supporting AVIF, WebP, HEIF, PNG, and JPEG formats with up to 90% size reduction while maintaining quality. Features batch processing, built-in image editor with brightness/contrast/saturation controls, EXIF metadata handling, and progressive web app capabilities for offline use.

Case study

UltraCompress Pro

The problem

Images are most of a page's weight, and the usual fix is to upload them to somebody else's server and hope. That is slow, it costs, and it means handing over your files to save a few kilobytes.

The approach

Move the compression into the browser with WebAssembly, and support the formats that actually win: AVIF, WebP and HEIF alongside PNG and JPEG. The editor sits on the Canvas API so brightness, contrast and saturation happen before compression rather than in a second tool, and the whole thing is a PWA so it still works with the network off.

What shipped

Up to 90% size reduction while holding quality, with batch processing and EXIF metadata handling, on its own domain.

JavaScript Client-Side Privacy-First Web Tools Zero Data Offline

ZeroDataUpload ๐Ÿ”+

Revolutionary privacy-first web utility platform where 100% of processing happens directly in your browser. Zero data uploads, zero server storage, zero tracking - ever. Features lightning-fast client-side tools that work offline, ensuring absolute privacy with no data ever leaving your device. True independence with browser-speed performance and unlimited privacy protection.

Case study

ZeroDataUpload ๐Ÿ”+

The problem

Most free web utilities are a trade: you get the tool, they get your file. For anything sensitive (an ID scan, a signed contract, a medical form) that trade is not available, and a privacy policy is not the same thing as a guarantee.

The approach

Take the server out of it entirely. All processing runs in the browser, which means no upload, no storage, and nothing to leak. Working offline is the honest proof: a tool that still runs with the network switched off cannot be sending your file anywhere.

What shipped

A live platform on its own domain where 100% of processing happens on your device: zero uploads, zero server storage, zero tracking.

College AI & Machine Learning Project, 2000-2001

Eight from-scratch experiments from my undergraduate coursework

College Project Neural Network JavaScript Canvas API From Scratch

Handwritten Digit Recognizer

An assignment from my undergraduate Machine Learning module: a hand-built neural network that reads digits drawn on the canvas. No libraries, no shortcuts: every matrix multiply, backprop pass, and softmax was written by hand in plain JavaScript. Built a quarter of a century ago, and it still works exactly as it did the day I submitted it.

Case study

Handwritten Digit Recognizer

The problem

In 2000 there was no TensorFlow, no PyTorch, no Keras. If you wanted to understand how a neural network actually learned, there was nothing to import. You wrote it, or you did not understand it.

The approach

Every matrix multiply, every backpropagation pass and the softmax by hand, in plain JavaScript, reading digits drawn on a canvas. No libraries and no shortcuts, which meant every mistake was mine to find, and every part of it had to be understood before it could work at all.

What shipped

A working classifier that still runs exactly as it did the day it was submitted, a quarter of a century later. Draw a digit and it reads it, with no build step, no dependencies, nothing to reinstall.

College Project Siamese Network Embeddings Pattern Matching JavaScript

Handwriting Forensics

A pair-matching network from my college coursework. Register a handful of writers' samples and a Siamese-style network learns each person's stylistic fingerprint, then identifies any new sample by comparison. An early take on biometric handwriting analysis, all from scratch in plain JavaScript.

Case study

Handwriting Forensics

The problem

Telling two people’s handwriting apart is not really a classification problem. You cannot train a category for a writer you have never met, and the useful question is not “whose is this?” but “are these two the same hand?”

The approach

A pair-matching network instead of a classifier. Register a handful of samples per writer, let the network learn each person’s stylistic fingerprint, then judge any fresh sample by comparison rather than by category, Siamese-style, and from scratch in plain JavaScript.

What shipped

An early take on biometric handwriting analysis, built for a college module and still running. Register a few writers and it will tell you who produced a sample it has never seen.

College Project CNN Image Classification Live Training JavaScript

Tiny CNN: Image Classifier

My undergraduate attempt at a convolutional neural network, small enough to train live on the page, but every convolution, pooling layer, and gradient was hand-coded in plain JavaScript. A foundational exercise that taught me how CNNs really work, layer by layer, long before today's frameworks did the heavy lifting.

Case study

Tiny CNN: Image Classifier

The problem

Convolutional networks were explained in papers as diagrams. A diagram will not tell you what a pooling layer actually does to a gradient, and in 2000 there was no library to import that would show you either.

The approach

Build one small enough to train live in a browser tab, with every convolution, every pooling layer and every gradient hand-coded. Small was the point: you can watch it learn rather than wait on a job and inspect the result afterwards.

What shipped

A convolutional network you can train on the page, layer by layer. The exercise that taught me how CNNs really work, long before a framework would have done the heavy lifting.

College Project Sketch Recognition Real-time AI Neural Network JavaScript

Quick Draw Clone

A sketch guesser written for my Machine Learning coursework, more than a decade before Google released the famous Quick, Draw! game. Doodle on the canvas and the network races to identify what you're drawing before you've even finished. All from scratch in plain JavaScript.

Case study

Quick Draw Clone

The problem

A sketch is harder to recognise than a photograph. There is almost no information in it, the strokes arrive in whatever order the person chose, and half the drawing is still missing while they are drawing it.

The approach

Classify continuously rather than at the end: guess from the strokes so far and keep revising as more arrive, so the network commits early and corrects itself instead of waiting for a finished picture. All from scratch in plain JavaScript.

What shipped

A sketch guesser that races to name your drawing before you finish it, written for my Machine Learning coursework more than a decade before Google released the Quick, Draw! game that made the idea famous.

College Project Sketch Classifier 24 Classes Pattern Recognition JavaScript

Doodle to Emoji

A 24-class sketch matcher built as part of my college pattern-recognition module. Draw any of the 24 categories (star, tree, cloud, fish, and twenty more) and the from-scratch classifier picks the closest match. Pure plain JavaScript, no libraries, no shortcuts.

Case study

Doodle to Emoji

The problem

Twenty-four categories is enough that the easy tricks stop working. A star and a flower are the same handful of strokes; what separates them is how those strokes are arranged, not what they contain.

The approach

A from-scratch matcher across all 24 classes, comparing a fresh doodle against what it has learned each category tends to look like, then picking the closest. Pure plain JavaScript, no libraries, no shortcuts.

What shipped

Draw any of the 24 (star, tree, cloud, fish and twenty more) and the classifier picks its match. Built for my college pattern-recognition module.

College Project Game AI Pattern Recognition Adaptive Learning JavaScript

Rock Paper Scissors Mind Reader

A game-playing AI from my coursework: rock, paper, scissors against a computer that quietly tracks your habits and starts winning. The longer you play, the better it reads you. A simple but effective demonstration of adaptive learning, written long before “AI” became a household word.

Case study

Rock Paper Scissors Mind Reader

The problem

Rock paper scissors is unbeatable against a player who is genuinely random. People are not random: they repeat, they alternate, and they overcorrect after losing. That is the whole opening.

The approach

Model the habit rather than the move. Track what you tend to play next given what you just played, and play the counter to the likeliest answer, so the longer the game runs, the more it has to work with.

What shipped

A game-playing AI that quietly starts winning, from coursework written long before “AI” became a household word. A small demonstration of adaptive learning you can still lose to.

College Project Naive Bayes Text Classification NLP JavaScript

Bayesian Spam Filter

The classic naive-Bayes spam classifier from my Information Retrieval coursework, the same probabilistic approach that powered the world's first generation of email spam filters in the early 2000s. Show it a handful of spam and normal mails, and watch it generalise to messages it has never seen.

Case study

Bayesian Spam Filter

The problem

Rule-based spam filters could not hold the line, because spammers read the rules too. What was needed was something that learned what spam looked like from examples and kept learning as it changed.

The approach

Naive Bayes over word frequencies, the same probabilistic method behind the first generation of real spam filters. Show it examples of each kind and it builds its own sense of which words betray which, rather than being told.

What shipped

The classic classifier from my Information Retrieval coursework. Give it a handful of spam and normal mail, then watch it generalise to messages it has never seen.

College Project OCR Image Processing Computer Vision JavaScript

License Plate Reader

An OCR pipeline assignment from my Computer Vision module that walks through the full classical pipeline (grayscale conversion, thresholding, character segmentation, and template matching) to read a number plate. Every stage is visualised step by step, exactly the way machines used to "see" before deep learning rewrote everything.

Case study

License Plate Reader

The problem

Before deep learning, reading a number plate was not one model. It was a pipeline, and each stage could quietly ruin the next. Get the thresholding wrong and nothing downstream can recover.

The approach

The full classical route, stage by stage: grayscale conversion, thresholding, character segmentation, then template matching. Every step is visualised, so you can see where it goes wrong rather than only that it did.

What shipped

A working OCR pipeline from my Computer Vision module that shows its working, exactly the way machines used to read plates.

Demo Projects - Contact for Access

The following projects require special access or custom setup

React Node.js PostgreSQL

E-Commerce Platform

Full-stack e-commerce solution with real-time inventory management and analytics.

Python Selenium REST API

Workflow Automation Tool

Automated workflow system that reduced manual processing time by 75%.

JavaScript Node.js Web Scraping Automation

Website Downloader ๐Ÿ“ฅ

Powerful tool for downloading entire websites including HTML, CSS, JavaScript, images and more! Perfect for creating offline backups, website migration, or learning from existing websites by examining their code structure and assets.

Machine Learning Hugging Face PEFT LoRA Python PHP

Merged LoRA Model Hosted on Hugging Face ๐Ÿค—

Application that Trains and Merges LoRA fine-tuned models into base models (like facebook/opt-1.3b) and uploads them to Hugging Face. Enables remote inference via Hugging Face's Inference API for public or private access, perfect for sharing models and deploying them in production or client applications!

Machine Learning Gradio API PEFT PyTorch CUDA

Interactive Chatbot Using Fine-tuned LoRA Model with Gradio ๐Ÿ’ฌ

Local Gradio-based chatbot interface for interacting with fine-tuned and merged LLMs like OPT-1.3B with LoRA. Loads models directly on your GPU for real-time question-answer interactions through a clean, dark-themed UI. Perfect for testing custom-trained models in an intuitive interface!

Machine Learning PHP JavaScript Python PEFT PyTorch LoRA

PHP Chat UI with Backend Python Inference using Fine-tuned LoRA Model โšก

Real-time chatbot UI built with PHP and JavaScript that sends user questions to a local Python script. Loads fine-tuned and merged LLM models to generate AI responses without relying on external APIs. A completely self-hosted solution for deploying custom language models in interactive applications!

Machine Learning Python NLP CUDA Fine-tuning Personal Data

Custom AI Model Creator ๐Ÿง 

Create your own AI sparkle using your personal or business data! This Python-based trainer builds a custom language model with full privacy, powered by NLP and CUDA acceleration. Run it locally or on a server and start chatting securely with your own trained AI.