Portfolio

Work I designed, built and still run

Two products I own end to end, then seven years of client work in fintech, pharma, racing and childcare.

01 · Case study

CodeJitsu: an AI coach that watches BJJ sparring footage

Upload a Brazilian Jiu-Jitsu sparring video and get a timestamped match breakdown, a technical grade and the drills that fix what went wrong. The same weaknesses then feed AI-drafted class plans and partner pairings for the next session.

CodeJitsu landing page: "AI that reads a BJJ sparring tape"
At a glance
Role
Solo builder: product, architecture, development and operations
Timeline
Hand-built side project from February 2024; developed with a team of AI agents since March 2026
Company
Free demo and internal R&D tool at TKNQ, where I'm CTO
Stack
Gemini on Vertex AI · .NET 10 microservices · React 19 · Supabase PostgreSQL · Google Cloud · Cloudflare
Live
thecodejitsu.com

The problem

A five-minute roll holds dozens of transitions, scrambles and positions that look alike. Coaches can't rewatch every round for every student, so detailed feedback rarely happens. Can a multimodal model act as a reliable second set of eyes for an instructor, and turn that feedback into the next class?

It's also a hard benchmark for video AI: long footage, fast action, and a half guard that looks almost the same as a quarter guard. That's why TKNQ keeps CodeJitsu running as its R&D testbed.

