Automate your procurement workflow — generate RFPs from plain English, send them to vendors, and let AI compare proposals for you.
Traditional RFP (Request for Proposal) processes are slow, manual, and error-prone. This system replaces that workflow with an AI-powered pipeline:
- Describe your need in plain English → AI generates a structured RFP
- Select vendors from your list → System sends RFPs via email automatically
- Vendors reply to the email → System parses their proposals with AI
- Compare proposals side-by-side with AI scoring on price, timeline, and fit
| Feature | Description |
|---|---|
| 🗣️ Natural Language Input | "I need 20 laptops for engineering, budget 50k" → structured RFP |
| 📧 Email Automation | Send RFPs and receive proposals via Gmail integration |
| 🤖 AI Proposal Parsing | Automatically extracts price, timeline, and terms from vendor emails |
| ⚖️ AI Comparison | Side-by-side scoring and recommendation across all proposals |
| 🏢 Vendor Management | Full CRUD for your vendor database |
| 📖 Swagger Docs | All API endpoints documented and testable at /api |
- Frontend: React 19, TypeScript, Vite, TailwindCSS
- Backend: NestJS, Express, TypeScript
- Database: MongoDB + Mongoose
- AI: Google Gemini (
@google/generative-ai) - Email: Nodemailer (SMTP) + imap-simple (IMAP) for Gmail
- API Docs: Swagger / OpenAPI
- Node.js v18+
- MongoDB (local or Atlas)
- Google AI Studio API key
- Gmail account with App Password enabled
cd backend
npm install
cp .env.example .env # Fill in MongoDB URI, Gemini API key, Gmail credentials
npm run start:devcd frontend
npm install
cp .env.example .env # Set VITE_API_URL=http://localhost:3000 if needed
npm run devBackend API: http://localhost:3000
Frontend: http://localhost:5173
Swagger Docs: http://localhost:3000/api
AI-Powered-RFP-Management-System/
├── frontend/ # React + TypeScript + Vite UI
│ └── src/
├── backend/ # NestJS API
│ ├── src/
│ │ ├── rfps/ # RFP module (create, send, manage)
│ │ ├── vendors/ # Vendor CRUD module
│ │ ├── proposals/ # Proposal parsing & comparison
│ │ └── ai/ # Gemini integration service
│ └── .env.example
└── AI-Powered RFP Management System.pdf # System design document
| Method | Endpoint | Description |
|---|---|---|
POST |
/rfps |
Create RFP from natural language |
GET |
/rfps |
List all RFPs |
GET |
/rfps/:id |
Get single RFP |
POST |
/rfps/:id/send |
Send RFP to vendors |
| Method | Endpoint | Description |
|---|---|---|
GET |
/proposals/rfp/:rfpId |
Get all proposals for an RFP |
POST |
/proposals/check-emails |
Trigger email inbox check |
GET |
/proposals/compare/:rfpId |
Run AI comparison |
Example — Create RFP:
POST /rfps
{ "request": "I need 20 laptops for engineering team, budget 50k" }- MongoDB chosen for flexibility with AI-generated, semi-structured JSON data
- Structured output prompting — LLM prompted for "ONLY JSON" with fallback markdown-stripping for reliability
- Email IMAP polling — system checks inbox for vendor replies and auto-parses them
- NestJS modules keep RFP, Vendor, Proposal, and AI logic cleanly separated
MIT — feel free to use, fork, and build on this.
Built by Mohit Bansal · LinkedIn · askaide.in