Skip to content
Paul Luckey
← Notes

Why Streaming Markdown Gives Chatbot Vibes

March 12, 2026

I built a problem space modeler that generates formal ontologies from natural language. The generation takes 30 seconds. The obvious UX: stream the markdown as it's generated, like every AI product does now.

I watched someone use it. They saw streaming text and said "oh, it's a chatbot" and started to leave before the dashboard loaded. Thirty seconds of watching markdown scroll past triggered a pattern match — I've seen this before, it's ChatGPT — and they mentally filed it away as something they already understood.

The dashboard that appears after the stream completes is genuinely novel: an interactive ontology with a mermaid diagram, entity and relationship rails, similarity search across 60+ reference models. But the streaming text created a first impression that was impossible to shake.

The fix was counterintuitive: don't show the stream at all. Show the full dashboard immediately with empty panels and contextual placeholders — "Listening for entities...", "Building diagram...", "Mapping relationships..." — and let the data populate incrementally as the stream progresses. Same underlying mechanism, completely different perception.

The streaming text said "I'm a language model generating text." The populating dashboard said "I'm an instrument acquiring data." Same bits on the wire. Opposite user cognition.

This is what I mean by ambient AI versus conversational AI. The conversational frame — a text stream you watch — triggers expectations of chat. The ambient frame — an instrument panel that fills with intelligence — triggers expectations of a tool. Tools get used. Chatbots get demoed once.

Most AI products default to the conversational frame because it's easier to build. You pipe the LLM output to the screen and call it a feature. But the frame IS the product. The same capability, presented as a stream versus presented as a populating dashboard, creates fundamentally different user relationships.

The question isn't "how do we make streaming feel faster?" It's "should the user see the stream at all?"