← back to portfolio

Internal HR & Evaluation System

Next.js React 19 PostgreSQL Prisma AI Insights

A multi-role evaluation platform built on Next.js and PostgreSQL that turns performance reviews from a dreaded ritual into a structured, transparent process with AI-assisted insights and full audit trails.

The problem

Performance reviews were inconsistent, opaque, and scattered. Different managers used different criteria. There was no audit trail, no way to track whether feedback from one cycle actually influenced the next. The company needed a system that could handle multiple roles, multiple departments, and eventually multiple companies, while keeping every review structured, transparent, and traceable.

The approach

I built a full evaluation platform on Next.js 16 with React 19, TypeScript, and PostgreSQL through Prisma. The system needed to serve five distinct roles, each with different permissions and views, without feeling like five different apps stitched together.

The outcome

Reviews became something with a paper trail and a purpose. Department heads could see patterns across their teams without manually reading every evaluation. The AI insights layer turned raw review data into something leadership could act on, not just file away. The export system meant reviews traveled outside the platform when they needed to, as polished PDFs or structured spreadsheets.

What I learned

Building for five roles forced me to think about permissions not as a checklist but as a design material. Every screen had to answer the question "what should this person not see?" just as carefully as "what should they see?" I also learned that lifecycle management for something like review cycles is deceptively complex. The state machine looks simple on paper, but edge cases multiply fast when real humans are in the middle of a draft and the cycle closes, or when a department head needs to reopen something that was already archived. Those messy transitions are where the real architecture decisions happen.