Full-Stack SDE (1+ Years) Take-Home
Assignment
AI-Powered Notes & Search Web App
Goal
Build a small full-stack web application where users can create an account, log in, create
notes, and use an AI-powered search to find relevant notes. The application should be fully
containerized using Docker. All technology, structure, and database choices are flexible and
left to your discretion.
Problem Statement (High-Level Requirements)
User System
Implement user authentication allowing people to register, log in, and access only their own
data. Users should remain authenticated throughout their session.
Notes Management
• Create new notes
• View all personal notes
• Edit existing notes
• Delete notes
Each note should contain at least a title and content.
AI Search Feature
Provide a search bar where users can enter natural-language queries. Use an AI or
NLP-based technique—either through a cloud API or a small local model—to identify and
return notes based on semantic meaning rather than keyword matching.
Frontend Application
Develop a React-based web interface that enables users to sign up, log in, manage notes,
and perform AI-powered searches. The interface should be clean and simple to use.
Backend Service
Create a backend service that supports authentication, note management, and AI search. All
internal design choices, including routing conventions and architecture, are up to you.
Database
Use any database of your choice to store user accounts and notes. You are free to design the
schema in whatever way best suits your backend.
AI Component
Implement an embedding-based or lightweight NLP approach to interpret both user queries
and stored notes. The system should return the most relevant notes based on meaning.
Dockerization
• Frontend should run in its own container
• Backend should run in its own container
• Database should run in its own container
• The full system must run via a single Docker Compose command
Deliverables
• A GitHub repository containing frontend, backend, and Docker setup
• A README file describing how to run the project
• Any assumptions made during development
• Notes on what could be improved with more time