Implementation Overview
Implementation Type: Kombo-based IntegrationNote Format: Plain Text
Status: Production Ready
Configuration
| Property | Value |
|---|---|
| Provider Enum | crelate |
| Note Format | PLAIN |
| Disposition Reasons | Partial |
| All Application Stages | Supported |
| Passthrough URL | /passthrough/crelate/api |
| Remote ID Field | Id (capital I) |
Feature Summary
Kombo-based integration with selective implementation. Some features partially implemented or pending.Streaming Operations
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:- Process applications in START stage (new applicants)
- Process applications already tracked in our system (to sync updates)
- Skip applications in later stages that we’ve never seen before
Stream Candidates
Status: Not ImplementedMethod: Inherits from BaseKomboAtsClient (returns empty generator)Candidate streaming is not yet implemented for Crelate. Use candidate lookup by ID instead.
Application Management
Application Management
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.Job Management (Mostly Supported)
Job Management (Mostly Supported)
- Get Job by ID (Supported - Custom Implementation)
- Get Enhanced Job (Supported - Custom Implementation)
- Batch Job Operations (Supported - Custom Implementation)
Candidate Management
Candidate Management
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.Notes & Attachments
Notes & Attachments
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 ImplementedMethod: Inherits NotImplementedError from BaseKomboAtsClientFile 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 ImplementedMethod: Inherits NotImplementedError from BaseKomboAtsClientFile attachment functionality for candidates is not yet implemented. Attachments cannot be uploaded to candidates in Crelate through this integration.
Custom Fields
Custom Fields
Application Custom Fields
Status: Not Supported (Crelate API Limitation)Methods: Inherits NotImplementedError from BaseKomboAtsClientCrelate’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
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
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 theupdated_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.
Related Files
- 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