Software for real businesses, novels and screenplays, games and reference works, and the workflows behind them. Each piece below shows what was made and which AI tools, Claude, ChatGPT, Codex, Suno and models running on my own computer, did which part.
This portfolio is about using AI well in general, not one product. Here is which tool did which part of each project. Most projects use more than one.
Built with: Claude Code, including the research, pilot pack, animated pitch and every firm area.
Runs on: a model on the firm's own hardware through Ollama or any OpenAI-compatible server (default Qwen 2.5 14B Instruct), plus a separate local statistical model for hit ranking.
Built with: Claude Code. The crew job tracker began as a ChatGPT and Codex draft that Claude Code rewrote and tested.
Runs on: small local models (for example Llama or Qwen), chosen so it runs on a modest desktop.
Built with: Claude Code.
Runs on: Claude, inside the user's own Claude account, with a choice of Opus, Sonnet or Fable. Deadlines and quote checks are plain code.
Built with: Claude Code, one long session.
Runs on: no AI at runtime: it is a static site over prebuilt data.
Songs: Suno, with the written workflow above. Lyrics: ChatGPT.
Studio and animation: ChatGPT and Codex for the code and production documents, Whisper small.en and stable-ts for alignment, p5.js for the animation.
Built with: Claude Code.
Runs on: no AI model for the ring itself: optics, geometry and pricing are plain code. Try-on uses Google's MediaPipe hand-tracking model, running in the browser.
Built with: Claude Code.
Runs on: Claude, inside the user’s own Claude account, with a choice of Opus, Sonnet or Fable. Quote checks are plain code.
Built with: Claude Code.
Runs on: Claude, inside the user’s own Claude account, with a choice of Opus, Sonnet or Fable. Case lookup and quotation matching are plain code against a local opinion index.
Built with: Claude Code.
Runs on: Claude, inside the user’s own Claude account, with a choice of Opus, Sonnet or Fable. Rule quotes are verified in the page.
Built with: Claude Code.
Runs on: Claude, inside the user’s own Claude account, with a choice of Opus, Sonnet or Fable. Every draft passes through Guideline Guard.
Built with: Claude Code.
Runs on: Claude, inside the user’s own Claude account, with a choice of Opus, Sonnet or Fable. Source quotes are verified in the page.
Built with: Claude.
Runs on: Claude, inside the user’s own Claude account, with a choice of Opus, Sonnet or Fable. Source quotes are verified in the page.
Built with: Claude.
Runs on: Claude, inside the user’s own Claude account, with a choice of Opus, Sonnet or Fable. The redline, cross-references, defined terms and date arithmetic are plain code.
Built with: Claude.
Runs on: Claude, inside the user’s own Claude account, with a choice of Opus, Sonnet or Fable. Fee totals are plain code.
Built with: Claude.
Runs on: Claude, inside the user’s own Claude account, with a choice of Opus, Sonnet or Fable: one pass drafts, a second reviews.
Built with: Claude Code, as a native Mac app.
Runs on: no AI by default: scoring, classification and insights are plain rules. Optional help from a local model through Ollama or from Claude, with the exact text shown before anything is sent.
Built with: Claude Code, from my specification package.
Runs on: no AI by default: paths, confidence and duplicate matching are plain code. An optional local or Claude assistant turns questions into structured queries that are checked against the user's access.
Built with: Claude Code, as a native Mac app.
Runs on: Claude, through the API with citations or the user's own Claude subscription, after an approval sheet. Search, deadlines, redlines and quote checks are plain code and work offline.
Built with: Google Gemini.
Runs on: no AI model: scoring is plain, explainable rules.
Built with: ChatGPT and Codex, including the native Mac app.
Runs on: an optional local model through Ollama, whose output the app labels an unverified hypothesis; scoring, readiness and every gate are plain rules.
Built with: Claude, then Claude Code.
Runs on: no AI: a static site built and checked by a GitHub Action and hosted on Cloudflare Pages.
Built with: Claude Code.
Made in: Blender for the clay, three.js and canvas for the browser ads, Remotion for paper-cut and the explainers, FFmpeg for sound and joins.
Built with: Claude, Buffer's MCP connector and a weekly Claude scheduled task.
Runs on: Buffer, pulling videos from a public GitHub repo.
Built with: Claude Code and Blender.
Voice: VoxCPM, running locally on my Mac.
Built with: Claude, including extraction, audits and the genetics pipeline.
Runs on: no AI at query time: grading and statistics are plain code over the extracted table.
Built with: Claude.
Runs on: Claude, inside the user’s own Claude account. Calendar files are built in the page.
Built with: Claude for extraction and grading, ChatGPT as an independent second grader.
Runs on: the reference-shift test is plain code.
Built with: Claude Code.
Runs on: local models through Ollama or any OpenAI-compatible server, whisper.cpp for speech input, local voice cloning, local Stable Diffusion for pictures, and a local embedding model for shared memory.
Built with: Claude, including the product plan, the redesign mockup and the screenshots.
Runs on: no AI at runtime: a native SwiftUI app with everything stored on the device.
Built with: Claude Code.
Runs on: local models, with a vision model for photo listings.
Built with: Claude, with Gemini for virtual-staging images.
Runs on: the tools draft with AI and hold every message for a person to approve. The demos on this site run on sample data with no live AI.
Built with: Claude Code, as a native Mac app.
Runs on: local models through Ollama for agents, chat, the Library and Idea Forge, with Claude Code or Codex as optional agent harnesses on the user's own account or a local model.
Built with: Claude Code, from my specification package.
Runs on: no AI: it records and analyzes Claude Code sessions with plain rules, entirely on the Mac.
Built with: Claude Code, for all seven pieces and the Swift port of Prism Trip into AgentForge.
Runs on: no AI at runtime: every frame is plain code in the browser (or in Swift, inside AgentForge).
Built with: Claude Code, which also wrote the examples and analyses.
Runs on: no live AI on this site: worked examples plus 45 browser rules. The Claude-account version maps pasted text live.
Built with: Claude Code, with two batches of form and section specimens added by Gemini from a written house guide.
Runs on: no AI at runtime. Its Specimen Builder asks Claude to pick blocks and rewrite copy when it runs on Claude, and falls back to a local scorer everywhere else.
Drafted with: Claude, working from plans, outlines and research documents produced by ChatGPT.
Built with: Claude Code, in Godot and Blender.
Runs on: no AI at runtime: the rival cats are plain steering code.
Built with: Claude Code, in TypeScript, with unit sprites rendered from code-sculpted 3D models. Card paintings: ChatGPT, from prompts Claude wrote.
Runs on: no AI at runtime: the opponent is plain planning code.
Built with: Claude Code, which also wrote the four example debates.
Runs on: no live AI on this site: written examples plus templates. The Claude-account version runs the five advisers live.
Built with: Claude, driven by a 16-section system prompt that produced the CORPUS package and the FINE-TUNED pitch.
Built with: Claude.
A story bible before the novel, a 16-section prompt before the screenplay, a walkthrough of how the work is really done before the app. The system is what makes the result repeatable.
In business software the AI reads and suggests, while prices, totals and matching are computed in code, and a person approves every change.
A product is not done at the demo. Tests, a walkthrough, a pilot pack, and notes for the next AI session all ship with it.