Landing page + all six apps · September 9, 2026

LLM-friendly by default: robots.txt, llms.txt, and JSON-LD for every app

People increasingly find software by asking an assistant, not a search box. If a model is going to describe my apps, I'd rather it describe them correctly — so every app now hands crawlers and assistants the facts directly.

A "boring" app has a marketing problem: there's nothing loud about it. Notes autosaves and stays on your device. That's the whole pitch. When someone asks an AI assistant for "a private notes app that works offline," I want the answer to be accurate about what these apps actually do — not a hallucinated feature list, and not silence because the crawler couldn't make sense of a JavaScript-rendered page.

So I did a pass across the landing page and all six apps to make them legible to machines, using boring, well-specified formats rather than anything clever.

robots.txt that says yes

Every origin now serves a robots.txt. The default rule allows everything, and then it names the AI crawlers explicitly — GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Applebot-Extended, CCBot and the rest — with an explicit Allow. Plenty of sites block those. I don't want to. There's no private user data on any of these origins to begin with: your notes, tasks, and files never leave your device, so there's nothing for a crawler to leak. Each file also points at that origin's sitemap.

llms.txt: the app in one page

Each app serves an /llms.txt — a small Markdown file with a one-paragraph summary, a real feature list, and links. It follows the llms.txt convention: a single, predictable place for a model to read a plain-English description of what a site is, without wading through nav menus and inline SVG. The landing page's version covers the whole suite and links out to every app, the blog, and the privacy policy.

JSON-LD on every app

The apps are single-page apps, so their HTML is thin by default. Each one now carries a static <script type="application/ld+json"> block describing itself as a WebApplication: name, canonical URL, category, a description, the feature list, "free," and the author. The landing page's structured data grew too — one linked graph tying the Person, the Organization, the site, and every app together, so a crawler can see they're one project rather than seven unrelated pages.

The rest of the plumbing

Standard <meta> description and canonical tags on the app pages that were missing them, Open Graph and Twitter cards so a shared link renders as something other than a bare URL, and an XML sitemap per origin. None of it changes how the apps work. It's the kind of thing that should have been there from the start, and now it is.

No trackers were added in the process, and none ever will be. Being easy for a model to summarize and being invasive to the person using the app are unrelated problems — this pass is entirely the first one.

See what the crawlers see

Every app has a /llms.txt and a /robots.txt now — try notes.boringbydesign.com/llms.txt.

See the apps