Primary focus

Applied AI & LLM Systems

Grounded retrieval and tool-calling applications built around APIs, inspectable evidence, and explicit system behavior.

RAG Document Copilot answering a document question and showing source-page citations
Document-grounded question answering with source-page citations.
  • Applied AI
  • RAG

RAG Document Copilot

A FastAPI service that answers questions about PDF documents using retrieval-augmented generation. It uses Cohere embeddings, token-based chunking, and ChromaDB vector similarity search to produce grounded answers with page citations.

When the documents do not contain enough information, the service explicitly refuses to answer. The project includes mocked pytest coverage.

  • Python
  • FastAPI
  • Cohere
  • ChromaDB
  • pytest
FPL Agent answering a natural-language question through multiple FPL data-tool steps
A multi-step agent using FPL data tools to answer a natural-language question.
  • Applied AI
  • Tool calling

FPL Agent

A tool-calling AI agent that answers Fantasy Premier League questions in natural language. It plans and executes multiple calls against the live FPL API, composes a grounded answer, and exposes the full tool-call trace for inspection.

Deployed end to end. A FastAPI backend runs on Render from render.yaml, with a /health endpoint; the Streamlit frontend runs on Community Cloud with a trace panel and cold-start handling. Both use free tiers. Rate-limit retries with bounded backoff and a fixture-based fallback of cached real traces let the demo degrade gracefully when the model quota is exhausted.

Evaluation-driven. A custom harness in eval/ scores tool-selection accuracy, groundedness, and refusal. It caught the agent guessing alternative players after a not-found result; strengthening the system preamble and adding a fuzzy-match length floor raised the score from 2/3 to 3/3, with the before and after preserved in git history.

MCP-enabled. A Model Context Protocol server built with the official MCP Python SDK exposes the same tools over Streamable HTTP. An opt-in client path produces the same trace as direct execution; the deployed demo intentionally uses the direct path so a second service is not on its critical path.

Gemini gemini-3.6-flash function calling drives a stateless multi-step loop that resends the full history each turn. Four composable tools—find_player, get_player_stats, get_team_fixtures, and get_gameweek_summary—wrap the FPL API. A grounding preamble requires tool use for FPL questions and makes the agent decline out-of-scope requests and not-found players rather than hallucinate.

The project was migrated from Cohere to Gemini for a non-expiring free tier; the migration surfaced and led to the fix for the grounding regression described above.

  • Gemini
  • FastAPI
  • MCP
  • Streamlit
  • Eval
  • Render

AI, robotics & HRI

AI-Enabled Robot Programming

Mixed-reality trajectory authoring combined with natural-language interaction, structured commands, model comparison, and deterministic checks.

  • Research system
  • AI & robotics
  • Mixed reality

AURaPath — Mixed-Reality and Voice Programming for a UR10 Robot

AURaPath is an augmented- or mixed-reality system for programming trajectories for a Universal Robots UR10 arm. Built with HoloLens 2, Unity, and MRTK, it supports authoring six-degree-of-freedom robot trajectories and previewing them through a digital twin before physical execution.

A voice and LLM pipeline converts free-form speech into structured robot commands, enabling hands-free waypoint authoring without a memorized command set. Local and cloud LLMs, including Ollama and Gemini Flash, were compared for structured-output accuracy and latency. The selected model operates behind a deterministic keyword-based safety layer.

Related work was published at the 2026 IEEE Canadian Conference on Electrical and Computer Engineering.

HoloLens view aligning the AURaPath digital twin with the physical UR10 robot AURaPath mixed-reality waypoint creation beside the physical UR10 robot
  • HoloLens 2
  • Unity
  • MRTK
  • UR10
  • Ollama
  • Gemini Flash

Supporting depth

Machine Learning & Software Engineering

Conventional machine-learning work and a released software product that support broader AI engineering credibility.

  • Machine learning
  • Secondary project

Audiobook Customer Segmentation and Purchase Prediction

Machine-learning pipelines for customer segmentation and purchase prediction using user-behavior data. The work used SVM, Random Forest, and XGBoost to analyze behavior and predict outcomes.

  • Python
  • SVM
  • Random Forest
  • XGBoost
OfficeMeter monthly attendance dashboard showing required, attended, and remaining office days
  • Released application
  • Android

OfficeMeter

A released Android application for tracking and planning office attendance against a company’s weekly work policy. Users can choose regular workdays, track monthly attendance, and monitor remaining requirements.

The source repository is private. The application is available on Google Play.

Complementary experience

Other Projects

Selected XR and Android work retained as evidence of product development, spatial interaction, and continued technical learning.

Virtual greenhouse monitoring interface showing plant information
Virtual greenhouse monitoring interface.
  • VR prototype

GreenHouse Demo

A VR prototype for exploring a virtual greenhouse and inspecting plant-health data, environmental metrics, and operational tasks. Some implementation details remain private.

Animated demonstration of the Amsterdam Android city guide
Amsterdam Android city-guide demonstration.
  • Android
  • Jetpack Compose

Amsterdam

An adaptive Android city guide covering five categories. It uses Jetpack Compose, Material Design, and modern Android architecture and grew from a training-project concept.

BookExplorer home screen
Automatic BookExplorer application walkthrough.
  • Android

BookExplorer

An Android application for discovering, saving, and tracking books to read, extended beyond its initial codelab-inspired concept.

Animated demonstration of grabbing and moving pieces in Backgammon VR
Backgammon VR grab-and-move interaction demonstration.
  • VR
  • 6DoF interaction

Backgammon VR

A shared virtual-reality backgammon project with grab interactions, dice physics, and socket-based movement for 6DoF headsets.

Animated demonstration of hand tracking and interaction in the VR Room
VR Room hand-tracking and spatial-interaction demonstration.
  • VR learning project

VR Room

A foundational Unity VR environment with hand tracking and spatial interaction, started through the Unity Learn VR Development pathway.

Animated demonstration of the 30 Days of Vocabulary Android application
30 Days of Vocabulary Android application demonstration.
  • Android learning project

30 Days of Vocabulary

An Android application presenting 30 words with definitions and examples, based on the structure of a Jetpack Compose training project.

  • Android learning project

Water Me

An Android application for scheduling plant-watering reminders, built while learning Android background work and notifications.