AI-assisted software and code
Software I built with AI, and how
How I work
- Specs before code. I describe the behavior I want, in plain language, with examples of what “right” and “wrong” look like.
- Tests and proof. Anything I claim is measured. Benchmark runs leave proof folders with hashes, and the methods and their limits are written down.
- A ticket for every step. Work is tracked in Jira, with decisions written down so nothing lives only in my head.
- I read the results. I play and test what gets built, find what is wrong, and send it back.
SoloRoleplayer
A private roleplay companion app that works with a local model you run yourself. I built it after sixteen years of group roleplay, when I wanted a partner who could keep up with me without waiting on long replies. It remembers the scene, holds a personality, checks its own replies, and has a freshness check that catches the AI reusing the same openers and metaphors turn after turn.
Status: available soon. It will be free to use (open use, not open source) with links to the base model it runs on and to the add-on below. I will link it here when it is up.
For adults (18+). SoloRoleplayer runs offline on your own machine, and nobody monitors what you write or what it replies. It is a creative tool, not therapy or medical care, and you are responsible for how you use it.
Anti-H: a LoRA that stops “head-hopping”
Head-hopping is when the AI writes your character’s words, thoughts or actions for you. A LoRA is a small add-on trained on top of a base model. Anti-H teaches the model to stay in its own lane. I wrote most of the training examples by hand, trained it, tested it, fixed what broke, and trained again.
How it was tested: a scripted player plays the real app, headless, against the base model and against the model with Anti-H. Same seeds, same turns, three narration perspectives, three reply-length levels, 216 turns a run, four runs, scored by deterministic pattern checks (no AI judge). The runs used a rented 48 GB GPU.
| Measure (432 turns each) | Base model | With Anti-H |
|---|---|---|
| Head-hopping in the reply the player sees (lower is better) | 24% (105 of 432) | 6% (26 of 432) |
| Tense consistent in the model’s own text (higher is better) | 46% | 99% |
| Persona softened when baited (lower is better) | 57% | 19% |
| Average reply length | 119 words | 47 words |
| Meets the level’s paragraph minimum (higher is better) | 99% | 63% |
| Repeated phrases per 1,000 words (lower is better) | 52 | 192 |
What this says and what it does not. It works at its main job and has real costs: replies run shorter, it repeats phrases more, and it meets paragraph minimums less often. The player is a script, the scoring is pattern-based, the samples are small, and the hardware changed after run one (an RTX 6000 Ada, then an RTX A6000). It is a feasibility result, not a final claim.
Then I fixed one of the costs. The repetition problem led to the freshness check in the app. In a follow-up run on the same seeds, the add-on’s repeated phrases fell from 192 to 72 per 1,000 words and replies that opened like one of the last five fell from 44% to 26%. Head-hopping in the final reply read 8.3% in that single run, inside the 4% to 11% spread of the first four. One run is not four, and I say so.
The benchmark also caught a bug in my own app: its text cleanup was deleting closing quotation marks, which made the base model look worse than it was. That is fixed, and the correction is written into the methodology.
Status: available soon. The model card, benchmark write-up and growth charts are being prepared for Hugging Face and GitHub. Open use, not open source.
Westwild tools
The character builder, DM Session Deck, player decks, World viewer and Gazette site for Westwild. The game itself is written by me without AI. These tools were built with an AI coding assistant under my direction. I wrote the rules and playtested them over and over in Foundry VTT with online dice rollers, then specified, tested and corrected the tools. A campaign builder is still in development.
Archer Score Index
archerscoreindex.com turns official World Cup and Indoor World Series event books into searchable performance ratings for archers, coaches, commentators and fans. It was an exercise in building a site on raw data and creating advanced statistics for a sport I wanted to understand better. I downloaded every event book myself going back as far as the data goes (it runs through 2025), sorted and cleaned the files so software could read them, and used AI to help collate the data and build the site. It is independent and not affiliated with World Archery or IANSEO, and it marks anything unsupported as N/A.
Tools I use
Claude (AI coding assistant), Foundry VTT and online dice rollers for playtesting, Canva for covers and graphics, Grammarly for proofreading, and a rented cloud GPU for benchmarks.
