{"id":29286037,"url":"https://github.com/thelakshyadubey/automatic_ticket_classification_tool","last_synced_at":"2026-04-11T02:04:35.960Z","repository":{"id":297894541,"uuid":"998224837","full_name":"thelakshyadubey/Automatic_Ticket_Classification_Tool","owner":"thelakshyadubey","description":"Automatic ticket classification and document QA system with Pinecone vector search, GROQ LLaMA-3, and SVM-based department prediction","archived":false,"fork":false,"pushed_at":"2025-06-30T18:55:43.000Z","size":4953,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-30T19:48:16.135Z","etag":null,"topics":["embeddings","groq","langchain","llama3","pinecone","python","streamlit","svm-classifier","ticket-classification","ticketing-system","vector-search"],"latest_commit_sha":null,"homepage":"https://automatic-ticket-classification-tool.onrender.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thelakshyadubey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-08T06:14:05.000Z","updated_at":"2025-06-30T18:58:07.000Z","dependencies_parsed_at":"2025-06-08T07:35:41.236Z","dependency_job_id":null,"html_url":"https://github.com/thelakshyadubey/Automatic_Ticket_Classification_Tool","commit_stats":null,"previous_names":["thelakshyadubey/automatic_ticket_classification_tool"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thelakshyadubey/Automatic_Ticket_Classification_Tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thelakshyadubey%2FAutomatic_Ticket_Classification_Tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thelakshyadubey%2FAutomatic_Ticket_Classification_Tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thelakshyadubey%2FAutomatic_Ticket_Classification_Tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thelakshyadubey%2FAutomatic_Ticket_Classification_Tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thelakshyadubey","download_url":"https://codeload.github.com/thelakshyadubey/Automatic_Ticket_Classification_Tool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thelakshyadubey%2FAutomatic_Ticket_Classification_Tool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279010343,"owners_count":26084738,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["embeddings","groq","langchain","llama3","pinecone","python","streamlit","svm-classifier","ticket-classification","ticketing-system","vector-search"],"created_at":"2025-07-06T00:00:40.569Z","updated_at":"2025-10-12T05:08:05.691Z","avatar_url":"https://github.com/thelakshyadubey.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Automatic Ticket Classification Tool\r\n\r\n**An AI-powered Streamlit app for automatic classification and management of support tickets using Pinecone vector database, GROQ's LLaMA-3 model, and SVM classification.**\r\n\r\n---\r\n## Project Deployed on Render: [https://customer-care-call-summary-alert.onrender.com](https://automatic-ticket-classification-tool.onrender.com)\r\n## Table of Contents\r\n\r\n- [Project Overview](#project-overview)  \r\n- [Features](#features)  \r\n- [Tech Stack](#tech-stack)  \r\n- [Installation](#installation)  \r\n- [Usage](#usage)  \r\n- [Folder Structure](#folder-structure)  \r\n- [How It Works](#how-it-works)   \r\n- [Author](#author)\r\n\r\n---\r\n\r\n## Project Overview\r\n\r\nThis project is a scalable and modular ticket classification system designed to automate the support ticket routing across departments like HR, IT, and Transport. It leverages:\r\n\r\n- Semantic similarity search using **Pinecone** vector database\r\n- Contextual question answering powered by **GROQ's LLaMA-3**\r\n- Text embedding via **SentenceTransformers**\r\n- Classification using **Support Vector Machines (SVM)**\r\n- A clean **Streamlit** UI with custom CSS styling for seamless user experience\r\n\r\nUse the interface to:\r\n\r\n- Enter queries and get answers based on uploaded document knowledge\r\n- Raise tickets automatically classified into departments\r\n- Navigate tabs to view pending tickets\r\n- Upload your own PDFs and CSVs to train or update the classification model\r\n- Save the trained model and reload it later for continued use\r\n- Upload PDFs to build or update the Pinecone vector store\r\n\r\n---\r\n\r\n## Features\r\n\r\n- **Document ingestion:** Extract text from PDFs, chunk it, and embed into Pinecone  \r\n- **Semantic search:** Retrieve relevant docs using vector similarity  \r\n- **LLM-powered QA:** Generate answers with LLaMA-3 model through GROQ API  \r\n- **Ticket classification:** Classify user input into HR, IT, or Transport using SVM  \r\n- **Custom UI:** Interactive Streamlit app with session management and CSS styling  \r\n- **Model lifecycle:** Train, evaluate, save, and load classification models  \r\n- **Departmental ticket views:** Separate tabs to view pending tickets per department\r\n- **User uploads:** You can add your own PDFs and CSV files to train the model, save it, and re-upload for later use  \r\n\r\n---\r\n\r\n---\r\n\r\n## Tech Stack\r\n\r\n- Python 3.10+  \r\n- [Streamlit](https://streamlit.io/) — Frontend framework  \r\n- [Pinecone](https://www.pinecone.io/) — Vector database for similarity search  \r\n- [GROQ LLaMA-3](https://groq.com/) — Large language model API  \r\n- [LangChain](https://langchain.com/) — Chain of LLM components  \r\n- [SentenceTransformers](https://www.sbert.net/) — Embeddings generation  \r\n- [Scikit-learn](https://scikit-learn.org/) — SVM classification and evaluation  \r\n- [PyPDF](https://pypdf.readthedocs.io/en/latest/) — PDF text extraction  \r\n- [Python-dotenv](https://pypi.org/project/python-dotenv/) — Environment variable management  \r\n\r\n---\r\n\r\n## Installation\r\n\r\n1. Clone the repo:\r\n```bash\r\ngit clone https://github.com/thelakshyadubey/Automatic_Ticket_Classification_Tool.git\r\ncd yourrepo\r\n```\r\n2. Install dependencies:\r\n```bash\r\npip install -r requirements.txt\r\n```\r\n4. Setup environment variables in a .env file:\r\n```bash\r\nPINECONE_API_KEY=your_pinecone_api_key\r\nGROQ_API_KEY=your_groq_api_key\r\n```\r\n\r\n## How It Works\r\n- Data ingestion: PDFs are read and split into text chunks, which are embedded using SentenceTransformers and stored in Pinecone.\r\n- User query: When a user submits a query, the app retrieves semantically similar documents from Pinecone.\r\n- Answer generation: GROQ's LLaMA-3 model answers the query based on the retrieved documents.\r\n- Ticket classification: User queries are embedded and classified via a trained SVM to determine the responsible department.\r\n- Ticket management: Tickets are stored in Streamlit session state and displayed under respective department tabs.\r\n- Model lifecycle: Admin interface allows loading CSV data, training the SVM model, evaluating accuracy, and saving/loading the model for future use.\r\n\r\n## Author\r\nLakshya Dubey\r\n\r\n## Preview\r\n![image](https://github.com/user-attachments/assets/657f37ce-3692-49c7-a3ab-ac2c2a555f92)\r\n![image](https://github.com/user-attachments/assets/7b453883-a0c9-4af9-8f5a-365b4d5b55b3)\r\n![image](https://github.com/user-attachments/assets/f2aa4f2c-22d9-4b1e-bd84-f0253e73e918)\r\n![image](https://github.com/user-attachments/assets/bd5a8706-15f9-46dc-a612-97974426291d)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthelakshyadubey%2Fautomatic_ticket_classification_tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthelakshyadubey%2Fautomatic_ticket_classification_tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthelakshyadubey%2Fautomatic_ticket_classification_tool/lists"}