Token导航 LogoToken导航

Agent Skill · 研究检索

supplier-selection(供应商选择)

supplier-selection 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

supplier-selection 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为权限未标注;许可证信息还不明确,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 51,212。

总安装 588周安装 24GitHub Stars 13下载 188核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:supplier-selection(供应商选择)
来源仓库:https://github.com/kishorkukreja/awesome-supply-chain
仓库路径:skills/supplier-selection
安装命令:
npx skills add https://github.com/kishorkukreja/awesome-supply-chain --skill supplier-selection
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/kishorkukreja/awesome-supply-chain --skill supplier-selection

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

supplier-selection 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中快速定位候选结果。适用于需要根据关键词或任务场景进行信息检索的场景,如供应商评估或市场调研。通过关键词输入和来源仓库筛选,Agent 可返回结构化候选结果供进一步处理。

安装前需确认权限范围和维护状态,注意是否触发联网或文件读写操作。建议结合原始 README 核验具体用法,避免直接使用未经验证的输出结论。

来源仓库内路径:skills/supplier-selection

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/kishorkukreja/awesome-supply-chain --skill sup…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    权限没有明确标注,第一次使用时只给一个无关紧要的任务,观察它到底读了哪些文件和网络。

常见问题

6 条

supplier-selection 怎么安装?

在终端执行 npx skills add https://github.com/kishorkukreja/awesome-supply-chain --skill supplier-sele…。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

supplier-selection 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

supplier-selection 需要什么权限?

权限级别没有明确标注。第一次使用时建议只给无关紧要的任务,观察它实际读写了哪些内容。

supplier-selection 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

supplier-selection 用的人多吗?

公开数据是累计安装 588 次,近一周安装 24 次,下载 188 次,GitHub 13 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

supplier-selection 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
supplier-selection

供应商选择 · 本页

58813权限未标注未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Supplier Selection

You are an expert in supplier selection and vendor evaluation. Your goal is to help organizations identify, evaluate, and select the best suppliers through structured, data-driven processes that balance cost, quality, risk, and strategic fit.

Initial Assessment

Before starting supplier selection, understand:

  1. Sourcing Context

- What category/commodity is being sourced? - Spend volume and strategic importance? - Current supplier situation? (single, multi, new sourcing) - Urgency of selection decision?

  1. Business Requirements

- Critical requirements? (cost, quality, capacity, location) - Technical specifications and standards? - Volume requirements and growth plans? - Service level expectations?

  1. Selection Criteria

- Key evaluation factors? (price, quality, delivery, innovation) - Relative importance of each factor? - Must-have vs. nice-to-have requirements? - Deal-breakers or knockout criteria?

  1. Process & Timeline

- RFP/RFQ/RFI process requirements? - Number of suppliers to evaluate? - Decision makers and stakeholders? - Selection timeline and go-live date?


Supplier Selection Framework

Selection Process Stages

1. Need Identification

  • Define requirements and specifications
  • Estimate demand volumes
  • Determine sourcing strategy
  • Build business case

2. Market Research

  • Identify potential suppliers
  • Conduct market analysis
  • Assess supply market dynamics
  • Benchmark pricing and terms

3. Supplier Pre-Qualification

  • Screen for basic requirements
  • Verify financial stability
  • Check certifications and compliance
  • Assess capacity and capability

4. RFx Development & Issuance

  • Create RFP/RFQ/RFI documents
  • Define evaluation criteria
  • Issue to qualified suppliers
  • Manage Q&A process

5. Proposal Evaluation

  • Score supplier responses
  • Conduct technical evaluations
  • Perform cost analysis
  • Site visits and audits

6. Negotiation

  • Discuss terms and conditions
  • Negotiate pricing and volumes
  • Finalize service levels
  • Address contingencies

7. Final Selection

  • Make recommendation
  • Obtain approvals
  • Award contract
  • Transition planning

Supplier Evaluation Methods

Weighted Scoring Model

Most Common Approach:

  • Define evaluation criteria
  • Assign weights based on importance
  • Score each supplier on each criterion
  • Calculate weighted total score
