Back to ER Diagrams
Vendor Rating Logic

Vendor Rating System

Comprehensive vendor performance evaluation and scoring system with multi-dimensional metrics, weighted calculations, and tier classification.

6 Tables
Automated Scoring
5 Tier Levels

1. Overview

The Vendor Rating System provides a data-driven approach to evaluating vendor performance across multiple criteria. It calculates composite scores based on delivery performance, quality metrics, pricing competitiveness, compliance adherence, and overall responsiveness.

Key Features

  • Multi-dimensional performance evaluation
  • Weighted scoring algorithm with category-specific weights
  • Historical trend analysis
  • Automatic rating recalculation on schedule
  • Vendor tier classification (Platinum → Under Review)

2. Rating Scale & Tiers

Score Scale (0-100)

90-100
Excellent
75-89
Good
60-74
Average
40-59
Poor
0-39
Critical

Vendor Tier Classification

Tier Score Range Benefits Review Frequency
Platinum 90-100 Preferred vendor status, expedited payments, increased PO limits Annually
Gold 75-89 Priority consideration, standard payment terms Semi-annually
Silver 60-74 Standard vendor status, regular monitoring Quarterly
Bronze 40-59 Probationary status, improvement plan required Monthly
Under Review 0-39 Suspension risk, mandatory corrective action Weekly

3. Database Tables Involved

vendor.vendors

Master vendor information and current rating summary

id (PK)
vendor_code
company_name
category_id (FK)
overall_rating
rating_tier
last_rating_date
status

vendor.vendor_ratings

Detailed rating history for each vendor evaluation period

id (PK)
vendor_id (FK)
rating_period_start
rating_period_end
delivery_score
quality_score
price_score
compliance_score
responsiveness_score
overall_score
tier
rated_by (FK)
rated_at

vendor.vendor_performance

Raw performance metrics collected from transactions

id (PK)
vendor_id (FK)
po_id (FK)
metric_type
metric_value
recorded_at
notes

vendor.vendor_categories

Product/service categories with category-specific rating weights

id (PK)
category_name
delivery_weight
quality_weight
price_weight
compliance_weight
responsiveness_weight

vendor.vendor_blacklist

Blacklisted vendors with reasons and duration

id (PK)
vendor_id (FK)
blacklist_reason
blacklisted_at
blacklisted_by (FK)
review_date
is_permanent

vendor.vendor_documents

Compliance documents affecting vendor rating

id (PK)
vendor_id (FK)
document_type
document_name
expiry_date
is_verified
verification_date

4. Rating Criteria & Weights

Delivery Performance

Default: 25%
  • • On-time delivery rate
  • • Lead time accuracy
  • • Order fulfillment rate
  • • Partial shipment frequency

Quality Score

Default: 30%
  • • Defect rate (PPM)
  • • Return/rejection rate
  • • Quality certifications
  • • Specification compliance

Price Competitiveness

Default: 20%
  • • Price vs. market average
  • • Price stability
  • • Volume discount adherence
  • • Hidden cost frequency

Compliance Score

Default: 15%
  • • Document validity
  • • Regulatory compliance
  • • Insurance coverage
  • • Safety certifications

Responsiveness

Default: 10%
  • • RFQ response time
  • • Issue resolution time
  • • Communication quality
  • • Flexibility/adaptability

Category-Specific Weights

  • Raw Materials: Quality 40%, Delivery 30%, Price 15%, Compliance 10%, Response 5%
  • Services: Quality 25%, Delivery 20%, Price 15%, Compliance 15%, Response 25%
  • Equipment: Quality 35%, Delivery 25%, Price 20%, Compliance 15%, Response 5%

5. Data Collection Flow

┌─────────────────────────────────────────────────────────────────────────────┐
│                        PERFORMANCE DATA SOURCES                              │
└─────────────────────────────────────────────────────────────────────────────┘
                                     │
     ┌───────────────┬───────────────┼───────────────┬───────────────┐
     ▼               ▼               ▼               ▼               ▼
┌─────────┐    ┌─────────┐    ┌─────────┐    ┌─────────┐    ┌─────────┐
│   PO    │    │   GRN   │    │ Quality │    │ Invoice │    │  Vendor │
│ System  │    │ System  │    │  Check  │    │ System  │    │  Portal │
└────┬────┘    └────┬────┘    └────┬────┘    └────┬────┘    └────┬────┘
     │               │               │               │               │
     ▼               ▼               ▼               ▼               ▼
┌─────────┐    ┌─────────┐    ┌─────────┐    ┌─────────┐    ┌─────────┐
│ Lead    │    │ On-Time │    │ Defect  │    │ Price   │    │ Response│
│ Times   │    │ Delivery│    │ Rates   │    │ Accuracy│    │ Times   │
└────┬────┘    └────┬────┘    └────┬────┘    └────┬────┘    └────┬────┘
     │               │               │               │               │
     └───────────────┴───────────────┼───────────────┴───────────────┘
                                     │
                                     ▼
                        ┌────────────────────────┐
                        │   vendor_performance   │
                        │    (Raw Metrics)       │
                        └───────────┬────────────┘
                                    │
                                    ▼
                        ┌────────────────────────┐
                        │    Rating Engine       │
                        │  (Scheduled Job)       │
                        └───────────┬────────────┘
                                    │
                                    ▼
                        ┌────────────────────────┐
                        │    vendor_ratings      │
                        │  (Calculated Scores)   │
                        └───────────┬────────────┘
                                    │
                                    ▼
                        ┌────────────────────────┐
                        │      vendors           │
                        │ (Overall Rating/Tier)  │
                        └────────────────────────┘

