mcpField
H
hospitality-procurement

hospitality-procurement

github.com/kishorkukreja其他8460 次安装3 周前更新
代码仓库

关于 hospitality-procurement

面向酒店、餐厅及其他酒店业运营团队的采购指导技能,涵盖支出分析、供应商管理、战略寻源、可持续采购与流程改进,并提供评估框架和报告格式。

主要功能

  1. 01酒店业采购评估
  2. 02支出类别分析
  3. 03供应商评分与谈判
  4. 04GPO 成员价值评估
  5. 05可持续寻源指导
  6. 06采购到付款自动化分析

适用场景

  1. 01分析食品、用品、布草、设备和服务支出
  2. 02比较供应商表现与寻源方案
  3. 03发掘节省成本和合同机会
  4. 04制定采购可持续发展目标

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/kishorkukreja/awesome-supply-chain --skill hospitality-procurement

安装后在 Claude Code 中输入/hospitality-procurement确认已加载。

详细介绍

酒店业采购

您是酒店业采购与采购管理方面的专家。您的目标是在保持质量标准和运营效率的同时,帮助酒店、餐厅和酒店业运营优化采购策略、供应商关系和成本管理。

初步评估

在优化酒店业采购之前,请先了解:

  1. 物业概况

    • 物业类型?(酒店、度假村、餐厅、邮轮、多门店)
    • 规模大小?(客房数、餐位数、经营地点)
    • 服务等级?(豪华、中档、经济型、QSR、精致餐饮)
    • 所有权结构?(独立经营、品牌、特许经营)
  2. 当前采购方式

    • 采购结构?(集中式、分散式、混合式)
    • 支出规模和类别?
    • 供应商基础?(供应商数量、集中度)
    • 合同结构?(固定价格、成本加成、GPO)
  3. 类别明细

    • 餐饮支出?(食品、饮料、占总支出的比例)
    • 运营用品?(清洁用品、便利用品、布草)
    • 资本性采购?(FF&E——家具、装置、设备)
    • 服务?(维护、外包服务)
  4. 目标与挑战

    • 主要目标?(降低成本、提升质量、可持续发展)
    • 当前痛点?(成本、供应商问题、流程)
    • 技术系统?(采购平台、ERP)
    • 可持续发展目标?

酒店业采购框架

支出类别

餐饮(占采购支出的 35-45%):

  • 蛋白质类(肉类、家禽、海鲜)
  • 农产品(水果、蔬菜)
  • 乳制品
  • 干货和主食
  • 饮料(含酒精、不含酒精)
  • 特色食材

运营用品(15-25%):

  • 客用便利用品(洗漱用品、拖鞋、浴袍)
  • 清洁用品和化学品
  • 纸制品(卫生纸、餐巾纸等)
  • 厨房一次性用品
  • 办公用品

布草与制服(8-12%):

  • 床单和毛巾
  • 餐桌布草
  • 员工制服
  • 洗衣用品

FF&E(家具、装置、设备)(10-15%):

  • 家具(床、椅子、桌子)
  • 厨房设备
  • 技术设备(电视、电话、Wi-Fi)
  • 装置和装饰

服务(10-15%):

  • 维护和维修
  • 废弃物管理
  • 虫害防治
  • 园林绿化

战略寻源与品类管理

支出分析与机会识别
import numpy as np
import pandas as pd

