Built around real problems.

Tools for the floor, products for their users, and checks that make AI work more accountable. Explore the working products and the decisions behind them.

Flow Floor

Live

A shift plan only works if the floor can carry it. Flow Floor lets you train on a known outbound shift or check a plan with your own staffing and rates. Watch work move through pick, pack, automation, sort, and load; find the constraint before the cutoff is missed.

Plan a shift →
Flow Floor’s warehouse and station controls showing staffing, throughput, and cutoff risk
A running shift in Flow Floor. Staffing choices change queues, throughput, and idle labor.

The decision

Where should the next worker go? Compare the station that needs capacity with the places where extra labor would sit idle.

The next step

Use your own rates and yesterday’s wave to check the assumptions. Rates are editable; the same setup, seed, and decisions replay the same shift. The model is generic and uses no employer data.


Mantis Craft Notebook

Open Beta

A pattern author needs the chart, written instructions, and stitch counts to agree. Mantis brings chart drawing, row instructions, stitch checks, and PDF layout into one workspace. The product is in open beta, with crochet, knitting, and colorwork editors.

Join the open beta →
The live productAuthor a pattern by hand; the editor builds the chart, writes the text, and checks the math.
Open beta, free signup
Mantis Craft Notebook landing page: 'If you can crochet it, now you can publish it.'
Mantis Craft Notebook.
A crochet symbol chart built in the editor: a radial motif, a curved fan, and a flat swatch
A real chart built in the editor, a radial motif, a fan, and a swatch.
The Mantis chart editor with its full crochet-symbol palette, toolbar, and onboarding guide
The editor, a full crochet-symbol palette and a charting canvas.

Best on desktop or iPad. Full mobile support is in progress.

The family is expandingThe same pattern-model approach, pointed at colorwork charts and at knitting, part of the same open beta. Quilting and more crafts are next on the bench.
Same beta family
Mantis Colorwork Studio: a tapestry color chart with a generated row-by-row written pattern
Colorwork Studio. Paint a grid for tapestry, mosaic, corner-to-corner, or filet, and it writes the row-by-row pattern.
Mantis Knitting Notebook: a knit chart editor with cables and a generated written pattern
Knitting Notebook. A full knit chart editor with cables, increases, and colorwork, the written pattern alongside.

The problem

Charting crochet by hand is slow, and the existing tools fight you. Most place each stitch on a rigid grid, which looks fine but breaks the actual stitch relationships, where each stitch is worked into the one below it. And a finished pattern needs a chart, written instructions, and the stitch math to all agree, which usually means building it three times.

The build

A single structured pattern model is the source of truth. The chart, the written text in standard notation, and the follow-along mode are all views of it, so they can't disagree. The layout engine places each stitch against its previous-row anchor, not a fixed grid, so the relationships stay semantically valid. A PDF studio lays out the finished pattern for publishing.

What it proves

A full crochet symbol palette mapped to composable geometric primitives, plus the discipline to recognize a hard layout problem and build a real constraint solver instead of faking it with an approximation. Pattern grading, garment schematics, and a publish-quality PDF studio sit on top of the same model.

Where it's going

It's in open beta now, free to join, with no AI in the tool itself, and go-live is planned for Q4 2026. Knit and colorwork studios are part of the same beta family, each with its own working editor, and quilting is already built, queued to join with the rest of the sewing suite.

Notable decisions

Domain modeling

Stitch ontology as single source of truth

All stitch geometry is defined in fractions of a slot unit S, no magic numbers anywhere in the codebase. Every renderer, whether browser-side or server-side batch generation, imports the same ontology. Constraints are named objects tied to Craft Yarn Council (CYC) standards. The alternative was hardcoded geometry per renderer, which drifted the moment two renderers disagreed.

Data model

One pattern model, many views

The chart, the written instructions, and the follow-along mode are all rendered from one structured pattern model, not maintained separately. Change the model and every view updates together. The alternative, letting the chart and the text drift apart, is exactly the bug that makes most pattern tools untrustworthy. It also keeps the door open: the same model feeds pattern grading, garment schematics, and the PDF studio without re-deriving anything.

Rendering

Stateless renderer driven by canonical schema

The SVG renderer decides nothing. A canonical row plan, a typed JSON schema specifying every stitch, column position, row direction, and turning chain status, is fully resolved before the first line is drawn. Same input always produces the same output. This enables batch quality testing across patterns and makes rendering bugs trivially reproducible. The alternative was resolving geometry at draw time, where debugging was guesswork.


stele

Open source

