> ## Documentation Index
> Fetch the complete documentation index at: https://f4c7a9e2d8b1-docs.tenzo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# RecruitCRM ATS

> Feature coverage and implementation details for RecruitCRM integration

## Implementation Overview

**Implementation Type:** Direct API Integration\
**Note Format:** HTML\
**Status:** Production Ready

## Configuration

| Property               | Value                       |
| ---------------------- | --------------------------- |
| Provider Enum          | `recruitcrm`                |
| Note Format            | `HTML`                      |
| Disposition Reasons    | Not Implemented             |
| All Application Stages | Supported                   |
| Base URL               | `https://api.recruitcrm.io` |

## Feature Summary

Direct API integration with strong support for core operations. Missing formal rejection and custom field schema retrieval, but all critical features (streaming, applications, candidates, notes, attachments) are fully functional.

## Known Limitations

<Warning>
  * **No Rejection API**: Cannot formally reject applications with reasons. Workaround: move to "declined" stage
  * **No Custom Fields Schema**: Custom field definitions cannot be fetched dynamically
  * **No Find Candidates**: Candidate search by details not implemented
</Warning>

<AccordionGroup>
  <Accordion title="Streaming Operations (All Supported)" defaultOpen>
    * Stream Jobs (Custom Implementation)
    * Stream Applications (Custom Implementation)
    * Stream Candidates (Custom Implementation)

    All streaming operations include full pagination support and filtering capabilities.
  </Accordion>

  <Accordion title="Application Management (Mostly Supported)">
    * Move to Stage ✅ (Custom Implementation)
    * Create Applications ✅ (Custom Implementation)
    * Get All Stages ✅ (Custom Implementation)
    * Get Rejection Reasons ❌ (Not Implemented)
    * Reject Applications ❌ (Not Implemented - single & bulk)

    **Note:** RecruitCRM supports moving candidates through hiring pipeline stages, but formal rejection with reasons is not yet implemented. Applications can be moved to a "declined" stage as a workaround.
  </Accordion>

  <Accordion title="Job Management (All Supported)">
    * Get Job by ID (Custom Implementation)
    * Get Enhanced Job (Custom Implementation)
    * Batch Job Operations (Custom Implementation)

    Comprehensive job management including company and user associations.
  </Accordion>

  <Accordion title="Candidate Management (All Supported)">
    * Get Candidate by ID (Custom Implementation)
    * Find by Details (Custom Implementation)
    * Get Resume (Custom Implementation with retry logic)

    Advanced candidate search and resume handling with metadata support.
  </Accordion>

  <Accordion title="Notes & Attachments (All Supported)">
    * Application Notes (Custom Implementation)
    * Candidate Notes (Custom Implementation)
    * Application Attachments (Custom Implementation)
    * Candidate Attachments (Custom Implementation)

    Full support for notes and file attachments with MIME type detection.
  </Accordion>

  <Accordion title="Custom Fields (Not Implemented)">
    * Application Custom Fields ❌
    * Candidate Custom Fields ❌
    * Job Custom Fields ❌

    **Note:** While RecruitCRM has custom fields in their API, fetching custom field schemas is not yet implemented. Custom field metadata retrieval raises `NotImplementedError`.
  </Accordion>
</AccordionGroup>

## Implementation Notes

### Candidate History

Custom implementation to track candidate hiring stage history across jobs, including:

* Job status tracking
* Candidate status tracking
* Remark preservation
* Updated by/on timestamps

### Resume Handling

Sophisticated resume retrieval with:

* Multi-redirect following
* Base64 content extraction
* MIME type detection
* Retry logic for reliability

### Pagination

Consistent pagination across all endpoints using RecruitCRM's cursor-based system with configurable page sizes (default: 100).

### Data Models

Rich data models including:

* `RecruitCrmCompany`: Company associations
* `RecruitCrmUser`: User/recruiter data
* `CandidateHistoryEntry`: Stage history tracking
* Custom field value tracking

## Related Files

* Implementation: `server/ats/recruitcrm/recruitcrm_ats_client.py`
* Field Mappings: `server/ats/field_type_mapper.py` (RECRUITCRM\_FIELD\_MAPPINGS)
* Base Class: `server/ats/base_ats_client.py`

## See Also

* [ATS Coverage Matrix](/internal/ats-coverage)
* [RecruitCRM API Documentation](https://api.recruitcrm.io/)
