# Candidate Ingestion

<figure><img src="/files/zoFmUBFU1CP4pHqvp6vp" alt=""><figcaption><p>Ingest candidates</p></figcaption></figure>

> Streamline your hiring process by bulk uploading candidate resumes and data!

The candidate ingestion feature allows you to efficiently upload multiple candidate resumes (PDF) and candidate data (CSV) files directly into your interview agents. This allows you to quickly populate your candidate pipeline and trigger automated screening processes.

<details>

<summary>What is Candidate Ingestion?</summary>

Candidate ingestion is HeyMilo's bulk upload system that enables you to:

* **Upload PDF resumes** for automatic parsing and candidate profile creation
* **Import CSV data** with candidate information and contact details
* **Trigger automated workflows** to begin the interview process
* **Integrate with your existing recruitment workflow**

This feature is perfect for recruiters who receive large volumes of applications or want to migrate existing candidate databases into HeyMilo.

</details>

### Accessing the Ingestion Page

To access the candidate ingestion feature for any interview agent:

{% stepper %}
{% step %} <mark style="color:blue;">**Step 1**</mark> Go to **Interviewers** and click on the agent you want to add candidates to.
{% endstep %}

{% step %} <mark style="color:blue;">**Step 2**</mark> Open the **Integrations** tab.
{% endstep %}

{% step %} <mark style="color:blue;">**Step 3**</mark> Scroll down to **Ingestion Gateway** (Bulk ingest candidates via CSV or resume uploads).

<figure><img src="/files/8jkcBrJsz9NTj4htxsKP" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %} <mark style="color:blue;">**Step 4**</mark> Click **Open** to go to the Candidate Ingestion page for that agent.
{% endstep %}

{% step %} <mark style="color:blue;">**Step 5**</mark>**&#x20;You'll be redirected** to the ingestion page for that agent

<figure><img src="/files/VOPdQkSpQyNaTCmcmqNn" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

## Understanding the Ingestion Interface

The ingestion page consists of two main sections:

{% tabs %}
{% tab title="Upload Section" %}
The upload area where you can drag and drop or select files for processing.
{% endtab %}

{% tab title="Extraction Results Section" %}
A comprehensive table showing all uploaded documents, extraction status, and candidate profiles.
{% endtab %}
{% endtabs %}

## Bulk Upload Process

<details>

<summary>Supported File Formats</summary>

The ingestion system supports:

* PDF files
* CSV files
* ZIP files (containing PDFs or CSVs)

</details>

### Step-by-Step Upload Process

{% stepper %}
{% step %} <mark style="color:blue;">**Step 1**</mark> **Prepare your files** in the supported formats (PDF, CSV or ZIP)
{% endstep %}

{% step %} <mark style="color:blue;">**Step 2**</mark>**&#x20;Access the upload section** on the ingestion page
{% endstep %}

{% step %} <mark style="color:blue;">**Step 3**</mark>**&#x20;Drag and drop files** into the upload area, or click to browse and select files
{% endstep %}

{% step %} <mark style="color:blue;">**Step 4**</mark>**&#x20;Review file details** including name and size
{% endstep %}

{% step %} <mark style="color:blue;">**Step 5**</mark> Choose how you want to process the files:

* **Upload and Ingest** (automatic ingestion)
* **Upload Only** (manual review before ingestion)

<figure><img src="/files/ivxYcJV297wyjWxtVWvf" alt="" width="375"><figcaption></figcaption></figure>
{% endstep %}

{% step %} <mark style="color:blue;">**Step 6**</mark>**&#x20;Monitor progress** in the extraction results section below

![File Upload Process](/files/hDO2K5Z41eIP9YMKFq5S)
{% endstep %}
{% endstepper %}

<details>

<summary>Upload Requirements</summary>

* **PDF requirements**: Text-based PDFs work best (avoid scanned images)
* **CSV format**: Include headers with standard fields like name, email, phone, etc.
* **API key**: Automatically generated and configured for your workspace
* **File size limits**:
  * Up to **10 files per upload**
  * Up to **50MB per file**

</details>

## Extraction Results Management

### Understanding Extraction Status

Each uploaded document shows one of several status indicators:

* **Processing**: File is being analyzed and parsed
* **Success**: Extraction completed successfully
* **Failed**: Extraction encountered errors

### Viewing Candidate Profiles

For each successfully processed document, you can:

* **Expand document details** to see individual candidate profiles
* **Review extracted information** including name, and contact details
* **Check extraction quality** and completeness
* **Monitor ingestion status** for each profile

![Profile Extraction Overview](/files/qoCxPDGeQRlMjACsjzOu)

### Managing Extracted Profiles

![Profile Management Actions](/files/Pgc3DeQGF1NvIJyN5bZ3)

The extraction results interface provides several management options:

<details>

<summary>👤 Individual Profile Actions</summary>

* **Ingest Profile:** Add a specific candidate profile to the interview experience
* **Delete Profile**: Remove unwanted or duplicate profiles
* **View Details**: Examine extracted candidate information

</details>

<details>

<summary>👥 Bulk Operations</summary>

* **Select Multiple Profiles**: Use checkboxes to select candidates
* **Bulk Ingest:** Add all selected candidate profiles to the interview experience
* **Bulk Delete**: Remove multiple profiles at once
* **Filter Results**:
  * Status (Processing, Success, Failed)
  * File Type (PDF, CSV)
  * Results per page (5, 10, 20, 50)

</details>

## Webhook Integration and Ingestion

<details>

<summary>Understanding Webhooks</summary>

When you ingest candidate profiles, HeyMilo automatically:

* **Create candidate records** in your interview agent
* **Populate candidate information** from extracted data
* **Trigger automated workflows** like email invitations
* **Update candidate status** in your dashboard

</details>

<details>

<summary>Ingestion Process</summary>

* **Click "Ingest Selected"** or use bulk actions
* **Monitor webhook status** in the results table
* **Verify candidates appear** in your main candidate dashboard
* **Check for any failed ingestions** and retry if needed

</details>

<details>

<summary>Automatic vs Manual Ingestion</summary>

* **Automatic**: Profiles are ingested immediately when using **Upload and Ingest**
* **Manual**: Profiles are extracted only when using **Upload Only** and must be manually ingested later

</details>

## API Key Management

Most users never need to manage API keys manually, this is handled automatically by HeyMilo.

<details>

<summary>Automatic API Key Setup</summary>

The ingestion system automatically handles API key management:

* **Auto-generation**: Creates API keys for your workspace if none exist
* **Key reuse**: Uses existing valid API keys when available
* **Security**: Keys are scoped to your specific workspace and posting
* **URL key extraction**: Automatically retrieves webhook URLs for ingestion

</details>

<details>

<summary>Troubleshooting API Issues</summary>

If you encounter API-related errors:

1. **Check workspace permissions** - ensure you have admin access
2. **Verify posting status** - the interview agent must be active
3. **Review error messages** - look for specific API key or URL key issues
4. **Contact support** if problems persist <support@heymilo.ai>

</details>

## Best Practices for Successful Ingestion

<details>

<summary>✅ File Preparation</summary>

* **Clean PDF files**: Ensure resumes are text-based, not scanned images
* **Standardized CSV format**: Use consistent column headers and data formats
* **File organization**: Group related candidates in single uploads when possible
* **Quality check**: Review files before upload to avoid processing errors

</details>

<details>

<summary>✅ Workflow Optimization</summary>

* **Batch processing**: Upload multiple files at once for efficiency
* **Monitor progress**: Check extraction status regularly during processing
* **Quality review**: Examine extracted data before triggering ingestion
* **Selective ingestion**: Only ingest high-quality, relevant candidates

</details>

<details>

<summary>✅ Data Management</summary>

* **Regular cleanup**: Remove failed or duplicate extractions
* **Status monitoring**: Track ingestion success rates and identify issues
* **Backup important data**: Keep original files as backup
* **Document your process**: Maintain consistent upload and review procedures

</details>

## Monitoring and Analytics

<details>

<summary>📊 Extraction Statistics</summary>

The ingestion page provides key metrics:

* **Total profiles extracted**: Count of all candidate profiles processed
* **Ingested profiles**: Number of candidates successfully added to your agent
* **Processing jobs**: Active extraction tasks in progress

</details>