AI can produce content faster than a person can review it. stele checks derived values, batch patterns, and approval status against the source material, then reports what failed and why. Human corrections feed back into the checks, so the next batch can catch the same mistake earlier.

Why it matters

A valid-looking file can still contain copied derivations, recycled content, or unapproved facts. Batch and process checks make those shortcuts visible.

Try the evidence

The public repository includes clean and deliberately flawed demo batches. Run the checks locally and inspect the named findings; passing checks still needs human review.


sigma-ai

Open source

An improvement project needs evidence that the change worked. sigma-ai guides the work from defining the problem through measurement, analysis, improvement, and control, with statistics computed in code. An optional AI advisor explains the results; cases outside the supported methods get a named handoff to an experienced person.

Why it matters

Separate the calculation from the explanation. Trace computed results back to their inputs, make assumptions visible, and keep unsupported conclusions from looking settled.

Try the evidence

Worked examples, reference tests, and the decision rules are in the public repository. The local tool suite works without an AI connection.


IntentOS

Learning Project

Multi-step AI work needs a clear plan, visible progress, and rules for when to stop. IntentOS turns a plain-language goal into a task graph, routes the work, and pauses consequential actions for human approval. A learning project in orchestration and governance, documented here with execution views and design decisions.

The problem

When I started this learning adventure, most AI tools required constant direction, prompt, review, redirect, repeat. The ceiling on what one person could accomplish stayed somewhat low. The goal here was different: submit intent once, and the system carries multi-step work through, only surfacing decisions that genuinely required human judgment.

The build

TypeScript, Node.js, Temporal durable workflows for orchestration, PostgreSQL with pgvector for a self-compounding knowledge layer, Next.js 15 command center with DAG visualization. Three-tier governance: autonomous execution, flagged review, and blocking approval, director involvement only at genuinely consequential moments.

What it taught me

At its last working state: 107 passing tests, running on a DigitalOcean VPS, several projects executed end-to-end. I started with no software background and used it to learn orchestration, durable workflows, agent design, and a self-compounding knowledge layer from the ground up.

The design philosophy

The part I'm proudest of here is the governance model. Three tiers: let it run on its own, flag a decision for review, or stop and wait for a human. Autonomous is fine until it isn't, and the system has to know the difference. That's the operations instinct, and it's the piece that still feels genuinely mine. I built the layer that decides when the system is allowed to act on its own and when it has to stop and ask, graded by how consequential the action is.

Notable decisions

Governance

Three-tier Temporal signal architecture

Tier 1 executes autonomously. Tier 2 completes and queues for async director review, so the graph keeps moving. Tier 3 sends a Temporal signal and genuinely pauses execution until the director responds. Not a flag, not a poll, but a durable workflow wait state. The alternative was all-or-nothing blocking, which would stall the entire graph on every consequential step.

Algorithms

Priority-respecting topological sort

Standard Kahn's algorithm picks arbitrary ready nodes. This implementation re-sorts the queue by task priority after every dequeue, not just at the roots, so high-priority research tasks always run before low-priority scaffolding, even when the graph says both are available. The re-sort on every iteration is the detail most implementations skip.

Data layer

Lazy pgvector with deterministic classification

Knowledge artifacts are classified by agent role via a static lookup table, zero LLM cost, zero latency. Vector embeddings are generated lazily on first semantic query, not on insert. The result: a self-compounding knowledge layer that doesn't add overhead to every task execution, only to the retrievals that actually need it.


Local AI, put to work

Working setup

Running AI locally means taking responsibility for the machine, the setup, and the workflow. This build connects the hardware decisions to the models and tools it can actually run. Follow the workstation from assembly to practical use.

Explore the build and workflows →

Fiction, immersive worlds, and the production systems behind them.

Nyreld

Live

Original fiction with a place of its own. Nyreld brings the books, characters, and artwork together in a walkable hall, with a painted dome and portals into the stories.

Enter Nyreld →
Nyreld’s walkable hall, painted dome, central stele, and firelit portals
The live hall. Explore the space or use Discover to reach the characters and paintings directly.

The experience

Move through the hall, encounter the characters, and follow a portal into a book. The architecture and artwork give the fiction a setting before the reading begins.

The work behind it

Original fiction, visual direction, a browser-based 3D environment, and the connection between an exploratory space and readable book pages. Explore the fiction →


AI Content Pipeline

Passion Project

A creative canon of 319 world-bible entries (and growing) with enforced AI voice consistency, custom-built tooling, and a repeatable generation loop. Built to produce consistent, high-volume content across a complex multi-character world without it drifting into generic output.

The full production line