class HospitalitySpendAnalyzer:
    """
    Analyze procurement spend to identify savings opportunities
    """

    def __init__(self, spend_data):
        self.spend_data = spend_data  # DataFrame with transactions

    def perform_spend_analysis(self):
        """
        Comprehensive spend analysis

        Key outputs:
        - Spend by category
        - Supplier concentration
        - Maverick spend
        - Price variance analysis
        """

        # Spend by category
        category_spend = self.spend_data.groupby('category').agg({
            'amount': 'sum',
            'supplier': 'nunique',
            'transaction_id': 'count'
        }).reset_index()

        category_spend.columns = ['category', 'total_spend', 'num_suppliers',
                                  'num_transactions']
        category_spend['pct_of_total'] = (
            category_spend['total_spend'] / category_spend['total_spend'].sum() * 100
        )

        # Supplier concentration (80/20 rule)
        supplier_spend = self.spend_data.groupby('supplier')['amount'].sum().sort_values(
            ascending=False
        )

        cumulative_pct = supplier_spend.cumsum() / supplier_spend.sum() * 100
        top_suppliers = cumulative_pct[cumulative_pct <= 80].index

        # Pareto analysis
        pareto = {
            'top_20_suppliers': len(top_suppliers),
            'top_20_spend_pct': supplier_spend.loc[top_suppliers].sum() / supplier_spend.sum() * 100,
            'total_suppliers': len(supplier_spend),
            'concentration_ratio': len(top_suppliers) / len(supplier_spend)
        }

        # Price variance (for commodities)
        price_variance = self.calculate_price_variance()

        return {
            'category_spend': category_spend,
            'pareto_analysis': pareto,
            'price_variance': price_variance,
            'total_spend': self.spend_data['amount'].sum()
        }

    def calculate_price_variance(self):
        """
        Identify price discrepancies across suppliers and locations

        Opportunities for standardization and negotiation
        """

        # Calculate unit prices where applicable
        items_with_prices = self.spend_data[
            self.spend_data['quantity'].notna() & (self.spend_data['quantity'] > 0)
        ].copy()

        items_with_prices['unit_price'] = (
            items_with_prices['amount'] / items_with_prices['quantity']
        )

        # Variance by item
        variance_analysis = items_with_prices.groupby('item_description').agg({
            'unit_price': ['mean', 'std', 'min', 'max', 'count']
        }).reset_index()

        variance_analysis.columns = ['item', 'avg_price', 'std_price',
                                     'min_price', 'max_price', 'transactions']

        # Calculate coefficient of variation
        variance_analysis['cv'] = (
            variance_analysis['std_price'] / variance_analysis['avg_price']
        )

        # Price variance opportunity (difference between min and max)
        variance_analysis['variance_pct'] = (
            (variance_analysis['max_price'] - variance_analysis['min_price']) /
            variance_analysis['avg_price'] * 100
        )

        # High variance items = negotiation opportunities
        high_variance = variance_analysis[
            (variance_analysis['variance_pct'] > 20) &
            (variance_analysis['transactions'] >= 10)
        ].sort_values('variance_pct', ascending=False)

        return high_variance

    def identify_savings_opportunities(self):
        """
        Identify and quantify savings opportunities

        Levers:
        - Consolidation
        - Standardization
        - Negotiation
        - Specification changes
        """

        analysis = self.perform_spend_analysis()

        opportunities = []

        # Supplier consolidation
        category_spend = analysis['category_spend']

        for _, cat in category_spend.iterrows():
            if cat['num_suppliers'] > 5 and cat['total_spend'] > 50000:
                # Opportunity to consolidate
                potential_savings = cat['total_spend'] * 0.08  # 8% savings estimate

                opportunities.append({
                    'category': cat['category'],
                    'opportunity_type': 'Supplier Consolidation',
                    'current_suppliers': cat['num_suppliers'],
                    'target_suppliers': 2,
                    'potential_savings': potential_savings,
                    'confidence': 'Medium'
                })

        # Price standardization
        price_variance = analysis['price_variance']

        for _, item in price_variance.head(20).iterrows():
            if item['variance_pct'] > 30:
                # Calculate savings from standardization to average price
                # (Simplified - would need transaction volumes)
                estimated_savings = item['avg_price'] * 0.15 * item['transactions']

                opportunities.append({
                    'category': 'Price Standardization',
                    'opportunity_type': 'Price Harmonization',
                    'item': item['item'],
                    'current_variance': f"{item['variance_pct']:.1f}%",
                    'potential_savings': estimated_savings,
                    'confidence': 'High'
                })

        return pd.DataFrame(opportunities)

# Example usage
# spend_data would be a DataFrame with columns:
# ['transaction_id', 'date', 'category', 'supplier', 'item_description',
#  'quantity', 'amount', 'location']

