Careers / Engineering Challenges
What the work actually looks like.
We want to see how you approach real problems. Below is how we work, what a strong submission looks like, and six tracks to choose from.
Before you start
If you join, the effort you invest here comes back as a bonus on your first salary.
How we work
The way we work.
These five run through everything we build, and through how we read what you build.
- Understand the problem deeplyStrong solutions usually come from careful investigation of the problem and the data behind it before writing code.
- Choose tools based on the problemThe goal is not to showcase a particular tech stack, but to solve the problem as effectively as possible.
- Question default approachesWhen no established solution exists, don't assume one. Explore the problem from multiple angles and be willing to define the approach yourself.
- Deliver real-world valueReal systems require balancing accuracy, speed, and effort to deliver value to those who rely on them.
- Learn and iterate fastExpect uncertainty and experimentation. Progress comes from testing ideas, learning quickly, and continuously improving the solution.
The hardest part is not writing the code. Most solutions fail before the first line is written.
Evaluation
What makes a great solution.
We review these projects as a signal of the impact you could have if you joined our team.
Treat it as a small production-ready project rather than a quick exercise. Submissions that consist of a minimal script, a mostly LLM-generated solution, or a solution where the problem is forced to fit a tool rarely demonstrate the depth we're looking for. We review a large number of projects and are familiar with the patterns these approaches tend to produce.
Problem framing
Did you correctly identify and define the actual problem to solve?
Engineering decisions
Are the key decisions and trade-offs thoughtful and clearly justified?
Use of tools
Are tools used to support the solution, or does the solution appear shaped around the tool instead of the problem?
Execution quality
Does the solution work correctly, respect the requirements and constraints, and cover the relevant cases?
Ownership
Does the solution demonstrate clear ownership of the reasoning, decisions, and implementation, even if AI or other tools were used?
Tracks
Choose your track.
Six challenges, one per role. Each mirrors the work you'd own once you join the team.
Company Data API
Task
The purpose of this assignment is to create an API that returns data about a company. You will need to follow multiple steps in order to create and store the list of companies that the API will query.
Steps
1. Data extraction
1.1 The scraping part
You are required to extract a set of datapoints starting from a predefined list of websites. The goal here is to extract as much valid data about a company as possible, in a reasonable time.
Datapoints to be extracted:
- phone numbers
- social media links
- address / location (optional)
List of websites here: sample-websites.csv
1.2 The data analysis part
Run a quick analysis on the data you were able to extract:
- how many websites were you able to crawl? (coverage)
- how many datapoints were you able to extract from the websites you crawled? (fill rates)
1.3 The scaling part
Find a scalable way to crawl the entire list in no more than 10 minutes.
2. Data retrieval
For this part we recommend you use a Search Engine technology, such as ElasticSearch, Solr or Algolia.
2.1 The storing part
Merge the data extracted in the previous step with this dataset: sample-websites-company-names.csv
The resulting data must be stored in a format that can be further queried by one or multiple datapoints to retrieve an entire row (i.e. the profile of a company).
2.2 The querying (final) part
Build a REST API that accepts as input the name, website, phone number and facebook profile of a company and uses these inputs to match & return a single (best matching) company profile.
The goal of this coding part is to come up with a matching algorithm that will help you achieve a high match rate against your stored company profiles.
Note: the match rate is the number of entries you are able to match and return from the available 1000 company profiles that you put together in the previous step.
To test your API, please use this input sample: API-input-sample.csv
3. Bonus points – no coding required
Think of a way of measuring the accuracy of your matches. The match accuracy refers to how well the provided input matches the returned entry.
Guidelines
- Make sure to pay extra attention to the format and quality of the datapoints that go into your company profiles, as how you collect, model and query your data plays a crucial role in how your API will perform.
- Explore this from as many different angles as you can. It will generate valuable questions.
- From a tech stack perspective, you can use any programming language, toolset or libraries you’re comfortable with or find necessary, especially if you know it would be a better option or a more interesting one (we generally prefer Node, Python, Java).
- At Veridion, we run similar solutions on billions of records. While your project doesn’t need to scale to that level, it would be impressive if it does.
Expected Deliverables
Solution explanation / presentation
Provide an explanation or presentation of your solution and results. You have total creative freedom here. Feel free to impress with your thinking process, the paths you took or decided not to take, the reasoning behind your decisions and what led to your approach.
Output
Your program should output the API that returns data about a company based on the above.
Code and Logic
Include the code that enabled you to achieve this.
Submit your project
When you’re finished with the challenge, please submit the link to your Github project below.
Submit
See you in the next round.
If you're passionate about data, hard problems, and real impact, we look forward to welcoming you to the team. Thank you and good luck!