DEV Community

LaunchSignal
LaunchSignal

Posted on

My product's second audience doesn't have eyes

I've been reading my own landing page wrong.

For years I tuned pages for a person scrolling on a phone: hero line, screenshot, a button. Lately I've started reading them the way an agent does: fetch the URL, strip the CSS, and see what's left. Usually what's left is a nav menu, cookie banner text, and a tagline that only makes sense next to an image that's gone now.

That changed how I think about discovery. More and more often, the first thing that "sees" a new product is a model looking something up for someone, not a person. It doesn't look at your hero image. It reads text and calls endpoints.

Here are three layers I now check on any site I build, from cheapest to most work.

1. llms.txt: a page that tells a machine what it's looking at.
It's just markdown at the root. What the thing is, which pages matter, and what it isn't. That last part surprised me. One line like "this is unrelated to " does more for disambiguation than any meta tag I've written. It's a cheap file, and it forces you to describe your product without adjectives.

2. A small JSON API with boring, predictable errors.
An agent can't squint at a red outline on a form field. It needs { "ok": false, "error": "invalid_category" } and a list of allowed values somewhere it can read. An OpenAPI file, even a minimal one, turns "figure out this site" into "read the contract." The error codes ended up mattering more to me than the success response.

3. MCP, for when the agent is already inside an editor or chat.
An MCP server is the same contract, but the tool shows up as something the model can call directly. It's one URL in a config file. Reads such as list and get are the natural starting point. Writes need more care.

What I keep relearning is that discovery by machines is mostly about legibility, not ranking. No algorithm is there to game. Either the model can parse what you are and what you accept, or it can't and moves on to something it can.

A few habits that came out of this:

  • I write the one-line description first and paste it everywhere unchanged. Agents compare sources, and inconsistent descriptions read as noise.
  • Categories are a closed list, not free text. Machines can deal with enums but struggle with vibes.
  • Anything a machine writes gets a human review. "Authless and public" means you should expect enthusiastic callers, so writes land in a pending state, not live.
  • I curl my own pages with no JavaScript about once a month. It's humbling.

None of this replaces people finding your work. But the person increasingly arrives through something that read your site first, so it's worth making sure that thing came away with the right idea.

I've been trying all three layers on a small listing site, LaunchSignal, where submissions come in through a JSON API and an MCP server as well as the form. I'm still learning which parts agents actually use.

Curious what others do here: do you treat machine readers as a real audience yet, or still as an afterthought?

Top comments (0)