Skip to content

Design & development projects

Things I’ve Built

Here is a small sampling of projects I’ve made.

01 npm package 2025–Present

Defiant Jazz

An npm package that rewrites any line of text in the voice of a Severance refiner, on Anthropic or OpenAI. Plus a demo site so you can try it in the browser.

Links
[defiant-jazz on npm ]
[Defiant Jazz demo ]

Full landing page: a sentence input, four character cards to pick a voice from, and the Refine button

Full landing page: a sentence input, four character cards to pick a voice from, and the Refine button

The whole flow on one page

An output card

An output card

Downloadable image with output

Defiant Jazz is an npm package you can install in any app or site to rewrite a sentence in the voice of a An Apple TV+ show about office workers whose memories are surgically split between work and home. A Macrodata Refinement employee, paid to sort numbers on a screen by how they feel, for reasons nobody will explain.. Four of them, one department: Mark S., Irving B., Dylan G., and Mr. Milchick. Hand it a line and it comes back the way someone on the Lumon's office for severed employees, who remember nothing of it at home and nothing of home while they're there. would have said it. It's a just-for-fun project I built as a fan of the show. My A severed employee's work self, who knows nothing of life outside the office. was not consulted. The work is mysterious and important.

import { refine } from 'defiant-jazz';

const { text } = await refine.dylan('Birds are really cool and I like them');
// => Birds. Great little guys. Just out there flying around, no boss, no badge—honestly? Livin' the dream. I respect the hell out of 'em.

Lore is baked in. With it on, a refiner can reach for Lumon Industries, the cheerfully sinister company that employs everyone in the show.'s own vocabulary, Lumon's punishment room, where an employee reads a scripted apology over and over until it's judged sincere., a Lumon's top reward for hitting quota. Dylan wants one more than anything., Kier Eagan, Lumon's founder, quoted by the company like scripture. himself, when the line actually calls for it. That restraint is the hard part. A model that knows the show wants to cram a reference into every reply, and a joke that lands every time stops landing. So the prompts keep it rare: usually nothing, never more than one, and only when it fits. It's a toggle, per call or for a whole app, in case your users haven't been severed. Here's the same gripe from Dylan with lore on, then off:

await refine.dylan('They gave us pizza instead of raises', { lore: true });
// => Pizza. For raises. That's the trade. Still ate four slices—not exactly a waffle party, but hey, I'm not made of stone.

await refine.dylan('They gave us pizza instead of raises', { lore: false });
// => Oh great, pizza. Pepperoni's really gonna cover my mortgage, huh? "Here's a Domino's, buddy, now go innovate." Unbelievable.

It runs on Anthropic, OpenAI, or both, with the same API either way. Everything else is a setting you can pick once for the whole app or override on a single call. Every error you can hit has a plain-English message and a fix in the README, and none of them involve the break room.

import { createDefiantJazz } from 'defiant-jazz';

const jazz = createDefiantJazz({
	provider: 'anthropic', // or 'openai'
	apiKey: process.env.ANTHROPIC_API_KEY,
	model: 'claude-sonnet-5', // any of theirs
	maxTokens: 1024, // reply length cap
	effort: 'low', // Anthropic only
	lore: true // include Lumonisms
});

// Override any of them per call, or cancel
await jazz.irving('The meeting is cancelled', {
	lore: false,
	effort: "max"
});

The demo site is where the package clocks in. It's a SvelteKit app on Vercel: type a sentence, pick a colleague, and a server route runs it through the package with my key, behind a per-IP rate limit and a cache so it can't run up my bill. Any result exports as an image card, suitable for framing in the Lumon's shrine to its founders, complete with wax figures, deep inside the severed floor.. It started in 2025 as a password-gated toy, and became the package's front door once the package shipped.