Design decisions

  • Analysis runs as a background job (Hangfire on Postgres), with progress pushed to the browser over SignalR.
  • A person stays in the loop. Instructors can edit every AI output before a student sees it.
  • Model choice is a setting, not code. An admin AI Console sets the model, region, reasoning level and token limit per feature, and every run snapshots its settings, so a new Gemini generation is a configuration change instead of a redeploy.
  • Knowing when not to use AI. Technique search first used Grok live search (dead links), then Gemini with Google Search grounding (too slow for the server's time limit). A plain YouTube Data API search replaced both: instant, cheap, and only real videos.
AI-drafted 60-minute class plan split into warm-up, techniques, drills, sparring and cool-down
Weaknesses found in students' videos feed an AI-drafted plan for the next class.
AI partner pairing: four pairs with the model's written reasoning on belt, experience, weight, height and age
A matchmaking service pairs training partners by belt, weight and experience, and explains its reasoning.

Running a paid AI feature as a free demo

Every analysis costs real money, so the controls had to be fair to users and safe for the budget:

  • 3 analyses per account per rolling 24 hours, adjustable live from the AI Console.
  • Failed runs are refunded automatically, and automatic job retries are off. Before that change, one failure could quietly re-run the whole paid analysis up to ten times.
  • The limit is checked before upload, two requests can't both take the last slot, and a double-click never costs two runs.

Built with a team of AI agents

Since March 2026, CodeJitsu has been developed with Claude Code working as five specialised agents, each defined by a role file in the repository. I set direction, answer the product questions and review what ships.

AgentResponsibility
Project managerBreaks work into tasks, delegates, reviews code, enforces quality checks
Frontend developerReact and TypeScript UI, state, English and Polish translations
Backend developer.NET APIs, domain services, EF Core models and migrations
DevOps engineerDocker, Google Cloud, Nginx, CI/CD and deployments
QA testerWrites tests, verifies changes, hunts edge cases
Results
380
automated tests across backend and frontend
5
specialised AI agents building the product
0
redeploys needed to switch Gemini models
3/day
free analyses per account, with automatic refunds on failure

What I learned

  1. Models change faster than code ships. Treating the model as a setting turned a breaking migration into a two-minute change.
  2. Not every feature needs a model. Technique search got faster, cheaper and more reliable without AI.
  3. Cost controls are part of the feature. Refunds, the in-progress guard and disabled retries belonged in version one.
  4. Agents speed up delivery, not judgment. Product decisions, reviews and approvals stayed my job, and that's where the quality came from.

02 · Case study

JRE Clipper: "What would Joe Rogan say?"

A search engine for the Joe Rogan Experience that finds moments by what was said, not by which episode it was in.

The problem, as a fan

I've listened to the JRE for years. I'd remember Joe and a guest getting deep into a topic, like jiu-jitsu, bears or psychedelics, and have no idea which episode it was, let alone where in a three-hour conversation.

Keyword search doesn't help. Episode titles are mostly just the guest's name, and nobody remembers the exact words that were used.

My solution: search by meaning

I split the episode transcripts into short, timestamped segments and turned each one into a vector embedding with Vertex AI, then indexed them all in Vertex AI Vector Search.

Your question is embedded the same way, so the closest segments come back by meaning even when none of your words match. Each result is an embedded YouTube player that jumps straight to the moment it was said.

03 · Education

Bachelor of Science in Computer Science

Bachelor of Science, Computer Science

University of Oregon · College of Arts and Sciences · Eugene, Oregon, USA

Coursework completed
2019
Degree conferred
March 22, 2025
Diploma
Digitally signed and certified eDiploma

"Verify degree" opens the University of Oregon's certified eDiploma status check, run live by Michael Sutter Document Certification Services.

Certifications

Microsoft · 2022

Azure Fundamentals (AZ-900)

Core Azure infrastructure and services.

OutSystems · 2020

OutSystems 11 Associate Web Developer

Low-code web application development.

04 · Experience

Seven years of shipping for clients

Mostly .NET and C# on the backend, React or Razor on the front, and whatever cloud the client runs.

  1. Founder & developer

    VU Solutions LLC Current
    • Remote developer for OWNA, an Australian childcare SaaS company.
    • CTO of TKNQ, an early-stage Australian startup building software for BJJ gyms.
    • Builds and runs CodeJitsu and JRE Clipper, and runs the company's own bookkeeping and tax workflow on MISA with AI assistance.
  2. Senior .NET Developer

    Clinical Mind Nov 2024 – Apr 2025 · Remote
    • Automated Speaker Event registration in the CM-GO SaaS platform, saving internal teams about 10 hours a week.
    • Integrated the MedPro API for real-time sync of the active speakers dataset, removing about 25 hours a month of manual data consolidation.
  3. Senior .NET Developer

    AF Payments Jan 2024 – Nov 2024 · Remote
    • Built the AFBI reporting tool in .NET: reads Parquet datasets from AWS S3, renders RDL report templates to PDF and emails executive reports.
    • Cleared 70% of the issue backlog across the Beep SuperApp e-wallet and BeepTransit in the Philippines.
    • Delivered e-Biller payments and mobile e-load, and worked in Flutter with the frontend team to get the app production-ready.
  4. Full-Stack Software Engineer

    NOLA Digital Consulting Jul 2022 – Feb 2024 · Remote
    • Racelab Global (racing odds and wagering, Brisbane): handled production incidents and RCA reports, helping cut the weekly incident rate by over 60%, and built the Auto-close settings feature across countries and race types.
    • Clinical Mind CM-GO (pharma SaaS): took over a microservice product from an offshore team, ran a data migration, introduced unit-test coverage and a testing pattern for the wider team.
    • Built an internal productivity tool that connected JIRA and the ChatGPT API to manage project documentation.
  5. .NET Developer

    SmartDev Apr 2021 – Jul 2022 · Da Nang
    • Built ASP.NET Core APIs for Autumn, a Singapore finance and wellness app, including OAuth integrations and third-party investment and trading services; the new features grew the user base by about 20%.
  6. Junior .NET Web Developer

    FPT Software Oct 2019 – Mar 2021 · Da Nang
    • Globe Telecom: fixed root causes behind a 30% drop in incidents and implemented single sign-on with Azure Active Directory.
    • Orion real-time location tracking: built zone-management APIs and Angular features in .NET Core.

Have something that needs building?

Tell me what you're working on, and I'll tell you honestly whether I'm the right person for it.