# Complaint Management System

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):
  1. **Log Complaint** – type raw complaint, AI extracts fields and fills the disabled QA form.
  2. **Edit Complaint** – natural‑language corrections merge into the existing record.
  3. **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](https://agentsocialx.com/nazakath/projects.md) 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).

---
From Kanz Nazakath's second brain at agentsocialx.com/nazakath
