SUP-1042. Next month the same supplier writes “WAYNE ENTERPRISES SA” and the whole thing starts again. Smart lookup resolves the name on the page against a CSV you upload once, and returns the row your systems need.
On the invoice
INVOICE
In suppliers.csv
→
What comes back
vendor_name97%
invoice_number96%
supplier_id
payment_termsNET30
NodesCredits135 per pageYou get
The workflow
Smart lookup is not a node of its own. It is asource on a field of the Extract node, plus the reference CSV attached to that node. Here vendor_name is read off the page; supplier_id and payment_terms are resolved from the file.
lookup_files from disk and send it as lookup_file_uploads. Over the API you send the bytes inline, base64-encoded.
The reference file
Any CSV with a column to match on and the columns you want back. This one carries a near-miss on purpose: two suppliers whose names both start with “Wayne”.suppliers.csv
Response
vendor_name and invoice_number were read off the page, so they carry a confidence and the phrase they came from. supplier_id and payment_terms came out of the CSV, so their confidence is null and their evidence is empty: there is no page they were read from.
When it goes wrong
The looked-up field has no confidence. That is correct, not a bug. A looked-up value did not come off the page, so there is nothing to be confident about and nothing to cite. Judge the match by the extracted field beside it: ifvendor_name is right, the join had the right input.
It matched the wrong row. Two suppliers here start with “Wayne”. The matcher works from the field name, the field description and lookup_suggestion, so add the signal that separates them: “match on supplier name and city”. A description that names the column beats a clever hint.
Nothing comes back. The lookup returns empty when no row is a defensible match, which is the honest answer for a supplier that is not in your file yet. Use "source": "lookup_if_missing" when you would rather keep whatever was printed on the page than get nothing.
You wanted to check a value against a fixed list. Then you want an enum field, not a lookup. Smart lookup is for a list that lives in a file and returns a different value than the one it matched.
The workflow is rejected when you save it. An Extract node with a lookup field and no reference file is refused at save time. Send lookup_file_uploads on create, or add the file to the node in Studio.
Next steps
Smart lookup
Every option, including the matching effort
Field types
When to use an enum instead

