← Dashboard

Senior AI Engineer · Anna, Texas

Kevin Savill

I build AI systems that connect to real workflows, from autonomous customer support to internal tools that take action.

Email · LinkedIn · GitHub

Showcase

Selected engineering work, from customer support and internal tools to connected AI agents.

Momentus · End-to-end system design and development

Autonomous support

Over 80% of support chats and tickets handled without human intervention.

Support chats and Zendesk tickets connect to the AI support system.
System overview. The outcome covers chat and tickets together.

I built a support automation system from the ground up, integrating Zendesk with a deployable customer chat widget. The work brought customer-facing chat and ticket automation into one support system.

What I built

  • End-to-end support automation integrated with Zendesk.
  • A deployable chat widget for customer support.
  • AI workflows that handle support conversations and tickets autonomously.

Measured outcome

More than 80% of support chats and tickets were handled autonomously, without human intervention, over the six months preceding September 28, 2026. The result combines support chat and tickets.

My contribution

I designed and built the system from the ground up, connecting the support platform, AI services, and customer-facing chat experience.

Zendesk · LLM orchestration · FastAPI · Chat integration · Systems integration

Independent project · Platform architecture and full-stack development

Koobin

AI agents, workflows, and tools under one permission model.

Visual workflows

An example agent call branches into a connected tool call or a human-input step.
Illustrated system view, not a screenshot. An illustrative graph of supported workflow nodes; not a recorded workflow run.

Tool approvals

A proposed tool call presents approve, edit, and reject decisions under explicit access grants.
Illustrated system view, not a screenshot. Human review, resource grants, and audit events govern agent actions.

Overview

Koobin connects chat and workflows to governed agent tools and durable workers.
Architecture overview based on the Koobin source; not an application screenshot.

I built Koobin as a self-hosted platform for organizations to run AI agents against their business systems. It brings chat, visual workflows, retrieval libraries, connected tools, and usage accounting into one application.

Agents, workflows, and knowledge

  • Configure agents, model providers, tools, and structured outputs; review tool calls through approve, edit, or reject cards.
  • Build versioned visual workflows with branches, loops, parallel work, sub-workflows, agent calls, and human input.
  • Connect documentation libraries, remote MCP tools, and integrations including Slack, GitHub, Jira, Zendesk, and Rocketlane.

Access and visibility

  • Organization and department grants, OIDC single sign-on, MFA, encrypted credentials, and audit events govern access.
  • Track model and tool usage alongside agent reliability; durable tasks and schedules survive worker restarts.

My contribution

Platform architecture, full-stack development, workflow execution, tool integrations, and the controls that make agent activity reviewable.

AI agents · MCP · Django · React · PostgreSQL · Celery · SSO

Cytracom · Internal portal development and systems integration

Internal tools

A shared portal for support automation and team enablement.

Support teams use an internal portal connecting Zendesk automation, enablement tools, and operational APIs.
Capability overview based on the internal tools source; no internal screens or customer data are shown.

I built and expanded an internal tools portal that brought Zendesk support automation, communications administration, diagnostics, and everyday support utilities into one place. The goal was to help teams investigate issues, manage workflows, and complete repeatable tasks through usable tools.

Zendesk automation inside the portal

  • Ticket search and management, customer setup workflows, moderation, and spam management.
  • AI-assisted classification and response generation, with approval queues, escalation controls, and response history.
  • Agent availability, reassignment workflows, routing rules, scheduled alerts, and operational reporting.
  • Response evaluation, regression checks, documentation insights, and knowledge-review queues.

Tools for team enablement

  • Contact CSV creation, validation, conversion, and API utilities for desktop communications workflows.
  • Phone configuration tools for generating and modifying device settings, including multipurpose keys, line keys, and account registration.
  • Network monitoring views, email diagnostics, and phone-number lookups to support investigations.
  • Audio conversion, transcription, text-to-speech, and structured-data utilities for recurring support tasks.

One connected workspace

A React portal connects Python and Node.js services with Zendesk and communications APIs. Role-based access, shared navigation, audit views, and operational dashboards make the tools usable across support and enablement workflows.

My contribution

Portal and tool development, API integration, support automation, and translating hands-on support experience into workflows that other teams could use.

React · Python · Node.js · Zendesk · REST APIs · Internal portals · Team enablement

Software

In development · self-hosted

Voice Identity Studio

Turn recordings into reviewed, reusable speaker identities.

Speaker timeline

Anonymous illustrative speaker segments below an audio waveform, with a playhead for review.
Illustrated system view, not a screenshot. Audition original audio and separated stems, adjust segments, and assign speakers. Segment positions are illustrative.

Identity review

Speaker segments from two recordings converge on human review and shared identities.
Illustrated system view, not a screenshot. Suggested matches can be confirmed or corrected, with reversible identity merges.

Exports and renders

Reviewed speaker segments branch into per-speaker audio exports and consent-gated voice replacement.
Illustrated system view, not a screenshot. Voice replacement keeps consent and provenance attached to the output.

