KayJaySoftware

Kyle Kulper · KayJay Software

I sell software for a living.
I build it too.

By day I'm a software sales rep. Outside of that I design and ship production applications — field-service platforms for small contractors, business automation, and games with combat systems tuned to the frame. If you run a small business and you're paying every month for software that doesn't fit how you work, that's the problem I like solving.

Tactical Board Game · movement solver · live

Hover to trace a route. Click to move.

Dijkstra across a weighted grid: flat ground costs one action point, climbing costs an extra point per tier gained, descending is free, and a gap of more than one tier is impassable at any budget. Highlighted tiles are everything reachable this turn. This is the same cost model the game runs.

AP 8/8 · Reachable 0 tiles · Path cost —
28Projects built
2Live deployments
$0Monthly infrastructure cost
1Person, start to finish
01Featured work

Two things I built, shipped, and still run

Case study 01

Punchlist

Field-service day planner · Own product

Brief
Run an entire service day from a phone, one-thumb, no training required.
Stack
JavaScript PWA, Firebase, OSRM routing, offline-first
Link
getpunchlist.web.app

Live · free to use

Punchlist started as the general tool and became the architecture everything else is built on. It plans a day in time blocks, then layers a full field-service system on top: jobs tied to clients, pricing and payment status, photos, checklists, confirmation texts to customers, reminders, and route optimization across the day's stops.

The engineering constraint was the interesting part. Every feature had to run on free infrastructure — so route optimization, address lookup, customer confirmations, and calendar alarms all work without a single paid API or monthly service. It installs to a phone home screen like a native app and keeps working with no connection.

Built as a general system on purpose. When a business needs something specific, I fork this and rebuild it around their workflow — which is what makes a custom build take weeks instead of months.

Case study 02

Vault 21

Real-time multiplayer casino · Own product

Brief
Four casino games, several people at one table, no dedicated game server.
Hard problem
Keeping every client's view of a shared hand consistent without an authority.
Stack
JavaScript PWA, Realtime Database, transactional locking
Link
casino-21-b4d58.web.app

Live · in regular use

Blackjack, baccarat, poker, and craps, played simultaneously by real people on their own phones. There is no game server — every client runs the same logic against a shared database, which is the interesting constraint.

That design creates the hard problems worth solving. Two clients must never deal the same hand, so dealing is claimed through a database transaction that acts as a mutex. A player reloading mid-payout must not collect twice, so every payout writes a receipt that's checked before crediting. A player who closes their phone mid-round can't strand everyone else's money, so departures are detected and bets refunded by whoever is still connected.

On top of that sits a collectibles economy — card packs, serial-numbered items, player-to-player trading, and a marketplace — with database rules written so a player can only ever move an item they actually own.

The hand you can play further down this page is the single-seat version. The machinery above only shows itself with other people at the table.

02Playable

Rather than describe it, here it is running

Two more systems from my own projects, rebuilt to run in this page. No downloads, no plugins, nothing phoning home — each is a few hundred lines of JavaScript on a canvas. They're honest slices of the real thing, not video captures.

Oathblade · combat timing

Parry a strike inside 340 milliseconds

Oathblade's combat is built on directional parries with deliberately unforgiving windows. The enemy telegraphs which side the strike is coming from; you parry by committing to that direction inside the window. Land it in the final 130ms and it's a perfect parry. Crimson attacks can't be parried at all — those you dodge. Some attacks feint, so reacting early gets you hit. These are the real values from the game's data files, not softened for the web.

Streak 0 · Best 0 · Perfect 0

Vault 21 · table logic

A hand of blackjack

The real Vault 21 deals to several people at once over a live database, with a transaction-based lock so two clients can't deal the same hand and a receipt guard so a reload can't collect a payout twice. That machinery needs other players, so this is the single-seat version: proper soft-ace handling, dealer stands on 17, blackjack pays 3:2.

Dealer

You

Place a bet and deal. Chips 500
03Capability

What I actually work in

Click anything to see where I've used it. Nothing here is aspirational — every item on this list appears in something else on this page.

04The body of work

Everything else I've built

Twenty-eight projects and counting. Most were built to solve something in my own life before they were anything else. Statuses are honest — plenty of this is still in flight.

Oathblade

In development

iOS · Three.js · TypeScript

A dungeon crawler with frame-tight melee — nine enemy archetypes, each with its own parry and perfect windows, feints, unblockable strikes, and guard-shatter. Engine, combat, stats, gear, forging, and merchants are done; art and balance are the current work.

Tactical Board Game

In development

TypeScript · Three.js · Colyseus

Turn-based squad tactics on a 3D board — Fire Emblem presentation, Counter-Strike strategy. Authoritative multiplayer server, elevation and line-of-sight, an action-point economy. Currently in playtest on new combat mechanics.

Vault 21 Casino

Live

Realtime multiplayer PWA

Four casino games played simultaneously by real people, with no dedicated game server. Detailed above. Play it.

Sub Roguelike

Playable prototype

Hardware sim · force-feedback wheel