The extended version of the same skeleton stele ships as open source. The layers tagged EXTENDED below are what the full internal system adds on top: a rulings layer above the work, a voice-aware writer/critic/reviser stack, trust lanes per model, and firewalled sub-systems with their own gate batteries.

AUTHORITY · RULINGS OUTRANK EVERY OTHER SOURCEEXTENDEDThe director dictatesspoken rulings, rawDecodedglossary first, names fixedRecorded verbatimnumbered, with the quoteThe rulings indexqueried, never reloaded wholelaw flows down into everything belowSOURCESCanon corpusapproved work onlyVOICE GUIDEread before any wordEntity + rulings indexSealed listmust never shipCorrections logevery past catch1 · BRIEFwhat to writewhich voiceonly the slice ofcanon that applies2 · GENERATEWriter · voice-firstCritic · isolated, anti-slop listReviser · applies the findingsMODEL TRUST LANESwhich model held the pendecides how far output may go3 · GATESdeterministic checksseal scan · freshnesscounts · banned patternsRED blocks the batchpassed4 · REVIEWsmall packets,recommendationattachedapproval becomesa numbered rulingCANONRULEDwiki-linkedera-taggedflagged or rejected: sent back with the finding namedTHE LANGUAGE ENGINE · FIREWALLEDEXTENDEDits own session, its own gate battery:derivation freshness · erosion floorsseal + red-team checks · byte-identical rendersno in-language text is written anywhere else;other sessions read its output, never hold its penFORMATS LANE · ONE-WAY GLASSEXTENDEDthree release formats, each with its own rulesformats cite canon; canon never depends on a formatnothing expands until the first release is a finished cutcanon flows inits corpus joins the sourcesloops back into the guide, the gates, and every future briefCORRECTIONS + RULINGS LOOPevery human catch → one durable rule · every decision → a numbered rulingthe banned list, the gates, and the briefs all grow from this; the same mistake shouldn’t cost review twicearchive/ · quarantinedkept for the record,never read as input
the forward path (same skeleton the open-source kit ships) sent back / forbidden as input the loop that compoundsEXTENDED layers the public kit generalized away
The full production line. Above everything sits an authority layer: dictated rulings, decoded and recorded verbatim with numbers, outranking every other source. Generation is voice-first: the guide is read before a word is written, the critic works an anti-slop catalog, and which model held the pen decides whether output may even approach canon. Two sub-systems run under their own regimes: a firewalled language engine with its own gate battery, and a formats lane that reads canon through one-way glass. The open-source kit kept the skeleton (brief, roles, gates, packets, ratchet) and shipped it; these are the layers that stayed home.

The problem

High-volume AI content generation drifts. Without strict constraints, every character sounds like the same encyclopedia entry. The project required distinct tonal registers per character type, some guarded and reptilian, some matter-of-fact, some archaic and measured, enforced consistently across hundreds of documents.

The build

An extensive canonical voice guide is read by every generation task before producing output. 40 custom Python tools manage content cataloging, consistency checking, gap analysis, and stub filling. An Astro-based documentation site surfaces the world bible. Underneath it sit four constructed languages, each with three historical eras (modern, middle, ancient) generated by a deterministic rule engine. Learn a language's sound laws and you can read its older texts, with the same input always producing the same output.

What it proves

319 world-bible entries, 40 custom tools, 15 game design documents. The discipline to define the problem before generating content, build tools instead of copy-pasting prompts, and enforce quality gates before anything is marked canon.

The design philosophy

AI without governance produces noise. The canon-lock workflow, brief, voice check, AI draft, human review, canon, ensures every output earns its place. The same pattern should hold anywhere high-volume AI content has to stay on-voice.

Four constructed languages

Underneath the world sit four full constructed languages: Cardine, Tikhora, Onslite, and Visconian. Each exists in three historical eras, modern, middle, and ancient, and they aren't set dressing. A deterministic rule engine, not an AI, derives every word. The ancient form is the source of truth, and a set of sound laws erodes it forward into the modern tongue, the same way real languages drift over centuries. Learn a language's sound laws and you can read its older texts, and the same input always produces the same word, so a line written in one of them has exactly one correct reading.

The Conlang Voice LabType a phrase or translate one from English, pick a race and a character, and it speaks the line in that tongue.
Working build
The Conlang Voice Lab: a text box, race and character selectors, and a voice-shaping rack for speaking the four constructed languages aloud
The Voice Lab runs the language engine to build the words, then speaks them in a chosen character's voice, a Cardine lord, an Onslite hunter, a Visconian seer, with a full rack of voice controls and a share link for any result.

Notable decisions

Voice consistency

Extensive canonical guide as injected system context