<details>

<summary>📊 Performance Tracking</summary>

Monitor your ingestion performance by tracking:

* **Upload success rates**: Percentage of files processed successfully
* **Extraction quality**: Completeness and accuracy of parsed data
* **Ingestion efficiency**: Time from upload to candidate availability
* **Error patterns**: Common issues to address in future uploads

</details>

## Troubleshooting Common Issues

<details>

<summary>⚠️ Upload Problems</summary>

**File won't upload**

* Check file format (PDF, CSV or Zip only)
* Verify file size is under limits
* Ensure stable internet connection
* Try refreshing the page and uploading again

**Upload fails repeatedly**

* Check file corruption or formatting issues
* Verify workspace permissions
* Contact support with specific error messages

</details>

<details>

<summary>⚠️ Extraction Issues</summary>

**Poor extraction quality**

* Use text-based PDFs instead of scanned images
* Ensure clear, standard resume formatting
* Check for unusual fonts or layouts
* Consider manual data entry for problematic files

**Missing candidate information**

* Review original file for completeness
* Check if data is in non-standard formats
* Verify CSV column headers match expected fields
* Consider supplementing with additional data sources

</details>

<details>

<summary>⚠️ Ingestion Failures</summary>

**Webhook errors**

* Check API key validity and permissions
* Verify posting is active and accessible
* Review error logs for specific issues
* Retry ingestion after resolving underlying problems

**Candidates not appearing**

* Confirm ingestion was triggered successfully
* Check candidate filters in your main dashboard
* Verify webhook completion status
* Allow time for processing and database updates

</details>

{% hint style="info" %}
**Pro Tip**: Start with a small batch of high-quality files to test your ingestion workflow before processing large volumes of candidates.
{% endhint %}

## Integration with Your Hiring Workflow

### Pre-Ingestion Setup

Before using candidate ingestion:

1. **Configure your interview agent** with appropriate questions and scoring
2. **Set up email templates** for candidate outreach
3. **Prepare your candidate review process** for the influx of new profiles
4. **Test the workflow** with a small sample of candidates

### Post-Ingestion Activities

After successful ingestion:

1. **Review candidate profiles** in your main dashboard
2. **Trigger interview invitations** for qualified candidates
3. **Monitor completion rates** and candidate engagement
4. **Analyze results** to refine your ingestion criteria

### Workflow Automation

Consider automating parts of your ingestion process:

* **Scheduled uploads** for regular candidate batches
* **Automatic ingestion** for high-quality extractions
* **Email triggers** for newly ingested candidates
* **Status notifications** for completed processing

## Advanced Features

<details>

<summary>🔍 Filtering and Search</summary>

The extraction results interface supports:

* **Status filtering**: Show only processing, successful, or failed extractions
* **Type filtering**: Separate PDF and CSV processing results
* **Search functionality**: Find specific candidates or documents
* **Date sorting**: Organize by upload or processing time

</details>

<details>

<summary>👥 Bulk Operations</summary>

Efficiently manage large candidate volumes:

* **Select all**: Choose entire pages of results
* **Filtered selection**: Select based on status or criteria
* **Batch processing**: Perform actions on multiple items simultaneously
* **Progress tracking**: Monitor bulk operation completion

</details>

<details>

<summary>📄 Data Export</summary>

Export candidate data for external use:

* **CSV export**: Download candidate information in spreadsheet format
* **Filtered exports**: Export only selected or filtered candidates
* **Status reports**: Generate processing and ingestion summaries
* **Integration data**: Prepare files for ATS or other system imports

</details>

{% hint style="success" %}
**Success Tip**: The most effective ingestion workflows combine automated processing with selective human review to ensure quality while maintaining efficiency.
{% endhint %}

## Ready to Start Ingesting Candidates?

Now that you understand the complete candidate ingestion workflow, you're ready to start uploading and processing candidate files. Begin with a small test batch to familiarize yourself with the process, then scale up to handle your full candidate pipeline efficiently.

The ingestion feature integrates seamlessly with the rest of your HeyMilo workflow, from initial upload through final candidate selection and hiring decisions.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.admin.heymilo.ai/inviting-candidates/sharing-links/candidate-ingestion.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