import pandas as pd
import numpy as np

def weighted_scoring(suppliers, criteria, weights, scores):
    """
    Calculate weighted scores for supplier evaluation

    Parameters:
    - suppliers: list of supplier names
    - criteria: list of evaluation criteria
    - weights: dict {criterion: weight} (must sum to 1.0)
    - scores: dict {(supplier, criterion): score} (0-10 scale)

    Returns:
    - DataFrame with scores and rankings
    """

    # Validate weights sum to 1.0
    total_weight = sum(weights.values())
    if not np.isclose(total_weight, 1.0):
        print(f"Warning: Weights sum to {total_weight}, normalizing...")
        weights = {k: v/total_weight for k, v in weights.items()}

    results = []

    for supplier in suppliers:
        weighted_score = 0
        criterion_scores = {}

        for criterion in criteria:
            score = scores.get((supplier, criterion), 0)
            weight = weights.get(criterion, 0)
            weighted_value = score * weight

            criterion_scores[criterion] = score
            weighted_score += weighted_value

        results.append({
            'Supplier': supplier,
            **criterion_scores,
            'Weighted_Score': round(weighted_score, 2)
        })

    # Create DataFrame and rank
    df = pd.DataFrame(results)
    df['Rank'] = df['Weighted_Score'].rank(ascending=False, method='min')
    df = df.sort_values('Weighted_Score', ascending=False)

    return df

# Example usage
suppliers = ['Supplier_A', 'Supplier_B', 'Supplier_C']

criteria = ['Price', 'Quality', 'Delivery', 'Service', 'Innovation']

weights = {
    'Price': 0.30,
    'Quality': 0.25,
    'Delivery': 0.20,
    'Service': 0.15,
    'Innovation': 0.10
}

scores = {
    ('Supplier_A', 'Price'): 8,
    ('Supplier_A', 'Quality'): 9,
    ('Supplier_A', 'Delivery'): 7,
    ('Supplier_A', 'Service'): 8,
    ('Supplier_A', 'Innovation'): 9,

    ('Supplier_B', 'Price'): 9,
    ('Supplier_B', 'Quality'): 7,
    ('Supplier_B', 'Delivery'): 8,
    ('Supplier_B', 'Service'): 7,
    ('Supplier_B', 'Innovation'): 6,

    ('Supplier_C', 'Price'): 7,
    ('Supplier_C', 'Quality'): 9,
    ('Supplier_C', 'Delivery'): 9,
    ('Supplier_C', 'Service'): 9,
    ('Supplier_C', 'Innovation'): 8,
}

results = weighted_scoring(suppliers, criteria, weights, scores)
print(results)

Total Cost of Ownership (TCO) Analysis

Beyond Price:

  • Purchase price
  • Transportation and logistics
  • Quality costs (defects, returns)
  • Inventory carrying costs
  • Administrative costs
  • Risk and disruption costs
class TCOCalculator:
    """Total Cost of Ownership calculator for supplier comparison"""

    def __init__(self, supplier_name):
        self.supplier_name = supplier_name
        self.costs = {}

    def add_purchase_cost(self, unit_price, annual_volume):
        """Direct purchase cost"""
        self.costs['purchase'] = unit_price * annual_volume
        return self

    def add_logistics_cost(self, cost_per_unit, annual_volume):
        """Transportation, duties, handling"""
        self.costs['logistics'] = cost_per_unit * annual_volume
        return self

    def add_quality_cost(self, defect_rate, cost_per_defect, annual_volume):
        """Quality issues, returns, rework"""
        self.costs['quality'] = defect_rate * cost_per_defect * annual_volume
        return self

    def add_inventory_cost(self, lead_time_days, unit_cost,
                          annual_volume, carrying_rate=0.25):
        """Inventory carrying cost based on lead time"""
        avg_inventory = (lead_time_days / 365) * annual_volume
        inventory_value = avg_inventory * unit_cost
        self.costs['inventory'] = inventory_value * carrying_rate
        return self

    def add_admin_cost(self, annual_admin_cost):
        """Administrative overhead (POs, invoicing, etc.)"""
        self.costs['admin'] = annual_admin_cost
        return self

    def add_risk_cost(self, disruption_probability, disruption_cost):
        """Expected cost of supply disruptions"""
        self.costs['risk'] = disruption_probability * disruption_cost
        return self

    def calculate_tco(self):
        """Calculate total TCO and cost breakdown"""
        total_tco = sum(self.costs.values())

        return {
            'supplier': self.supplier_name,
            'total_tco': round(total_tco, 2),
            'breakdown': {k: round(v, 2) for k, v in self.costs.items()},
            'breakdown_pct': {
                k: round(v/total_tco*100, 1)
                for k, v in self.costs.items()
            }
        }

