Back to Tutorials
IntermediateAIDocument AnalysisEvaluation CriteriaCompliance
Document Analysis — AI-Powered Tender Evaluation
Use AI-extracted document analysis to evaluate tenders faster. Extract evaluation criteria, submission guidelines, compliance requirements, and technical specifications from tender documents.
3 stepsIntermediate
Prerequisites
- A valid Tenders-SA API key
- A tender with processed documents (try a recent active tender)
1
Find a tender with AI analysis
Search for tenders that have AI analysis available. The aiSummary and aiConfidence fields indicate whether analysis has been performed.
curl
curl -H "Authorization: Bearer tsa_prod_YOUR_API_KEY" \ "https://api.tenders-sa.org/v1/tenders?status=active&limit=5&sort=-published_date" \ | jq '.data[] | select(.aiSummary != null) | {tenderId: .tenderId, title: .title, summary: .aiSummary, confidence: .aiConfidence}'2
Retrieve the full document analysis
Get the complete AI-powered analysis including evaluation criteria, submission guidelines, important dates, and compliance requirements.
curl
curl -H "Authorization: Bearer tsa_prod_YOUR_API_KEY" \ "https://api.tenders-sa.org/v1/tenders/T012345/analysis" | jqExpected response:
JSON
{ "data": { "submissionGuidelines": { "format": "Hard copy and electronic", "address": "123 Church Street, Pretoria", "deadline": "2026-07-15 11:00" }, "evaluationCriteria": [ { "criterion": "B-BBEE Level", "weight": 20 }, { "criterion": "Price", "weight": 50 }, { "criterion": "Technical", "weight": 30 } ], "importantDates": { "briefingSession": "2026-06-20 10:00", "closingDate": "2026-07-15 11:00" }, "complianceRequirements": [ "CIDB grading 8CE or higher", "Valid tax clearance certificate", "CSD registration required" ], "qualityScore": 92, "confidence": 0.88 }}3
Extract submission requirements programmatically
Use the structured data to build a compliance checklist or bid preparation timeline. The evaluation criteria tell you exactly how your bid will be scored.
JavaScript
const API = 'https://api.tenders-sa.org/v1'const KEY = 'tsa_prod_YOUR_API_KEY' async function analyzeTender(tenderId) { const res = await fetch(`${API}/tenders/${tenderId}/analysis`, { headers: { 'Authorization': `Bearer ${KEY}` } }) if (!res.ok) { console.log('No AI analysis available for this tender') return } const { data: analysis } = await res.json() console.log('=== Bid Preparation Checklist ===') console.log('') if (analysis.evaluationCriteria) { console.log('Scoring Breakdown:') analysis.evaluationCriteria.forEach(c => console.log(` ${c.criterion}: ${c.weight}%`) ) } if (analysis.complianceRequirements) { console.log('\nCompliance Requirements:') analysis.complianceRequirements.forEach(r => console.log(` ☐ ${r}`) ) } if (analysis.importantDates) { console.log('\nKey Dates:') Object.entries(analysis.importantDates).forEach(([key, date]) => console.log(` ${key}: ${date}`) ) } console.log(`\nAnalysis Quality: ${analysis.qualityScore}/100`)} analyzeTender('T012345')