Overview
This example demonstrates a comprehensive data definition for extracting data from structured forms such as applications, surveys, registrations, and questionnaires. It handles diverse field types, conditional logic, and workflow tracking.Use Cases
- Application Processing: Job applications, loan applications, enrollment forms
- Survey Analysis: Customer satisfaction, feedback forms, research questionnaires
- Registration Systems: Event registration, membership signup, account creation
- Compliance Forms: Consent forms, declarations, regulatory submissions
- Assessment Forms: Evaluations, inspections, audits
Complete Data Definition Structure
YAML Configuration
Copy
Ask AI
slug: form-data
name: Form Data Extraction
description: Extract structured data from forms, applications, and surveys
taxonomyType: CONTENT
enabled: true
taxons:
# ==========================================
# Form Metadata
# ==========================================
- name: form_metadata
label: Form Metadata
group: true
children:
- name: form_type
label: Form Type
taxonType: SELECTION
valuePath: VALUE_OR_ALL_CONTENT
semanticDefinition: |
The type of form. Look for headers, titles, or form numbers that indicate
the purpose (e.g., "Employment Application", "Customer Feedback Survey").
selectionOptions:
- label: "Job Application"
- label: "Loan Application"
- label: "Enrollment Form"
- label: "Registration Form"
- label: "Survey"
- label: "Feedback Form"
- label: "Consent Form"
- label: "Questionnaire"
- label: "Inspection Form"
- label: "Evaluation Form"
- label: "Other"
- name: form_number
label: Form Number/ID
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: |
The unique identifier for this form submission (e.g., "APP-2024-001234",
"Form #5678"). May be in header or footer.
- name: form_version
label: Form Version
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: |
The version of the form template (e.g., "v2.1", "Rev 3", "03/2024").
- name: submission_date
label: Submission Date
taxonType: DATE
valuePath: VALUE_OR_ALL_CONTENT
semanticDefinition: |
The date the form was submitted or received. Look for "Date Submitted",
"Received Date", or date stamps.
- name: filename
label: Source Filename
taxonType: STRING
valuePath: METADATA
metadataValue: FILENAME
- name: processing_date
label: Processing Date
taxonType: DATE_TIME
valuePath: METADATA
metadataValue: PROCESSING_DATE
# ==========================================
# Applicant/Respondent Information
# ==========================================
- name: respondent
label: Respondent Information
group: true
description: Information about the person completing the form
children:
- name: personal_info
label: Personal Information
group: true
children:
- name: full_name
label: Full Name
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
semanticDefinition: |
The full legal name of the person completing the form.
May be split into first name, middle name, last name fields.
- name: first_name
label: First Name
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "First name if separated from full name"
- name: middle_name
label: Middle Name/Initial
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Middle name or initial if present"
- name: last_name
label: Last Name
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Last name/surname if separated"
- name: date_of_birth
label: Date of Birth
taxonType: DATE
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Applicant's date of birth if requested on form"
- name: age
label: Age
taxonType: NUMBER
valuePath: FORMULA
nullable: true
semanticDefinition: "YEAR_DIFF(TODAY(), date_of_birth)"
description: "Calculated age from date of birth"
- name: gender
label: Gender
taxonType: SELECTION
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
selectionOptions:
- label: "Male"
- label: "Female"
- label: "Non-binary"
- label: "Prefer not to say"
- label: "Other"
- name: ssn_or_id
label: SSN/ID Number
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: |
Social Security Number, National ID, or other government ID number
if requested on form. Handle as sensitive data.
- name: contact_info
label: Contact Information
group: true
children:
- name: email
label: Email Address
taxonType: EMAIL_ADDRESS
valuePath: VALUE_OR_ALL_CONTENT
semanticDefinition: |
Primary email address. Look for fields labeled "Email", "E-mail",
or "Email Address".
- name: phone_primary
label: Primary Phone
taxonType: PHONE_NUMBER
valuePath: VALUE_OR_ALL_CONTENT
semanticDefinition: |
Primary phone number. May be labeled "Phone", "Mobile", "Cell Phone",
or "Primary Contact Number".
- name: phone_alternate
label: Alternate Phone
taxonType: PHONE_NUMBER
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Alternate or secondary phone number if provided"
- name: address
label: Mailing Address
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: |
Complete mailing address. May be combined or split across
multiple fields (street, city, state, zip).
- name: street_address
label: Street Address
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Street address line 1"
- name: address_line_2
label: Address Line 2
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Apartment, suite, or unit number"
- name: city
label: City
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
- name: state_province
label: State/Province
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
- name: postal_code
label: Postal Code
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "ZIP code, postal code, or postcode"
- name: country
label: Country
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
- name: emergency_contact
label: Emergency Contact
group: true
nullable: true
children:
- name: name
label: Contact Name
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Emergency contact person's name"
- name: relationship
label: Relationship
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Relationship to applicant (e.g., Spouse, Parent, Friend)"
- name: phone
label: Contact Phone
taxonType: PHONE_NUMBER
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
# ==========================================
# Form Questions/Fields
# ==========================================
- name: form_responses
label: Form Responses
group: true
description: Answers to form questions
children:
# Text Questions
- name: text_responses
label: Text Responses
group: true
nullable: true
children:
- name: question_label
label: Question
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
multiValue: true
semanticDefinition: |
The text of each question that expects a free-text response.
Extract the question label exactly as it appears.
- name: answer
label: Answer
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
multiValue: true
semanticDefinition: |
The applicant's written response to each text question.
# Multiple Choice Questions
- name: multiple_choice
label: Multiple Choice Responses
group: true
nullable: true
children:
- name: question_label
label: Question
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
multiValue: true
semanticDefinition: "Multiple choice question text"
- name: selected_option
label: Selected Option
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
multiValue: true
semanticDefinition: |
The option selected by the applicant. Look for checkmarks,
highlighted options, or marked choices.
# Yes/No Questions
- name: yes_no_questions
label: Yes/No Questions
group: true
nullable: true
children:
- name: question_label
label: Question
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
multiValue: true
- name: answer
label: Answer
taxonType: BOOLEAN
valuePath: VALUE_OR_ALL_CONTENT
multiValue: true
semanticDefinition: |
Extract true for Yes/checked/agree, false for No/unchecked/disagree.
# Numeric Responses
- name: numeric_responses
label: Numeric Responses
group: true
nullable: true
children:
- name: question_label
label: Question
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
multiValue: true
- name: value
label: Numeric Value
taxonType: NUMBER
valuePath: VALUE_OR_ALL_CONTENT
multiValue: true
semanticDefinition: "Extract numeric values (counts, ratings, quantities)"
# Rating Scale Questions
- name: rating_responses
label: Rating Scale Responses
group: true
nullable: true
children:
- name: question_label
label: Question
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
multiValue: true
- name: rating_value
label: Rating
taxonType: NUMBER
valuePath: VALUE_OR_ALL_CONTENT
multiValue: true
semanticDefinition: |
Extract the numeric rating (e.g., 1-5, 1-10). Look for selected
stars, circled numbers, or marked scale positions.
- name: scale_range
label: Scale Range
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
multiValue: true
nullable: true
semanticDefinition: |
The range of the rating scale (e.g., "1-5", "1-10", "Poor to Excellent")
# ==========================================
# Specific Use Case Fields
# ==========================================
# For Employment Applications
- name: employment_info
label: Employment Information
group: true
nullable: true
description: For job/employment application forms
children:
- name: position_applied
label: Position Applied For
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Job title or position the applicant is applying for"
- name: desired_salary
label: Desired Salary
taxonType: CURRENCY
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Expected or desired salary/compensation"
- name: available_start_date
label: Available Start Date
taxonType: DATE
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Earliest date the applicant can start"
- name: employment_type
label: Employment Type Sought
taxonType: SELECTION
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
selectionOptions:
- label: "Full-time"
- label: "Part-time"
- label: "Contract"
- label: "Internship"
- label: "Temporary"
- name: resume_attached
label: Resume Attached
taxonType: BOOLEAN
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Is a resume/CV attached or referenced?"
- name: references_provided
label: References Provided
taxonType: BOOLEAN
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Did the applicant provide professional references?"
# For Loan/Financial Applications
- name: financial_info
label: Financial Information
group: true
nullable: true
description: For loan/credit application forms
children:
- name: loan_amount_requested
label: Loan Amount Requested
taxonType: CURRENCY
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "The amount of money being requested"
- name: loan_purpose
label: Loan Purpose
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Purpose of the loan (e.g., Home purchase, Auto, Education)"
- name: annual_income
label: Annual Income
taxonType: CURRENCY
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Applicant's annual gross income"
- name: employment_status
label: Employment Status
taxonType: SELECTION
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
selectionOptions:
- label: "Employed Full-time"
- label: "Employed Part-time"
- label: "Self-employed"
- label: "Unemployed"
- label: "Retired"
- label: "Student"
- name: employer_name
label: Employer Name
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
- name: years_employed
label: Years with Current Employer
taxonType: NUMBER
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
# For Event/Program Registration
- name: registration_info
label: Registration Information
group: true
nullable: true
description: For event or program registration forms
children:
- name: event_name
label: Event/Program Name
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Name of the event or program being registered for"
- name: registration_type
label: Registration Type
taxonType: SELECTION
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
selectionOptions:
- label: "Individual"
- label: "Group"
- label: "Family"
- label: "Student"
- label: "Professional"
- name: number_of_attendees
label: Number of Attendees
taxonType: NUMBER
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Total number of people being registered"
- name: dietary_restrictions
label: Dietary Restrictions
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
multiValue: true
semanticDefinition: |
Any dietary restrictions, allergies, or special meal requirements
- name: accessibility_needs
label: Accessibility Needs
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Special accessibility or accommodation requirements"
# ==========================================
# Agreements and Signatures
# ==========================================
- name: agreements
label: Agreements and Signatures
group: true
children:
- name: terms_accepted
label: Terms and Conditions Accepted
taxonType: BOOLEAN
valuePath: VALUE_OR_ALL_CONTENT
semanticDefinition: |
Did the applicant check or sign the box agreeing to terms and conditions?
Look for checkboxes near legal text or signature areas.
- name: terms_text
label: Terms Text Reference
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: |
The actual terms text or a reference to where terms can be found
(e.g., "See attached", "Available at www.example.com/terms")
- name: consent_given
label: Consent for Data Use
taxonType: BOOLEAN
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: |
Did the applicant consent to use of their data (marketing, communication, etc.)?
- name: signature_present
label: Signature Present
taxonType: BOOLEAN
valuePath: VALUE_OR_ALL_CONTENT
semanticDefinition: |
Is there a handwritten or electronic signature on the form?
- name: signature_date
label: Signature Date
taxonType: DATE
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: |
The date the form was signed. Look near signature areas for dates.
- name: witness_signature
label: Witness Signature Present
taxonType: BOOLEAN
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Is there a witness signature if required?"
- name: witness_name
label: Witness Name
taxonType: STRING
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Name of witness if signature was witnessed"
- name: notarized
label: Notarized
taxonType: BOOLEAN
valuePath: VALUE_OR_ALL_CONTENT
nullable: true
semanticDefinition: "Was the form notarized? Look for notary stamps/seals"
# ==========================================
# Processing and Status
# ==========================================
- name: processing_status
label: Processing Status
group: true
description: Administrative fields for workflow tracking
children:
- name: status
label: Processing Status
taxonType: SELECTION
valuePath: REVIEW
userEditable: true
selectionOptions:
- label: "New"
- label: "Under Review"
- label: "Pending Additional Information"
- label: "Approved"
- label: "Rejected"
- label: "On Hold"
- label: "Completed"
- name: assigned_to
label: Assigned To
taxonType: STRING
valuePath: REVIEW
userEditable: true
nullable: true
description: "Person or team responsible for reviewing this form"
- name: priority
label: Priority
taxonType: SELECTION
valuePath: REVIEW
userEditable: true
selectionOptions:
- label: "Low"
- label: "Normal"
- label: "High"
- label: "Urgent"
- name: review_notes
label: Review Notes
taxonType: STRING
valuePath: REVIEW
userEditable: true
nullable: true
description: "Internal notes from reviewers"
- name: follow_up_required
label: Follow-up Required
taxonType: BOOLEAN
valuePath: REVIEW
userEditable: true
description: "Does this submission require follow-up action?"
- name: follow_up_date
label: Follow-up Date
taxonType: DATE
valuePath: REVIEW
userEditable: true
nullable: true
description: "When to follow up with applicant"
- name: completeness_score
label: Completeness Score
taxonType: NUMBER
valuePath: FORMULA
description: "Percentage of required fields completed"
semanticDefinition: |
Calculate percentage of non-empty required fields to measure form completeness
# ==========================================
# Validation Rules
# ==========================================
validationRules:
# Required Fields
- name: "Form type required"
ruleFormula: "NOT_EMPTY(form_metadata.form_type)"
messageFormula: '"Form type must be specified"'
overridable: false
- name: "Submission date required"
ruleFormula: "NOT_EMPTY(form_metadata.submission_date)"
messageFormula: '"Submission date is required"'
overridable: false
- name: "Respondent name required"
ruleFormula: |
NOT_EMPTY(respondent.personal_info.full_name) OR
(NOT_EMPTY(respondent.personal_info.first_name) AND
NOT_EMPTY(respondent.personal_info.last_name))
messageFormula: '"Respondent name is required (full name or first + last)"'
overridable: false
- name: "Contact information required"
ruleFormula: |
NOT_EMPTY(respondent.contact_info.email) OR
NOT_EMPTY(respondent.contact_info.phone_primary)
messageFormula: '"At least one contact method (email or phone) is required"'
overridable: false
- name: "Signature required"
ruleFormula: "agreements.signature_present == true"
messageFormula: '"Form must be signed"'
overridable: false
- name: "Terms must be accepted"
ruleFormula: "agreements.terms_accepted == true"
messageFormula: '"Terms and conditions must be accepted"'
overridable: false
# Date Logic
- name: "Submission date not in future"
ruleFormula: "form_metadata.submission_date <= TODAY()"
messageFormula: '"Submission date cannot be in the future"'
overridable: true
- name: "Signature date matches or before submission"
ruleFormula: |
IS_EMPTY(agreements.signature_date) OR
agreements.signature_date <= form_metadata.submission_date
messageFormula: '"Signature date should not be after submission date"'
overridable: true
- name: "Birth date reasonable"
ruleFormula: |
IS_EMPTY(respondent.personal_info.date_of_birth) OR
(respondent.personal_info.date_of_birth < TODAY() AND
YEAR_DIFF(TODAY(), respondent.personal_info.date_of_birth) < 120)
messageFormula: '"Date of birth appears invalid"'
overridable: true
- name: "Applicant of legal age"
ruleFormula: |
IS_EMPTY(respondent.personal_info.date_of_birth) OR
YEAR_DIFF(TODAY(), respondent.personal_info.date_of_birth) >= 18
messageFormula: '"Applicant must be 18 years or older"'
overridable: true
# Contact Validation
- name: "Email format validation"
ruleFormula: |
IS_EMPTY(respondent.contact_info.email) OR
REGEX_MATCH(respondent.contact_info.email, "^[^@]+@[^@]+\\.[^@]+$")
messageFormula: '"Email address format appears invalid"'
overridable: true
- name: "Phone format validation"
ruleFormula: |
IS_EMPTY(respondent.contact_info.phone_primary) OR
LENGTH(DIGITS_ONLY(respondent.contact_info.phone_primary)) >= 10
messageFormula: '"Phone number should contain at least 10 digits"'
overridable: true
# Conditional Requirements
- name: "Emergency contact required for minors"
conditional: true
conditionalFormula: |
NOT_EMPTY(respondent.personal_info.date_of_birth) AND
YEAR_DIFF(TODAY(), respondent.personal_info.date_of_birth) < 18
ruleFormula: |
NOT_EMPTY(respondent.emergency_contact.name) AND
NOT_EMPTY(respondent.emergency_contact.phone)
messageFormula: '"Emergency contact required for applicants under 18"'
overridable: false
- name: "Employer info required if employed"
conditional: true
conditionalFormula: |
financial_info.employment_status IN ["Employed Full-time", "Employed Part-time"]
ruleFormula: "NOT_EMPTY(financial_info.employer_name)"
messageFormula: '"Employer name required for employed applicants"'
overridable: true
- name: "Resume required for job applications"
conditional: true
conditionalFormula: 'form_metadata.form_type == "Job Application"'
ruleFormula: "employment_info.resume_attached == true"
messageFormula: '"Resume/CV must be attached for job applications"'
overridable: true
- name: "Witness required for notarized forms"
conditional: true
conditionalFormula: "agreements.notarized == true"
ruleFormula: |
agreements.witness_signature == true AND
NOT_EMPTY(agreements.witness_name)
messageFormula: '"Witness signature required for notarized forms"'
overridable: false
# Data Quality
- name: "Postal code format (US)"
ruleFormula: |
IS_EMPTY(respondent.contact_info.postal_code) OR
respondent.contact_info.country != "United States" OR
REGEX_MATCH(respondent.contact_info.postal_code, "^\\d{5}(-\\d{4})?$")
messageFormula: '"US postal code should be 5 digits or ZIP+4 format"'
overridable: true
- name: "Rating values within scale"
ruleFormula: |
ALL_VALUES(form_responses.rating_responses.rating_value) <= 10 AND
ALL_VALUES(form_responses.rating_responses.rating_value) >= 1
messageFormula: '"Rating values should be between 1 and 10"'
overridable: true
# Business Rules
- name: "Loan amount reasonable"
conditional: true
conditionalFormula: 'form_metadata.form_type == "Loan Application"'
ruleFormula: |
financial_info.loan_amount_requested > 0 AND
financial_info.loan_amount_requested <= 1000000
messageFormula: '"Loan amount should be between $1 and $1,000,000"'
overridable: true
- name: "Income verification for large loans"
conditional: true
conditionalFormula: |
form_metadata.form_type == "Loan Application" AND
financial_info.loan_amount_requested > 50000
ruleFormula: "NOT_EMPTY(financial_info.annual_income)"
messageFormula: '"Annual income required for loans over $50,000"'
overridable: false
# ==========================================
# Conditional Formatting
# ==========================================
conditionalFormats:
- name: "Incomplete form"
formula: "processing_status.completeness_score < 80"
backgroundColor: "#FEE2E2"
textColor: "#991B1B"
icon: "exclamation-circle"
- name: "Urgent priority"
formula: 'processing_status.priority == "Urgent"'
backgroundColor: "#FEF3C7"
textColor: "#92400E"
fontWeight: "bold"
icon: "exclamation-triangle"
- name: "Follow-up overdue"
formula: |
processing_status.follow_up_required == true AND
NOT_EMPTY(processing_status.follow_up_date) AND
processing_status.follow_up_date < TODAY()
backgroundColor: "#FED7AA"
textColor: "#9A3412"
icon: "clock"
- name: "Missing signature"
formula: "agreements.signature_present == false"
backgroundColor: "#FEE2E2"
textColor: "#991B1B"
icon: "pen"
- name: "Minor applicant"
formula: |
NOT_EMPTY(respondent.personal_info.date_of_birth) AND
YEAR_DIFF(TODAY(), respondent.personal_info.date_of_birth) < 18
backgroundColor: "#DBEAFE"
textColor: "#1E40AF"
icon: "user"
- name: "High-value loan application"
formula: |
form_metadata.form_type == "Loan Application" AND
financial_info.loan_amount_requested > 100000
backgroundColor: "#FEF3C7"
textColor: "#92400E"
fontWeight: "bold"
icon: "dollar-sign"
- name: "Approved"
formula: 'processing_status.status == "Approved"'
backgroundColor: "#D1FAE5"
textColor: "#065F46"
icon: "check-circle"
- name: "Rejected"
formula: 'processing_status.status == "Rejected"'
backgroundColor: "#FEE2E2"
textColor: "#991B1B"
icon: "times-circle"
Key Features
Universal Form Structure
- Flexible Question Types: Text, multiple choice, yes/no, numeric, rating scales
- Multi-Value Support: Handle repeated questions or multi-select responses
- Conditional Fields: Different field sets for different form types
Comprehensive Contact Information
- Multiple Contact Methods: Email, phone (primary and alternate), full address
- Structured Address: Separate fields for street, city, state, postal code
- Emergency Contacts: Capture backup contact information when needed
Specialized Form Types
Employment Applications:- Position applied for, desired salary, availability
- Resume/references tracking
- Employment type preferences
- Loan amount, purpose, financial details
- Employment and income verification
- Business rule validation for loan limits
- Event details, attendee count
- Dietary restrictions and accessibility needs
- Group vs. individual registration
Signature and Agreement Tracking
- Legal Acceptance: Terms and conditions, consent checkboxes
- Signature Verification: Presence, date, witness information
- Notarization: Track notary stamps and requirements
Workflow Management
- Status Tracking: New, under review, approved, rejected, etc.
- Assignment: Route to appropriate reviewers
- Priority Management: Flag urgent submissions
- Follow-up Tracking: Schedule and track required actions
- Completeness Scoring: Automated calculation of form completion
Validation Strategy
Critical Validations (Non-overridable)
Copy
Ask AI
- Form type must be specified
- Respondent name required
- At least one contact method required
- Signature required
- Terms must be accepted
- Emergency contact for minors
- Witness for notarized forms
- Income verification for large loans
Quality Checks (Overridable)
Copy
Ask AI
- Submission date not in future
- Birth date reasonable
- Email format validation
- Phone format validation
- Postal code format (US)
- Rating values within scale
Conditional Business Rules
Copy
Ask AI
- Employer info required if employed
- Resume required for job applications
- Loan amount reasonable limits
- Income required for loans > $50k
Conditional Formatting
Provides visual indicators for:- Incomplete forms (< 80% complete) - Red alert
- Urgent priority - Gold highlight
- Overdue follow-ups - Orange warning
- Missing signatures - Red alert
- Minor applicants - Blue information
- High-value loans (> $100k) - Gold highlight
- Approved/Rejected - Green/Red status
Usage Tips
For HR/Recruitment Teams
- Use
employment_infofields for job application processing - Track
resume_attachedandreferences_providedfor completeness - Monitor
processing_statusfor workflow management - Use
priorityfield to handle urgent applications
For Financial Services
- Extract
financial_infofor loan processing - Validate income against loan amount for risk assessment
- Use
employment_statusandyears_employedfor stability checks - Track
processing_statusfor approval workflow
For Event Organizers
- Use
registration_infofor attendee management - Track
dietary_restrictionsandaccessibility_needsfor planning - Monitor
number_of_attendeesfor capacity planning - Use
contact_infofor event communications
For Compliance Officers
- Verify
agreements.terms_acceptedfor legal compliance - Check
signature_presentandsignature_datefor validity - Validate
notarizedandwitness_signaturewhen required - Track
consent_givenfor data protection compliance
Best Practices
- Capture All Question Types: Use appropriate taxonTypes for different question formats
-
Handle Multi-Value Fields: Enable
multiValue: truefor questions that may have multiple answers - Validate Contact Information: Use EMAIL_ADDRESS and PHONE_NUMBER types for automatic validation
- Track Signatures Carefully: Signature presence and date are critical for legal validity
- Use Conditional Validation: Apply rules based on form type or applicant characteristics
- Calculate Completeness: Use formula fields to measure how complete submissions are
- Enable Workflow Tracking: Administrative fields help route and prioritize form processing
- Respect Age Requirements: Validate applicant age and require emergency contacts for minors
- Handle Sensitive Data: Mark SSN/ID fields as sensitive and follow data protection rules
- Support Multiple Form Types: Use conditional fields to handle different form scenarios
Integration Examples
CRM/Applicant Tracking
Copy
Ask AI
externalName: leadSource → form_metadata.form_type
externalName: fullName → respondent.personal_info.full_name
externalName: email → respondent.contact_info.email
externalName: status → processing_status.status
Marketing Automation
Copy
Ask AI
externalName: contactEmail → respondent.contact_info.email
externalName: optIn → agreements.consent_given
externalName: submissionDate → form_metadata.submission_date
Loan Origination System
Copy
Ask AI
externalName: loanAmount → financial_info.loan_amount_requested
externalName: annualIncome → financial_info.annual_income
externalName: employmentStatus → financial_info.employment_status
externalName: applicationStatus → processing_status.status
Related Examples
- Invoice Data Definition - Financial document extraction
- Contract Data Definition - Legal document metadata
- Purchase Order Data Definition - Procurement document extraction
