A hackathon MVP demonstrating sealed-bid anchoring, AI compliance checking, and immutable audit logs.
- Bid Sealing Engine - AES-256 encryption + SHA-3-512 hashing
- AI Compliance Checker - Powered by Google Gemini via Emergent LLM Key
- Immutable Audit Log - Complete transparency
- n8n Governance Webhook - Tender update endpoint
- Backend: FastAPI (Python)
- Frontend: React
- Database: MongoDB
- AI: Google Gemini 3 Flash (via emergentintegrations)
- Encryption: AES-256, SHA-3-512
While this MVP uses FastAPI + MongoDB for rapid development, you can integrate Firebase:
-
Create Firebase Project:
- Go to https://console.firebase.google.com
- Create new project
- Enable Firestore Database
- Enable Firebase Storage
-
Get Firebase Config:
- Project Settings → General → Your apps → Web app
- Copy the config object
-
Install Firebase SDK:
cd frontend yarn add firebase -
Create
/app/frontend/src/firebase-config.js:import { initializeApp } from 'firebase/app'; import { getFirestore } from 'firebase/firestore'; import { getStorage } from 'firebase/storage'; // PASTE YOUR FIREBASE CONFIG HERE const firebaseConfig = { apiKey: "YOUR_API_KEY", authDomain: "YOUR_AUTH_DOMAIN", projectId: "YOUR_PROJECT_ID", storageBucket: "YOUR_STORAGE_BUCKET", messagingSenderId: "YOUR_MESSAGING_SENDER_ID", appId: "YOUR_APP_ID" }; const app = initializeApp(firebaseConfig); export const db = getFirestore(app); export const storage = getStorage(app);
-
For Vertex AI (optional):
- Enable Vertex AI API in Google Cloud Console
- Currently using Emergent LLM Key with Gemini
MONGO_URL="mongodb://localhost:27017"
DB_NAME="test_database"
CORS_ORIGINS="*"
EMERGENT_LLM_KEY=sk-emergent-1A8F55f96Fd501e86F
ENCRYPTION_KEY=your_32_byte_encryption_key_here_123456REACT_APP_BACKEND_URL=https://ai-tender-guardian.preview.emergentagent.comcd backend
pip install -r requirements.txt
sudo supervisorctl restart backendcd frontend
yarn install
yarn startPOST /api/seal-bid
Content-Type: multipart/form-data
file: [bid document]
tender_id: "TENDER-2025-001"
Response:
{
"success": true,
"bidHash": "sha3-512-hash...",
"message": "Bid sealed successfully",
"bidderId": "uuid"
}
POST /api/check-compliance
Content-Type: application/json
{
"tenderRequirements": "Must include...",
"bidSummary": "We offer..."
}
Response:
{
"success": true,
"analysis": "AI analysis text",
"violations": ["list of violations"]
}
POST /api/tender-update
Content-Type: application/json
{
"tenderId": "TENDER-2025-001",
"updateContent": "Update description",
"updatedBy": "admin"
}
Response:
{
"success": true,
"updateHash": "sha256-hash",
"timestamp": "2025-01-..."
}
GET /api/audit-log
Response:
[
{
"tenderId": "TENDER-2025-001",
"bidHash": "sha3-512-hash",
"timestamp": "2025-01-...",
"bidderId": "uuid",
"status": "SEALED"
}
]
/- Home page with overview/upload- Bid sealing interface/check- AI compliance checker/audit- Immutable audit log viewer
- AES-256 encryption with environment-based keys
- SHA-3-512 hashing for bid integrity
- Encrypted files stored as base64 (for demo; use Firebase Storage in production)
- No plain-text bid content in database
Use the /api/tender-update endpoint in your n8n workflows to log tender updates with SHA-256 hashes.
- Deploy to production environment
- Integrate Firebase Storage for encrypted files
- Add Firebase Authentication
- Implement advanced role-based access
- Add real-time notifications
MIT