Inspiration

The idea for this project came from a personal need: I wanted to improve my communication skills and become better at giving interviews. I often struggled with maintaining confidence, structuring responses, and understanding how interviewers evaluate candidates. Building an AI-powered interview assistant felt like the perfect opportunity to not only solve this problem for myself but also help anyone facing the same challenge.

What I Learned

This project taught me how to build a complete full‑stack application from scratch. I learned how the frontend, backend, database, and vector store all connect together to form a production-ready system. I also learned how to containerize a multi-service architecture using Docker and how to deploy everything in a clean and reproducible way.

Another major learning area was voice-based AI agents. Integrating ElevenLabs, handling real‑time transcripts, managing webhooks, and customizing the agent's behavior gave me a deeper understanding of conversational AI systems.

How I Built the Project

The system uses a full-stack architecture with a React and TypeScript frontend, a FastAPI backend, PostgreSQL for user and session data, and ChromaDB for vector search and document retrieval. The backend handles authentication, quiz generation, PDF processing, interview sessions, and streaming responses from the LLM. The frontend provides the UI for interacting with notes, quizzes, dashboards, and the AI interview assistant.

Everything is wrapped inside Docker using multiple services: one for the backend, one for the frontend (served through Nginx), another for PostgreSQL, and one for ChromaDB. This setup made the project easy to run locally and simple to deploy.

Challenges Faced

The biggest challenge was that I had never built a full‑stack project entirely on my own before. Learning how to connect all the moving parts was overwhelming at first. Concepts like routing, authentication, streaming responses, and vector search were new to me. However, step‑by‑step experimentation, persistence, and a little help from AI and online resources made the process much smoother.

Another challenge was deployment. Running everything inside a single container for platforms like Hugging Face Spaces required restructuring, debugging, and several iterations, but it ultimately helped me understand containerization much better.

Overall, this project pushed me out of my comfort zone, and completing it gave me confidence in both my development and communication abilities.

Built With

Share this project:

Updates