The artifact-first workflow.
MAY 2026 · PRODUCTMost chat products treat every reply the same. LADLE lifts the durable outputs — HTML, code files, long documents — into a separate panel so you can iterate on them without losing the chat context.
Most AI chat products treat every reply the same: text scrolling in a transcript. That works fine for conversation. It works badly for the moments when the reply IS a thing — a full HTML file, a code module, a long document, a design draft. In a scrolling transcript, "the thing" gets buried under follow-up questions and lost when you scroll.
LADLE's artifact system lifts these outputs into a side panel. This post is the workflow.
**How it works:**
The server-side detection notices when a reply meets the artifact bar: a complete HTML document, a code block over a certain length, a markdown document with structure. When it triggers, the artifact opens in a panel on the right, versioned, with the chat continuing on the left.
Every subsequent turn that modifies the artifact creates a new version. The panel has a version selector — click backward to any prior version, click forward to bring back the latest. Nothing is lost. Every version is preserved.
The artifact is downloadable (as its native file format), copyable (raw content), and, for design artifacts, previewable at desktop/tablet/phone widths.
**What this unlocks:**
**Iterative design without losing context.** You draft a landing page. The reply is a full HTML file — it opens in the panel, renders live in the iframe. You say "make the hero smaller and add a testimonial section." Reply lands, new version, panel updates. The chat log stays clean; the artifact evolves.
**Code review that produces artifacts.** You paste a file, ask for a rewrite. The rewrite appears as an artifact you can copy in one click. Your notes to the model live in the chat; the actual output is in the panel, ready to paste back into your editor.
**Document drafting.** Long-form writing — a policy doc, a spec, a proposal — lives as a markdown artifact. Edits happen through the chat ("expand section 3 to include the exceptions"), the artifact regenerates, you keep working. When it's done, download as MD.
**Reference back to prior work.** Every artifact from every chat is browsable at /artifacts. Filter by type, search by title, jump back to any prior version. The artifact library is a growing archive of the durable outputs you've created with LADLE.
**Why the panel design:**
We considered inline (artifacts embedded in the chat transcript, like ChatGPT canvases). Two problems:
One, they get lost when you scroll. Ten turns down the transcript, the artifact from turn one is behind ten pages of chat.
Two, they compete with the chat for visual attention. If the artifact is prominent inline, it's fighting the message that produced it. If it's small inline, it's not useful.
The panel model — dedicated space, on-screen persistently, versioned — solves both. Left side is the conversation; right side is the output. Both visible; both scrollable independently.
**What's an artifact and what isn't:**
Artifacts trigger for: - Complete HTML documents (single-file, self-contained) - Code blocks over ~40 lines with clear file structure - Long markdown documents with headers and structure - Design outputs (specifically flagged by the design system prompt in design mode)
Artifacts do NOT trigger for: - Short code snippets (a 5-line function stays inline) - Explanatory text with a code example in it - Casual replies - Follow-up questions
The bar is: "is this a thing the user would want to iterate on separately, or is this part of a conversation." The former is an artifact; the latter is a message.
**One caveat:**
The artifact detection isn't 100% accurate. Sometimes it fires when it shouldn't (a code sample gets promoted to an artifact when a normal message would have been fine). Sometimes it misses (a long doc that would benefit from being an artifact stays inline). The heuristic is under active revision. If you get a stale detection, closing the panel doesn't lose the reply — it's still in the transcript.
The rule: artifact = the thing you'd copy, iterate on, or ship. Everything else is a message.