Kelowna, BC · Class of 2026

I build software
people actually use.

17-year-old developer. I ship practical tools real people rely on, and build with machine learning — from fine-tuned vision and language models to agentic AI apps.

Selected work

Real tools and models — the problem, what I built, and the honest outcome.

Agentic AI · Full-stack

6 Degrees

A mobile-first AI relationship-intelligence app for business-development teams. You capture an interaction — a typed note, a voice memo, a snapped business card — and an AI agent turns it into shared, searchable organizational memory.

At its core is an agentic capture loop: the AI agent uses tool-calling to search existing memory and dedupe, create and edit wiki-style pages for people and organizations, tag shared affinities, slot each interaction into a person's timeline, draw edges on a relationship graph (with you on it), set follow-ups, and enrich company pages with cited web search — and it can pause to ask a clarifying question, then resume once you answer.

I built it end to end: a FastAPI + server-rendered Jinja app (mobile-first), PostgreSQL with pgvector for semantic search and full-text search for keywords, Azure OpenAI for the chat agent, vision (business cards and photos), embeddings, and voice transcription, plus Tavily for company web enrichment. It's multi-tenant and workspace-scoped, with role-based access, invite-only onboarding, an audit log, and CSV/JSON export.

A working MVP I designed and built. It's the project I'm most excited to show BDO — it's aimed squarely at the relationship-driven work of a business-development team, and it's where my interest in agentic AI and the OpenAI tool-calling schema comes together. Happy to give a live walkthrough.

  • FastAPI
  • Python
  • PostgreSQL + pgvector
  • Azure OpenAI
  • Agentic tool-calling
  • RAG / vector search
  • Tavily
Reinforcement learning

Dealer AI for Buckshot Roulette

I trained an AI to play the dealer in Buckshot Roulette — built a custom simulation, trained a policy on it, and wired the trained model back into the real game so it makes the dealer's decisions live.

I wrote a Gymnasium-style simulation of the game plus a bruteforce expectimax solver to act as an expert, then trained a Decision Transformer dealer policy (behavior-cloning the solver, with return-conditioning for a difficulty dial). Training ran on Modal GPUs with batched data collection, async evaluation, and torch.compile for roughly 4–5× faster iterations.

The interesting part was the debugging: an early model collapsed to always shooting the player. I traced it to environment bugs poisoning the training labels and to the sequence model overfitting its context window — fixing both took it from ~22% to ~46% win rate against the optimal solver (and ~86% vs a random opponent). I then decompiled the real Godot game and wrote a mod that hooks the dealer's decision and calls a local Python inference server, so my trained agent actually plays inside the game.

A personal project, end to end: simulation, an expert solver, offline-RL training in the cloud, hard debugging, and real-game integration via decomp + modding. In my testing the final policy tracks near-optimal play. Happy to walk through the training and the in-game bridge.

  • Python
  • Reinforcement learning
  • Decision Transformer
  • Gymnasium
  • PyTorch
  • Modal (GPU)
  • Godot modding
Unity · LLM · Game dev

LLM-driven kingdom game

A Game Dev class project inspired by the Flash game Sort the Court — but instead of hand-written events, an LLM generates each subject's request and its outcomes on the fly, and the consequences are applied back to the kingdom.

You play a ruler answering yes/no to a stream of petitioners. Rather than scripting scenarios, the game calls an LLM through OpenAI's structured-output schema, so every request — and the stat changes that follow your choice — comes back as typed, validated JSON the game can apply directly. Structured outputs keep the model's creativity while guaranteeing the response always fits the shape the game expects.

I built it in Unity with C#, handling the API calls, the response schema, and the loop that turns each generated event into choices and consequences.

A playable prototype from my Game Dev class — a fun way to pair game development with OpenAI's structured-output schema, the same reliable-JSON technique I lean on in my other AI projects.

  • Unity
  • C#
  • OpenAI API
  • Structured outputs
  • Game design
In daily use

CEA Assigner

A Google Apps Script tool my school uses every morning to assign Certified Education Assistants to classrooms, based on who's actually in that day.

Every day, staff have to decide which CEAs go to which classrooms — and that shifts constantly as students and staff come and go. I built CEA Assigner so they can produce a sensible assignment in seconds instead of working it out by hand.

I chose Apps Script deliberately: it lives inside the Google Workspace tools the school already uses, needs no extra logins or infrastructure, and stays inside the school's existing data boundary — which matters for a tool touching student and staff information.

In active daily use by school staff — it removes a recurring manual scheduling headache for the people who run the building.

  • Google Apps Script
  • JavaScript
  • Google Workspace
Machine learning

FRC Game-Piece Vision

As head programmer of my school's FIRST Robotics Competition team, I fine-tuned YOLOv26 to detect game pieces, then validated it against real match footage.

I fine-tuned YOLOv26, a pretrained object-detection model, to detect FRC game pieces, and built the surrounding pipeline: collecting and labeling match imagery, running inference, and evaluating results.

Tested on real recorded match footage, the model performed very well at picking out game pieces. It wasn't fully run on the competition robot, because of unrelated mechanical issues with the robot itself — not the vision code — an honest reminder that a working model and a fully working system are two different things.

