---
title: "First-principles check: are we drifting?"
url: https://mdfy.app/dEgO6Qml
updated: 2026-05-15T16:43:23.889Z
source: "strategy-note"
---
# First-principles check: are we drifting?

> Strategy reflection. Mapping today's product surface against the 8 founding principles. Where we're aligned, where we're drifting, what to double down on.

## The 8 first principles

1. **LLMs read markdown natively.** (empirical)
2. **URLs cross every boundary.** (empirical)
3. **Authored, not extracted.** (conviction)
4. **Cross-AI is a structural moat.** (argument)
5. **The graph lives in the response, not behind a service.** (conviction)
6. **Per-project + per-person scopes compose.** (observation)
7. **Zero friction.** (founding principle)
8. **Build in public.** (tactic)

## Per-principle assessment

| Principle | Alignment | Comment |
|---|---|---|
| **1. LLMs read markdown** | ✓ strong | Every output is markdown. No drift. |
| **2. URLs cross every boundary** | ✓ strong | `/llms.txt`, `?compact`, `?graph=0` are all URL-native. The image-rehost work today was a direct expression of "URL must be self-contained." |
| **3. Authored, not extracted** | ⚠ half | The product is aligned. **Risk: auto-analyze, concept index, related-in-hub may read as "AI organizes for you" if marketed naively.** The verb order matters — *"you write, the AI links"* must always be in that order. |
| **4. Cross-AI = structural moat** | ⚠ at risk | If the 4 native-skill plan is *framed* as "we support every AI," the cross-AI thesis reduces from "one URL works in 3 AIs" to "Claude one + ChatGPT one + Gemini one." Strictly worse framing. |
| **5. Graph in the response (not a service)** | ✓ strong | The auto-queue-on-bundle-create work shipped today is exactly this. Fresh bundles' URLs carry graph_data from the start. |
| **6. Doc / Bundle / Hub composable scopes** | ✓ strong, ⚠ marketing | This is our most differentiating part, but marketing emphasizes hub. **Bundle deserves equal billing — AGENTS.md fit is *bundle*, not hub.** |
| **7. Zero friction** | ⚠ weakening | "Zero friction to *try*" is intact. "Zero friction to *use well*" is weakening (image rehost / edit token / GitHub Action all need an account). Healthy for monetization but the founder narrative needs to be honest about it. |
| **8. Build in public** | ✓ strong | Today's GitHub Action dogfood is the proof. |

## Biggest single drift risk

**Feature breadth is growing faster than spine consolidation.**

One conversation today shipped: image rehost (6 import paths), 4 Marp decks + PDF/PPTX, native skill roadmap, GitHub Action dogfood, sign-out bundle clear, demo 50-doc seed + ID renumber, bundle readiness pill + auto-queue.

Each piece is justifiable. The risk: after 5 minutes of using mdfy, a user should be able to answer *"what is this?"* in 8 words — **"URL is the unit. Markdown is the substrate."** If they can't, breadth is hurting positioning.

## Three concrete recovery moves

1. **Add a self-check to every PR:** *"Does this make the URL more valuable, or just add another way to reach it?"* The first kind compounds. The second is breadth without spine.

2. **Lock native-skill positioning before any of them ship.** Each skill UI must say *"Your URL: mdfy.app/<X>"* somewhere visible — the skill is the *on-ramp* to the URL, not a substitute for it. Otherwise we accidentally train users that mdfy *is* the ChatGPT GPT.

3. **Promote bundle in the launch copy.** Current Show HN draft leans on hub. The hub URL is the "personal layer"; the bundle URL is the "per-project layer" — and that's exactly what AGENTS.md / .cursor/rules need. Add a bundle slide. In /spec, change the order to doc → bundle → hub (small to large, composition first).

## One-line summaries

**What's working:** Layered architecture on a markdown-URL foundation. Each new feature deepens that layering, not flattens it.

**What to watch:** "We have a Claude thing AND a ChatGPT thing AND a Gemini thing" is a concession framing. The principle is "one URL, every AI reads it." Hold that frame even while shipping the skills.

## Action items (this week)

- [ ] Add the PR-self-check rule to CLAUDE.md
- [ ] Lock the "Your URL: ..." visibility rule in any native skill mockup
- [ ] Add a bundle-first slide to the Show HN draft
- [ ] Reorder /spec sections: doc → bundle → hub
