Skip to main content

Implementation Overview

Implementation Type: Kombo-based Integration
Note Format: Plain Text
Status: Production Ready

Configuration

PropertyValue
Provider Enumcrelate
Note FormatPLAIN
Disposition ReasonsPartial
All Application StagesSupported
Passthrough URL/passthrough/crelate/api
Remote ID FieldId (capital I)

Feature Summary

Kombo-based integration with selective implementation. Some features partially implemented or pending.

Streaming Operations

Stream Jobs

Status: Supported (Custom Implementation)
Method: _get_specific_ats_jobs_batch(limit, include_closed, cursor)
Uses custom batch fetching via Crelate passthrough API to retrieve jobs with custom field values and pagination support.

Stream Applications

Status: Supported (Custom Implementation with Limitations)
Method: _stream_applications(updated_after, for_job_ids)
Crelate’s updated_after parameter doesn’t work correctly in their API, so the implementation ignores it and uses a custom filtering strategy:
  1. Process applications in START stage (new applicants)
  2. Process applications already tracked in our system (to sync updates)
  3. Skip applications in later stages that we’ve never seen before
This ensures we capture new applications while avoiding duplicate processing of applications that moved through stages before we started tracking them.

Stream Candidates

Status: Not Implemented
Method: Inherits from BaseKomboAtsClient (returns empty generator)
Candidate streaming is not yet implemented for Crelate. Use candidate lookup by ID instead.

Move to Stage

Status: Supported (Inherited)
Method: _move_application_to_stage(application, stage)
Moves applications between stages using Kombo’s unified API. Implementation inherited from BaseKomboAtsClient and functional for Crelate, though not extensively tested across all stage transitions.

Get Rejection Reasons

Status: Supported (Inherited)
Method: get_disposition_reasons()
Retrieves rejection reasons from Crelate through Kombo. Functional but coverage of Crelate-specific rejection reasons may vary.

Reject Application

Status: Supported (Inherited)
Method: reject_application(application_id, reason_id)
Rejects applications using Kombo’s unified API. Works with Crelate but may have limitations with certain rejection reason types.

Bulk Reject Applications

Status: Supported (Inherited)
Method: bulk_reject_applications(application_ids, reason_id)
Bulk rejection of multiple applications. Inherited from Kombo with standard functionality.

Create Application

Status: Supported (Inherited)
Method: _create_application_for_candidate(candidate, job)
Creates new application records for candidates in Crelate via Kombo. Some Crelate-specific application fields may not be populated.

Get All Application Stages

Status: Supported (Inherited)
Method: _get_all_application_stages()
Fetches all available application stages from Crelate through Kombo.
  • Get Job by ID (Supported - Custom Implementation)
  • Get Enhanced Job (Supported - Custom Implementation)
  • Batch Job Operations (Supported - Custom Implementation)
Strong job management implementation with custom field support.

Get Candidate by ID

Status: Supported (Inherited)
Method: _get_candidate_by_id(candidate_id)
Retrieves candidate information from Crelate via Kombo.

Find Candidates by Details

Status: Supported (Inherited)
Method: _find_candidates_by_details(first_name, last_name, email, phone)
Searches for candidates by name, email, or phone number through Kombo.

Get Resume

Status: Supported (Inherited)
Method: _get_resume_for_candidate_id(candidate_id)
Retrieves candidate resume data through Kombo. Functionality inherited from BaseKomboAtsClient and expected to work with Crelate, though not extensively verified.

Add Note to Application

Status: Supported (Custom Implementation)
Method: _add_note_to_application(application, note, note_action_type)
Adds plain text notes to applications using Crelate’s passthrough API.

Add Note to Candidate

Status: Supported (Custom Implementation)
Method: _add_note_to_candidate(candidate, note, note_action_type)
Adds plain text notes to candidate records using Crelate’s passthrough API.

Add Attachment to Application

Status: Not Implemented
Method: Inherits NotImplementedError from BaseKomboAtsClient
File attachment functionality for applications is not yet implemented. Attachments cannot be uploaded to applications in Crelate through this integration.

Add Attachment to Candidate

Status: Not Implemented
Method: Inherits NotImplementedError from BaseKomboAtsClient
File attachment functionality for candidates is not yet implemented. Attachments cannot be uploaded to candidates in Crelate through this integration.

Application Custom Fields

Status: Not Supported (Crelate API Limitation)
Methods: Inherits NotImplementedError from BaseKomboAtsClient
Crelate’s API does not support application-level custom fields in a way that’s accessible through Kombo. Attempts to query application custom field schemas return errors from Crelate’s API. This is a limitation of Crelate’s system architecture, not our implementation.

Candidate Custom Fields

Status: Supported (Custom Implementation)
Methods:
  • _get_candidate_custom_fields() - Retrieves custom field definitions
  • _update_candidate_custom_fields(candidate, updates) - Updates custom field values
Full support for getting and updating candidate custom fields through Crelate’s passthrough API.

Job Custom Fields

Status: Supported (Custom Implementation)
Methods:
  • _get_job_custom_fields() - Retrieves custom field definitions
  • _get_job_custom_field_values(job_id) - Gets custom field values
  • _update_job_custom_fields(job, updates) - Updates custom field values
Comprehensive job custom field support using Crelate’s passthrough API.

Implementation Notes

Field Naming Convention

Crelate uses capital 'Id' instead of lowercase 'id' for remote IDs. The client sets remote_id_field_name = "Id" to handle this.

Custom Job Fetching

Uses _get_specific_ats_jobs_batch() to fetch jobs via Crelate’s passthrough API with enhanced data including:
  • Custom field values
  • Job-specific metadata
  • Pagination support

Note Implementation

Custom implementation for adding notes to both applications and candidates using Crelate’s passthrough API.

Implementation Progress

According to the implementation checklist:
  • 15 methods implemented (~60-65% complete)
  • 15 methods pending or not supported
  • Focus areas:
    • Job management (well supported)
    • Candidate custom fields (supported)
    • Missing: Application/candidate streaming, attachments, application custom fields

Implementation Notes

Application Streaming Workaround

Crelate’s API has a bug where the updated_after parameter doesn’t work correctly. Our implementation works around this by fetching all applications and using intelligent filtering to avoid duplicates while capturing new applicants.

Field Naming Convention

Crelate uses capital 'Id' instead of lowercase 'id' for remote IDs. The client sets remote_id_field_name = "Id" to handle this consistently.

Custom Job Fetching

Uses _get_specific_ats_jobs_batch() to fetch jobs via Crelate’s passthrough API with enhanced data including custom field values and pagination support.

Known Limitations

The following features are not yet available for Crelate:
  • Candidate Streaming: Not implemented. Use individual candidate lookup instead.
  • File Attachments: Cannot upload files to applications or candidates.
  • Application Custom Fields: Crelate’s API doesn’t support this feature.
  • Implementation: server/ats/crelate/crelate_ats_client.py
  • Models: server/ats/crelate/crelate_models.py
  • Checklist: server/ats/crelate/COMPLETE_CRELATE_IMPLEMENTATION_CHECKLIST.md
  • Field Mappings: server/ats/field_type_mapper.py (CRELATE_FIELD_MAPPINGS)
  • Base Class: server/ats/base_kombo_ats_client.py

See Also