Field data sources

Each field has a source — question (user fills via form), extracted (AI pulls from a document or context), or static (fixed value). The field also has one or more outputs that produce the actual case-data values. Output kinds (input, static, zone, prompt, computed, binding) determine exactly how each value is produced.

Last updated

Each field on a template has a source that decides where its primary value comes from, plus one or more outputs that produce the actual case-data values. The three field sources are question, extracted, and static. The six output kinds (input, static, zone, prompt, computed, binding) determine the exact production rule.

What you need

  • An open template

The three field sources

question — asked of the user at autofill time via a form. Use for values that vary per run and aren't on a document — a Notes field, a one-off override, a checkbox the worker confirms. The field's primary output is an input output.

extracted — value comes from a document or from non-PDF context. Use for anything that arrives in a document (Vendor Name, Invoice Number, Tax ID) or that the system already knows (current date, email subject, company name). The field's outputs are some mix of zone, prompt, computed, and binding kinds.

static — a constant baked into the template. Same value every run. Use for a fixed disclosure paragraph or a permanent header label. The single output is static-kind, reading from the field's staticValue.

The six output kinds

Each output a field produces has a kind that decides how its value is computed:

input — the user's form input (for question fields). The user types it, the value lands in case.data.

static — a fixed value from output.staticValue. Resolves at read time.

zone — extracted from a read zone you draw on the source document. The AI reads the text inside that rectangle and returns it. Optionally refined with a per-zone prompt (e.g., "ignore the asterisk").

prompt — derived from a natural-language AI prompt that runs over the rest of the case data. No zone — just a question to the AI like "Return 'Needs Review' if the amount is over $5,000 and status isn't 'approved'; otherwise blank."

computed — derived from an expression referencing other outputs. Math, string ops, date arithmetic, currency formatting, conditionals. $today and $now re-evaluate every render so date math stays current.

binding — read from non-document context: email_metadata (subject, sender, received date — for cases originating from Gmail), email_body (the email's text body), system (current date, current user, workspace), or company_profile (workspace name, address, logo).

An extracted field with two outputs
FieldPhone
Sourceextracted
Output 1kind=zone, key=phone
Output 2kind=computed, key=phone_last_4

Outputs let one field produce multiple values

A field can declare more than one output. Example: a Phone field can produce:

  • phone (the raw value extracted from the document)
  • phone_last_4 (computed from phone)
  • phone_country_code (computed from phone)

All three keys end up in case.data, each independently placeable on the output PDF. The legacy "Variants" concept was renamed to Outputs in 2026-05 — it now covers any extra derivation a field produces, not just AI-generated alternatives.

When to use each source

Use question when the value isn't in any document and has to come from the user. Sparingly — every form question slows down autofill.

Use extracted for everything else, then pick the right output kind:

  • Value lives in a specific rectangle on the source PDF → zone-kind output
  • Value is derived from other case data using AI → prompt-kind output
  • Value is derived using a formula → computed-kind output
  • Value comes from email metadata, system clock, or company profile → binding-kind output

Use static when the value is the same on every run — boilerplate, fixed disclosures, permanent labels.

Tips

We use cookies to keep you signed in and improve the product. See our Cookie Policy.
Manage preferences