Validated on real match footage with strong detection of game pieces; not fully fielded due to unrelated robot mechanical issues — not the vision code. Happy to walk a reviewer through the data, results, or approach.

  • YOLOv26
  • Object detection
  • Python
  • Computer vision
  • Model fine-tuning
Agentic AI · Robotics

A robot you can talk to

My high-school capstone project, built in the FRC off-season: I turned our competition robot into one you can talk to — you speak a command and an LLM decides how to drive it, using cameras to see, a Jetson Nano I added for onboard compute, and the RoboRIO already on the bot for the actual motor control.

You talk, the robot acts. "Move forward a good bit," "start spinning around," "what does the sign say?" — each spoken command is transcribed, handed to an LLM that decides what the robot should do, and turned into drive commands the robot carries out. It isn't driving blind, either: ask it about a printed card held in front of it and it reads the text through its camera and answers.

I built the bridge between the language model and the real hardware. A Jetson Nano I added does the onboard work — capturing voice and camera and running the control loop — an LLM interprets each request against what the cameras see, and its decisions are passed down to the RoboRIO, the FRC controller already on the robot, which handles the low-level motor control. No new drivetrain, no rebuild — I gave the robot we already had eyes, ears, and an agent in the loop.

My high-school capstone — a working prototype, demoed live in the shop, where my interest in agentic AI meets real hardware: voice in, an LLM reasoning over what it sees, motors out. It's a rough-and-ready demo, not a polished product, and I'm happy to walk through the architecture or show more footage.

See it in action — with sound. Spoken: "What does the sign say?" — the robot reads the card held to its camera and answers aloud. The card reads "Can you read?"
  • LLM / agentic control
  • Voice / speech-to-text
  • Computer vision
  • Jetson Nano
  • RoboRIO
  • FRC robot
  • Python
  • Edge integration

More projects

A deployed web app, plus self-directed model fine-tuning across different modalities.

Deployed web app

Prom Seating

A Google Apps Script web app my graduating class used to pick and change their prom tables, writing every choice into one live spreadsheet for the organizers.

The tricky part was safely overwriting a student's previous seat on each edit — and it deployed with zero new tools or logins for the organizers.

  • Google Apps Script
  • JavaScript
  • Google Sheets
Personal · ML

Qwen 3, fine-tuned on our group chat

I fine-tuned Qwen 3, an open-weight LLM, on my friend group's Discord messages so it could mimic our chat style — building the whole data pipeline end to end.

A learning project, not a product. I used my own server with messages from friends who gave their consent, and anonymized identifying details during prep.

  • Qwen 3
  • LLM fine-tuning
  • Python
  • Data prep
Middle school · ML

Stable Diffusion, on my school

A middle-school project: I fine-tuned Stable Diffusion 1.5 on a set of photos of my school. Rough results — but my first real taste of fine-tuning.

The earliest step in what became a multi-year arc of fine-tuning models across different modalities.

  • Stable Diffusion 1.5
  • Model fine-tuning
  • Dataset collection

Experience

Beyond the projects — teaching and customer-facing work.

  • Teaching Assistant — Computer Science 11/12

    Grade 12

    Kelowna Secondary School

    TA'd a combined Computer Science 11/12 class, supporting two groups of students through different material — explaining concepts, debugging alongside them, and answering questions one-on-one.

  • Customer Service — School Store

    2.5 years

    Kelowna Secondary School

    Worked the counter at my school's store for two and a half years — sales, handling cash, and everyday customer service.

About

I'm a self-taught developer who likes building things people actually use.

I'm a 2026 graduate of Kelowna Secondary School, where I earned the COBSS Industrial Education / Technology Award. I split my time between shipping practical software and fine-tuning ML models — object detection, language, and image generation — to do useful, well-scoped jobs.

I've been building games in Unity with C# since grade 6, and experimenting with language models since before ChatGPT — back in the AI Dungeon, NovelAI, and InferKit days. Lately that's grown into agentic, tool-calling AI apps like 6 Degrees. This fall I'm continuing at Okanagan College.

I start from the people a project is meant to help and work backward to the technology. That's the mix I'm hoping to grow at BDO Canada, alongside experienced people.

Why my code is private

Several of these projects touch real student, staff, and personal data, so I keep their code private by default — I treat that discretion as part of doing the work properly. I'm always happy to walk through architecture and code live, and to share demos and references on request.

What I work with

Depth in a few areas rather than a wall of logos.

Software & web

  • Python
  • C#
  • C++
  • Unity
  • FastAPI
  • Google Apps Script
  • HTML & CSS
  • SQL / PostgreSQL

Machine learning & AI

  • Agentic AI & tool-calling
  • OpenAI / Chat Completions API
  • RAG & vector search
  • Model fine-tuning
  • Reinforcement learning
  • Object detection (YOLO)
  • LLMs (Qwen 3)
  • Generative images
  • Robotics & edge (Jetson)
  • PyTorch

How I work

  • Building for real users
  • Self-directed learning
  • Teaching & mentoring
  • Privacy & security first
  • Honest about scope

Let's talk

I'm applying for an internship at BDO Canada and I'm happy to go deeper on any of this — demos, references, and live code or architecture walkthroughs on request.

clarkxlu@gmail.com

Kelowna, BC, Canada · Code & references available on request