How priyagaggar/hr-policy-assistant works
HR Policy Assistant lets employees ask questions grounded in uploaded PDF/DOCX policies, with page-level citations and document downloads. Admins upload and remove policies; ingestion parses and chunks files, embeds chunks, and stores vectors in Pinecone, while the chat route embeds questions, retrieves matches, and asks Groq to compose cited answers. The README describes the product’s RAG workflow; the sampled chat route shows Groq as the answer model. Some UI-to-API behavior is documented rather than visible in the sampled page source.
Main entry points: upload/route.ts Upload API · chat/route.ts Chat API · document/route.ts Document download API · page.tsx Admin panel
Components 19
Employee chat
- Chat portal
src/app/page.tsx - Message display
src/components/MessageBubble.tsx - Source citations
src/components/SourceCitation.tsx
Policy administration
- Admin panel
src/app/admin/page.tsx - Upload panel
src/components/UploadPanel.tsx - Document list
src/components/DocumentList.tsx
Document ingestion
- Upload API
src/app/api/upload/route.ts - PDF parsing
src/lib/pdf-parser.ts - DOCX parsing
src/lib/docx-parser.ts
Retrieval and answers
- Embedding service
src/lib/embeddings.ts - Chat API
src/app/api/chat/route.ts - Document download API
src/app/api/document/route.ts
External services
- Pinecone client
src/lib/pinecone.ts - Pinecone index
- Vercel Blob
- Google Gemini
- Groq LLM
Other components
- Employee
- Administrator
Connections 26
- Employee → Chat portal: asks policy questions
README.md - Chat portal → Message display: renders messages
src/app/page.tsx - Message display → Source citations: renders references
src/components/MessageBubble.tsx - Chat portal → Chat API: submits questions
README.md - Administrator → Admin panel: manages policies
README.md - Admin panel → Upload panel: renders
src/app/admin/page.tsx - Admin panel → Document list: renders
src/app/admin/page.tsx - Upload panel → Upload API: uploads files
src/components/UploadPanel.tsx - Admin panel → Upload API: deletes files
src/app/admin/page.tsx - Upload API → PDF parsing: parses PDFs
src/app/api/upload/route.ts - Upload API → DOCX parsing: parses DOCX
src/app/api/upload/route.ts - Upload API → Vercel Blob: stores originals
src/app/api/upload/route.ts - Upload API → Embedding service: embeds chunks
src/app/api/upload/route.ts - Embedding service → Google Gemini: requests embeddings
src/lib/embeddings.ts - Upload API → Pinecone client: gets index
src/app/api/upload/route.ts - Pinecone client → Pinecone index: connects to
src/lib/pinecone.ts - Upload API → Pinecone index: upserts vectors
src/app/api/upload/route.ts - Chat API → Embedding service: embeds question
src/app/api/chat/route.ts - Chat API → Pinecone client: gets index
src/app/api/chat/route.ts - Chat API → Pinecone index: queries vectors
src/app/api/chat/route.ts - Chat API → Groq LLM: generates answer
src/app/api/chat/route.ts - Chat API → Document download API: includes download links
src/app/api/chat/route.ts - Document download API → Embedding service: embeds filename
src/app/api/document/route.ts - Document download API → Pinecone client: gets index
src/app/api/document/route.ts - Document download API → Pinecone index: looks up blob URL
src/app/api/document/route.ts - Document download API → Vercel Blob: redirects download
src/app/api/document/route.ts