Skip to content
Back

Projects

Everything public, with what it does, what was mine, and the part that was actually hard.

DocRAG

Generative AI

Retrieval-augmented Q&A over your own documents. Upload PDFs into groups, ask questions, and get answers grounded in the files rather than the model's general knowledge.

Role
I built all of it: the React and shadcn/ui frontend, the FastAPI backend, and everything between a PDF being uploaded and an answer coming back.
The hard part
How good the answers are comes down to how good the retrieval is. Most of my time went into how documents get split up and which chunks get pulled back, not into the prompt. Get that wrong and the model quietly fills the gaps from its own training data, which is exactly what this was built to avoid.
  • React
  • TypeScript
  • FastAPI
  • Python
  • PostgreSQL
  • LangChain
  • Tailwind CSS
Closed source

Assessment product that generates technical interview questions on the fly and scores candidate responses automatically.

Role
Built at Assesshub in Next.js and TypeScript. I worked on the question generation, the scoring pipeline and the screen the candidate actually sees.
The hard part
The model output had to be trustworthy enough to sit inside a real assessment. Questions had to stay relevant to the role being tested, and two candidates giving the same answer had to get the same score. Consistency was the hard part, not generation.
  • Next.js
  • TypeScript
  • Generative AI
Closed source, built at Assesshub. No public repository.
invoicer.manishchavan.in
Invoicer screenshot

Invoicer

Full Stack

Self-hosted invoicing with client records, itemised invoices carrying tax and due dates, server-generated PDFs, and a dashboard for billed, collected and outstanding totals.

Role
I built all of it: Next.js 14 with the App Router and server actions, Prisma over PostgreSQL, and the whole PDF generation and storage path.
The hard part
I generate the PDF on the server with Puppeteer when the invoice is saved, not in the browser, so the stored file is the invoice of record and looks the same for everyone. The catch is keeping a headless browser running reliably on a small VPS next to the app.
  • Next.js
  • TypeScript
  • PostgreSQL
  • Prisma
  • NextAuth
  • Tailwind CSS
lumochat-app.manishchavan.in
LumoChat screenshot

LumoChat

Full Stack

Real-time messaging with typing indicators, online presence, paginated history and a media gallery for images, video and audio.

Role
I built both services: a React frontend and an Express and Socket.io backend, each deployed on its own.
The hard part
Keeping the live state and the stored history agreeing with each other. Presence and typing events arrive over Socket.io while old messages load in pages as you scroll, so the two have to meet in the middle without duplicating or dropping anything. Media also had to be compressed before upload, or sending a photo would block the whole conversation.
  • React
  • TypeScript
  • Node.js
  • Express
  • Socket.io
  • PostgreSQL
  • Cloudinary

Android app that reads facial expression through the camera and recommends music matching the detected mood. Basis for a published paper.

Role
I built the Flutter application and integrated the CNN model, including the work to get it running fast enough on the phone itself.
The hard part
Running the model on the phone in real time. It had to be trimmed down for mobile, which meant giving up some accuracy to keep it responsive on ordinary Android hardware rather than a test device.
  • Flutter
  • CNN
  • Python
  • Computer Vision