0% found this document useful (0 votes)
62 views3 pages

Technical Assessment - Senior

The technical assessment contains two tasks to be completed within a week. Task 1 involves designing a system to parse travel emails and extract structured data such as customer names, flight details. The design should include the technology stack, workflow diagram, interfaces, and optional code structure and example. Task 2 involves building a Python web application using Django/Flask with Docker. The app takes a URL, fetches text, builds a word frequency dictionary to display a word cloud. It also encrypts and saves top words to a MySQL DB. An admin page decrypts and lists words and optional sentiment analysis of URLs.

Uploaded by

Aziz Ur Rehman
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
62 views3 pages

Technical Assessment - Senior

The technical assessment contains two tasks to be completed within a week. Task 1 involves designing a system to parse travel emails and extract structured data such as customer names, flight details. The design should include the technology stack, workflow diagram, interfaces, and optional code structure and example. Task 2 involves building a Python web application using Django/Flask with Docker. The app takes a URL, fetches text, builds a word frequency dictionary to display a word cloud. It also encrypts and saves top words to a MySQL DB. An admin page decrypts and lists words and optional sentiment analysis of URLs.

Uploaded by

Aziz Ur Rehman
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

Technical Assessment

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)

2) Create a Python web application using Django/Flask web server.

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)

4) The application should fetch that URL and:


a. Build a dictionary that contains the frequency of use of each word on that page.

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.

7) An “admin” page, that will:


a. List all words entered into the DB, ordered by frequency of usage, visible in decrypted
Form.

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

We are looking for:


• Good project layout/structure
• Clear README
• Clean, well-documented code

Extra points for:


• Displaying just nouns and verbs (no prepositions or articles)
• In the README, describe the best way to safely store and manage the encryption keys
• Elegant front-end layout
• Unit tests

Bonus Task: put everything in Docker

You might also like