Overview

Voice Identity Studio workflow: ingest media, identify speakers, review and deliver.
V4 workflow overview; schematic rather than an application screenshot.

A self-hosted audio studio for vocal isolation, speaker diarization, transcription, and matching speakers across recordings, with a browser-based segment editor and per-speaker exports.

The V4 application extends the earlier processing pipeline into a complete review workflow: resumable media ingestion, identity matching, human review, voice profiles, and voice-replaced renders. Local GPU engines are the default; external providers are optional.

My role: Full-stack development and audio pipeline engineering

  • Match speakers across files with confidence scores, review queues, project or workspace scope, and reversible identity merges.
  • Review transcripts and speaker segments in a timeline editor, audition original and separated stems, and export speaker audio.
  • Resumable uploads support browser-side audio extraction or retained video proxies.
  • Consent-gated voice profiles and voice replacement retain provenance; native RVC supports training and conversion.
  • Face tracking in retained video can suggest links to voice identities; ambiguous matches remain for review.
  • FastAPI and React coordinate PostgreSQL-backed state and background GPU jobs, with authenticated API and MCP access.

Python · FastAPI · React · TypeScript · PostgreSQL · GPU processing

In development · self-hosted

Koobin

AI agents, workflows, and tools under one permission model.

Visual workflows

An example agent call branches into a connected tool call or a human-input step.
Illustrated system view, not a screenshot. An illustrative graph of supported workflow nodes; not a recorded workflow run.

Tool approvals

A proposed tool call presents approve, edit, and reject decisions under explicit access grants.
Illustrated system view, not a screenshot. Human review, resource grants, and audit events govern agent actions.

Overview

Koobin connects chat and workflows to governed agent tools and durable workers.
Architecture overview based on the Koobin source; not an application screenshot.

A self-hosted platform for organizations to run AI agents against their business systems. Koobin combines streaming chat, visual workflows, retrieval libraries, realtime voice, and usage accounting with explicit access grants and tool approvals.

The architecture separates the web application from durable background work, so long-running agent turns, media processing, and scheduled tasks have their own worker queues.

My role: Platform architecture and full-stack development

  • Configure agents, model providers, tools, and structured outputs; review tool calls through approve, edit, or reject cards.
  • Build versioned visual workflows with branches, loops, parallel work, sub-workflows, agent calls, and human input.
  • Connect documentation libraries, remote MCP tools, and integrations including Slack, GitHub, Jira, Zendesk, and Rocketlane.
  • Organization and department grants, OIDC single sign-on, MFA, encrypted credentials, and audit events govern access.
  • Track model and tool usage alongside agent reliability; durable tasks and schedules survive worker restarts.

Django · React · Celery · PostgreSQL · Redis · MCP

Live · free to use

Universal Flow Puzzle Solver

From a puzzle screenshot to a solution, entirely on your device.

Original puzzles with walkthroughs

The Original Flow-style puzzles page, featuring a 12-by-12 expert puzzle and an explanation of how each board is generated and checked.
The puzzle library on flowpuzzlesolver.net, captured October 13, 2026.

On-device workflow

Import an image, review detected dots, solve locally with Z3, then verify and save.
Illustrated system view, not a screenshot. The hosted edition supports square-grid boards and manually entered holes. The irregular example uses the separate full Python solver.

Full Python solver

Before-and-after view of a 35-region irregular puzzle with cutouts. Four colored paths connect matching endpoints and cover every region.
Actual imported puzzle geometry and independently verified solution from the full Python solver. Irregular-region solving is not yet available in the live browser edition.

The live browser experience

Flow Puzzle Solver displaying a solved five-by-five demo board, an on-device processing notice, and a solution found in 0.06 seconds and checked independently.
The live site solving its built-in demo in the browser, captured October 13, 2026.

A free web app that turns a screenshot of a Flow / Numberlink-style puzzle into a solved board. Choose, drop, or paste an image, check the detected colored dots, correct any mistakes, and solve directly in the browser.

Image processing and solving run on the visitor's device. Puzzle screenshots are not uploaded to a processing server. The app is hosted on Cloudflare Workers Static Assets using free static hosting, with no backend compute service required.

The site also teaches the puzzle type, with 14 lessons, help pages, and original puzzles that each come with hints and a step-by-step walkthrough.

My role: Full-stack development and solver engineering

  • Screenshot detection finds regular board outlines and color pairs, with a visual editor for correcting dots and adjusting board corners.
  • Z3 compiled to WebAssembly solves path constraints locally, removes disconnected cycles, and independently checks the resulting solution.
  • Dedicated Web Workers keep image processing and search off the interface thread, with progress details and a Stop control.
  • An IndexedDB library saves puzzles in the browser; .flow import and export let users move their puzzles between devices.
  • The live edition supports square-grid boards up to 20 × 20, including rectangular layouts and manually entered holes. Bridges, walls, and warps are not supported yet.

Solving beyond regular grids

