Document Parser Fields
When Asha at Acme Diagnostics sets up a workflow to process incoming lab reports, she picks the Medical Records document type and immediately knows exactly which fields come back — abnormal_flag, test_name, reference ranges — without reading a line of code. That predictability is what the Documented mode gives you.
This page lists every field, table column, and clause category that each built-in document type returns. Read it before you wire up the Extract Document tool or the Document Processing node, so you know what to expect on the other side.
Mode reminder. This page covers How to extract → Documented fields (our domain schema) only — you pick a document type and Perfox extracts a fixed, typed set of fields. If you need a different shape, choose AI decides (comprehensive) (extracts everything it finds) or Your own fields (you define the field list yourself).
The same field sets are what a Knowledge Base folder extracts when you apply the matching use case — see Extraction & Understanding.
Each document type returns some combination of:
- Fields — one value per document (the header or summary values).
- Table columns — for documents that contain a repeating table, one row per line item (invoice lines, lab observations, financial statement lines…), each row carrying these columns.
- Clause categories — for contracts and audit reports, every clause is classified into one of the listed categories.
The Type column shows the value's data type: string, number, date, boolean, or enum with its allowed values. A field is only filled when the document actually states it — anything not present is left out, never guessed.
Resume / ATS Screening
Fields
| Field | Type | Description |
|---|---|---|
candidate_name | string | The candidate's full name as written on the resume. |
years_experience | number | Total years of professional work experience as a single number; estimated from the work history if not explicitly stated. |
current_title | string | The most recent / current job title. |
skills | string | A comma-separated list of the candidate's key technical and professional skills. |
highest_degree | enum (high_school / diploma / bachelors / masters / doctorate / other) | The highest completed education level. |
work_authorized | boolean | True only if the resume indicates the candidate is authorized to work in the target country without sponsorship. |
location | string | The candidate's current city / location. |
Contract / Legal Review
Fields
| Field | Type | Description |
|---|---|---|
party_names | string | A comma-separated list of the contracting parties / entities named in the agreement. |
contract_type | enum (msa / nda / sow / dpa / license / services / employment / lease / other) | The kind of agreement this document is. |
governing_law | string | The governing law / jurisdiction the agreement is subject to (e.g. "Delaware", "India", "England & Wales"). |
effective_date | date | The date the agreement takes effect / is signed. |
expiry_date | date | The date the agreement expires or its current term ends; omit if perpetual / not stated. |
auto_renewal | boolean | True only if the agreement automatically renews unless a party gives notice. |
renewal_notice_days | number | The number of days of advance notice required to prevent auto-renewal or to terminate, as a single number. |
contract_value | number | The total contract value / fees as a single number in the contract currency; omit if not stated. |
liability_cap | string | The limitation-of-liability cap as written (an amount, "unlimited", or "12 months fees"); omit if not present. |
Clause categories: limitation_of_liability, indemnification, termination, governing_law, confidentiality, auto_renewal, assignment, dispute_resolution, payment_terms, intellectual_property, warranty, data_protection, force_majeure, definition, other
Compliance / Audit
Fields
| Field | Type | Description |
|---|---|---|
finding_id | string | The finding's identifier / reference as written (e.g. 'F-2024-017', 'CTRL-6.1.2-01'); omit if the finding is unnumbered. |
severity | enum (critical / high / medium / low / informational) | The finding's severity. Map the source's own label to the closest level: treat CVSS 9.0–10 / 'P1' / 'Sev-1' / 'Critical' as critical; CVSS 7.0–8.9 / 'P2' / 'High' as high; 'Medium' / 'Moderate' as medium; 'Low' / 'Minor' as low; 'Informational' / 'Info' / 'Observation' as informational. |
status | enum (open / in_progress / remediated / risk_accepted / closed) | The current remediation status of the finding. |
control_ref | string | The control / requirement reference the finding maps to as written (e.g. 'CC6.1', 'A.9.2.3', 'AC-2'); omit if none. |
framework | enum (soc2 / iso27001 / nist_csf / nist_800_53 / pci_dss / hipaa / other) | The compliance framework the finding is assessed under. |
opened_at | date | The date the finding was raised / identified. |
due_date | date | The remediation due date / SLA deadline for the finding; omit if none is stated. |
Clause categories: control_objective, control_description, finding, remediation_action, evidence, scope, exception, risk_statement, management_response, other
Invoice / Accounts Payable
Fields
| Field | Type | Description |
|---|---|---|
doc_type | enum (invoice / purchase_order / goods_receipt / credit_memo / other) | The kind of AP document this is. |
invoice_no | string | The invoice number / ID as written; omit if this is not an invoice. |
po_no | string | The purchase-order number this document references or is (e.g. "PO-9912"). |
receipt_no | string | The goods-receipt / delivery-note number, if this is a receipt or references one. |
vendor | string | The supplier / vendor name. |
document_date | date | The document's issue date (invoice date, PO date, or receipt date). |
due_date | date | The payment due date; omit if not stated. |
total_amount | number | The document grand total as a single number (no currency symbol). |
tax_amount | number | The total tax / VAT / GST amount as a single number. |
currency | string | The 3-letter currency code (e.g. USD, INR, EUR). |
status | enum (unpaid / partially_paid / paid / disputed / unknown) | The payment status of the invoice. |
class | enum (po_backed / non_po / credit_memo / duplicate_suspect) | Classification for routing. |
Table columns (one row per item)
| Column | Type | Description |
|---|---|---|
description | string | The line-item description / SKU as written. |
qty | number | The quantity for this line as a single number. |
unit_price | number | The unit price for this line as a single number (no currency symbol). |
extended_amount | number | The line total / extended amount (qty × unit price) as a single number. |
tax | number | The tax amount on this line as a single number; omit if none. |
po_line_ref | string | The PO line reference this line maps to, if shown. |
Worked example — an invoice arrives.
Acme Store's finance workflow receives a PDF invoice from a vendor. Asha has set the Document Processing node to the Invoice / Accounts Payable type.
- Setup: the node is wired to an email trigger that fires when a new invoice lands in the AP inbox.
- Action: Perfox parses the PDF and returns
doc_type: "invoice",vendor: "Office Supplies Co.",total_amount: 14250,currency: "INR",status: "unpaid", and a table row for each line item with itsqty,unit_price, andextended_amount. - Result: a downstream step automatically logs the invoice in Acme Store's approval queue, including the line-item breakdown, without anyone re-keying numbers.
- What just happened: Perfox read the typed field list for the invoice type, pulled only those exact fields from the document, and passed them forward as structured data — no guessing, no hallucinated totals.
Financial Statements
Fields
| Field | Type | Description |
|---|---|---|
reporting_entity | string | The company / reporting entity named in the statement header. |
period | string | The fiscal period this statement covers, normalised as "FY2024" for a full year or "Q3-2024" for a quarter. |
period_end_date | date | The last day of the fiscal period, as YYYY-MM-DD (e.g. FY2024 → 2024-12-31, Q3-2024 → 2024-09-30). Used to order metrics over time. |
fiscal_year | number | The fiscal year as a single 4-digit number (e.g. 2024). |
statement_type | enum (income_statement / balance_sheet / cash_flow / other) | Which financial statement this document is. |
currency | string | The 3-letter reporting currency code (e.g. USD, INR, EUR). |
revenue | number | Total revenue / net sales as a single number in the reporting units; omit if not an income statement. |
cogs | number | Cost of goods sold / cost of revenue as a single number; omit if not present. |
gross_profit | number | Gross profit as a single number; omit if not present. |
operating_income | number | Operating income / operating profit as a single number; omit if not present. |
net_income | number | Net income / net profit (bottom line) as a single number; omit if not present. |
Table columns (one row per item)
| Column | Type | Description |
|---|---|---|
line_label | string | The line-item label exactly as written (e.g. "Revenue", "Cost of revenue", "Operating income", "Interest expense"). |
amount | number | The line-item amount for this period as a single number in the reporting units. |
Insurance Claims Adjudication
Fields
| Field | Type | Description |
|---|---|---|
doc_kind | enum (claim / policy / other) | Whether this document is a claim or a policy. |
claim_number | string | The claim number / ID as written (e.g. "CLM-2024-0088"); omit if this is a policy document. |
policy_number | string | The policy number this claim is filed under, or the policy's own number. |
claimant | string | The name of the claimant / policyholder. |
date_of_loss | date | The date the loss / incident occurred. |
claim_amount | number | The claimed amount as a single number (no currency symbol); omit if not a claim. |
peril | enum (fire / flood / theft / collision / liability / medical / water_damage / wind / other) | The peril / cause of loss. |
status | enum (open / under_review / approved / denied / paid / closed) | The current lifecycle status of the claim. |
decision_class | enum (approve_candidate / deny_candidate / needs_review / not_a_claim) | A triage classification based only on what the document states — a hint for routing, not the final decision. |
RFP Response
Fields
| Field | Type | Description |
|---|---|---|
atom_type | enum (requirement / response_section / other) | Whether this row is a requirement from the solicitation or a response section from a proposal. |
requirement_id | string | The requirement number / reference as written (e.g. "3.2.1"); omit for a response section. |
requirement_text | string | The verbatim text of the requirement (the shall / must / will statement); omit for a response section. |
obligation | enum (shall / must / will / should / other) | The obligation strength of the requirement. |
section_ref | string | The proposal section reference this row is (e.g. "Section 4.1"); omit for a requirement. |
win_theme | string | For a response section: the win theme / key differentiator it advances; omit for a requirement. |
Medical Records
Fields
| Field | Type | Description |
|---|---|---|
doc_type | enum (lab_report / encounter_note / discharge_summary / imaging / pathology / other) | The kind of clinical document. |
panel_type | string | The panel / test family as titled (e.g. "Complete Blood Count", "Liver Function Test", "Lipid Profile"); omit for non-lab documents. |
patient_name | string | The patient's full name exactly as printed. |
patient_id | string | The patient ID / MRN / registration or lab number. |
age_sex | string | Age and sex as printed (e.g. "46 Years / Male"). |
referring_provider | string | The referring / ordering physician, if stated. |
report_no | string | The report / accession number. |
specimen | string | The specimen / sample type (e.g. Serum, Whole Blood, Urine). |
collected_at | string | The sample collection date/time as printed. |
reported_at | string | The report / verified date/time as printed. |
interpretation | string | The overall impression / interpretation / remarks stated on the report. |
abnormal_flag | boolean | True if any result is flagged abnormal / out of the reference range. |
Table columns (one row per item)
| Column | Type | Description |
|---|---|---|
test_name | string | The test / parameter name as written. |
result | string | The result value exactly as written (keep the unit out of this field). |
unit | string | The unit of measurement (e.g. mg/dL, U/L, %). |
reference_range | string | The reference / biological range printed for this test. |
flag | string | The abnormality flag if stated (Normal, High, Low, Critical, Positive). |
Research Papers
Fields
| Field | Type | Description |
|---|---|---|
title | string | The title of the paper. |
authors | string | The authors, comma-separated, as written (e.g. "Karpukhin, Oguz, Min"). |
year | number | The publication year as a number (e.g. 2020). |
venue | string | The publication venue — conference, journal, or preprint server (e.g. "NeurIPS", "arXiv"). |
doc_type | enum (paper / survey / preprint) | The kind of research document. |
primary_method | string | The core method, model, or technique the paper proposes or studies, as a short phrase (e.g. "dense passage retrieval", "cross-encoder re-ranking"). |
summary | string | A 2–3 sentence summary of the paper's contribution and key findings. |
sections_toc | string | The paper's top-level section headings as a newline-separated outline (e.g. "1. Introduction\n2. Method\n3. Experiments\n4. Results"). |
Product Catalog
Fields
| Field | Type | Description |
|---|---|---|
brand | string | The brand, manufacturer, seller, or label (e.g. Nike, Microsoft, Castrol, Standard Fireworks, Jeep). |
product_name | string | The product name or title (e.g. "Air Max 90", "Office 365 Business", "GTX 20W-50 Engine Oil", "Flower Pot", "Compass"). |
variant | string | The specific variant / SKU / size / colour / pack / edition / plan tier / trim as written (e.g. "UK 9 / Black", "Annual", "1 litre", "Box of 10", "Sport 2WD Diesel Manual"). |
category | string | The product category or type (e.g. "running shoes", "productivity software", "engine oil", "sparklers", "SUV"). |
price | number | The price shown for this item, as a plain number — drop the currency symbol, commas and any per-unit words (e.g. "Rs. 8,995" → 8995, "$29/mo" → 29, "Rs. 22.72 Lakh" → 2272000). Capture the price whenever an amount appears on the item's line; omit only when the line states no price at all (e.g. "price on request", "contact sales"). |
unit | string | The pricing unit when the price is per-unit (e.g. "per litre", "per kg", "per piece", "per month", "per box"). Omit for a flat per-item price. |
key_features | string | A short comma-separated list of notable attributes / specs (e.g. "waterproof, mesh upper", "unlimited seats, 1TB storage", "synthetic, API SN", "sunroof, ADAS, 4x4"). |
You can now read this reference alongside your workflow canvas
You know exactly which fields each document type returns before you wire anything up. When you're ready to put it to use:
- Extract Document tool — set up the action that triggers extraction inside an agent conversation.
- Document Processing node — add a dedicated processing step to a workflow, including the Documented mode covered here.