Technical Assessment - Senior
Technical Assessment - Senior
There are two tasks in this assignment. You are expected to complete both tasks in a week.
Task 1
Level: Senior/Expert
Expected time commitment: 8-10 hours of work
Have you ever seen travel emails that are received when you book a flight or hotel online? How
would you design a system that would receive such an email's text, parse it and return
structured data. For example, in the case of a flight email, the system will return a json object
with fields such as customer name(s), confirmation number, departure time, departure airport,
arrival time, arrival airport etc. Your design should include:
- the technology stack, the libraries you will use (if any)
- a workflow diagram depicting the steps to parse such an email
- the interfaces that your system will provide
- the way you will structure the code (optional)
- a working example (optional)
Task 2
Level : Mid to Senior Level
Learning variables: Python, Django/flask, MySQL, Docker
Our company is keen to develop its technology as a series of cloud based, RESTful micro-
services, with good security measures in place to protect customer data. The code-challenge
thus includes the requirement to build some application-level encryption.
1) Use docker-compose for the different parts of the application (web server, DB)
3) The project should have a single page with a form where I can enter a URL to any website
(e.g. Wikipedia or BBCNews)
5) Use this dictionary to display, on the client’s browser, a “word cloud” of the top 100 words,
where the font size is largest for the words used most frequently, and gets progressively smaller
for words used less often.
6) Each time a URL is fetched, it should save the top 100 words to a MySQL DB, with the
following three columns:
a. The primary key for the word is a salted hash of the word.
b. The word itself is saved in a column that has asymmetrical encryption, and you are
saving the encrypted version of the word.
c. The total frequency count of the word.
Each time a new URL is fetched, you should INSERT or UPDATE the word rows.
8) Optional
a. Use wit.ai to perform sentiment analysis (positive, negative) on the text of the document.
Feel free to train the system in the way you wish.
b. each time a URL is fetched, it should save the sentiment analysis to a MySQL DB, with
the following columns:
i. The primary key as salted hash of the URL
ii. The primary key as the URL
iii. The result of sentiment analysis (positive, negative)
c. In the admin, list all the URLs with their negative/positive qualification