The full solver models a puzzle as connected regions rather than assuming a rectangular grid. This example uses 35 irregular cells with cutouts: all four pairs are connected, every region is covered, and the resulting paths pass an independent validity check.

  • Example: IMG_3246 from the source puzzle corpus, solved with the Python Z3 engine.
  • The hosted device-only app currently supports square-grid boards, including rectangular layouts and manually entered holes.

Built for static hosting

The browser downloads a compressed solver runtime, verifies its size and integrity, and initializes it locally. React and TypeScript provide the screenshot-to-solution workflow, while Cloudflare serves the app and WebAssembly assets. No account is needed to solve a puzzle.

The live browser experience

The public site keeps screenshot processing, board review, and square-grid solving on the visitor's device.

Original puzzles with walkthroughs

A generator lays out non-overlapping paths and keeps only their ends as dots. The exact solver must prove exactly one solution, and a second solver limited to techniques a person would use must finish the board without guessing; its moves become the published walkthrough.

React · TypeScript · Z3 · WebAssembly · Web Workers · IndexedDB · Cloudflare

Try the puzzle solver · Lessons and puzzles · Help

In development · beta pending

Littlekin

Daily pet care, reminders, sitter handoffs, and vet records.

Featured view

Littlekin's Today tab on iPhone, showing the example household's checklist with overdue breakfast and medication items for Mochi the cat.
The Today tab with built-in example data, captured in the iOS Simulator.

Journal

Littlekin's Journal tab titled “Mochi's story,” with a pet picker, search and filters, and a moment entry.
The Journal tab with built-in example data, captured in the iOS Simulator.

iPad

Littlekin on iPad with a sidebar of sections and pets beside the Today checklist for four example pets.
The iPad layout with built-in example data, captured in the iPadOS Simulator.

A native Apple app that keeps a household's pets on track across iPhone, iPad, Apple Watch, and Vision Pro: daily checklists, reminders, sitter-handoff documents, vet records, a journal, and trends.

It has no third-party dependencies and no servers of its own. Records are stored on the device, with optional household sharing through iCloud.

My role: Design and development

  • Household sharing through CloudKit's sync engine, so everyone caring for a pet sees the same checklist.
  • On-device Foundation Models answer questions about a pet's records, with every answer checked against those records; an optional user-supplied provider sends only after the user taps Send.
  • A deterministic Quick log parser turns short notes into structured entries.
  • Multi-pet vet packets export as PDF, with a JSON copy.
  • Journal storage is split by entry, so adding one entry writes three small files instead of rewriting the whole journal.

Swift · SwiftUI · CloudKit · Foundation Models · watchOS · visionOS

Public source · experimental

Pong reinforcement learning

Training and evaluating an agent through play.

Overview

Reinforcement learning loop connects observations, agent actions, environment, and rewards.
Training-loop overview; no benchmark score is implied.

A reinforcement-learning project for Atari Pong, with a DQN training pipeline and tools for evaluation and interactive play.

My role: Applied machine learning

  • Replay-buffer and target-network integration in the training loop.
  • Configurable exploration, checkpointing, and evaluation.
  • Training metrics and reproducible experiment configuration.

PyTorch · DQN · Gymnasium · TensorBoard

View training source

Public source · experimental

Digit recognition

Draw a digit and explore a convolutional network.

Overview

Digit recognition: drawing input, convolutional features, classifier, digit prediction.
Model and interface overview; schematic, not a live prediction.

A handwritten-digit recognition project with a convolutional neural network, training tools, and both web and desktop drawing interfaces.

My role: Applied machine learning and interface development

  • Convolution, batch normalization, pooling, and dropout in the model.
  • Training augmentation, learning-rate scheduling, and early stopping.
  • A web drawing canvas with predictions and convolution-layer activation previews.

PyTorch · CNN · Flask · Tkinter

View model and app

Personal website

kevinsavill.com

A portfolio you navigate like a 2008 console dashboard.

Overview

Kevin Savill's console-inspired dashboard with the Showcase tile selected.
The portfolio dashboard, captured in a desktop browser.

A personal site inspired by the Xbox 360 New Xbox Experience dashboard, built with plain HTML, CSS, and JavaScript.

My role: Design and development

  • One navigation model for keyboard, mouse, touch, and controller inputs.
  • Shareable detail panels and browser-back navigation.
  • Original 2008 dashboard sounds and an animated avatar.
  • A static reading view and downloadable résumé alongside the dashboard.

HTML · CSS 3D transforms · JavaScript · Web Audio · Gamepad API

Open reading view

UT Dallas CS capstone

Virtual chatbot

Computer Science capstone at UT Dallas.

A team capstone project completed for my B.S. in Computer Science at the University of Texas at Dallas. We combined a React and Next.js interface, a Rasa conversational engine, and a Flask backend to connect conversations with application data.

My role: Capstone team member

  • REST integrations with databases and external APIs.
  • Context-aware conversational responses.
  • In-house two-factor authentication.

React · Next.js · Rasa · Flask · REST APIs

Personal project