6. Rating Calculation Logic

Step-by-Step Process

1

Collect Raw Metrics

Gather all performance data for the rating period from vendor_performance table

2

Calculate Individual Scores

Compute score (0-100) for each criterion based on metric formulas

3

Apply Category Weights

Multiply each score by its category-specific weight from vendor_categories

4

Sum Weighted Scores

Add all weighted scores to get overall composite score

5

Determine Tier

Map overall score to vendor tier classification (Platinum/Gold/Silver/Bronze/Under Review)

6

Store & Update

Save to vendor_ratings and update vendors.overall_rating

Score Calculation Formulas

-- Delivery Score Calculation
DELIVERY_SCORE = (
    (on_time_deliveries / total_deliveries) * 50 +           -- OTD Rate (50%)
    (1 - ABS(actual_lead - quoted_lead) / quoted_lead) * 30 + -- Lead Accuracy (30%)
    (complete_orders / total_orders) * 20                     -- Fill Rate (20%)
) * 100

-- Quality Score Calculation
QUALITY_SCORE = (
    (1 - defects / total_units) * 40 +                       -- Defect-free Rate (40%)
    (1 - returns / total_shipments) * 30 +                   -- No-Return Rate (30%)
    (spec_compliant_items / total_items) * 30                -- Spec Compliance (30%)
) * 100

-- Overall Score (Weighted Sum)
OVERALL_SCORE = (
    delivery_score * category.delivery_weight +
    quality_score * category.quality_weight +
    price_score * category.price_weight +
    compliance_score * category.compliance_weight +
    responsiveness_score * category.responsiveness_weight
)

7. API Implementation (.NET 10)

public class VendorRatingService : IVendorRatingService
{
    private readonly IVendorRepository _vendorRepo;
    private readonly IPerformanceRepository _performanceRepo;
    private readonly ICategoryRepository _categoryRepo;

    public async Task<VendorRating> CalculateVendorRating(
        Guid vendorId, DateRange period)
    {
        // 1. Get vendor and category weights
        var vendor = await _vendorRepo.GetByIdAsync(vendorId);
        var weights = await _categoryRepo.GetWeightsAsync(vendor.CategoryId);

        // 2. Collect raw performance metrics
        var metrics = await _performanceRepo
            .GetMetricsForPeriodAsync(vendorId, period);

        // 3. Calculate individual scores
        var deliveryScore = CalculateDeliveryScore(metrics);
        var qualityScore = CalculateQualityScore(metrics);
        var priceScore = CalculatePriceScore(metrics);
        var complianceScore = await CalculateComplianceScore(vendorId);
        var responsivenessScore = CalculateResponsivenessScore(metrics);

        // 4. Apply weights and sum
        var overallScore =
            deliveryScore * weights.DeliveryWeight +
            qualityScore * weights.QualityWeight +
            priceScore * weights.PriceWeight +
            complianceScore * weights.ComplianceWeight +
            responsivenessScore * weights.ResponsivenessWeight;

        // 5. Determine tier
        var tier = DetermineTier(overallScore);

        // 6. Save and return
        var rating = new VendorRating { ... };
        await _vendorRepo.SaveRatingAsync(rating);
        return rating;
    }

    private VendorTier DetermineTier(decimal score) => score switch
    {
        >= 90 => VendorTier.Platinum,
        >= 75 => VendorTier.Gold,
        >= 60 => VendorTier.Silver,
        >= 40 => VendorTier.Bronze,
        _ => VendorTier.UnderReview
    };
}

8. Automated Actions Based on Ratings

Trigger Condition Automated Action Notification
Score drops below 40 Flag vendor for review, restrict new POs Alert to Procurement Manager
Score drops below 25 Suspend vendor, block new POs Urgent alert + email to vendor
Tier upgrade (e.g., Silver → Gold) Update payment terms, increase limits Congratulatory email to vendor
Tier downgrade (e.g., Gold → Silver) Reduce PO limits, increase monitoring Warning email to vendor
Compliance score drops (expired docs) Flag for document renewal Reminder to vendor + buyer
3 consecutive periods below 50 Initiate blacklist review process Escalation to management

9. Best Practices

Important Considerations

  • Minimum Data Threshold: Require at least 3 POs before calculating meaningful ratings
  • New Vendor Grace Period: New vendors start with "Probationary" status for first 90 days
  • Appeal Process: Allow vendors to dispute metrics with supporting documentation
  • Weight Review: Review category weights annually to align with business priorities
  • Market Benchmarking: Update market price baselines quarterly for accurate price scoring
  • Audit Trail: Maintain complete history of all rating calculations for compliance

ProKure Database Documentation - Vendor Rating Logic v1.0

Part of the ProKure Procurement Management System