Every generation task (NPC entries, location descriptions, in-world documents) receives the full voice guide before producing a word. Not a summary, not a reminder: the full specification. A session that never saw prior output still produces content that matches the tone of work written months earlier. The guide is the consistency; everything else is execution.

Quality gate

Canon-lock: AI critique before human review

Brief → AI write → AI critique → AI revise → human review → canon commit. The critic catches voice drift and generic phrasing before the human sees anything. Human judgment is reserved for canon decisions, not proofreading. The result: consistent output at high volume without constant intervention. Nothing enters the world bible without passing both gates.

Infrastructure

40 purpose-built tools instead of managed prompts

Gap analysis, stub filling, consistency checking, content cataloging. Each is a Python tool, not a prompt to copy-paste. The tools query existing canon, identify what's missing, and generate targeted briefs. This is the difference between a repeatable pipeline and a good prompt library. 319 entries produced; the tooling is why it's consistent at that volume.

Sample Output

Two samples from the world bible, in-world accounts written entirely through the canon-lock loop, each held to a single character's voice. These two stood on opposite sides of the same vote:

In-world journalVisconian voice · the elder who voted no · ~3,200 words

Pages from the Watching-Book of Tarrin Burrow-Born

I voted against the action and I will perform my role within the action. This is what an oath is for, and I would not be a man worth keeping the oath if I did not also keep the part of it I had argued against.

I have not cried since the vote was called and I do not intend to. There is work in front of me.

Read the full account →
In-world sealed accountVisconian voice · the one who rowed the boats · ~3,300 words

What I Saw at the River Bend

They came at the hour when the light has left the sky but the water still holds it. The first one I saw was not the eldest. The first one I saw was a young Onslite, perhaps half my age, half-crouched at the tree line with his weight forward and his head tilted to listen. He had been there for some span of seconds before I noticed him, which I have thought about often since. He chose to be unseen.

He saw me see him. The look went on long enough that I understood he was deciding whether to bring the rest forward, and that my next motion would settle it. I sat down on the moss. I did not stand. I did not draw. I sat down on the wet moss with my hands open on my knees, and I waited.

Read the full account →

Dungeon Crawler

Output Sample

A playable dungeon crawler game, built end-to-end by the IntentOS agent system from a single plain-language intent, no hand-written code. Kept here as a small, concrete proof that the task graph above can produce a real, working artifact.

And remember, this was almost a year ago, before models got to the point where you could one-shot a little game like this from a single prompt. Back then it took an entire agent system. That aged fast, which is kind of the whole story of this field.

Open the game →

Audio Processing Pipeline

Prototype

Multi-stage audio segmentation and voice transformation pipeline. Segments recorded audio by character and converts voices using ElevenLabs AI. Designed, built, and working in a single session.

Single Voice → Multiple Characters

You record:"Nova says: The signal came from the lower ward. Keth says: Then we move before dawn."
InputRaw Recordingone voice, all lines
→
ParseCue Detection"Name says:" markers
→
SplitSegmentationaudio split by character
→
RouteVoice Mapsegment → ElevenLabs profile
→
ElevenLabsTransformper-segment voice conversion
→
OutputAssembledmulti-character audio file

What it does

Takes raw recorded audio, segments by speaker and character, and applies AI-powered voice transformation to each segment using the ElevenLabs API. The two-character pipeline handles segmentation, voice assignment, and output assembly end-to-end.

What it proves

Multi-step AI API integration doesn't require a team or a sprint. The pipeline demonstrates what moves fast when the problem is clearly defined and the tools are well-chosen. The same orchestration pattern (ingest, transform, route, assemble) is the same shape larger multimedia work is built on.

Before & After

One recording session. One voice. Two distinct characters.

Notable decisions

Routing

Cue-based character detection at record time

Routing decisions are embedded in the recording itself. "Nova says:" is a directive, not metadata added later. This eliminates a post-processing classification step entirely. The speaker sets routing intent at the moment of recording; the pipeline just executes it. One session, one voice, complete routing information embedded throughout.

Efficiency

One recording session yields multiple distinct voices

Traditional multi-character audio requires separate recording sessions per voice actor. This pipeline collapses that to a single take: record all dialogue in sequence, cue characters by name, let the pipeline handle the rest. Re-recording a single line means re-recording one segment, not a session per character. Fast iteration at every step.

Scalability

Independent voice profiles per character

Each character maps to an independent ElevenLabs voice profile. Adding a new character requires a new profile and a new cue prefix, no changes to the segmentation or assembly logic. Adding characters means adding voice profiles, not new plumbing; the processing code doesn't change.

Nyreld’s walkable hall