Tender AI Evaluator is a hackathon-ready AI-assisted tender evaluation system built for government procurement style workflows.
The project helps compare a tender document against bidder submissions and returns an explainable eligibility decision:
EligibleNot EligibleReview
The goal is not to replace human procurement officers. The goal is to speed up document review, standardize comparisons, and surface unclear cases for manual verification instead of silently rejecting them.
https://tender-ai-3hs7.onrender.com
Tender evaluation is usually slow and manual because:
- tender requirements are spread across long PDF documents
- bidder information is submitted in different formats
- the same information appears with different wording
- scanned documents and image-based evidence are harder to read
- evaluation decisions must be explainable and auditable
This project addresses that by extracting tender criteria, extracting bidder evidence, comparing both, and returning criterion-level explanations.
The system supports:
- Tender PDF upload
- Bidder PDF upload
- Multiple bidder PDF evaluation
- Bidder spreadsheet evaluation with CSV/XLSX
- OCR fallback for scanned PDFs and images
- Structured evaluation output with evidence and review flags
- CSV export for spreadsheet-style reporting
- React dashboard frontend for demo use
The backend follows this pipeline:
- Read document text
- Extract tender criteria
- Extract bidder data
- Compare bidder data against criteria
- Return an explainable response
For each criterion, the system decides:
PassedFailedReviewNot Applicable
If a value is missing, unclear, or ambiguous, the system prefers Review instead of unsafe auto-rejection.
The current hackathon version extracts and evaluates:
- Minimum turnover
- Similar projects completed
- GST
- ISO
- PAN
- EMD
These are handled with simple pattern matching and rule-based evaluation to keep the project lightweight and readable.
The /evaluate endpoint returns a structured response with:
overall_statussummaryoverall_explanationconfidence_scoreai_verificationcriteria_resultsextracted_criteriaextracted_bidder_data
Each criterion result includes:
- criterion name
- mandatory flag
- status
- requirement
- bidder value
- explanation
- decision basis
- confidence score
- review flag
- tender evidence
- bidder evidence
- approximate source references
This makes the decision easier to audit and present.
tender-ai/
app/
__init__.py
document_utils.py
evaluation.py
extraction.py
schemas.py
spreadsheet_utils.py
frontend/
index.html
package.json
postcss.config.js
tailwind.config.js
vite.config.js
src/
App.jsx
index.css
main.jsx
components/
Navbar.jsx
UploadPanel.jsx
ResultsPanel.jsx
CriteriaTable.jsx
main.py
pyproject.toml
README.md
This is the FastAPI entrypoint. It exposes the API routes and connects document reading, extraction, and evaluation logic.
Handles:
- PDF text extraction using PyMuPDF
- OCR fallback for scanned PDFs
- OCR for image uploads
- basic document-type handling
Handles:
- extracting tender criteria from text
- extracting bidder data from text
- building evidence snippets and approximate references
Handles:
- criterion-by-criterion comparison
- pass/fail/review logic
- structured summary generation
- confidence scoring
- simple AI verification metadata
Handles:
- reading bidder spreadsheets from CSV/XLSX
- mapping rows to bidder fields
- bulk evaluation support
- CSV export generation
Defines the Pydantic models used across the backend.
The frontend is built with:
- React
- Vite
- Tailwind CSS
- Axios
It provides a modern dashboard UI with:
- glassmorphism cards
- dark mode
- upload panel
- results panel
- criteria table with expandable details
Health check.
Extracts criteria from a tender file.
Extracts bidder details from a bidder file.
Evaluates one bidder against one tender.
Evaluates multiple bidder files against one tender.
Evaluates a bidder CSV/XLSX sheet against one tender.
Exports a CSV summary of spreadsheet evaluation results.
This repo includes a Dockerfile for a single-service deployment on Render.
What it does:
- builds the Vite frontend
- installs the FastAPI backend
- installs Tesseract OCR for scanned PDF/image fallback
- serves the frontend and API from the same URL
docker build -t tender-ai .
docker run -p 10000:10000 tender-aiThen open http://localhost:10000.
Create a new Render Web Service and choose:
- Environment:
Docker - Branch:
main - Instance type:
Free
Render will build from the included Dockerfile and expose the app on the PORT environment variable automatically.
This repo also includes render.yaml so Render can detect the service settings directly from the repository.
Exports spreadsheet evaluation results as CSV.
Requirements:
- Python 3.13+
uvrecommended- Tesseract OCR installed if you want OCR support
Install backend dependencies:
uv syncRun the backend:
uv run uvicorn main:app --reloadBackend URL:
http://127.0.0.1:8000
Swagger docs:
http://127.0.0.1:8000/docs
Move into the frontend folder:
cd frontendInstall frontend dependencies:
npm installRun the frontend:
npm run devFrontend URL:
http://127.0.0.1:5173
OCR support depends on both Python packages and the system-level Tesseract binary.
Python dependencies already included:
pytesseractpillow
You may also need to install Tesseract on your machine:
- Ubuntu:
sudo apt install tesseract-ocr - macOS:
brew install tesseract - Windows: install Tesseract and add it to
PATH
If OCR is not installed, text-based PDFs will still work, but scanned PDFs/images may not be readable.
- Start backend
- Start frontend
- Open the dashboard
- Upload one tender PDF
- Upload one bidder PDF
- Click
Evaluate - Review overall result and criterion-level evidence
Use the backend API directly through Swagger for now:
- Open
/docs - Use
/evaluate/spreadsheet - Upload one tender file
- Upload bidder CSV/XLSX
- Review JSON output or download CSV from
/evaluate/spreadsheet/export
Example CSV:
bidder_name,turnover,similar_projects_completed,gst_available,iso_available,pan_available,emd_available
Acme Infra,62000000,4,yes,yes,yes,yes
Delta Works,42000000,2,yes,no,yes,no
Zenith Projects,,3,yes,yes,yes,yesThis project intentionally stays simple:
- no heavy ML pipeline
- no agent orchestration
- no complex workflow engine
- no large database layer
Instead, it focuses on:
- clarity
- explainability
- safe review handling
- hackathon-friendly implementation
- Working FastAPI backend
- OCR-aware document reading
- Structured extraction and evaluation
Reviewhandling for unclear evidence- Explainable criterion-level output
- Bulk spreadsheet evaluation
- Modern React dashboard
This is still a hackathon MVP, so some limitations remain:
- page references are approximate, not exact
- extraction is rule-based and supports a limited set of criteria
- scanned document quality depends on OCR quality
- legal nuance in real tenders is broader than the current patterns
If extending after the hackathon, good next upgrades would be:
- exact page-aware evidence references
- richer criteria support
- stronger OCR confidence handling
- downloadable audit report in PDF/XLSX
- frontend flow for spreadsheet upload and export
Government tender evaluation is a high-friction process where time, consistency, and auditability matter. This project demonstrates how AI-assisted extraction and rule-based evaluation can make that process faster and more transparent while still keeping humans in control of final decisions.