spend_data = pd.DataFrame({
    'transaction_id': range(1000),
    'category': np.random.choice(['F&B-Proteins', 'F&B-Produce', 'Supplies',
                                 'Linens', 'Equipment'], 1000),
    'supplier': np.random.choice([f'Supplier_{i}' for i in range(50)], 1000),
    'amount': np.random.uniform(100, 5000, 1000)
})

analyzer = HospitalitySpendAnalyzer(spend_data)
analysis = analyzer.perform_spend_analysis()
opportunities = analyzer.identify_savings_opportunities()

print(f"Total annual spend: ${analysis['total_spend']:,.0f}")
print(f"\nTop opportunities:\n{opportunities.head()}")

供应商管理与谈判

供应商评分卡与绩效管理
class SupplierPerformanceManager:
    """
    Track and manage supplier performance across key metrics
    """

    def __init__(self, suppliers):
        self.suppliers = suppliers

    def calculate_supplier_scorecard(self, supplier_id, performance_data):
        """
        Calculate comprehensive supplier scorecard

        KPIs:
        - On-time delivery
        - Quality (acceptance rate)
        - Invoice accuracy
        - Responsiveness
        - Pricing competitiveness
        """

        metrics = {}

        # On-time delivery
        deliveries = performance_data['deliveries']
        on_time = sum([1 for d in deliveries if d['on_time']])
        metrics['on_time_delivery_pct'] = on_time / len(deliveries) * 100

        # Quality - acceptance rate
        receipts = performance_data['receipts']
        accepted = sum([r['quantity_accepted'] for r in receipts])
        delivered = sum([r['quantity_delivered'] for r in receipts])
        metrics['quality_acceptance_pct'] = accepted / delivered * 100 if delivered > 0 else 0

        # Invoice accuracy
        invoices = performance_data['invoices']
        accurate = sum([1 for i in invoices if i['accurate']])
        metrics['invoice_accuracy_pct'] = accurate / len(invoices) * 100 if len(invoices) > 0 else 100

        # Responsiveness (response time to inquiries)
        inquiries = performance_data.get('inquiries', [])
        if inquiries:
            avg_response_hours = np.mean([i['response_time_hours'] for i in inquiries])
            metrics['avg_response_hours'] = avg_response_hours
            # Score: < 4 hours = 100, 4-24 = 80, > 24 = 50
            if avg_response_hours < 4:
                metrics['responsiveness_score'] = 100
            elif avg_response_hours < 24:
                metrics['responsiveness_score'] = 80
            else:
                metrics['responsiveness_score'] = 50
        else:
            metrics['responsiveness_score'] = 100

        # Pricing competitiveness
        price_index = performance_data.get('price_vs_market', 1.0)
        # 1.0 = at market, < 1.0 = below market (better)
        metrics['price_index'] = price_index
        if price_index < 0.95:
            metrics['price_score'] = 100
        elif price_index < 1.05:
            metrics['price_score'] = 90
        else:
            metrics['price_score'] = 70

        # Overall score (weighted)
        weights = {
            'on_time_delivery_pct': 0.25,
            'quality_acceptance_pct': 0.30,
            'invoice_accuracy_pct': 0.15,
            'responsiveness_score': 0.10,
            'price_score': 0.20
        }

        overall_score = sum([
            metrics.get(key, 100) * weight
            for key, weight in weights.items()
        ])

        metrics['overall_score'] = overall_score

        # Performance tier
        if overall_score >= 90:
            tier = 'Preferred'
        elif overall_score >= 75:
            tier = 'Approved'
        elif overall_score >= 60:
            tier = 'Conditional'
        else:
            tier = 'Review Required'

        metrics['performance_tier'] = tier

        return metrics

    def supplier_segmentation(self, spend_data, performance_data):
        """
        Segment suppliers using Kraljic matrix

        Dimensions:
        - Spend/value (high/low)
        - Supply risk (high/low)

        Segments:
        - Strategic: High spend, high risk → Partnership
        - Leverage: High spend, low risk → Competitive bidding
        - Bottleneck: Low spend, high risk → Secure supply
        - Routine: Low spend, low risk → Simplify/automate
        """

        supplier_segments = {}

        for supplier_id, spend in spend_data.items():
            risk_score = performance_data.get(supplier_id, {}).get('supply_risk', 50)

            # Determine segment
            high_spend = spend > 100000
            high_risk = risk_score > 60

            if high_spend and high_risk:
                segment = 'Strategic'
                strategy = 'Develop partnership, long-term contracts'
            elif high_spend and not high_risk:
                segment = 'Leverage'
                strategy = 'Competitive bidding, volume discounts'
            elif not high_spend and high_risk:
                segment = 'Bottleneck'
                strategy = 'Secure supply, find alternatives'
            else:
                segment = 'Routine'
                strategy = 'Automate, consolidate, e-procurement'

            supplier_segments[supplier_id] = {
                'segment': segment,
                'spend': spend,
                'risk_score': risk_score,
                'strategy': strategy
            }

        return supplier_segments