Plants vs. Zombies automation

Image recognition turns game screens into automated actions.

A screen automation bot for Plants vs. Zombies minigames and the Zen Garden, using OpenCV image matching and PyAutoGUI controls.

My role: Automation and interface development

  • DearPyGui controls for selecting a mode and run duration.
  • Slot-machine minigame automation for collecting sun and placing plants.
  • Zen Garden routines for plant care, resource purchases, and snail feeding.

Python · OpenCV · PyAutoGUI · DearPyGui

Games

Coming soon · private source

Bit Universe

Build a town. Grow an empire across ten worlds, on screen or in VR.

Featured view

Pixel Point on Earth, a voxel coastal town with roads, civic buildings, and a lighthouse.
Pixel Point on Earth, a voxel coastal town with roads, civic buildings, and a lighthouse.

Overview

Exa Metropolis at night in Bit Universe, showing the colony HUD, illuminated buildings, aircraft, and Build control.
Exa Metropolis on Earth, from the Bit Universe game website.

Buildings that evolve

Five Moon habitat upgrade stages, from a small dome to a tall green-banded tower.
The Moon habitat progression, from dome to tower.

From one colony to a solar-system economy

Bit Universe system map showing Earth, the Moon, Mars, Venus, the asteroid belt, and outer-planet destinations through Triton.
The in-game system map and the Far Out achievement.

Your colonies, on the table

Four Bit Universe colony dioramas, two on Earth plus the Moon and Mars, floating above a virtual floor with HUD bars and management windows.
The VR edition running in Unity's XR simulator on a desktop, with the game's real assets; not an in-headset capture.

A voxel 3D idle city builder with a retro pixel-art interface, colony economies, building upgrades, vehicles, logistics, and a progression system spanning multiple worlds.

Begin with a small settlement on Earth and expand through 100 hand-made colony maps across ten worlds, ending on Triton. The game combines local city planning with an interplanetary economy: research upgrades, automate construction, and connect colonies through shared funds, ships, and trade.

Coming soon to iPhone and iPad, Android, PC via Steam, and Meta Quest. Release dates are still to be announced.

My role: Game design and development

  • Ten worlds with distinct systems: lunar solar power and batteries, Martian terraforming, floating Venus cities, finite asteroid reserves, and delayed income on Triton.
  • Zone needs connect homes with the industry and shops they staff; Governors, research, build queues, and automated upgrades grow each colony into a self-sustaining economy.
  • A shared fleet carries resources and construction supplies between worlds; trade routes connect exports with import demand.
  • Prestige Keys provide permanent income growth, alongside 41 achievements and upgradeable offline earnings.
  • A separate Quest edition sets colonies out as tabletop miniatures: manage up to four dioramas at once, each with the game's own HUD and windows, in a virtual room or passthrough mixed reality.
  • One pure C# core runs the phone, desktop, and VR games, offline catch-up, and headless balance bots, with save migrations and NUnit test suites.

Buildings that evolve

Building upgrades change the city itself, with scaffolding and new architectural stages. Players can lock a favorite style while continuing to progress. Vehicles, collectible coins, and illuminated windows bring the day/night cycle to life.

From one colony to a solar-system economy

Colony wallets grow into world funds and an Interworld Treasury. Planet-specific resources, fleet fuel, market events, and cross-world deliveries connect individual cities into a larger simulation.

Your colonies, on the table

The Quest edition is its own app built on the same simulation core. Colonies become miniatures you can grab and place around you, so a Moon base, a Martian town, and two Earth cities can run side by side, each with its own build controls and management windows.

Unity · C# · Simulation · VR · OpenXR · NUnit

Visit Bit Universe · Explore the worlds · Player guide

In development · private source

Non-Euclidean Neon Arena

Dodgeball, Laser Tag, and Tracer in impossible nightclubs.

Overview

Non-Euclidean Neon Arena development build with neon courts and robot players behind the main menu.
Actual development build, version 0.27.5. The menu and title have changed since this capture.

A first-person robot arcade-sports game across fifteen neon skate-rink courts that hide portals, rooms bigger inside than out, mirrored seams, and upside-down halls. Play Dodgeball, Laser Tag, Tracer, or a Relay objective, from 1v1 to 8v8, against bots, in four-player split screen, or with friends in hosted rooms.

Built in Unity and C#, the project brings together impossible-space rendering, skate-park movement, host-authoritative multiplayer, portal-aware opponents, a robot editor, and a music-reactive club with a synthesized soundtrack.

My role: Game design and development

  • Rendered folds stay consistent across rendering, movement, projectiles, bots, and networked play: larger interiors, stretched glass rooms, scale-changing passages, mirrored routes, and inverted gravity.
  • Every court is a skate park with banks, bowls, and kickers; slope-launch movement stays in sync through host-authoritative networking.
  • Bots with fair sight and hearing, portal-aware routes, shot prediction, and three difficulty levels fill any seat.
  • A robot editor and career: a trick book, styles, challenges, and earned cosmetics that never change competitive abilities.
  • Beat-driven lighting, spectrum displays, and custom songs make the club react to the music, with a Calm Lights accessibility mode.
  • Windows desktop builds with keyboard and controller support.