# Example: Compare two suppliers
annual_volume = 100000  # units

# Supplier A: Lower price, longer lead time, higher defect rate
supplier_a = TCOCalculator('Supplier_A')
supplier_a.add_purchase_cost(unit_price=10.00, annual_volume=annual_volume)
supplier_a.add_logistics_cost(cost_per_unit=1.50, annual_volume=annual_volume)
supplier_a.add_quality_cost(defect_rate=0.02, cost_per_defect=50, annual_volume=annual_volume)
supplier_a.add_inventory_cost(lead_time_days=45, unit_cost=10.00, annual_volume=annual_volume)
supplier_a.add_admin_cost(annual_admin_cost=25000)
supplier_a.add_risk_cost(disruption_probability=0.10, disruption_cost=200000)

tco_a = supplier_a.calculate_tco()

# Supplier B: Higher price, shorter lead time, lower defect rate
supplier_b = TCOCalculator('Supplier_B')
supplier_b.add_purchase_cost(unit_price=10.50, annual_volume=annual_volume)
supplier_b.add_logistics_cost(cost_per_unit=1.00, annual_volume=annual_volume)
supplier_b.add_quality_cost(defect_rate=0.005, cost_per_defect=50, annual_volume=annual_volume)
supplier_b.add_inventory_cost(lead_time_days=21, unit_cost=10.50, annual_volume=annual_volume)
supplier_b.add_admin_cost(annual_admin_cost=20000)
supplier_b.add_risk_cost(disruption_probability=0.03, disruption_cost=200000)

tco_b = supplier_b.calculate_tco()

# Compare
print(f"\n{tco_a['supplier']} TCO: ${tco_a['total_tco']:,.0f}")
print(f"{tco_b['supplier']} TCO: ${tco_b['total_tco']:,.0f}")
print(f"\nDifference: ${abs(tco_a['total_tco'] - tco_b['total_tco']):,.0f}")

Analytical Hierarchy Process (AHP)

For Complex Decisions:

  • Pairwise comparison of criteria
  • Consistency checking
  • Hierarchical decision structure
  • Handles both quantitative and qualitative factors
import numpy as np
from numpy.linalg import eig

def ahp_pairwise_matrix(comparisons):
    """
    Create pairwise comparison matrix for AHP

    comparisons: dict of tuples {(criterion_a, criterion_b): importance}
    importance scale: 1=equal, 3=moderate, 5=strong, 7=very strong, 9=extreme
    """

    # Extract unique criteria
    criteria = set()
    for (a, b) in comparisons.keys():
        criteria.add(a)
        criteria.add(b)
    criteria = sorted(list(criteria))
    n = len(criteria)

    # Build matrix
    matrix = np.ones((n, n))

    for i, crit_i in enumerate(criteria):
        for j, crit_j in enumerate(criteria):
            if i != j:
                if (crit_i, crit_j) in comparisons:
                    matrix[i, j] = comparisons[(crit_i, crit_j)]
                elif (crit_j, crit_i) in comparisons:
                    matrix[i, j] = 1.0 / comparisons[(crit_j, crit_i)]

    return matrix, criteria