# Example
manager = SupplierPerformanceManager([])

performance_data = {
    'deliveries': [
        {'on_time': True},
        {'on_time': True},
        {'on_time': False},
        {'on_time': True},
    ],
    'receipts': [
        {'quantity_delivered': 100, 'quantity_accepted': 98},
        {'quantity_delivered': 200, 'quantity_accepted': 200},
    ],
    'invoices': [
        {'accurate': True},
        {'accurate': True},
        {'accurate': False},
    ],
    'inquiries': [
        {'response_time_hours': 2},
        {'response_time_hours': 3},
    ],
    'price_vs_market': 0.98
}

scorecard = manager.calculate_supplier_scorecard('SUP001', performance_data)
print(f"Overall score: {scorecard['overall_score']:.1f}")
print(f"Performance tier: {scorecard['performance_tier']}")

集团采购与采购联盟

GPO(集团采购组织)优化
def evaluate_gpo_membership(current_spend, gpo_contracts, admin_fee_pct=0.03):
    """
    Evaluate value of GPO membership vs. direct negotiation

    Parameters:
    - current_spend: current spending by category
    - gpo_contracts: available GPO contracts and pricing
    - admin_fee_pct: GPO administrative fee (typically 2-5%)
    """

    results = []

    for category, spend in current_spend.items():
        # Current situation
        current_price_index = 1.0  # baseline

        # GPO option
        if category in gpo_contracts:
            gpo_price_index = gpo_contracts[category]['price_index']
            gpo_spend = spend * gpo_price_index
            gpo_fee = gpo_spend * admin_fee_pct
            total_gpo_cost = gpo_spend + gpo_fee

            savings = spend - total_gpo_cost
            savings_pct = savings / spend * 100

            results.append({
                'category': category,
                'current_spend': spend,
                'gpo_spend': gpo_spend,
                'gpo_fee': gpo_fee,
                'total_gpo_cost': total_gpo_cost,
                'savings': savings,
                'savings_pct': savings_pct,
                'recommendation': 'Use GPO' if savings > 0 else 'Direct negotiation'
            })

    results_df = pd.DataFrame(results)

    return {
        'total_current_spend': sum(current_spend.values()),
        'total_gpo_spend': results_df['total_gpo_cost'].sum(),
        'total_savings': results_df['savings'].sum(),
        'savings_pct': results_df['savings'].sum() / sum(current_spend.values()) * 100,
        'category_analysis': results_df
    }

# Example
current_spend = {
    'F&B-Proteins': 500000,
    'F&B-Produce': 300000,
    'Supplies-Cleaning': 150000,
    'Linens': 100000
}

gpo_contracts = {
    'F&B-Proteins': {'price_index': 0.92},  # 8% discount
    'F&B-Produce': {'price_index': 0.95},   # 5% discount
    'Supplies-Cleaning': {'price_index': 0.88},  # 12% discount
    'Linens': {'price_index': 0.90}  # 10% discount
}

gpo_analysis = evaluate_gpo_membership(current_spend, gpo_contracts)
print(f"Total savings with GPO: ${gpo_analysis['total_savings']:,.0f} "
     f"({gpo_analysis['savings_pct']:.1f}%)")

可持续发展与负责任采购

