Skip to main content

AI Procurement Assistant

Score every supplier on lead time, quality, and on-time delivery from 6 months of ERP data

The Problem

Your ERP already knows which suppliers are failing

Every GRN and quality rejection is already in your ERP - but scattered across three modules. No one sees it in one place until a production hold happens and the machine is idle. A supplier scorecard reads those signals before the next PO goes out.

4/27
GRNs rejected
All 4 failures concentrated in just 2 vendors
0%
Paschim on-time rate
Every batch delivered late across 5 receipts
3.6x
lead time spread
Amrit 5.8d vs Vishwakarma 21d
  • Ranks 8 suppliers by composite score - quality, on-time delivery, lead time
  • Surfaces monthly rejection patterns: Sudarshan fails Feb + Apr, Paschim fails Mar + May
  • Squared quality penalty means a 40% rejection rate scores 36, not 60 - properly penalising quality risk
  • Generates reorder recommendations: A/B vendors auto-approved, D-grade blocked

The Data

4 ForgeFlow datasets, no setup required

Purchase Receipts27 records

GRNs with actual receipt date and PO link - basis for lead time and on-time calculation.

Quality Inspections27 records

1:1 per GRN. 4 rejected batches - Sudarshan in Feb + Apr, Paschim in Mar + May.

Purchase Orders32 records

Scheduled delivery dates for on-time rate calculation across 8 suppliers.

Suppliers8 records

Steel, stainless, tooling, and consumables. 5 active in the scoring period.

The Approach

3 dimensions, 1 score

Quality Score
40%
  • Squared penalty: a 40% rejection rate scores 36, not 60 - reflects true production stop risk
  • Calculated from quality inspection records linked to each GRN
  • Purohit: 100 (0 rejections). Sudarshan: 36 (Feb + Apr hardness failures). Paschim: 36 (Mar + May dimensional failures)
On-Time Delivery Score
35%
  • Compares actual GRN date to scheduled delivery date on the purchase order
  • Each late delivery delays a work order start and idles downstream machines
  • Amrit + Purohit: 100%. Sudarshan: 60%. Paschim: 0% - every batch late
Lead Time Score
25%
  • Average days from PO date to GRN date, normalised against a 30-day cap
  • Shorter lead times reduce the safety stock buffer needed at reorder
  • Amrit: 81pts (5.8d avg). Purohit: 74pts (7.8d). Vishwakarma: 30pts (21d - acceptable for tooling)

Results

Full supplier ranking

Two A-grade vendors, two risk vendors, one sole-source tooling supplier. Click any row to expand the analyst note.

Supplier ScorecardForgeFlow - Jan to Jun 2026
Sort by

Score = quality^2 x 40% + on-time x 35% + lead time efficiency x 25%. Quality uses a squared penalty so a 40% rejection rate drops the quality score from 60 to 36, not 60. Click a row to see the analyst note. Data from 27 GRNs and 27 quality inspections across 6 months.

Paschim Steel: remove from approved vendor list

Score 28 (D). 0% on-time, 40% rejection rate, dimensional failures in Mar + May. Route all SS304 and AL6061 POs to an alternative until two clean quarters confirmed.

Sudarshan: conditional - require heat treatment certs for Feb + Apr orders

Score 51 (C). Hardness failures follow a Feb/Apr cadence - identifiable batch cycle issue, not random. Do not expand share until corrective action is verified.

Purohit + Amrit: consolidate volume here

Both score A-grade - 100% on-time, zero rejections. Preferred destination for any volume moved away from Paschim or Sudarshan.

Core Concepts

Key ideas in this playbook

Composite Scoring
  • Reduces vendor performance to a single number using weighted averaging
  • Weights reflect business impact: quality (40%) > delivery (35%) > lead time (25%)
  • Sudarshan example: (36 × 0.40) + (60 × 0.35) + (63 × 0.25) = 14.4 + 21 + 15.75 = 51
  • Grade thresholds: A ≥ 80, B ≥ 60, C ≥ 40, D < 40
Squared Quality Penalty
  • Linear quality score (1 - rejection_rate) gives 60 for a 40% rejection vendor
  • Squared formula (1 - rejection_rate)² × 100 gives 36 - correctly severe
  • A rejected batch stops production and costs 5-10x the material value in rework
  • The penalty must be non-linear to reflect real production impact
Monthly Rejection Pattern Detection
  • A flat rejection rate hides whether failures are random or systematic
  • pandas groupby on supplier + month surfaces the timing of failures
  • Sudarshan: Feb and Apr only - matches a batch sourcing cycle, not random variation
  • Systematic failures have a correctable cause; random failures indicate a broader quality problem
Reorder Recommendation Logic
  • Trigger: current stock < safety stock + (avg_lead_days × daily_usage)
  • A/B grade vendor: auto-create draft PO for buyer approval
  • C grade: create PO with quality flag for buyer to review before confirming
  • D grade: raise a resourcing task - find an alternative before placing any PO

Architecture

Taking it to production

Weekly scoring job
  • Pull latest GRNs and quality inspection records from ERP
  • Recompute composite score and A/B/C/D grade per supplier
  • Flag vendors with score drop > 10 points week-on-week
  • Identify items where primary supplier is C or D grade
Reorder alert logic
  • A or B grade: auto-create draft PO for buyer approval
  • C grade: create PO with quality flag for buyer review
  • D grade: raise resourcing task - no auto-PO
  • Lead time from scorecard sets the reorder point horizon

Run the notebook

The Jupyter notebook builds the full supplier scorecard from scratch using ForgeFlow's 6 months of procurement and quality data. Lead time analysis, rejection pattern detection, composite scoring, grade assignment, and reorder recommendations. No API key required.

Open in Colab

Want this running on your business?

We implement these systems on your ERP, ecommerce platform, or existing data. Most projects go from data to production in 4-8 weeks.

Talk to us

Manufacturing Series

AI Procurement AssistantCurrent
Production Planning Assistant
Supplier Intelligence Dashboard
Production Workflow Agent

This playbook

Read time30 min
CategoryProcurement / Supply Chain
PublishedJuly 2026

Tech stack

Pythonpandasnumpymatplotlibscikit-learn