Case 03

OhMyMD

Turning AI writing from "another chat window" into inline commands you can call up as you write.

Role
Product Design · Interaction Design · AI-assisted Development
Team
Design & development (me) · Architecture & deployment (1 engineer)
Timeline
2026 · Ongoing iteration
Platform
Browser-based web app · Local folder / Google Drive / Browser storage

01 Overview

A browser-based AI writing tool. Users choose where their writing lives, and AI enters when invited—through /ai-write, /ai-comment, and /ai-draw. Generated results appear as proposed first, and only enter the document after the user accepts.

Product URL: ohmy.md

02 The Product Bet

Core problem:

Chat-first AI writing loses context. Users are forced to move information between the document and a chat window. Content gets locked into a product database, and AI calls depend on a vendor.

Instead of building AI as a separate workspace, let AI enter the writing flow as Markdown-native commands.

Principle 1

Choose where your writing lives.

Local folder (File System Access API) · Google Drive (cross-device) · Browser (IndexedDB + export)

→ Users own their content; Markdown stays portable

Principle 2

AI that enters when invited.

Built into the page, never layered over your writing.

→ AI's entry point is a Markdown-native slash command, not a panel

→ AI calls are also under user control: BYOK (Google / OpenAI) or Ollama local (127.0.0.1:11434)

03 The Interaction System

AI's entry point is a Markdown-native slash command.

All three commands share the same state machine, control logic, and context mechanism.

Attribute AI Write AI Comment AI Draw
Entry /ai-write /ai-comment /ai-draw
State ready → thinking → done same same
Control accept / redo / stop same same
Context Auto-included Auto-included Auto-included
Agent steps Visible Visible Visible
Output proposed full Markdown proposed inline diff proposed image
The three OhMyMD command panels side by side, each in the READY state: /ai-write with a prompt field, /ai-comment with direction chips and a prompt field, and /ai-draw with a prompt field
Command panels: /ai-write · /ai-comment · /ai-draw

Decision 1: AI Write — Develop a thought into something clearer.

Judgment

AI should understand the current workspace, not ask users to move context around.

Design

/ai-write inline command with auto-included context.

Flow

Prompt → Context (2 files auto-included) → visible agent steps → proposed → accept / redo

Validation

done in 49.2s on a local model; the agent states “The Notes.md provides all necessary details for creating the itinerary. No additional files are needed.”

/ai-write full flow · run on a local model (Ollama), thinking shown at 4× speed

Decision 2: AI Comment — Refine without losing your voice.

Judgment

Users need to see what changed, not blindly accept.

Design

direction shortcuts (Improve clarity / More concise / ✦ Add an example / ✦ Strengthen the argument) + inline diff.

Flow

More concise → thinking → done → inline diff (strikethrough + highlight) → accept / redo

Validation

The agent states "The current file is already in context, so no additional files are needed"—showing that context planning decides retrieval scope based on task complexity.

/ai-comment: thinking → done → inline diff · run on a local model (Ollama), thinking shown at 4× speed

Decision 3: AI Draw — Generated content must be durable.

Judgment

If generated images aren't durable, they become disposable.

Design

/ai-draw shares the same interaction structure as Write and Comment.

Flow

/ai-draw → thinking → proposed image

Validation

asset model + relative paths.

04 Designing Through Implementation

Building it hands-on meant dealing with things a mockup never shows: real files, real states, and real edge cases.

1. The files are real

Notes live on the user's own computer, in the browser, or on GitHub—not in a demo database.

  • The workspace works the same no matter where the files are stored.
  • Generated images are saved as files and linked with relative paths, so they stay with the notes. (See AI Draw above.)

2. AI output is unreliable

A run takes from several seconds to almost a minute, and the result can be wrong or can change the user's own wording.

  • AI output waits for review and only enters the document when the user clicks Accept. (See AI Write above.)
  • Edits are marked with strikethrough and highlights, so the user decides what to keep. (See AI Comment above.)

3. AI costs money and touches privacy

Every AI call costs money and sends the user's notes to a third-party model.

  • Users can bring their own API key or run a local model.
  • AI first decides which files it needs and sends only those, not the whole workspace.

4. The interface has to show state honestly

One editor holds the user's notes, demo content, read-only GitHub repos, and half-written text.

  • Demo content never mixes into the user's own notes.
  • If a change can't be saved, the user isn't offered the option to make it.
  • Half-written content isn't treated as an error.

05 What I Actually Built

Homepage

Open a folder → New workspace.

Editor

slash command → AI Write / Comment / Draw → proposed → accept.

Playground

"A three-minute tour"—the product explained in Markdown.

Settings

BYOK + Ollama local model.

GitHub sharing

Write locally → Push with Git → Share the link.

AI agent access

an agent reads and writes notes via /agent/skills.

OhMyMD Playground showing the README note A three-minute tour, with a Changes won't be saved badge
Playground: “A three-minute tour”
OhMyMD Settings with empty Google and OpenAI API key fields and Ollama (local) selected as the text provider
Settings: BYOK + Ollama local model
OhMyMD GitHub page opening the repository afterform-010/ohmymd-playground at main
GitHub sharing: open a repo by link
The /agent/skills page, a Markdown guide telling AI agents how to inspect workspaces and read and write notes
AI agent access: /agent/skills

06 Live Product: Where It Stands

Where it stands

Status

Live and under ongoing iteration.

Users

1 active user so far—a friend of mine.

How I collect feedback

Feedback

An embedded Tally form collecting overall rating, points of confusion, and the most useful features.

Usage

Microsoft Clarity shows how people actually use it, with note content masked in recordings.

What I don't know yet

Honest note

The user base is very small, and no formal usability testing has been done.

Next

Validate how to keep more people using it, and how context planning performs in larger workspaces.

The Tally feedback form Help improve Oh my Markdown: an overall experience star rating, the most confusing or frustrating part, the most useful feature, one thing to see next, and an optional email for a follow-up conversation
Tally feedback form

07 What This Proves

Reflection

This project strengthened my ability to translate AI judgment into product rules—moving between interaction states, context mechanisms, user control, and system persistence.

Designing for AI-assisted tools requires finding a precise balance between automation and user control, and making AI behavior visible, reviewable, and reversible.

What this project proves

Leading the design of an AI-assisted tool and co-building it, translating design judgment into a working product. Designing where AI should enter, where it should stop, and what happens when it fails.

Remaining questions

  • How to validate context planning reliability in larger workspaces.
  • How to sustain more users.
  • How to make AI behavior more explainable without adding user burden.
Next case BuildBase