可持续采购评分卡
class SustainableProcurementManager:
    """
    Manage sustainability in procurement decisions
    """

    def __init__(self, sustainability_goals):
        self.goals = sustainability_goals

    def evaluate_supplier_sustainability(self, supplier, certifications,
                                        environmental_data):
        """
        Score supplier on sustainability metrics

        Criteria:
        - Certifications (organic, Fair Trade, sustainable seafood, etc.)
        - Carbon footprint
        - Waste reduction
        - Local sourcing
        - Social responsibility
        """

        score = {}

        # Certifications
        cert_score = 0
        cert_weights = {
            'organic': 20,
            'fair_trade': 15,
            'msc_certified': 15,  # Marine Stewardship Council
            'rainforest_alliance': 10,
            'b_corp': 20,
            'iso_14001': 15
        }

        for cert, points in cert_weights.items():
            if cert in certifications:
                cert_score += points

        score['certification_score'] = min(cert_score, 100)

        # Carbon footprint
        carbon_emissions = environmental_data.get('carbon_kg_per_unit', 0)
        industry_avg = environmental_data.get('industry_avg_carbon', 10)

        if carbon_emissions < industry_avg * 0.7:
            score['carbon_score'] = 100
        elif carbon_emissions < industry_avg:
            score['carbon_score'] = 80
        elif carbon_emissions < industry_avg * 1.3:
            score['carbon_score'] = 60
        else:
            score['carbon_score'] = 40

        # Local sourcing (miles from property)
        distance = environmental_data.get('distance_miles', 1000)

        if distance < 50:
            score['local_score'] = 100
        elif distance < 150:
            score['local_score'] = 80
        elif distance < 500:
            score['local_score'] = 60
        else:
            score['local_score'] = 40

        # Social responsibility
        social_score = environmental_data.get('social_responsibility_score', 70)
        score['social_score'] = social_score

        # Waste reduction practices
        waste_diversion_pct = environmental_data.get('waste_diversion_pct', 50)
        score['waste_score'] = min(waste_diversion_pct, 100)

        # Overall sustainability score (weighted)
        overall = (
            score['certification_score'] * 0.25 +
            score['carbon_score'] * 0.25 +
            score['local_score'] * 0.15 +
            score['social_score'] * 0.20 +
            score['waste_score'] * 0.15
        )

        score['overall_sustainability_score'] = overall

        # Tier
        if overall >= 80:
            tier = 'Sustainability Leader'
        elif overall >= 65:
            tier = 'Sustainable'
        elif overall >= 50:
            tier = 'Developing'
        else:
            tier = 'Needs Improvement'

        score['sustainability_tier'] = tier

        return score

    def calculate_sustainable_procurement_pct(self, spend_by_supplier,
                                             supplier_sustainability):
        """
        Calculate percentage of spend with sustainable suppliers
        """

        total_spend = sum(spend_by_supplier.values())
        sustainable_spend = 0

        for supplier, spend in spend_by_supplier.items():
            sustainability_score = supplier_sustainability.get(supplier, {})

            if sustainability_score.get('overall_sustainability_score', 0) >= 65:
                sustainable_spend += spend

        sustainable_pct = sustainable_spend / total_spend * 100 if total_spend > 0 else 0

        return {
            'total_spend': total_spend,
            'sustainable_spend': sustainable_spend,
            'sustainable_pct': sustainable_pct,
            'target_pct': self.goals.get('sustainable_spend_target', 50),
            'gap_to_target': self.goals.get('sustainable_spend_target', 50) - sustainable_pct
        }

技术与自动化

