Selected engineering work
Projects
These projects show how I connect AI models to evidence, tools, structured interfaces, and predictable software behavior—from page-cited document answers and live-data tool use to speech-driven robot commands behind deterministic safety checks.
Primary focus
Applied AI & LLM Systems
Grounded retrieval and tool-calling applications built around APIs, inspectable evidence, and explicit system behavior.
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.
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.
AI, robotics & HRI
AI-Enabled Robot Programming
Mixed-reality trajectory authoring combined with natural-language interaction, structured commands, model comparison, and deterministic checks.
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.
Supporting depth
Machine Learning & Software Engineering
Conventional machine-learning work and a released software product that support broader AI engineering credibility.
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.
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.
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.
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
An Android application for discovering, saving, and tracking books to read, extended beyond its initial codelab-inspired concept.
Backgammon VR
A shared virtual-reality backgammon project with grab interactions, dice physics, and socket-based movement for 6DoF headsets.
VR Room
A foundational Unity VR environment with hand tracking and spatial interaction, started through the Unity Learn VR Development pathway.
30 Days of Vocabulary
An Android application presenting 30 words with definitions and examples, based on the structure of a Jetpack Compose training project.
Water Me
An Android application for scheduling plant-watering reminders, built while learning Android background work and notifications.