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.