The arena is the mechanic

A shortcut can change scale, reverse an angle, or lead into a room larger than its exterior. The challenge is making these transformations agree across rendering, movement, projectiles, bot navigation, and networked play.

Unity · C# · URP · Game AI · Multiplayer · Real-time rendering

In development · Meta Quest

Spatial Workshop

A calm, hands-on VR puzzle workshop: rotate, unfold, slice, and assemble.

Featured view

The Spatial Workshop hub: a sunny workbench with chapter progress for Rotation, Projections, Nets and folding, Cross-sections, and Exploded assembly.
The workshop hub. Unity editor play-mode capture; not an in-headset capture.

Rotation

A Rotation puzzle on the workbench: a blue block key on a turntable beside the wireframe cradle it must match.
Rotation, “Turn the key.” Unity editor play-mode capture; not an in-headset capture.

Exploded assembly

A layered lamp assembly with green, red, and wooden blocks and a note that something is in the way.
Assembly-order feedback. Unity editor play-mode capture; not an in-headset capture.

Five ways to see a shape

A tilted sheet slicing a transparent cube, with an explanation of how the cross-section grows from a triangle into a hexagon.
A cross-section explanation. Unity editor play-mode capture; not an in-headset capture.

A seated puzzle game for Meta Quest about thinking in three dimensions. Sixty puzzles across five chapters cover rotation, projections, nets and folding, cross-sections, and assembly order, played with hands or controllers at a sunny workbench.

Puzzle rules run in pure C# outside the engine, and an offline validator certifies every puzzle before it reaches the campaign.

My role: Game design and development

  • Sixty campaign puzzles in five chapters, plus checks, practice variants, and free-form Explore sandboxes.
  • Hand tracking and controllers through Meta's Interaction SDK on OpenXR.
  • Puzzle logic has no engine dependency and runs under plain dotnet test.
  • Every puzzle carries a validator certificate, and continuous integration fails when one goes stale.
  • Each puzzle family is a plug-in: one engine class and one content class, with no shared switch statements.
  • A 45-minute automated soak on a Quest 2 played 209 puzzles at a mean frame time under 14 milliseconds.

Five ways to see a shape

Turn a key until it matches its cradle, predict a shadow, fold a net, slice a cube, or work out the order in which a lamp has to be assembled. A short explanation after each solve shows why the answer works.

Unity · C# · OpenXR · Meta Quest · Hand tracking · Puzzle design

Early builds · Meta Quest · private source

VR learning series

Five Quest games that teach a real skill, with a coach that steps back as you improve.

Learn Circuits: Gadget Workshop

A workbench with a crossing-light circuit, mission card, multimeter panel, and timing strip in Learn Circuits.
The Crossing Light capstone. Play-mode desktop capture; not an in-headset capture.

Learn to Juggle

A voxel teacher demonstrating a juggling pattern beside glowing ghost hands and a Watch and Shadow lesson board.
A Watch and Shadow lesson. Desktop capture; not an in-headset capture.

Learn to Box

A voxel coach holding focus mitts with a PERFECT hit marker beside a Pad Rush score board.
Pad Rush training. Desktop capture; not an in-headset capture.

Learn to Bowl

A spare-practice lane with the predicted ball route, a pin diagram, and a lesson panel in Learn to Bowl.
Spare practice in the club venue. Editor capture; not an in-headset capture.

Table tennis

A table tennis table in a club room with the opponent Sam, the player's paddle, and a match score panel.
A club match. Editor test-harness capture; the characters and art are still in progress.

A set of Meta Quest games, each built around one real-world skill: electronics, juggling, boxing, bowling, and table tennis. Every game pairs a structured curriculum with a coach whose help fades as the player improves, then opens into arcade, career, or challenge modes.

The games share an approach rather than a template: simulation and rules in plain C# tested outside the engine, scenes and art generated by editor code, and OpenXR first. All five are early builds installed on a Quest 2 for development; headset playtesting is still ahead, and the images are desktop captures.

My role: Game design and development

  • Simulation and rules layers in plain C#, with unit tests that run without Unity.
  • Coaching that adapts: slow-motion assists, ghost demonstrations, and feedback that fades as the player succeeds.
  • Scenes, characters, and props generated by editor code and scripts rather than placed by hand.
  • Localized interfaces in the juggling and boxing games.

Learn Circuits: Gadget Workshop

Repair and build small gadgets while learning DC circuits, then logic. Forty-eight missions use 33 components, a meter with voltage, resistance, and logic probes, and a timing strip. The nodal-analysis solver is cross-checked against an independent Python solver and Ngspice on thousands of random circuits, and every mission's reference solution and near-miss wrong answers are validated in continuous integration. Hands, controllers, and a desktop mouse share one interaction layer.

Learn to Juggle