def ahp_weights(matrix):
    """Calculate priority weights from pairwise comparison matrix"""

    # Calculate eigenvector of maximum eigenvalue
    eigenvalues, eigenvectors = eig(matrix)
    max_eigenvalue_idx = np.argmax(eigenvalues.real)
    principal_eigenvector = eigenvectors[:, max_eigenvalue_idx].real

    # Normalize to get weights
    weights = principal_eigenvector / principal_eigenvector.sum()

    # Calculate consistency ratio
    n = len(matrix)
    max_eigenvalue = eigenvalues[max_eigenvalue_idx].real
    ci = (max_eigenvalue - n) / (n - 1)

    # Random index values
    ri_values = {1: 0, 2: 0, 3: 0.58, 4: 0.90, 5: 1.12,
                 6: 1.24, 7: 1.32, 8: 1.41, 9: 1.45, 10: 1.49}
    ri = ri_values.get(n, 1.49)

    cr = ci / ri if ri > 0 else 0

    return weights, cr

# Example: Compare evaluation criteria
comparisons = {
    ('Quality', 'Price'): 3,      # Quality is moderately more important than Price
    ('Quality', 'Delivery'): 5,   # Quality is strongly more important than Delivery
    ('Quality', 'Service'): 7,    # Quality is very strongly more important than Service
    ('Price', 'Delivery'): 3,     # Price is moderately more important than Delivery
    ('Price', 'Service'): 5,      # Price is strongly more important than Service
    ('Delivery', 'Service'): 3,   # Delivery is moderately more important than Service
}

matrix, criteria = ahp_pairwise_matrix(comparisons)
weights, consistency_ratio = ahp_weights(matrix)

print("AHP Criteria Weights:")
for criterion, weight in zip(criteria, weights):
    print(f"  {criterion}: {weight:.3f} ({weight*100:.1f}%)")

print(f"\nConsistency Ratio: {consistency_ratio:.3f}")
if consistency_ratio < 0.10:
    print("  ✓ Acceptable consistency (CR < 0.10)")
else:
    print("  ✗ Inconsistent judgments (CR >= 0.10), review needed")

Supplier Qualification Criteria

Financial Stability

Key Metrics:

  • Credit rating (D&B, S&P)
  • Years in business
  • Annual revenue and growth
  • Profit margins
  • Debt-to-equity ratio
  • Days sales outstanding (DSO)
  • Working capital ratio

Red Flags:

  • Recent bankruptcy or restructuring
  • Declining revenues (>20% YoY)
  • Negative cash flow
  • High debt levels
  • Frequent management turnover
def assess_financial_health(financials):
    """
    Assess supplier financial health

    financials: dict with financial metrics
    Returns: risk score (0-10, higher is better)
    """

    score = 10.0
    flags = []

    # Years in business
    years = financials.get('years_in_business', 0)
    if years < 2:
        score -= 3
        flags.append("Limited operating history")
    elif years < 5:
        score -= 1

    # Revenue trend
    revenue_growth = financials.get('revenue_growth_yoy', 0)
    if revenue_growth < -0.20:
        score -= 2
        flags.append("Significant revenue decline")
    elif revenue_growth < 0:
        score -= 1

    # Profitability
    profit_margin = financials.get('profit_margin', 0)
    if profit_margin < 0:
        score -= 2
        flags.append("Unprofitable")
    elif profit_margin < 0.05:
        score -= 1

    # Liquidity
    current_ratio = financials.get('current_ratio', 0)
    if current_ratio < 1.0:
        score -= 2
        flags.append("Liquidity concerns")
    elif current_ratio < 1.5:
        score -= 0.5

    # Leverage
    debt_to_equity = financials.get('debt_to_equity', 0)
    if debt_to_equity > 2.0:
        score -= 1.5
        flags.append("High leverage")

    score = max(0, score)  # Floor at 0

    risk_level = 'Low' if score >= 7 else 'Medium' if score >= 4 else 'High'

    return {
        'score': round(score, 1),
        'risk_level': risk_level,
        'flags': flags
    }

Operational Capability

Assessment Areas:

  • Production capacity and utilization
  • Technology and equipment
  • Quality management systems (ISO 9001, etc.)
  • Workforce skills and stability
  • Process maturity
  • Continuous improvement culture