A submarine cockpit driven by an actual racing wheel and pedal set — the wheel is the rudder, the pedals are ballast and throttle. Expedition runs with charting, salvage, and between-dive upgrades. Runs on real hardware today.

Retro Fighter

In development

Rollback netcode

A Street Fighter III-style online fighter with rollback netcode — the technique that makes online fighting games playable across distance, and one of the harder things to get right in real-time multiplayer. Netcode works; original art is next.

Punchlist

Live

Field-service PWA

Jobs, clients, payment tracking, photos, customer confirmations, reminders, and multi-stop route optimization — all running on free infrastructure. Try it.

Draft Anybody

In development

Next.js · Supabase

A web app currently at vertical-slice stage. Scaffolding, schema, and build pipeline are in place.

Kalshi Trader

In development

Python · Next.js · SQLite

Research and position-tracking for prediction markets. Pulls live market data across seven categories, scores opportunities against a signal model, and enforces position-sizing rules the way a trading desk would. Phase one running; metrics layer next.

Deck Builder

In use

Python · python-pptx

Turns a structured outline into a finished PowerPoint — eight slide types, four themes, correct 16:9 geometry. Built because rebuilding the same deck by hand for every prospect is not a good use of a sales rep's week.

EPUB to Audiobook

In use

Local neural TTS

Converts an ebook into a chaptered audiobook using a speech model running entirely on local hardware — no cloud service, no per-minute cost, nothing you own leaving the machine. I listen to the output.

Content Pipeline

In development

Voice synthesis

A voice-cloning narration pipeline for publishing to YouTube and Spotify — script in, finished narrated audio out, in a voice trained from a short reference recording. Environment built; training data pending.

Card Scanner

Awaiting hardware

Flask · Tesseract · SQLite

Feeds sports cards through a sheet-fed scanner, reads player, year, and set off the card with OCR, matches against a catalog, and prepares marketplace listings in bulk. Software is done and waiting on a scanner.

Macropad firmware

In daily use

AutoHotkey v2

A five-layer keybinding system for a six-key macropad with a rotary encoder — layer switching, per-application profiles, and bindings chosen so nothing leaks input into games that watch for it.

Telemetry Coach

Design stage

Sim racing · data analysis

A driving coach that reads live telemetry from a racing sim and compares your line, braking points, and throttle application against reference laps on laser-scanned tracks.

Off-grid power system

Designed

Solar · LiFePO4 · satellite

A portable satellite-internet and power build for a boat, a basecamp, or a car — sized from an actual daily load budget of roughly 470 watt-hours, with panel, battery, and charge-controller selection worked from that number rather than guessed.

05Beyond the screen

The rest of it

I'm suspicious of portfolios that pretend a person is only their job. Most of what I've learned about building things came from somewhere on this list.

Music

I score my own games

I produce in Ableton. When one of my games needs a menu theme or a combat cue, I write it rather than licensing it — which means the music and the mechanic get designed against each other instead of one being retrofitted to the other.

It's also the clearest case I know of the thing I like about building software: you are working inside hard constraints — tempo, key, arrangement — and the constraint is what makes the result good.

Track coming soon — an original cut lands here.

Hardware & sim racing

Software that reaches into the physical world

I run a force-feedback wheel, a three-pedal set, and a shifter, and I've built software that treats them as general input rather than car controls — the submarine sim maps the wheel to a rudder and the pedals to ballast.

The same instinct produced a custom macropad layer system and a telemetry coach that reads live data off a racing sim. Getting a program to talk correctly to a physical device is a specific skill, and it transfers directly to the sensor and scanner work that small businesses actually need.

Off-grid systems

Power budgets, worked out properly

I designed a portable satellite-internet and solar setup for use on a boat, at a basecamp, or out of a car. It started where these things should start — measuring the actual daily load, about 470 watt-hours — and sizing the panel, battery, and controller from that number.

It's the same discipline as scoping a software project: find the real constraint first, then build to it. Most bad systems, in either domain, come from skipping that step.

Forecasting

Modeling things that haven't happened yet

I build models for prediction markets and competitive esports — pulling live data, scoring opportunities against a signal framework, and enforcing sizing discipline so a model's conviction never outruns its evidence.

It's quantitative work with an unusually honest feedback loop: the market tells you within days whether your reasoning held up. That's a rare and useful thing to practice, and it makes me considerably more careful with forecasts of every kind — including project timelines.

06About

Kyle Kulper

I sell software professionally, and I've spent the last few years building it seriously.

Most people who sell software have never shipped any. Most people who ship it have never had to sell it. Doing both makes me better at each — I know what a demo has to prove because I've built the thing being demoed, and I know which feature request is an afternoon and which is a month, because I'd be the one doing the work.

For a small business owner, that combination means something specific: someone who will sit down and understand how your business actually operates before writing a line of code, and who will tell you honestly when the software you already have is good enough. I'd rather talk you out of a project than build you something you don't need.

Everything on this page — the writing, the design, the code, the demos — is mine.

07Contact

Get in touch

Running a small service business and tired of a tool that doesn't fit? Hiring for a role where it helps that the rep can read the codebase? Either one, I'd like to hear it.