Research, projects & client work.

Selected &
collected.

A selection of projects,
from early experiments
to work in use.

Explore the work

Explore by category.

The complete collection

Case study / Independent research

RAGDocs

V1 Local retrievalV2 Shared storageV3 Async indexing

A document intelligence system, built through three iterations of learning how to retrieve, reason, and show the evidence.

Read the case study
Design & implementation
Project notes

RAGDocs

V3 separates PDF indexing from API requests, combines dense and lexical retrieval, and carries page-aware evidence into the answer and interface.

  • FastAPI
  • pgvector
  • Celery
  • Redis
  • React
Open original screenshot ↗

Live website / Client work

New Flyworld

A travel website bringing destinations, holiday packages, visa information, and customer enquiries into one experience.

Visit website
Design, development & deployment
Project notes

New Flyworld

The public experience brings travel services and enquiry entry points together, letting visitors browse packages or start a conversation with a consultant.

  • FastAPI
  • PostgreSQL
  • HTMX
  • Docker
  • AWS
Open original screenshot ↗

n8n · AI workflow

Human in
the loop.

Course recommendation

From a course enquiry to a relevant recommendation and a drafted email, with human feedback before the final send.

Discuss this workflow
n8n / Gemini / Qdrant
Project notes

Course recommendation, with a human in the loop

Separate recommendation, email drafting, and feedback-routing agents use structured output parsers. A Gmail approval step either releases the final email or returns feedback to the draft agent.

  • n8n
  • Gemini
  • Qdrant
  • Gmail
Open original workflow ↗

Computer vision · Web application

Novelty Artistry Hub

Inside the system
  1. 01Artwork upload
  2. 02CLIP embedding
  3. 03Vector similarity
  4. 04Score & moderation
Django / CLIP ViT-B/32

Artwork discovery and similarity-based novelty scoring using CLIP image embeddings and vector search.

View repository
Django / CLIP ViT-B/32 / PyTorch
Project notes

Novelty Artistry Hub

Artwork becomes a 512-dimensional embedding. Similarity against approved submissions supports related-art discovery, novelty estimation, and moderation review.

  • Django
  • CLIP ViT-B/32
  • PyTorch
  • pgvector

Similarity-based novelty is relative to the stored collection; it is not proof of legal originality. No accuracy benchmark is claimed.

A reviewable content pipeline that turns spreadsheet topics into generated copy and imagery, then delivers approved posts to Telegram.

Discuss this workflow
n8n / Gemini / Cloudflare FLUX
Project notes

Social content, from topic to approval

A scheduled branch generates text and an image, stores the image in Drive, and writes a draft to Sheets. A separate approval trigger sends the approved image and text to Telegram and records publishing or error status.

  • n8n
  • Gemini
  • Cloudflare FLUX
  • Google Sheets
  • Telegram
Open original workflow ↗

Retrieval · Tool-using agent

PDF Knowledge Agent

Inside the system
  1. 01Upload PDF
  2. 02Chunk & embed
  3. 03Scoped retrieval
  4. 04Agent & tools
FastAPI / LangChain

Document questions answered through a LangChain agent that can retrieve PDF evidence and call focused tools.

View repository
FastAPI / LangChain / Gemini
Project notes

PDF Knowledge Agent

FastAPI BackgroundTasks process PDFs into document-scoped embeddings. The agent can retrieve context, look up weather, evaluate allowlisted arithmetic, and extract skills using a predefined vocabulary.

  • FastAPI
  • LangChain
  • Gemini
  • pgvector

This is a single tool-using agent with FastAPI background tasks, not a Celery queue or a general multi-agent system.

n8n · Voice integration

VAPI knowledge webhook

A webhook bridge between a voice-agent request and a retrieval-capable AI agent.

Discuss this workflow
n8n / Gemini / Pinecone
Project notes

VAPI knowledge webhook

An incoming webhook reaches a Gemini-powered agent with a Pinecone vector-store tool and Hugging Face embeddings. Its output is returned through the webhook response node.

  • n8n
  • Gemini
  • Pinecone
  • Hugging Face
Open original workflow ↗

Pet care · Management platform

Veterinary Assistance

Inside the system
  1. 01Pet owner
  2. 02Hospital or shop
  3. 03Appointments & records
  4. 04Prediction route
Django / MySQL

A Django backend connecting pet profiles, veterinary appointments, medical records, vaccinations, and shop orders.

View repository
Django / MySQL / Python
Project notes

Veterinary Assistance

Role-aware hospital and shop workflows sit alongside pet-owner APIs. Stored animal-specific KNN models are exposed through a disease-prediction route.

  • Django
  • MySQL
  • Python
  • KNN

Prediction training details and performance are not established by the source brief; no diagnostic accuracy or clinical suitability is claimed.

n8n · Conversational automation

WhatsApp assistant

A messaging workflow that connects incoming WhatsApp messages to a Gemini agent and sends responses back in the conversation.

Discuss this workflow
n8n / WhatsApp / Gemini
Project notes

WhatsApp assistant

The connected execution path is WhatsApp trigger → AI agent → WhatsApp send. The agent also has conversation memory and a Gmail tool; extra disconnected nodes are not presented as active features.

  • n8n
  • WhatsApp
  • Gemini
  • Gmail
Open original workflow ↗

MCP · Learning tools

MCP Training Assistant

Inside the system
  1. 01Chat request
  2. 02Tool discovery
  3. 03Model routing
  4. 04MCP tool call
FastAPI / FastMCP

A technical learning assistant that discovers and calls MCP tools for quizzes, note summaries, topics, and chat.

View repository
FastAPI / FastMCP / Gemini
Project notes

MCP Training Assistant

A FastAPI chat endpoint discovers tool schemas through a FastMCP client, asks Gemini for a routing decision, and executes the chosen tool through MCP. Notes and trainer prompts are exposed separately as resources and prompts.

  • FastAPI
  • FastMCP
  • Gemini
  • Python

Machine learning · Regression

House Price Prediction

Inside the system
  1. 01Property features
  2. 02Preprocessing
  3. 03Linear regression
  4. 04Saved pipeline
Python / Pandas

A tabular regression experiment that keeps feature preparation, model fitting, and later inference in one saved pipeline.

View repository
Python / Pandas / scikit-learn
Project notes

House Price Prediction

A ColumnTransformer one-hot encodes location and passes numeric fields into LinearRegression. A held-out split is used for MAE and R²; joblib saves the fitted preprocessing and estimator together.

  • Python
  • Pandas
  • scikit-learn
  • joblib

No reproducible benchmark values or real-world valuation reliability are claimed.

01 / 11