GenAI Developer Intern Assignment
Guidelines:
● You can use Python for implementing the solution. You may choose
FastAPI/Django/Flask or any other Server framework for creating a Web Server.
● You would need to use a database (MySQL/ MongoDB) for persistent storage.
● Your APIs should be well tested and should be in a demo-able state. You will be asked
to run these APIs after this assignment.
● Use of AI or any kind of plagiarism is STRICTLY PROHIBITED, if detected by our
systems, your Application will be straightaway rejected automatically.
● The focus should be on developing a robust, scalable, and maintainable backend
system.
● Candidates should adhere to best practices in software development, including OOP
principles, SOLID design patterns, clean code, and RESTful API design.
● The requirements are divided into two sections:
● Mandatory Section: You must complete ALL mandatory requirements to qualify.
● Bonus Section: Attempt the bonus requirements only after completing the
mandatory section. Bonus features will earn you extra points and provide an edge over
other candidates.
Problem statement: Linkedin Insights Microservice
Your task is to design and implement a Linkedin Insights service,
which is basically an application to check insights of a given Page ID of a
LinkedIn Page, where Page ID means the last part we see in the Page’s
URL. For example: Boat company’s page’s URL is ->
[Link] so deepsolv is the Page ID
you'll get.
Your Application will be able to fetch details of a given Page ID (either by
scraping or using API, we recommend scraping to save your development
time, if not familiar with LinkedIn’s APIs), store the required information into
a Database, with separate schemas for Page, SocialMediaUser, Posts,
etc. And we, as the operator of the application, can get the details of any
LinkedIn Page, from the DB.
MANDATORY requirements:
1. Have a Scraper service in your application, that scrapes any given Page ID
from LinkedIn (you can use any existing scraping libraries available), for
the following details of a Page. For example:
a. Basic details of the Page
i. Page Name
ii. Page url
iii. id (the LinkedIn platform specific id)
iv. Page Profile Picture
v. Description
vi. Website
vii. Page Industry
viii. Total Followers
ix. Head Count
x. Specialities
xi. Any other fields you find useful or a good-to-have
b. Posts of the Page (you can have top few like 15-25 posts stored
since, some pages might have a large number of posts)
i. Comments on the Posts
c. People working there, stored in DB
2. Storing the Scraped data into any DB, with relationships maintained
between entities.
3. Expose a GET endpoint to get details of a given Page ID from the db (if a
page is not present in the DB, then only try fetching it in realtime via
scraping/API), with the some filters like:
a. Find by follower count range, for eg. Find the pages between
20k-40k Followers, find by name of the page (similar search), find by
industry
b. Get list of the following/followers of a given Page
c. Get recent 10-15 Posts of the Page.
d. Have Pagination in GET requests, wherever applicable.
4. Make Sure, to create a Postman Collection of the included APIs, that you
can directly share or present.
BONUS Requirements:
1. Provide AI Summary on a Page (using ChatGPT API, or any other LLMs)
from the followers, like counts, type of page, about the page, type of
followers.
2. Use Asynchronous programming for API calls, database operations, and
any I/O-bound tasks.
3. Use a Storage Server like GCS, S3 etc. for the profile pictures or the Posts
you’re fetching, to make a clone of them in the server, and use that link as
a mainstream link.
4. Implement Caching for the data, with TTL of for eg. 5 minutes for us to test.
5. Build a Docker image for the application
Deliverables
1. A public github repository Link.
2. Documentation attached as [Link] in the repo for easy understanding of your
code.
3. Postman Collection JSON (Optional)
4. Deployed server link (Optional)
5. Demo Video (optional)
Submit your assignment on the Google Form - Submission Form