Technical Challenge: Senior Python Developer
Purpose
With this challenge, we try to see your skills when it comes to working on assignments that are
similar to what BlueShores’ client will task you with. We evaluate your coding skills,
independence, and creative thinking, as well as your communication skills.
Scenario:
BlueShores’ client has a job seeker platform, where professionals can upload their CV to be
transformed into an anonymous job seeker profile. Job seekers can register on their own, or
after getting an invite from a company. If they are invited by a company, their profile will also be
added to the talent pool of that company. Profiles can be linked to none, one, or multiple talent
pools.
On the other side, there is a talent pool platform, where companies can send out invites to join
their talent pool, and post job openings, as well as give feedback if a certain profile is a good
match for a certain job opening.
At the moment, we are implementing a third party service that matches the job seekers with job
openings. In order to do this, data must be synchronized between the systems. In this
challenge, you are to assume the role of a backend python developer,
Requirements
In Python 3.8+, create the following:
1. Bulk API for Job Seeker Environment:
○ Create a Bulk API as part of the job seeker environment to receive talent pool
data, including member details, and job match feedback* from the talent pool
system.
○ Include triggers to be used in requirement #3.
2. Background Task for Data Sync:
○ Implement a scheduled background task in the talent pool environment that
pushes talent pool data (to be received by the Bulk API from requirement #1) to
the job seeker environment. Implement error handling and retry mechanisms for
failed requests.
3. Event-Driven Triggers for Matching Partner Sync:
○ Create an API that is called every time the Job Seeker environment noticed a
mutation in a Job Seeker profile (insert, update and delete)
○ Add triggers when any of the data that is synced to the third party service is
inserted/updated/deleted to automatically push updates the changes to the
matching partner’s API
○ Ensure data consistency and idempotency in API calls.
*) see the bold part at the bottom of the example profile data below
Example of profile, with talent pool info integrated (in bold at the bottom)
Unset
"cvId": "2ad8595a-76a0-4cf3-ae72-dff8fe57e5e7",
"lastModifiedDt":"2025-01-29T09:49:41.228Z",
"user": {
"userId": "8377fb07-f831-4b96-9400-7ce35586a9a8",
"candidateCode": "WBJ-606"
},
"cvProfile": {
"workingHours": 36,
"willingToTravel": false
},
"cvAddress": {
"geoLocation": [ 52.3730796, 4.8924534 ]
},
"cvItems": {
"experience": [
{
"professionNm": "Data Consultant Analist Specialist",
"company": "abc",
"startD": null,
"endD": null,
"location": null,
"description": null
}
],
"education": [
{
"educationalInstitutionNm": "Het Amsterdams Lyceum",
"degreeCode": "HBO-Master",
"degreeCodeJobDigger": "HBO",
"fieldOfStudyNm": "Data Science And Business Analytics",
"educationalInstitutionLocation": "amsterdam",
"startD": null,
"endD": null,
"educationCompleted": null,
"educationSpecializationDescription": null
}
],
"hobby": [
{
"hobbyNm": "Reading books"
}
],
"language": [
{
"skillNm": "English",
"rating": 2
}
],
"softSkillKnowledge": [
{
"skillId": "012f3431-e259-4a5d-a37d-52bf470c461b",
"skillNm": "Data",
"relatedLineItemType": [ "EDUCATION", "EXPERIENCE"],
"rating": 5
},
{
"skillId": "a35025b1-a442-444e-a369-db89105d4b7e",
"skillNm": "Flexible",
"relatedLineItemType": [],
"rating": null
}
],
"certificate": [
{
"certificateId": "84c0bb4e-6bb6-40a8-aa4f-6cc02d40811f",
"skillNm": "Dutch as a second language certificate (NT2)"
}
]
},
"visibleInTalentPool": true,
"memberOf": [
{
"talentPoolId": "8377fb07-f831-4b96-9400-7ce35586a9a8",
"talentPoolName": "Working At",
}
],
"applicationStatus": [
{
"jobOfferCode": "2784631350_1",
"applicationStatus": "already-applied"
}
],
"matchFeedback": [
{
"jobOfferCode": "2784631350_1",
"matchStatus": "not-a-match"
}
]
Deliverables
● Create a GitHub repository/repositories with:
○ A [Link] explaining how to set up and run your solution.
○ Well-structured and commented Python code.
○ Nice to have: a test suite covering key functionality.
○ Nice to have: using docker for easy setup
● If you have any questions during the cause of this task, write them down, and answer
them with your own assumptions. Include these questions and assumptions in your final
submission.
● Email the link to the Github repository, your questions and assumptions, as well as a
breakdown of your time management for this challenge as a reply to the email with the
challenge request.
Good luck, and happy coding!