← Selected work · 2026
Unfog.
A visual thinking tool that turns nonlinear ideas into structured briefs and clearer AI collaboration, designed for the messy middle between idea and execution.
- Year
- 2026
- Role
- Owned product direction, system architecture, AI workflow design & frontend implementation
- Stack
- React, Next.js, TypeScript, Supabase, OpenAI / Anthropic
- Status
- In active development
Overview
Unfog is a tool for people who think in fragments (founders, designers, engineers, writers) and want to get from a tangled cluster of thoughts to a structured brief without losing the original texture of their thinking. It sits between a notebook, a whiteboard, and a writing assistant.
Problem
Most AI products treat thinking as a single linear conversation. But real thinking is non-linear: half-formed claims, contradictions, references, arrows pointing back. Existing tools either flatten that into a chat log, or hide it behind a beautiful canvas with no way out to a clear deliverable.
Constraints
- Must work for solo users on day one. No team-collab dependency
- Latency budget tight enough that AI feels like assistance, not a wait
- The output had to be readable by humans and machines
- Small team, no funding runway to over-engineer the backend
Decisions
- Chose a typed node graph over a free-form canvas. Briefs become deterministic transforms of the graph, not generated artifacts
- Picked structured outputs over chat conversation, so AI assists thinking instead of replacing it
- Deferred team collaboration in v1 to keep the solo-user experience honest
- Kept the orchestration layer provider-agnostic, so the model under the system can change without product churn
Approach
I started with a system map, not a UI. Inputs: messy notes, references, voice. Process: clustering, structuring, summarizing, briefing. Outputs: structured briefs, prompts, and continuous context for downstream LLM use. Once the flow was honest, the interface mostly designed itself.
Implementation
Next.js front-end with a canvas built around a typed node graph. Supabase for persistence. A thin orchestration layer over multiple LLM providers with structured-output schemas so the UI never has to parse free-form prose. Briefs are deterministic transforms of the graph, not generated artifacts, so they’re reproducible and reviewable.
Result
Early users report the loop from “cluster of thoughts” to “something I can actually share or hand to an AI” collapsing from hours of reformatting to minutes. The product’s primary metric isn’t engagement. It’s how often a session ends with a brief the user actually used.
Reflection
The hardest part wasn’t AI. It was deciding what the system refuses to do. Every feature I cut made the remaining ones clearer. If I were starting over, I’d invest in the eval harness even earlier; the rest of the product gets faster once you can measure whether a change makes thinking clearer or just prettier.
Working on something similar?
If you’re shaping an AI-native product and want a thinking partner across product and implementation, I’m open to a conversation.