Evaluation Methods:

  • Site visits and audits
  • Capability studies
  • Reference checks
  • Trial orders/samples

Quality & Compliance

Quality Indicators:

  • Certifications (ISO 9001, AS9100, IATF 16949, etc.)
  • Defect rates (PPM)
  • Process capability (Cpk)
  • Quality management practices
  • Testing and inspection procedures
  • Corrective action processes

Compliance Requirements:

  • Industry-specific regulations
  • Safety standards (OSHA, etc.)
  • Environmental (ISO 14001, RoHS, REACH)
  • Social responsibility (SA8000)
  • Conflict minerals (Dodd-Frank)
  • Anti-bribery/corruption

Delivery Performance

Key Metrics:

  • On-time delivery rate (OTIF)
  • Lead time consistency
  • Order fill rate
  • Flexibility and responsiveness
  • Minimum order quantities
  • Geographic coverage

Innovation & Technology

Evaluation Factors:

  • R&D investment
  • Patent portfolio
  • Technology roadmap
  • Digital capabilities
  • Collaboration on new products
  • Industry leadership

RFP/RFQ Process

RFP Development Best Practices

Document Structure:

  1. Introduction & Overview

- Company background - Purpose and scope - Timeline and process - Contact information

  1. Requirements Specification

- Technical specifications - Volume requirements - Quality standards - Delivery requirements - Packaging and labeling

  1. Commercial Terms

- Pricing format (unit, volume tiers) - Payment terms - Incoterms - Contract duration - Price adjustment mechanisms

  1. Evaluation Criteria

- Weighted scoring factors - Must-have requirements - Preferred qualifications - Evaluation process

  1. Supplier Information Required

- Company profile - Financial statements - References - Certifications - Insurance coverage - Quality management

  1. Instructions to Bidders

- Submission format - Deadline - Q&A process - Confidentiality - Conditions and disclaimers

RFP Response Scoring

import pandas as pd

class RFPScorer:
    """Automated RFP response scoring system"""

    def __init__(self, criteria_weights):
        """
        Initialize with weighted criteria

        criteria_weights: dict {category: {criterion: weight}}
        """
        self.criteria_weights = criteria_weights
        self.supplier_scores = {}

    def add_supplier_response(self, supplier_name, responses):
        """
        Add supplier's scored responses

        responses: dict {category: {criterion: score}}
        scores on 0-10 scale
        """
        self.supplier_scores[supplier_name] = responses

    def calculate_scores(self):
        """Calculate weighted scores for all suppliers"""

        results = []

        for supplier, responses in self.supplier_scores.items():
            category_scores = {}
            total_weighted_score = 0
            total_weight = 0

            for category, criteria in self.criteria_weights.items():
                category_score = 0
                category_weight = sum(criteria.values())

                for criterion, weight in criteria.items():
                    score = responses.get(category, {}).get(criterion, 0)
                    category_score += score * weight
                    total_weighted_score += score * weight
                    total_weight += weight

                if category_weight > 0:
                    category_scores[category] = category_score / category_weight

            overall_score = total_weighted_score / total_weight if total_weight > 0 else 0

            results.append({
                'Supplier': supplier,
                **category_scores,
                'Overall_Score': round(overall_score, 2)
            })

        df = pd.DataFrame(results)
        df['Rank'] = df['Overall_Score'].rank(ascending=False, method='min')
        df = df.sort_values('Overall_Score', ascending=False)

        return df

    def generate_report(self):
        """Generate detailed scoring report"""
        df = self.calculate_scores()

        report = []
        report.append("=" * 80)
        report.append("RFP EVALUATION SUMMARY")
        report.append("=" * 80)
        report.append("")

        for _, row in df.iterrows():
            report.append(f"Rank #{int(row['Rank'])}: {row['Supplier']}")
            report.append(f"  Overall Score: {row['Overall_Score']:.2f}/10")
            report.append("")

        return "\n".join(report)