A stationary juggling school. A teacher and ghost hands demonstrate each move, and help fades from slow gravity and assisted catches to real-speed juggling across 24 skills, five arcade modes, a daily challenge, and four environments. Throws release at the peak of the hand's drive, and tricks such as Mills' Mess are judged by rules.

Learn to Box

A voxel boxing gym: a coach teaches 13 lessons, then the player fights eight opponents for four belts. Punch analysis classifies straights, hooks, and uppercuts and grades form; opponents telegraph, feint, and leave counter openings; the heavy bag swings as a damped pendulum driven by the glove's momentum.

Learn to Bowl

Aiming, spare choices, and lane reading across five venues. Each ball's skid, hook, and roll path is computed from lane-condition presets and handed to physics-driven pins, scoring follows standard rules with split detection, and a rules-based coach suggests the next adjustment.

Table tennis

Beginner table tennis with lessons, a ball feeder, a coach, and a club campaign. Ball flight is a deterministic simulation with drag, Magnus lift, and spin decay, contact is swept against the table, net, and moving paddles, and AI opponents plan their shots on worker threads.

Unity · C# · OpenXR · Meta Quest · Physics simulation · Procedural content

Coming soon to iOS

Ram Ramp

Brake at the edge. How far down can you go?

Featured view

The ram sliding down a voxel meadow between rocks at 289 metres, with boost charges, the avalanche distance, and a mission banner.
An endless run at 289 metres. Development capture from the macOS player in the portrait phone layout.

Title and missions

The Ram Ramp title screen with “Brake at the edge. How far down can you go?”, three missions, the rank bar, and Play, Garage, Goals, and Settings buttons.
The title screen with missions and rank. Development capture; the coin total comes from a test save.

Canyon

The ram at 1,190 metres in a voxel canyon with a NEAR MISS ×3 SLIPSTREAM banner and boost charges.
Near-miss streaks in the canyon at 1,190 metres. Development capture.

The big one

A voxel junk pile bursting apart under a THE BIG ONE! banner at the bottom of the slope.
The junk-pile smash that ends a run. Development capture.

A voxel arcade game about a ram, a pickup with a ramp, and a very tall hill. Brake right at the cliff edge to launch, then steer the ram down an endless slope, dodging rocks or boosting through them while an avalanche closes in.

Built for short portrait-phone sessions, with missions, ranks, and offline local saves.

My role: Game design and development

  • A deterministic 50 Hz run simulation drives the launch, steering, collisions, and the chasing avalanche.
  • The descent moves from meadow to canyon to snow, with slaloms, chutes, forks, rolling boulders, and near-miss streaks.
  • Missions and XP ranks multiply score and distance; a sticker album, challenges, and a garage of upgrades and cosmetics add longer goals.
  • Voxel models throughout, from the ram and pickup to the junk pile waiting at the bottom.
  • EditMode and PlayMode test suites cover the simulation, progression, and game flow.

Unity · C# · Mobile · Voxel art · Deterministic simulation

In release preparation · iOS and Android

No Safe Block

Side-scrolling zombie survival for phones and tablets.

Featured view

A survivor with a backpack walking past a pharmacy on Maple Row at dusk as zombies approach, with the touch controls and HUD.
Block 1, Maple Row. Unity render in the iPhone layout from the store-screenshot set.

Market Row

The survivor collecting supplies inside a lantern-lit grocery on Market Row while zombies close in.
Block 5, Market Row. Unity render in the iPhone layout from the store-screenshot set.

Tenement Row

The survivor on a rainy Tenement Row street with rifle, chainsaw, and crowbar controls.
Block 13, Tenement Row. Unity render in the iPhone layout from the store-screenshot set.

A landscape side-scrolling zombie survival game for phones and tablets. Fight through a 20-block circuit across five regions of a fallen town, gather supplies, upgrade between blocks, and push each run further.

It plays fully offline, with touch controls laid out around phone and tablet safe areas.

My role: Game design and development

  • Five regions form a 20-block circuit, followed by harder circuits with block twists and four encounter shapes.
  • Lurkers, bloaters, and screamers join the horde; the pistol, shotgun, SMG, and rifle use separate ammo, alongside an upgradable crowbar and a fuel-limited chainsaw.
  • An automated smoke player drives synthetic touch input through thousands of runtime checks on iPhone and iPad layouts, verifying touch-target sizes, text sizes, and safe areas.
  • A procedural cutout rig with leg IK animates the survivor and the horde.
  • Three save slots with backup fallback, mid-block saves, and migration of older save formats.

Unity · C# · Mobile · 2D · Automated testing

Visit No Safe Block

Playable prototype · Meta Quest

Voxel Flight Racer

Seated voxel flight racing for Quest: bank, pull, and thread canyon gates.

Featured view

Cockpit view at 729 km/h on Seastack Sprint, gate 10 of 32 and running second of four, with a rival's yellow voxel plane in the orange gate ahead between sandstone sea stacks.
Seastack Sprint against three AI rivals. Rendered from the 0.5.3 source in the game's desktop mode; not an in-headset capture.