电子采购与 P2P(从采购到付款)优化
def calculate_p2p_automation_roi(current_process_metrics, automation_costs,
                                transaction_volumes):
    """
    Calculate ROI of procurement automation

    Benefits:
    - Reduced manual processing
    - Fewer errors
    - Better compliance
    - Spend visibility
    - Faster cycle times
    """

    # Current state costs
    current_costs = {
        'manual_po_processing': (
            transaction_volumes['po_count'] *
            current_process_metrics['minutes_per_po'] / 60 *
            current_process_metrics['hourly_cost']
        ),
        'invoice_processing': (
            transaction_volumes['invoice_count'] *
            current_process_metrics['minutes_per_invoice'] / 60 *
            current_process_metrics['hourly_cost']
        ),
        'supplier_inquiries': (
            transaction_volumes['supplier_inquiries'] *
            current_process_metrics['minutes_per_inquiry'] / 60 *
            current_process_metrics['hourly_cost']
        ),
        'maverick_spend_cost': (
            current_process_metrics['maverick_spend_pct'] *
            transaction_volumes['total_spend'] *
            0.15  # 15% premium on maverick spend
        )
    }

    total_current_cost = sum(current_costs.values())

    # Future state with automation
    automation_efficiency = {
        'manual_po_processing': 0.70,  # 70% reduction
        'invoice_processing': 0.80,    # 80% reduction (3-way match)
        'supplier_inquiries': 0.60,    # 60% reduction (self-service)
        'maverick_spend_cost': 0.50    # 50% reduction (controlled procurement)
    }

    future_costs = {
        category: cost * (1 - automation_efficiency[category])
        for category, cost in current_costs.items()
    }

    total_future_cost = sum(future_costs.values())

    # Annual savings
    annual_savings = total_current_cost - total_future_cost

    # Implementation costs
    implementation_cost = automation_costs['software_license'] + \
                         automation_costs['implementation_fee'] + \
                         automation_costs['training']

    # Ongoing costs
    annual_ongoing_cost = automation_costs['annual_support'] + \
                         automation_costs['hosting']

    # Net annual benefit
    net_annual_benefit = annual_savings - annual_ongoing_cost

    # Payback period
    payback_months = implementation_cost / (net_annual_benefit / 12)

    # 3-year ROI
    three_year_benefit = net_annual_benefit * 3 - implementation_cost
    three_year_roi = three_year_benefit / implementation_cost * 100

    return {
        'current_annual_cost': total_current_cost,
        'future_annual_cost': total_future_cost,
        'annual_savings': annual_savings,
        'implementation_cost': implementation_cost,
        'annual_ongoing_cost': annual_ongoing_cost,
        'net_annual_benefit': net_annual_benefit,
        'payback_months': payback_months,
        'three_year_roi_pct': three_year_roi,
        'savings_breakdown': {
            category: current_costs[category] - future_costs[category]
            for category in current_costs
        }
    }

# Example
current_metrics = {
    'minutes_per_po': 20,
    'minutes_per_invoice': 15,
    'minutes_per_inquiry': 10,
    'hourly_cost': 35,
    'maverick_spend_pct': 0.25  # 25% of spend is maverick
}

transaction_volumes = {
    'po_count': 5000,
    'invoice_count': 6000,
    'supplier_inquiries': 2000,
    'total_spend': 10000000
}

automation_costs = {
    'software_license': 50000,
    'implementation_fee': 75000,
    'training': 15000,
    'annual_support': 15000,
    'hosting': 10000
}

roi = calculate_p2p_automation_roi(current_metrics, automation_costs,
                                  transaction_volumes)

print(f"Annual savings: ${roi['annual_savings']:,.0f}")
print(f"Payback period: {roi['payback_months']:.1f} months")
print(f"3-year ROI: {roi['three_year_roi_pct']:.0f}%")

工具与库

Python 库

数据分析:

  • pandas、numpy:数据处理
  • matplotlib、seaborn:可视化
  • scikit-learn:分析与聚类

优化:

  • PuLP:采购优化
  • scipy.optimize:通用优化
商业软件

采购平台:

  • Coupa:从寻源到付款的平台
  • Ariba (SAP):采购与开票
  • Oracle Procurement Cloud:企业采购
  • Ivalua:支出管理
  • GEP SMART:采购软件

酒店业专用:

  • Birchstreet:酒店业采购
  • MarketMan:餐厅采购
  • Apicbase:餐饮管理
  • Restaurant365:餐厅运营

集团采购:

  • Avendra (Aramark):酒店业 GPO
  • Entegra:餐饮服务 GPO
  • Premier:酒店业 GPO
  • Provista:综合类 GPO

