Skip to content
JBJamie Blair

Projects

Selected engineering work

A mix of independent products, working demos, and technical prototypes. Each page explains the engineering focus and the evidence available without pretending every item has the same deployment status.

01
WA

AI / ML / Full-Stack

WaveMind

A native Windows application that turns live system audio into near-real-time transcription through an AI API.

C++WindowsAudioOpenAI API
Platform
Native Windows
02
Paper receipts feeding through a metallic funnel into a structured data cube, representing PDF invoice parsing into JSON.

AI / ML / Automation

Invoice Parser

Upload a PDF invoice, get structured JSON: vendor, line items, tax, totals. 3-tier extraction: layout analysis, regex patterns, LLM fallback. Every field schema-validated.

PythonpdfplumberLLMAutomation
Extraction
Rule-based + LLM
03
Industrial mail sorting machine with brass chutes directing envelopes into classified categories using AI.

AI / ML / Automation

Email Classifier

Classify inbound email into support, sales, spam, or internal. Two-stage pipeline: rule-based spam filter then TF-IDF + LinearSVC classifier. No external API calls.

Pythonscikit-learnNLPFastAPI
Model
TF-IDF + LinearSVC
04
Vintage telephone switchboard with illuminated patch cable connections, representing AI-powered support ticket routing.

AI / ML / Automation

Ticket Router

Paste a support message, get it routed: urgency, department, and a suggested first response. Hybrid rule + sentiment + LLM pipeline with PII redaction.

PythonNLPLLMSupport AI
Routing
Urgency + department
05
Three laboratory beakers with contrasting liquids representing positive, neutral, and negative sentiment analysis.

AI / ML / Full-Stack

Sentiment Dashboard

Upload customer reviews or messages, get a sentiment breakdown: positive/negative/neutral percentages, trend chart, and flagged negatives. VADER + optional LLM hybrid.

PythonVADERNLPCanvas
Throughput
~2,000 msg/sec
06
Crystal ball on a brass stand with swirling wave patterns inside, representing ML-powered demand forecasting.

AI / ML

Demand Forecaster

Interactive forecasting: adjust season, price, promotions and see predicted daily sales shift. Gradient Boosting model with confidence intervals and feature importance.

Pythonscikit-learnMLForecasting
Model
Gradient Boosting
07
Open book with a search lens and light beams connecting passages to an answer card, representing RAG document Q&A.

AI / ML

Document Q&A

Upload a PDF, ask questions in plain English, get answers with page-number citations. RAG pipeline: chunk, embed, retrieve, generate. Grounded answers only.

PythonRAGChromaDBLLM
Pipeline
RAG (retrieval-augmented)
08
Two stacks of punched cards converging into a brass matching mechanism, representing spreadsheet reconciliation.

Automation / Security

Spreadsheet Reconciler

Upload two CSVs (bank statement vs ledger), get a reconciliation report: matched rows, unmatched rows, discrepancies. Handles 100k+ rows with fuzzy matching.

PythonpandasFinanceAutomation
Matching
Exact + fuzzy
09
Vintage brass stock ticker machine with paper tape and indicator lights, representing a live market data pipeline.

Automation / Full-Stack / DevOps

Market Snapshot

Fetches Cisco's daily high/low and streams a live current price. Runs as a scheduled pipeline with a web view and JSON API.

PythonAutomationFinance
Schedule
Daily
10
Fibre-optic network draped over a Southeast Asian globe with data packets in transit, representing multi-source web scraping.

Full-Stack / AI / ML

GlobeScraper

Full-stack platform for English teachers in Southeast Asia. Community, AI blog engine, rental marketplace with a 7-source scraping pipeline.

TypeScriptNext.jsPrismaAI
API routes
55
11
Brass weather station instruments with illuminated gauge needles and neural-network patterns, representing ML weather prediction.

AI / ML / DevOps

Weather ML App

A machine learning Flask app that predicts weather conditions from sensor inputs. Dockerised with full CI/CD and Kubernetes deployment.

PythonMLFlaskDevOps
Model
scikit-learn
12
Server rack with LEDs forming a heartbeat pattern, representing real-time server health monitoring.

DevOps / Full-Stack

Server Pulse

Live dashboard showing real-time CPU, RAM, disk, and uptime from a Hetzner CX23. Polls a Flask + psutil endpoint every 5 seconds.

PythonFlaskDevOpsLinux
Backend
Flask + psutil
13
Five lighthouse lanterns at varying brightness levels, representing endpoint uptime monitoring.

DevOps / Full-Stack

Uptime Monitor

Background thread pings the portfolio API and site every 60 seconds. Graphs 24 hours of response times with Canvas charts.

PythonFlaskMonitoringDevOps
Ping interval
60 seconds
14
Robotic arm painting a canvas in a Van Gogh-inspired style, representing neural style transfer.

AI / ML

Image Style Transfer

Upload any photo and apply a famous art style: Van Gogh, Munch, Picasso, and more. Fast neural style transfer running on the server with OpenCV DNN.

PythonMLOpenCVFlask
Models
7 styles
15
Bank vault door with scanning security beams and a floating checklist, representing comprehensive security header auditing.

Security / Full-Stack

Security Scanner

Enter any URL and get a full security header audit: HTTPS, HSTS, CSP, clickjacking protection, and more. Live tool with A–F grading, SSRF-safe API, and detailed per-header findings.

TypeScriptNext.jsSecurityOWASP
Headers checked
9
16
Five signal towers connected by electrical arcs with status indicators, representing real-time network endpoint monitoring.

DevOps / Full-Stack

Network Health Monitor

Add up to 5 endpoints and monitor them in real time. Polls every 15 seconds, shows status, response time, and SVG sparkline latency charts. SSRF-safe API with batch health checks.

TypeScriptNext.jsMonitoringDevOps
Max endpoints
5
17
Search lens over a wireframe website model with a grading stamp, representing comprehensive SEO auditing.

Full-Stack / AI / ML

SEO Auditor

Enter any URL and get a comprehensive SEO audit: meta tags, headings, structured data, images, links, performance, mobile-friendliness, crawlability, and an AI-powered action plan.

TypeScriptNext.jsSEOGemini AI
Checks
40+
18
Copper industrial pipeline transforming raw ore into refined crystals with pressure gauges, representing ETL data pipeline stages.

Automation / DevOps

Data Pipeline

End-to-end data pipeline: ingest, validate, transform, and output structured data. Designed for reliability with retry logic and monitoring.

PythonETLAutomation
Pattern
ETL pipeline

Related reading

Next step / direct enquiry

Interested in how I could contribute?

View the public CV for the full career picture, or send a private message to discuss a role, collaboration, or engineering problem.