Skyreach Summit

A yellow voxel race plane banking over a river canyon between snowy terraced highlands toward an orange race gate.
An AI rival during a live race on Skyreach Summit. The game has no chase view; this frame uses a temporary camera placed for the capture.

Career

The in-cockpit career menu showing 0 of 150 stars and five cups, from the Canyon Cup to the Grand Prix.
The career panel as it floats beyond the canopy in VR, from a fresh profile. Rendered on a desktop with a narrower field of view for legibility.

A seated flight racer for Meta Quest. Grab a virtual stick and throttle with hands or controllers, then race through gates across voxel landscapes.

Assisted steering keeps newcomers on line, while Pro steering hands over banking and pulling. Builds have been installed and playtested on a Quest 2, and those sessions shaped the seating and steering.

My role: Game design and development

  • Twelve tracks across seven environments, a 50-event career, five aircraft, and ghost replays with split times.
  • AI rivals follow a grip-limited racing line, with an Elimination mode alongside standard races.
  • Comfort options include view-bank levelling and a vignette for seated play.
  • Tracks and events are data-driven, with a course editor and a MagicaVoxel art pipeline.
  • Automated tests cover the flight model, VR steering, courses, the race loop, and progression.

Unity · C# · OpenXR · Meta Quest · Hand tracking · Voxel art

In development

Scriptlands

Survive, build a factory, and program every machine.

Featured view

The in-game script editor on a turtle, showing a Python strip-mining program, the token bar, the Commands reference, an autocomplete suggestion for place(side, name), and the output “tunnel done: 3 ore blocks.”
The script editor after a real run of a strip-mining program, version 0.3.13. The scene and the half-typed line were set up by a test script for the capture.

An automated base

A small base with solar panels, a coal generator, a macerator and electric furnace joined by pipes and cable, and Computer-driven screens showing base status and a pump switch.
Working power, pipes, and smelting, version 0.3.13. The base was built by a test script, and the monitor text is written by a demo program.

Robot fleet

Five turtles digging into an ore-studded rock face after a Computer deployed a Harvester program to them over a data cable and antenna.
A Computer deploying a mining program to five turtles, version 0.3.13. Posed scene with time paused and the HUD hidden.

A world built around automation

Generated grass terraces, stone hills, and trees around a mossy ruined workshop, with the player standing beside it.
Generated terrain with the default 16×16 texture pack, version 0.3.13. Camera placed for the capture, with the HUD hidden.

A third-person voxel survival and automation game where programming is part of the technology progression. Mine, craft, and explore, then connect machines, pipes, power, and signals with scripts written in a Python subset.

Version 0.3.13 spans four of five technology ages and all eight syntax tiers, from single statements to functions and classes, with programmable turtles and robot fleets, digital storage with autocrafting, and power plants and fluids. The fifth age is still in development.

My role: Game design and development

  • A custom interpreter runs player scripts within per-tier operation budgets and nesting and memory limits, separate from the Unity presentation.
  • An in-game editor offers stepping, line tracing, suggestions, an in-editor language reference, draft recovery, and Program Disks.
  • Pure C# simulation covers power from low to high voltage, fluids, and signal and data networks; Computers drive multi-block Monitors.
  • Server-authoritative multiplayer over direct IP, LAN discovery, or a dedicated server, with claims, per-machine access, and per-player script limits.
  • Seventeen quest chapters with 103 quests lead from hand tools to automated factories.
  • Seeded biomes, caves, ore, world saves, and adaptive synthesized music connect exploration with factory building.

A world built around automation

The factory is part of a survival world. Players start with a turtle, a pickaxe, and a workshop whose furnace has a one-word bug to fix, then unlock the syntax that makes more complex production possible.

Unity · C# · Custom interpreter · Voxel worlds · Multiplayer

In development

Elsewake

Rebuild a homestead where other histories break through.

Homestead watch

Elsewake characters beside a glowing campfire in a wooded clearing under a cloudy sky.
In-engine Homestead Watch scene from Elsewake’s title reel. Saved development capture from the September 28, 2026 QA set.

Building a homestead

A partially built shelter with timber and stone walls beside a cabin, campfire, and characters in Elsewake.
In-engine homestead construction scene from Elsewake’s title reel. Saved development capture from the September 28, 2026 QA set.

Town main street

Elsewake town street with a fuel station, fire department, roadside trees, and barricades.
Town environment from Elsewake’s building survey. Saved development capture from the September 28, 2026 QA set.

Overview

Elsewake loop: explore the lakes country, recover supplies, rebuild a homestead, and enter the Wake.
Gameplay systems overview drawn from project documentation; not a gameplay screenshot.

An open-world survival game set in a lakes region where fragments of other histories appear at night. Scavenge by day, build a home, and enter the Wake quietly: noise can tear a fragment apart and release echo infected.

The project combines exploration and a persistent homestead with interconnected survival, vehicles, settlement progression, and a streamed world. The authored expedition path reaches the Ridgeway and greenhouse beats; co-op remains experimental.

