Skip to content
HomePagesHomePages template kit
Menu

Bind a slot to a property fact

Fill a slot from a known property fact, no AI.

Fill a slot from a known property fact, no AI.

Give the slot a source: direct("<field>") instead of a produced_by — the same pattern the starter’s headline already uses (source: direct("address")). Model it on an AI-produced slot you want to make fact-bound instead: swap its produced_by for source, and drop the matching decision from fill-spec.ts.

// schema.ts — was produced_by: "blurb_text"
blurb: {
type: "text",
size: "long",
editable_by_user: true,
required: true,
source: direct("lot_size"),
display_name: "Blurb",
},

Then delete the now-unused blurb_text decision from fill-spec.ts’s decisions array — a direct()-bound slot needs none; the fact is baked in at fill time, and the schema-invalid check rejects a slot that declares both source and produced_by.

The same pattern works for any slot type — pick a field whose runtime shape matches. For a number slot, source: direct("beds"); for text, source: direct("address") or any other text-shaped field in the closed vocabulary.

None — this is a pure content edit. No CLI command beyond the author loop below.

Verify with the author loop.

  • The closed vocabulary — every direct() field, grouped by what it resolves against.
  • The schema system — the direct()/derived() contract and why a bad name is a compile error.
  • schema-invalid — fires if a slot declares both source and produced_by, or neither.