Case study

GenAI HR Platform

An HR platform where employees get policy answers from a chatbot grounded in the company's own documents, and HR screens resumes and writes job descriptions with AI.

Team project of 8: I built the backend and much of the frontend, and managed the project2025
GenAI HR Platform screenshot

The problem

HR teams answer the same policy questions every week and read resumes one by one. Employees wait days to hear back about leave or benefits, and managers track leave in spreadsheets.

How it works

From input to result

1

Ask

An employee asks the HR chatbot a question in plain language, such as how much leave they have left or what the notice period is.

2

Retrieve

The question is turned into an embedding and compared with HR FAQs and uploaded policy files. The three closest passages become the context.

3

Answer

Gemini writes the answer using only that context, so it reflects the company's actual policies.

4

Escalate

If nothing relevant is found, the chatbot says so and offers to send the question to HR with one click.

5

Learn

HR answers the ticket and can add the answer to the knowledge base, so the chatbot handles it next time.

6

Hire

HR uploads resumes, gets AI summaries, writes job descriptions with AI and ranks candidates against a role, with a score and the reasons.

Screens

What it looks like

The chatbot finds no documented answer and offers to send the question to HR.
The chatbot finds no documented answer and offers to send the question to HR.
HR sees the escalated question and replies from its queue.
HR sees the escalated question and replies from its queue.
Resume upload and AI matching against a saved job description.
Resume upload and AI matching against a saved job description.
Job descriptions written with AI and kept in a role library.
Job descriptions written with AI and kept in a role library.
Leave balance, request history and analytics for an employee.
Leave balance, request history and analytics for an employee.
Manager dashboard with the approval queue and team signals.
Manager dashboard with the approval queue and team signals.

Key decisions

Why it is built this way

Answers come only from company documents

A general chatbot would make up policies. Retrieval keeps every answer tied to the FAQs and files HR has approved, and when nothing matches, the bot says it does not know instead of guessing.

Unanswered questions become HR tickets

Escalation turns a gap in the knowledge base into a task for HR. Each answer can be fed back, so the chatbot covers more questions the longer it is used.

Three roles, checked on every route

HR, managers and employees see different data. Flask-Security-Too handles tokens and roles on the backend, and Vue router guards keep each role on its own screens.

One AI module with a fallback and limits

All AI calls go through one module: Gemini first, Groq if Gemini fails. A daily per-user limit protects the API key when the app runs as a public demo.

Results

  • Covers the employee lifecycle for three roles: leave, team updates, career planning, hiring and offboarding.
  • 251 automated tests run on every push, with the AI mocked so they need no API key.
  • Runs locally with fictional demo data and one-click logins for HR, manager and employee.

Built with

PythonFlaskSQLAlchemyFlask-Security-TooGeminiNumPyVue 3Tailwind CSSpytestGitHub Actions