Non-AI Fields

Learn when and how to use fields that are not extracted by AI

Overview

Non-AI fields are fields where AI extraction is disabled (AI Extractable flag is unchecked). These fields are designed for manual entry or internal workflow management, rather than automatic extraction from documents.

When to Use Non-AI Fields

Non-AI fields are ideal for:

  1. Internal workflow management - Status fields, approval states, process tracking
  2. Manual annotations - Notes, comments, user-added information
  3. Computed values - Fields populated by formulas (see Formula Fields)
  4. External data integration - Fields populated from external systems via formulas

Common Use Cases

1. Status Fields for Workflow Management

Status fields allow you to track documents through your internal processes. These should not be extracted by AI because they represent your organization's workflow state, not information from the document itself.

Example: Payment Status Field

{
  name: "paymentStatus",
  type: "enum",
  displayName: "Payment Status",
  enumValues: ["DRAFT", "PAID", "UNPAID", "OVERDUE", "CANCELLED"],
  aiExtractable: false,
  required: false,
  searchable: true,
  isImportant: true
}

Use cases:

  • Track payment status through your approval workflow
  • Mark invoices as paid after processing
  • Flag overdue invoices
  • Cancel invoices that are no longer valid

Why non-AI:

  • The status reflects your internal process, not document content
  • Status changes over time as you process the document
  • You control when status changes occur

2. Notes and Comments Fields

Notes fields allow users to add manual annotations, reminders, or additional context to documents.

Example: Notes Field

{
  name: "notes",
  type: "text",
  displayName: "Notes",
  aiExtractable: false,
  required: false,
  searchable: true,
  isDescription: false
}

Use cases:

  • Add reminders about follow-up actions
  • Document internal discussions
  • Record exceptions or special handling
  • Store additional context not in the document

Why non-AI:

  • Notes are user-added, not document content
  • They represent your organization's knowledge
  • They're added after document processing

3. Approval and Review Fields

Fields for tracking approvals, reviews, and sign-offs.

Example: Approval Status

{
  name: "approvalStatus",
  type: "enum",
  displayName: "Approval Status",
  enumValues: ["PENDING", "APPROVED", "REJECTED", "REQUIRES_REVIEW"],
  aiExtractable: false,
  required: false,
  isImportant: true
}

Use cases:

  • Track approval workflow
  • Record who approved/rejected documents
  • Flag documents requiring review
  • Manage compliance processes

4. Internal Classification Fields

Fields for categorizing documents according to your internal systems.

Example: Department Assignment

{
  name: "department",
  type: "enum",
  displayName: "Department",
  enumValues: ["ACCOUNTING", "LEGAL", "OPERATIONS", "SALES"],
  aiExtractable: false,
  required: false,
  searchable: true
}

Use cases:

  • Assign documents to departments
  • Route documents for processing
  • Organize by internal categories
  • Filter by organizational structure

Configuration

Disabling AI Extraction

To make a field non-AI:

  1. Open the field editor
  2. Navigate to the Flags section
  3. Uncheck AI Extractable
  4. Save the field

The field will now:

  • ✅ Appear in the document view for manual entry
  • ✅ Be searchable (if searchable flag is enabled)
  • ✅ Support formulas and computed values
  • ❌ Not be extracted by AI during document processing

Field Configuration Best Practices

For Status Fields:

  • Use enum type with predefined values
  • Set isImportant: true to highlight in UI
  • Enable searchable: true to filter by status
  • Consider required: false to allow unset status

For Notes Fields:

  • Use text type for free-form input
  • Enable searchable: true to find documents by notes
  • Set isDescription: false (unless notes should be primary description)
  • Consider required: false for optional notes

For Workflow Fields:

  • Use appropriate field types (enum, text, date, etc.)
  • Enable searchable: true for filtering
  • Set isImportant: true for visibility
  • Link to related fields if needed

Examples

Example 1: Invoice Processing Workflow

// Payment Status - tracks internal workflow
{
  name: "paymentStatus",
  type: "enum",
  displayName: "Payment Status",
  enumValues: ["PENDING", "APPROVED", "PAID", "REJECTED"],
  aiExtractable: false,
  isImportant: true,
  searchable: true
},

// Processing Notes - manual annotations
{
  name: "processingNotes",
  type: "text",
  displayName: "Processing Notes",
  aiExtractable: false,
  searchable: true
},

// Approved By - manual entry
{
  name: "approvedBy",
  type: "text",
  displayName: "Approved By",
  aiExtractable: false,
  searchable: true
}

Example 2: Document Review System

// Review Status
{
  name: "reviewStatus",
  type: "enum",
  displayName: "Review Status",
  enumValues: ["NEW", "IN_REVIEW", "REVIEWED", "ARCHIVED"],
  aiExtractable: false,
  isImportant: true,
  searchable: true
},

// Reviewer Notes
{
  name: "reviewerNotes",
  type: "text",
  displayName: "Reviewer Notes",
  aiExtractable: false,
  searchable: true
},

// Review Date
{
  name: "reviewDate",
  type: "date",
  displayName: "Review Date",
  aiExtractable: false,
  searchable: true
}

Example 3: Compliance Tracking

// Compliance Status
{
  name: "complianceStatus",
  type: "enum",
  displayName: "Compliance Status",
  enumValues: ["COMPLIANT", "NON_COMPLIANT", "REQUIRES_REVIEW"],
  aiExtractable: false,
  isImportant: true,
  searchable: true
},

// Compliance Notes
{
  name: "complianceNotes",
  type: "text",
  displayName: "Compliance Notes",
  aiExtractable: false,
  searchable: true
}

Integration with Formulas

Non-AI fields can be populated by formula fields:

// Example: Auto-set status based on due date
const dueDate = tx.getField("dueDate");
const today = new Date().toISOString().split('T')[0];

if (dueDate && dueDate < today) {
  tx.setField("paymentStatus", "OVERDUE");
} else if (dueDate) {
  tx.setField("paymentStatus", "UNPAID");
}

This allows you to:

  • Automatically set status based on document data
  • Compute values from other fields
  • Integrate with external systems via HTTP requests

See Formula Fields for more information.

Best Practices

  1. Use clear naming: Name fields to reflect their purpose (e.g., paymentStatus, not status)
  2. Provide enum values: For status fields, define all possible states
  3. Enable searchability: Make workflow fields searchable for filtering
  4. Mark as important: Use isImportant: true for fields users need to see
  5. Document purpose: Use field descriptions to explain when/how to use the field
  6. Consider formulas: Use formulas to auto-populate when possible

When NOT to Use Non-AI Fields

Don't disable AI extraction for:

  • Document content fields - Fields that exist in the document (vendor name, amounts, dates)
  • Extractable data - Information that AI can reliably extract
  • Standard fields - Common fields that appear in documents

Only disable AI extraction when:

  • The field represents internal workflow state
  • The field is for manual user input
  • The field is computed by formulas
  • The field comes from external systems