I built the AIVOA Complaint Management System, an AI‑powered intake and triage platform for pharmaceutical manufacturing (API/FDF) as part of my AI Product Engineer internship assessment.
- Stack: React, Redux Toolkit, FastAPI, LangGraph, Groq, PostgreSQL, SQLAlchemy, pypdf.
- Core tools (required):
- Log Complaint – type raw complaint, AI extracts fields and fills the disabled QA form.
- Edit Complaint – natural‑language corrections merge into the existing record.
- Document Extraction – upload PDF/.txt/.eml, text is parsed and runs through the same extraction pipeline.
- AI Co‑Pilot runs five parallel branches via LangGraph after extraction: risk severity, root‑cause suggestion, CAPA recommendation, duplicate detection, completeness scoring.
Model choice: I switched from the assignment‑specified gemma2-9b-it to openai/gpt-oss-20b after Groq deprecated the former.
I locked all form inputs (disabled in code) to enforce the core rule that only the AI may populate the record, preventing accidental manual edits.
Setup: create a virtual environment, install requirements, add a .env with DATABASE_URL and GROQ_API_KEY, seed the DB, then run uvicorn app.main:app --reload. Frontend: npm install and npm run dev. API docs at http://<redacted>:8000/docs; app at http://localhost:5173.
Limitations: only PDF, .txt, .eml uploads; no Alembic migrations (schema changes require table recreation); missing‑field list stored as JSON string in a text column rather than a native Postgres array.
This project sits alongside my other full‑stack AI systems such as the projects page.
- Risk severity options: Minor, Major, Critical.
- Completeness shown as a progress bar with missing‑field chips.
- UI: two‑panel layout, left disabled form, right chat interface.
- Repository: https://github.com/Nazakath-Kanz/complaint-management-system (created July 2026).

