🏗️ Tender Evaluation Tool
Data Management (JSON)
1. Contractor Database
| Type | Age | Owned | Hired | Action |
|---|
2. Project Requirements
| Type | Min Qty | Max Hired | Max Age | Action |
|---|
3. Live Evaluation Workflow
🏗️ Tender Evaluation Tool – System Documentation
This tool is a web-based tender evaluation system designed for civil engineering and infrastructure projects. It enables authorities to digitally assess contractor eligibility based on machinery requirements.
1. System Overview
The application consists of three major modules:
- Contractor Database
- Project Requirements
- Evaluation Engine
All data is stored locally using browser Local Storage, making the tool fully offline and portable.
2. Data Storage Structure
let state = {
contractors: [],
projects: []
};
Contractor Object
{
name: "ABC Infra",
machinery: [
{ type, age, owned, hired }
]
}
Project Object
{
name: "Highway Project",
requirements: [
{ type, min, hired, age }
]
}
3. Contractor Management
Add / Update Machinery
Users input machinery details:
- Machine type
- Age
- Owned quantity
- Hired quantity
The system supports:
- Adding new machines
- Editing existing entries
- Deleting records
Edit Logic
if (editIndex > -1) {
tempMachines[editIndex] = machineData;
}
This enables in-place editing of machinery records.
4. Project Requirement Definition
Each project defines eligibility criteria:
- Minimum required machines
- Maximum allowed hired equipment
- Maximum machine age
tempReqs.push({
type,
min,
hired,
age
});
These requirements act as evaluation rules.
5. Local Storage Persistence
Data is saved using:
localStorage.setItem('tender_cons', JSON.stringify(state.contractors));
localStorage.setItem('tender_projs', JSON.stringify(state.projects));
This ensures:
- Data persistence across sessions
- No backend dependency
- Offline functionality
6. Dynamic UI Synchronization
Dropdowns update automatically:
updateDropdowns();
This synchronizes:
- Contractor selection
- Project selection
- Evaluation participants
7. Evaluation Workflow
The evaluation process follows these steps:
- Select a project
- Select participating contractors
- Run evaluation
8. Core Evaluation Logic
The function performEval() compares contractor machinery
against project requirements.
Step 1: Match Machine Type
const match = con.machinery.find(m => m.type === r.type)
Step 2: Quantity Check
if(total < r.min)
Step 3: Hired Limit Check
if(match.hired > r.hired)
Step 4: Age Check
if(match.age > r.age)
9. Decision Logic
A contractor is:
- QUALIFIED → If all conditions pass
- REJECTED → If any condition fails
Detailed logs are generated:
❌ Excavator: Shortage: 1/3 | Over_aged: 10/5
10. Reporting System
Results are displayed in a table:
- Contractor Name
- Status
- Detailed evaluation remarks
11. Export Features
JSON Export
- Backup contractors
- Backup projects
PDF Export
doc.autoTable({ html: '#results-table' });
Generates a professional evaluation report.
Excel Export
- Converts table to CSV format
- Downloads as Excel-compatible file
12. Import Functionality
Users can restore data using JSON files:
reader.readAsText(file);
This supports:
- Data migration
- Backup restoration
- Multi-system usage
13. Delete & Reset Operations
- Delete individual contractor
- Delete project templates
- Wipe entire database
localStorage.clear();
Used for complete system reset.
14. Engineering Significance
- Ensures transparent tender evaluation
- Eliminates manual bias
- Standardizes qualification criteria
- Speeds up scrutiny process
- Improves auditability
15. Key Advantages
- Fully offline tool
- No server required
- Easy to use interface
- Accurate rule-based evaluation
- Exportable reports
0 Comments
If you have any doubts, suggestions , corrections etc. let me know