Software companies are documentation machines whether they want to be or not. Every feature ships with obligations: changelog entries, help documentation, support response templates, onboarding email sequences, in-app copy, API reference, and whatever internal specs and decision logs the team needs to function without everyone in the same room. That's before you add marketing copy, landing pages, and the job postings that describe the product to potential engineers in terms of a technical stack.

In most software teams, all of that language work gets done last, fast, and by whoever is least busy — which is usually nobody, which means the engineer who built it writes the docs at 11pm the night before launch.

The result is documentation that is technically accurate and completely inaccessible to the people who most need to read it.

The translation layer nobody owns

Good product communication requires a specific skill: translating what the product does technically into what the product means experientially. These are different things, and getting from one to the other requires understanding both the product and the user's mental model simultaneously.

Engineers are trained to be precise about the product. They're less trained to model what the user knows and doesn't know — to anticipate where the user's mental model diverges from the technical reality, and to write to that gap. The result is documentation that assumes too much, explains the wrong things, and uses the vocabulary of the implementation rather than the vocabulary of the use case.

This isn't a criticism of engineers. It's a mismatch between the skill required and the person who typically ends up doing the work, because no one else is available and the deadline is this week.

Where the language backlog actually lives

The documentation debt in most software products isn't one big hole. It's scattered across every surface the product touches:

Each of these is language work. Each of it is fixable with AI. None of it benefits from a generic AI approach where the tool doesn't know the product.

Engineers write docs that read like engineers wrote them because the tool they're using doesn't know the product — so it defaults to technical register by default. Give it the product context and the user's vocabulary, and the translation layer gets easy.

The product context problem

Ask Claude to write onboarding documentation for a feature without product context and you'll get something that demonstrates the model understands software onboarding as a genre. It will have the right structure: introduction, steps, expected outcome, what to do if it doesn't work. It will be competent and completely divorced from the actual product, the actual user, and the actual mental model the user arrives with.

The documentation sounds like documentation. It doesn't sound like this product.

Good product documentation has a specific voice. It makes assumptions about what the user already knows, calibrated to the actual user population. It uses the vocabulary the user uses to describe the problem the product solves, not the vocabulary the engineers use to describe how the solution works. It anticipates the three questions a new user will have after reading the first paragraph.

None of that shows up without context. All of it shows up when the right context is in place.

AI without product context

  • Docs use technical vocabulary instead of user vocabulary
  • Changelog entries are either too dense or too vague
  • Support templates are generic; don't reflect actual product behavior
  • Feature announcements explain the implementation, not the benefit
  • Every session re-establishes what the product is and who uses it

With product and user context loaded

  • Docs assume the right knowledge level for the actual user
  • Changelog entries translate technical changes into user benefits
  • Support templates reflect the actual product and common failure modes
  • Feature announcements lead with what changed for the user
  • Engineers can produce publication-ready drafts without a PM review cycle

The internal knowledge problem

There's a second documentation failure mode in software teams that AI can address but only with the right context: the loss of decision history.

Most technical decisions in a software product are made verbally, in a Slack thread, or in someone's head. Why is the auth layer structured this way? Why was that API endpoint deprecated? Why does this component have that peculiar behavior? The engineer who made the decision knows. The engineer who joined six months later doesn't, and there's no way to find out without interrupting someone.

When technical decisions get documented as they're made — brief, structured, in a form that's searchable — the institutional knowledge problem shrinks. Claude is very good at generating that documentation from a quick verbal description of the decision and its reasoning. Five minutes at the end of a design conversation produces a permanent artifact that everyone can read. Most teams don't do this because the friction of opening a document and writing something coherent after a long meeting is too high. That friction disappears when the tool already knows the project, the codebase conventions, and the format the team uses for decision records.

The new-engineer test

A new engineer joining the team should be able to understand why the product is built the way it is from documentation alone, without interrupting senior engineers. If that's not possible today, the institutional knowledge lives in the wrong place.

Field notes

Software is what I build. The language layer of a software product is something I've watched teams neglect for years — not because they don't know it matters, but because the urgent always beats the important and there's always another feature to ship. The teams that get this right treat documentation as part of the build, not an obligation after it. AI makes that possible even for teams with no dedicated writer — but only if the tool knows what it's writing about.

R.P.

All essays Related: Why outputs are inconsistent