.txt file; the Python SDK does that for you when you pass text=.
The email
→
What comes back
sender_name99%
company_name99%
inquiry_type98%
urgency99%
topics
NodesParse → ExtractCredits60 per pageYou get
The graph
Run and read
Send the email body as a text file. Any.txt works; a saved .eml works too and keeps the headers.
What comes back
The run above, trimmed. It took 10 seconds.Response
verification_status and value_override. Runs and results has the full envelope, section by section.
When it goes wrong
Your topics field looks like a single topic. Amulti_select value arrives as one comma-separated string: "enterprise, pricing, security, integration". Split on ", " to get the list back.
A good lead is rejected on a low confidence. The summary above scored 4%. A generated sentence is not quoted from the email, so it has no source phrase to score against, and it scores low even when it is right. Gate on the extracted fields, and never on the summary.
Two inquiry types keep swapping. pricing and demo_request read alike to a model given only their names. The enum_options descriptions are what separate them, so write the description that names the close case: “Pricing or cost inquiry” against “Request for a product demo”.
parse.blocks is empty and parse_confidence is null. A .txt upload has no layout to ground, so there are no blocks and no parse score. That is expected for text input. Gate a text pipeline on the extracted fields instead.
A mailbox backs up. Create the workflow once and call upload and run per email. The submission limit is 60 requests per minute, so pace the queue rather than firing the whole inbox at once.
Next steps
Extract node
Field types, modes and smart lookup
Upload and run
Multipart fields, conflicts and idempotency
Classify node
Route each email type to its own Extract node
Field types
Every data type a field can take

