AI-powered RFP (Request For Proposal) management system designed to automate the entire lifecycle β from creation to evaluation.
π Live App: https://www.proposifyai.online
π ProposifyAI Server: https://github.com/Priyanshu1-62/ProposifyAI-Server
ProposifyAI is a backend-first, AI-integrated platform that automates:
- RFP creation from natural language
- Vendor management and communication
- Email-based workflows (outbound + inbound)
- Proposal evaluation using AI-driven scoring
The system is designed with deterministic pipelines, strict type safety, and fault-tolerant workflows to ensure reliability in real-world scenarios.
- React + TypeScript
- Redux Toolkit
- Tailwind CSS
- Node.js + Express (TypeScript)
- Event-driven service pipelines
- PostgreSQL (relational, normalized, indexed)
- Resend (Outbound Emailing)
- Mailgun (Inbound Emailing)
- LLM APIs (AI processing)
- OAuth 2.0 authentication with JWT-based authorization
- Stateful email workflows (outbound, inbound, webhook-driven)
- Idempotent processing for emails and webhooks
- AI-powered transformation of natural language into structured RFP data
- Automated proposal evaluation using scoring criteria
- Fully normalized and queryable data pipelines
- Observability through request lifecycle tracking
The backend is structured into independently scalable pipelines:
-
Request Pipeline
Processes natural language β extracts β validates β normalizes β stores RFP data -
Outbound Pipeline
Handles email dispatch to vendors -
Webhook Pipeline
Processes delivery and event updates (idempotent) -
Inbound Pipeline
Handles vendor responses via email -
AI Pipeline
Evaluates proposals using structured scoring criteria
- Recursive processing:
- Validation β Coercion β Normalization
- Schema-driven outputs for deterministic behavior
- Confidence scoring for each LLM response
- Controlled prompt engineering with versioned contracts
- Normalized email event tracking
- Terminal vs non-terminal state handling
- Stable identifiers tied to request lifecycle
- Signature verification (timestamp-tolerant)
- Idempotent handling for retries and duplicates
- Concurrent processing using
Promise.all
- Fully normalized relational schema
- Strong constraints and relationships
- Indexed based on query patterns
- Enum-based state enforcement for deterministic UI and pipelines
- Single Source of Truth across all pipelines
- OAuth 2.0 (Google Sign-In)
- JWT signature verification against client ID
- Stateless short-lived access tokens
- Stateful HTTP-only cookie-based refresh tokens
- Core backend pipelines implemented
- AI evaluation system functional
- Email workflows integrated
- Frontend dashboard (in progress)
- Complete dashboard UI
- Add caching layer (Redis)
- Improve AI confidence calibration
- Rate limiting and abuse protection
# Clone the repo
git clone https://github.com/Priyanshu1-62/ProposifyAI
# Install dependencies
# # For Client
cd ./client
npm install
# # For server
cd ./services/api
npm install
# Setup environment variables
# # /client/env
VITE_API_URL=<backend_URL>
VITE_GOOGLE_OAUTH_API_URL=<Google_OAuth_API_URL>
# # /services/api
PORT=5000
OPENAI_API_KEY=<Enter_your_API_KEY>
OPENROUTER_API_KEY=<Enter_your_API_KEY>
AI_MODEL_FREE_TIER=<Enter_your_URL>
RESEND_API_KEY=<Enter_your_API_KEY>
RESEND_WEBHOOK_SECRET=<Enter_your_SECRET>
RESEND_WEBHOOK_TOLERANCE_SECONDS=<Enter_your_LIMIT>
BREVO_API_KEY=<Enter_your_API_KEY>
MAILGUN_API_KEY=<Enter_your_API_KEY>
MAILGUN_WEBHOOK_TOLERANCE_SECONDS=<Enter_your_LIMIT>
DATABASE_URL=<Enter_your_URL>
GOOGLE_CLIENT_ID=<Enter_your_ID>
GOOGLE_CLIENT_SECRET=<Enter_your_SECRET>
GOOGLE_REDIRECT_URI=<Enter_your_URL>
GOOGLE_TOKEN_ENDPOINT=<Enter_your_ENDPOINT>
GOOGLE_AUTHORIZATION_URL_BASE=<Enter_your_URL>
FRONTEND_HOME_URL=<Enter_your_URL>
FRONTEND_AUTH_URL=<Enter_your_URL>
JWT_ACCESS_TOKEN_SECRET=<Enter_your_SECRET>
ENVIRONMENT=<DEV / PROD>
# Run backend
cd ./services/api
npm run dev
# Run frontend
cd ./client
npm run dev