My role: Game design and development

  • Nightly Wake incursions connect stealth, sound, rare supplies, and recordings from alternate histories.
  • A homestead grows through recovered components for water, radio, medical support, power, and vehicles.
  • Interlocking systems include weapon condition, ammunition, food spoilage, radiation protection, and vehicle fuel and components.
  • Streamed locations, settlements, contracts, and configurable survival rules support different ways to explore.
  • Unity/C# development with persistence, world streaming, and experimental host-authoritative co-op.

Unity · C# · World streaming · Survival systems · Persistence

Experience

Ntracts

100% remote

Developing AI capabilities for internal operations and product experiences.

  • Building internal AI tools and automation to support teams and business workflows.
  • Contributing to product capabilities through AI engineering and systems integration.

Senior AI Engineer

Jun 2026 – Present

Advance Velocity

100% remote

Working with clients to understand business problems and use cases, and designing solutions with or without AI.

  • Leading client discovery around business problems and use cases, and designing solutions with or without AI.
  • Researching the latest AI advancements in the industry and evaluating practical applications.
  • Delivered support and onboarding automation.
  • Developed widgets and agentic toolkits for client use.
  • Designing Azure infrastructure for internal use.

Senior AI Consultant

Jun 2026 – Present

AI Consultant

Mar 2025 – Jun 2026

Cytracom

Allen & McKinney, Texas

Business communications provider. Five roles in five and a half years, from Tier 1 support to solutions engineering.

  • Rebuilt internal portals with integrated public and internal APIs, substantially improving organizational efficiency
  • Built a shared internal portal for Zendesk automation, diagnostics, and team enablement.
  • Developed ticket moderation, routing, reporting, and communications administration tools.
  • Applied agentic workflows to code-development automation.
  • Built a GUI for parsing and generating Grandstream, Yealink, SNOM, and Polycom phone configurations.

Solution Engineer

Jan 2025 – Jun 2026 · McKinney, Texas · On-site

Automation Engineer

Apr 2024 – Mar 2025 · Allen, Texas · Hybrid

  • Built and maintained AI-automated solutions for support ticketing
  • Developed and maintained internal support tools
  • Led resolution of bug-related and engineering issues
  • Managed technical programs and monitored ICU boards

Senior Technical Support Engineer

Apr 2022 – Apr 2024 · Allen, Texas

  • Resolved complex bug-related and engineering issues for the Application Support team
  • Maintained availability and reliability of published internal support tools
  • Configured call routing, call-quality monitoring, and BLF features, including firmware upgrades
  • Supported desktop, mobile, and integration platforms
  • Ran at least one feature or bug demo per week to train the team

Technical Support Tier 2

Oct 2021 – Apr 2022

Technical Support Tier 1

Dec 2020 – Oct 2021 · Allen, Texas

Skills

Languages

Python · TypeScript · JavaScript · C# · Java · SQL · HTML & CSS

AI & Automation

LLM orchestration · AI agents · MCP · Retrieval-augmented generation (RAG) · Hybrid semantic search · Visual workflow engines · Human approval workflows · Agent evaluation · Usage metering

Machine Learning & Vision

PyTorch · scikit-learn · OpenCV · MediaPipe · Object tracking · Head-pose estimation · Reinforcement learning · Gymnasium · Stable-Baselines3 · MuJoCo robotics simulation

Audio & Media

Speaker diarization · Speech transcription · Speaker embeddings · Vocal separation · RVC voice conversion · GPU processing pipelines · FFmpeg · Media provenance

Web & APIs

React · Next.js · FastAPI · Django REST Framework · Flask · Node.js / Express · REST APIs · WebSockets · WebRTC integration · Web Workers · WebAssembly integration

Data & Background Jobs

PostgreSQL · pgvector · Redis · Celery · SQLAlchemy · Database migrations · S3-compatible storage · IndexedDB

Games & Solvers

Unity / URP · UI Toolkit · Procedural terrain and meshes · Physics gameplay · Game AI · Authoritative multiplayer · Custom scripting interpreters · Economy simulation · Save migrations · Procedural audio · Z3 constraint solving · Graph modeling

Security & Access

OIDC / SSO integration · Multi-factor authentication · Multi-tenant permissions · Credential encryption · Audit logging

Delivery & Testing

Docker / Compose · Linux · Cloudflare static hosting · Git · pytest · Playwright · Vitest · NUnit / Unity Test Framework · Deterministic replay and validation

Systems & Tools

Systems engineering · Requirements engineering · Systems integration · Zendesk API · Microsoft Azure · .NET / WPF · USB HID integration · VoIP configuration tooling

Education

M.S. Systems Engineering and Management

The University of Texas at Dallas
Jan 2025 – May 2028 (expected)

B.S. Computer Science

The University of Texas at Dallas
Aug 2022 – May 2024

Associate’s degree, General Studies

Collin College
Aug 2020 – Dec 2021

Credentials earned