Fill decision types
Every fill-spec decision type, what it produces, and when to pick each.
A slot’s own fill: carries the decision that fills it, and the decision’s type picks how the value is arrived at. Each decision produces exactly one slot value.
| type | produces | pick it when |
|---|---|---|
image-assign |
one image slot’s value |
one photo chosen from the property’s photos |
video-assign |
one video slot’s value |
one video, pooled from the property’s videos rather than its photos |
tour-assign |
one tour slot’s value |
one 3D walkthrough, pooled from the property’s tours rather than its videos — the model sees each candidate’s provider and title |
document-assign |
one document slot’s value |
one file, pooled from the documents stored on the property — the model sees each candidate’s filename, format and any text distilled out of it |
contact-assign |
one image or text slot’s value |
one of the property’s attached contacts, chosen against the brief from each card’s name, title and organisation, with the primary card flagged — the slot receives the chosen card’s field (a logo or headshot on an image slot, a name or organisation on a text slot) |
text-block |
one text slot’s value |
prose the model writes; you set structure (single_sentence, paragraph or bullet_list), perspective, and the voice and content prompts — the character budget is the slot’s own cap, inherited here |
list-fill |
any list slot’s value |
every list, whatever its items hold: one origination mode decides which rows exist — choose from the item’s own select vocabulary, extract against the facts, facts one row per fact entry, pool from the property’s photos, videos or documents, curate from nearby places — and a record item’s remaining fields are written by their own planners in the same call |
display-select |
the section’s own display — its visibility or variant, never a slot value | every meta.display entry you gave a fill: — the model picks one case from that entry’s own declared cases, both entries in a single call. It runs last, but running last buys ordering and not evidence: no decision is handed another decision’s output, so the call sees the section’s relevance slice and the pick prose and nothing else. Ground the pick in a bucket the section reads or a ${facts.*} you interpolate, never in the photo or the line another decision produced — check rejects a pick that names neither. A failed decision lands the first case you declared |