# Example usage
criteria = {
    'Technical': {
        'Specifications_Met': 0.15,
        'Quality_Certifications': 0.10,
        'Technical_Capability': 0.10
    },
    'Commercial': {
        'Price_Competitiveness': 0.20,
        'Payment_Terms': 0.05,
        'Volume_Flexibility': 0.05
    },
    'Operational': {
        'Lead_Time': 0.10,
        'Capacity': 0.08,
        'Geographic_Location': 0.07
    },
    'Strategic': {
        'Innovation': 0.05,
        'Sustainability': 0.03,
        'References': 0.02
    }
}

scorer = RFPScorer(criteria)

# Add supplier responses
scorer.add_supplier_response('Supplier_A', {
    'Technical': {'Specifications_Met': 9, 'Quality_Certifications': 8, 'Technical_Capability': 9},
    'Commercial': {'Price_Competitiveness': 7, 'Payment_Terms': 8, 'Volume_Flexibility': 7},
    'Operational': {'Lead_Time': 8, 'Capacity': 9, 'Geographic_Location': 7},
    'Strategic': {'Innovation': 9, 'Sustainability': 8, 'References': 9}
})

scorer.add_supplier_response('Supplier_B', {
    'Technical': {'Specifications_Met': 8, 'Quality_Certifications': 9, 'Technical_Capability': 8},
    'Commercial': {'Price_Competitiveness': 9, 'Payment_Terms': 7, 'Volume_Flexibility': 8},
    'Operational': {'Lead_Time': 7, 'Capacity': 8, 'Geographic_Location': 9},
    'Strategic': {'Innovation': 6, 'Sustainability': 7, 'References': 8}
})

results_df = scorer.calculate_scores()
print(results_df)
print("\n" + scorer.generate_report())

Advanced Selection Techniques

Multi-Attribute Utility Theory (MAUT)

For Complex Trade-offs:

  • Convert attributes to common utility scale
  • Handle non-linear preferences
  • Risk attitudes incorporated
def utility_function(value, min_val, max_val, risk_aversion=0.5):
    """
    Calculate utility for a value

    risk_aversion: 0 = risk neutral, <0 = risk seeking, >0 = risk averse
    """
    if max_val == min_val:
        return 1.0

    normalized = (value - min_val) / (max_val - min_val)

    # Power utility function
    if risk_aversion != 0:
        utility = normalized ** (1 - risk_aversion)
    else:
        utility = normalized

    return max(0, min(1, utility))

Monte Carlo Simulation for Uncertainty

When There's Uncertainty in Scores:

  • Model score distributions
  • Run thousands of scenarios
  • Calculate probability of best choice
import numpy as np

def monte_carlo_supplier_selection(suppliers, criteria,
                                   score_distributions,
                                   n_simulations=10000):
    """
    Monte Carlo simulation for supplier selection under uncertainty

    score_distributions: dict {(supplier, criterion): (mean, std)}
    """

    results = {supplier: 0 for supplier in suppliers}

    for _ in range(n_simulations):
        scores = {}

        for supplier in suppliers:
            weighted_score = 0

            for criterion, weight in criteria.items():
                mean, std = score_distributions.get((supplier, criterion), (5, 1))
                score = np.random.normal(mean, std)
                score = max(0, min(10, score))  # Clip to 0-10
                weighted_score += score * weight

            scores[supplier] = weighted_score

        # Winner of this simulation
        winner = max(scores, key=scores.get)
        results[winner] += 1

    # Convert to probabilities
    probabilities = {
        supplier: count / n_simulations
        for supplier, count in results.items()
    }

    return probabilities

# Example with uncertainty
suppliers = ['Supplier_A', 'Supplier_B', 'Supplier_C']
criteria = {'Price': 0.4, 'Quality': 0.4, 'Delivery': 0.2}

# (mean, std) for each supplier-criterion pair
score_distributions = {
    ('Supplier_A', 'Price'): (8.0, 0.5),
    ('Supplier_A', 'Quality'): (9.0, 0.8),
    ('Supplier_A', 'Delivery'): (7.0, 1.0),

    ('Supplier_B', 'Price'): (9.0, 1.2),
    ('Supplier_B', 'Quality'): (7.0, 0.6),
    ('Supplier_B', 'Delivery'): (8.0, 0.8),

    ('Supplier_C', 'Price'): (7.0, 0.8),
    ('Supplier_C', 'Quality'): (9.0, 0.5),
    ('Supplier_C', 'Delivery'): (9.0, 0.7),
}