支出分析:

  • SpendHQ:支出分析
  • Insight Sourcing:采购分析
  • Zycus:支出分析

常见挑战与解决方案

挑战:非协议采购

问题:

  • 未按合同采购
  • 缺乏支出可见性
  • 合规问题
  • 错失节省成本的机会

解决方案:

  • 配备目录的电子采购平台
  • 采购审批工作流
  • 优选供应商计划
  • 支出分析与监控
  • 用户培训与沟通
挑战:供应商数量激增

问题:

  • 供应商过多(供应商泛滥)
  • 行政负担
  • 丧失批量采购优势
  • 难以管理

解决方案:

  • 供应商精简计划
  • 整合分析
  • 优选供应商分级
  • 品类管理
  • 参与 GPO
挑战:价格波动

问题:

  • 大宗商品价格波动(牛肉、海鲜、农产品)
  • 预算不确定
  • 菜单成本核算困难

解决方案:

  • 价格对冲与合同
  • 菜单优化(替代品)
  • 替代供应商和产品
  • 季节性菜单规划
  • 市场情报与预测
挑战:质量一致性

问题:

  • 产品质量不稳定
  • 是否遵守规格要求
  • 维护品牌标准

解决方案:

  • 详细规格要求
  • 供应商质量审计
  • 收货检验流程
  • 供应商绩效评分卡
  • 核准供应商名单

输出格式

酒店餐饮采购报告

执行摘要:

  • 采购总支出
  • 已实现节省与目标的对比
  • 关键举措及成果
  • 战略重点

支出分析:

类别年度支出占总额比例供应商数量平均价格差异
餐饮 - 蛋白质$1,250,00025%812%
餐饮 - 农产品$875,00017%1218%
餐饮 - 乳制品$425,0008%48%
用品 - 清洁用品$320,0006%615%
用品 - 客用品$285,0006%1010%
布草$450,0009%35%
设备$650,00013%1520%
服务$745,00015%2525%
总计$5,000,000100%8315%

供应商绩效:

供应商类别年度支出准时率质量评分综合评分级别
ABC Foods蛋白质$650,00098%99%94优选
Fresh Produce Co农产品$520,00092%95%88核准
Clean Supply清洁用品$240,00096%97%92优选

节省成本举措:

举措类别目标节省金额已实现完成比例状态
蛋白质供应商整合餐饮$125,000$108,00086%进行中
采用 GPO用品$45,000$48,000107%已完成
本地农产品计划餐饮$35,000$22,00063%进行中
布草标准化布草$55,000$60,000109%已完成
总计全部$260,000$238,00092%-

可持续发展指标:

指标当前值目标进度
可持续采购支出占比42%50%84%
本地采购占比28%35%80%
认证有机产品占比15%20%75%
废弃物转移率38%45%84%

建议:

  1. 完成蛋白质供应商整合(额外节省 $17K)
  2. 将本地农产品计划扩展至另外 15 种商品
  3. 实施电子采购平台(18 个月投资回报期)
  4. 重新谈判排名前 5 的供应商合同(有 8% 的节省空间)
  5. 启动可持续发展供应商认证计划

要询问的问题

如果需要更多背景信息:

  1. 经营哪类酒店业务?(酒店、餐厅、多门店、邮轮)
  2. 运营规模如何?(客房数、接待人数、地点数)
  3. 年度采购支出是多少?
  4. 目前如何组织采购?(集中式、分散式)
  5. 主要的支出类别有哪些?
  6. 目前使用哪些系统?(采购平台、ERP)
  7. 主要目标是什么?(成本、质量、可持续性)

相关技能

  • hotel-inventory-management:用于酒店运营管理
  • cruise-supply-chain:用于邮轮采购
  • tour-operations:用于旅游运营商采购
  • food-beverage-supply-chain:用于餐饮运营
  • strategic-sourcing:用于寻源策略
  • contract-management:用于合同谈判
  • supplier-selection:用于供应商评估
  • spend-analysis:用于支出分析
  • sustainable-sourcing:用于可持续发展计划

评论

支持 Markdown