Teaching, not configuring.

Houston apps don't have a settings page. Users teach the app by talking to it, and the AI writes the rules down so they stick.

The problem with settings

Every app has preferences. Things some users want and others don't.

Traditional apps handle this with a settings page. Checkboxes. Dropdowns. Forms.

This breaks down fast. The settings page grows. Users can't find what they need. The preferences one user wants conflict with what another expects, and no single set of defaults is right.

How Houston handles it

Every page has two prompt files:

pages/client-detail/ prompt.seed.md # you write this. read-only. ships with the app. prompt.local.md # starts empty. the AI writes to it over time.

The seed is what the page is for. Written by you, the developer. It ships with the app and never changes at runtime.

The local file is how the page gets personalized. Starts empty. The AI writes to it when the user teaches something new.

The effective prompt the AI reads is the seed plus the local file, concatenated. The seed provides defaults. The local file overrides them.

How the AI actually learns

A user says something like:

Don't auto-email clients when I delete them. It caused a mess last week.
Got it. I've added a rule to this page: don't send emails on client deletion. I'll follow it from now on.

Behind the scenes, the AI appends a line to prompt.local.md for this page. A week later, in a fresh session, the AI reads the same file and honors the rule. Automatically.

If the user changes their mind, they say so. The AI removes the rule. Same file, same mechanism.

The user never edits prompt files

They just talk to the AI. The AI takes care of writing things down. That's the point — the user gets to use their own words.

What the user sees

The user doesn't see prompt.local.md. They see a list labeled What the agent has learned about this page:

  • Don't auto-email clients when I delete them.
    3 days ago
  • Always show amounts in USD.
    Last week
  • Mark clients as VIP when they spend over $10k.
    Last month

Each rule has a short, plain-English summary. Each has an undo button. Click it, the rule is gone.

Under the hood, this is git. Every change to prompt.local.md is a commit. Every undo is a revert. The user never sees the word "git."

Updates without losing teachings

Here's the part that matters when you ship v2.

You improve the seed prompt. You add a new default behavior. You ship an update. Users install it.

Their local teachings don't get overwritten. The seed updates underneath. The local overlay stays on top. Both apply.

The user gets your improvements and keeps what they've taught. No migration, no reset, no "sorry your settings are gone."

Why this feels different

Settings ask the user to think like the app. Teaching lets the user speak their mind. The AI translates natural language into persistent rules. The user says what they want — in their own words — and it sticks.