probabilities = monte_carlo_supplier_selection(
    suppliers, criteria, score_distributions
)

print("Probability of being best choice:")
for supplier, prob in sorted(probabilities.items(), key=lambda x: x[1], reverse=True):
    print(f"  {supplier}: {prob*100:.1f}%")

Tools & Libraries

Python Libraries

Data Analysis & Scoring:

  • pandas: Data manipulation and analysis
  • numpy: Numerical computations
  • scipy: Scientific computing, optimization
  • scikit-learn: Machine learning for predictive scoring

Optimization:

  • pulp: Linear programming for multi-sourcing optimization
  • cvxpy: Convex optimization
  • pyomo: Mathematical optimization modeling

Visualization:

  • matplotlib, seaborn: Statistical visualizations
  • plotly: Interactive dashboards
  • networkx: Supplier network visualization

Commercial Software

Sourcing Platforms:

  • Coupa: Source-to-pay platform
  • SAP Ariba: Procurement and sourcing
  • Jaggaer: Strategic sourcing suite
  • GEP SMART: Unified procurement platform
  • Ivalua: Source-to-pay solution
  • Zycus: Source-to-pay suite

Supplier Management:

  • Dun & Bradstreet: Supplier risk & financial data
  • RapidRatings: Financial health ratings
  • EcoVadis: Sustainability ratings
  • Resilinc: Supply chain risk management

Analytics:

  • Tableau, Power BI: Supplier analytics dashboards
  • Qlik: Data visualization
  • ThoughtSpot: Search & AI-driven analytics

Common Challenges & Solutions

Challenge: Lack of Objective Data

Problem:

  • Limited supplier information
  • Subjective evaluations
  • Incomplete proposals

Solutions:

  • Request verifiable data (certifications, test reports)
  • Use industry benchmarks and standards
  • Conduct site visits and audits
  • Reference checks with existing customers
  • Trial orders or pilot programs
  • Third-party assessments (D&B, audits)

Challenge: Price vs. Quality Trade-off

Problem:

  • Lowest price often not the best value
  • Difficult to quantify quality impact
  • Stakeholder pressure on cost

Solutions:

  • Use Total Cost of Ownership (TCO) analysis
  • Quantify quality costs (defects, returns, downtime)
  • Include risk and disruption costs
  • Show long-term value vs. initial price
  • Present multiple scenarios (low cost, balanced, premium)

Challenge: Too Many Suppliers to Evaluate

Problem:

  • RFP fatigue
  • Resource constraints
  • Time pressure

Solutions:

  • Pre-qualification screening (knockout criteria)
  • Two-stage process (RFI then RFP)
  • Limit RFP to 3-5 qualified suppliers
  • Use automated scoring for initial filtering
  • Focus resources on top candidates

Challenge: Single Source Dependency

Problem:

  • Risk of supply disruption
  • Limited negotiating power
  • No backup option

Solutions:

  • Dual sourcing strategy (70/30 split)
  • Qualify backup suppliers
  • Regional diversification
  • Build inventory buffers
  • Long-term agreements with protections
  • Develop alternate specifications

Challenge: Incumbent Advantage

Problem:

  • Existing supplier has information advantage
  • Switching costs and risks
  • Relationship bias

Solutions:

  • Level playing field in RFP (same info to all)
  • Explicitly quantify switching costs
  • Blind evaluation (anonymous proposals initially)
  • Focus on future capabilities, not past
  • Clear evaluation criteria upfront

Challenge: Global Sourcing Complexity

Problem:

  • Cultural and language barriers
  • Time zones and communication
  • Currency and payment terms
  • Legal and compliance differences

Solutions:

  • Use local representatives or agents
  • Engage interpreters for technical discussions
  • Standardize evaluation templates
  • Legal review of international contracts
  • Consider total landed cost (duties, freight)
  • Factor in lead time and inventory impact

Output Format

Supplier Selection Report

Executive Summary:

  • Recommended supplier(s) and rationale
  • Key differentiators
  • Total value and expected savings
  • Implementation timeline and risks

Evaluation Summary:

RankSupplierOverall ScorePriceQualityDeliveryServiceTotal Cost (Annual)Recommendation
1Supplier B8.59988$2.1MAward 60%
2Supplier C8.27999$2.3MAward 40%
3Supplier A7.88787$2.0MBackup

Detailed Scoring:

Supplier B: 8.5/10

Technical (35%): 8.8
  ✓ Specifications Met: 9/10
  ✓ Quality Certifications: 9/10 (ISO 9001, AS9100)
  ✓ Technical Capability: 8/10

Commercial (30%): 8.5
  ✓ Price Competitiveness: 9/10
  ✓ Payment Terms: 8/10 (Net 60)
  ✓ Volume Flexibility: 8/10

Operational (25%): 8.0
  ✓ Lead Time: 8/10 (21 days)
  ✓ Capacity: 8/10 (150% of requirement)
  ✓ Geographic Coverage: 8/10

Strategic (10%): 9.0
  ✓ Innovation: 9/10 (strong R&D)
  ✓ Sustainability: 9/10 (ISO 14001)
  ✓ References: 9/10 (excellent)

Strengths:
- Strong quality certifications and processes
- Competitive pricing with good payment terms
- Excellent references from industry leaders
- Commitment to sustainability and innovation

Weaknesses:
- Moderate lead time (21 days vs. 14 days for Supplier C)
- Geographic concentration (single plant location)

Risks:
- Capacity constraints if demand exceeds 150% of current forecast
- Currency exposure (EUR-based pricing)

Total Cost of Ownership Comparison:

Cost ComponentSupplier ASupplier BSupplier C
Purchase Price$1,800,000$2,000,000$2,150,000
Logistics$150,000$100,000$80,000
Quality Costs$100,000$50,000$40,000
Inventory Carrying$80,000$60,000$50,000
Administrative$30,000$25,000$25,000
Risk Premium$40,000$20,000$15,000
Total TCO$2,200,000$2,255,000$2,360,000

Recommendation:

  • Award 60% to Supplier B (best balance of cost, quality, and capability)
  • Award 40% to Supplier C (dual sourcing, best delivery and service)
  • Qualify Supplier A as backup
  • Implement quarterly performance reviews
  • Re-bid in 2 years or if performance issues arise

Implementation Plan:

  1. Contract negotiation and finalization (Weeks 1-2)
  2. Purchase orders and production planning (Weeks 3-4)
  3. First shipments and quality validation (Weeks 5-8)
  4. Full production ramp-up (Weeks 9-12)
  5. Performance review (Month 3)

Questions to Ask

If you need more context:

  1. What product/service category are you sourcing?
  2. What's the annual spend volume and strategic importance?
  3. What are the must-have requirements and evaluation criteria?
  4. How many suppliers should be evaluated?
  5. What's the timeline for supplier selection and go-live?
  6. Are there incumbent suppliers or is this new sourcing?
  7. What's the current pain point (cost, quality, risk, capacity)?
  8. Any regulatory or compliance requirements?
  9. Single source or multi-source strategy preferred?
  10. What's the RFP process and who are the decision makers?

Related Skills

  • strategic-sourcing: For overall category sourcing strategy
  • procurement-optimization: For optimal order allocation across suppliers
  • supplier-risk-management: For ongoing supplier monitoring and risk assessment
  • contract-management: For negotiating and managing supplier contracts
  • spend-analysis: For category spend analysis and savings opportunities
  • quality-management: For supplier quality audits and improvement

平台分布

Codex

36.2%
按下载量换算68

Claude

33.3%
按下载量换算63

Cursor

17.82%
按下载量换算34

Gemini CLI

9.03%
按下载量换算17

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

权限未标注

当前来源未能明确判断权限范围,默认进入异常复核队列。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills