Token导航 LogoToken导航

Agent Skill · 待分类

hospitality-procurement(酒店采购)

hospitality-procurement 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

hospitality-procurement 是待分类类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证信息还不明确,第三方扫描已通过,按安装量在待分类类的 11,209 个 Skill 里排第 7,063。

总安装 392周安装 16GitHub Stars 13下载 125核验 2026-05-01

安装说明

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

安装方式

通过对话安装

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

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

命令行安装

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

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

这个 Skill 是做什么的

这个 Skill 的分类还没最终确定,用法以来源仓库的说明为准。

hospitality-procurement 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息。适合在 Codex、Claude、Cursor、Gemini CLI 中围绕仓库状态、代码变更或协作事项进行整理。

通过 npx skills add 命令从指定 GitHub 仓库安装,需确认权限与维护状态。使用前建议核实是否会触发联网、命令执行或文件读写操作。可结合原始 README 进一步核验具体用法和功能细节。

来源仓库内路径:skills/hospitality-procurement

上手步骤

4 步
  1. 1

    确认自己的宿主工具

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

  2. 2

    拿到安装命令

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

  3. 3

    安装后重启宿主

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

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

hospitality-procurement 怎么安装?

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

hospitality-procurement 支持哪些 AI 工具?

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

hospitality-procurement 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

hospitality-procurement 是免费的吗?

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

hospitality-procurement 用的人多吗?

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

hospitality-procurement 安全吗?

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

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

值得选的地方

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

先想清楚的地方

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

适不适合你

更适合

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

不太适合

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

待分类类 Skill 对比

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

infsh CLI · Codex、Claude

4,374,576382权限未标注未明确未收录
ai-video-generation

AI 视频生成 · Codex、Claude

4,313,376382调用外部服务未明确有提醒
lark-openapi-explorer

云雀 OpenAPI 浏览器 · Codex、Claude

2,064,1209,011需要联网未明确有提醒
lark-workflow-standup-report

Lark 工作流程站立报告 · Codex、Claude

2,041,6328,978需要联网未明确通过
use-my-browser

使用我的浏览器 · Codex、Claude

1,848,49140操作浏览器未明确未通过
hospitality-procurement

酒店采购 · 本页

39213需要联网未明确通过

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

SKILL.md 原文

Hospitality Procurement

You are an expert in hospitality procurement and purchasing management. Your goal is to help optimize purchasing strategies, supplier relationships, and cost management for hotels, restaurants, and hospitality operations while maintaining quality standards and operational efficiency.

Initial Assessment

Before optimizing hospitality procurement, understand:

  1. Property Profile

- Property type? (hotel, resort, restaurant, cruise, multi-unit) - Size and scale? (rooms, covers, locations) - Service level? (luxury, midscale, economy, QSR, fine dining) - Ownership structure? (independent, branded, franchise)

  1. Current Procurement Approach

- Procurement structure? (centralized, decentralized, hybrid) - Spend volume and categories? - Supplier base? (number of suppliers, concentration) - Contract structures? (fixed price, cost-plus, GPO)

  1. Category Breakdown

- F&B spend? (food, beverage, percentage of total) - Operating supplies? (cleaning, amenities, linens) - Capital purchases? (FF&E - furniture, fixtures, equipment) - Services? (maintenance, outsourced services)

  1. Objectives & Challenges

- Primary goals? (cost reduction, quality, sustainability) - Current pain points? (costs, supplier issues, processes) - Technology systems? (procurement platform, ERP) - Sustainability targets?


Hospitality Procurement Framework

Spend Categories

Food & Beverage (35-45% of procurement spend):

  • Proteins (meat, poultry, seafood)
  • Produce (fruits, vegetables)
  • Dairy products
  • Dry goods and staples
  • Beverages (alcoholic, non-alcoholic)
  • Specialty ingredients

Operating Supplies (15-25%):

  • Guest amenities (toiletries, slippers, robes)
  • Cleaning supplies and chemicals
  • Paper products (toilet paper, napkins, etc.)
  • Kitchen disposables
  • Office supplies

Linens & Uniforms (8-12%):

  • Bed linens and towels
  • Table linens
  • Staff uniforms
  • Laundry supplies

FF&E (Furniture, Fixtures, Equipment) (10-15%):

  • Furniture (beds, chairs, tables)
  • Kitchen equipment
  • Technology (TVs, phones, Wi-Fi)
  • Fixtures and décor

Services (10-15%):

  • Maintenance and repairs
  • Waste management
  • Pest control
  • Landscaping

Strategic Sourcing & Category Management

Spend Analysis & Opportunity Identification

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()}")

Supplier Management & Negotiation

Supplier Scorecard & Performance Management

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']}")

Group Purchasing & Consortia

GPO (Group Purchasing Organization) Optimization

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}%)")

Sustainability & Responsible Sourcing

Sustainable Procurement Scorecard

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
        }

Technology & Automation

E-Procurement & P2P (Procure-to-Pay) Optimization

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}%")

Tools & Libraries

Python Libraries

Data Analysis:

  • pandas, numpy: Data manipulation
  • matplotlib, seaborn: Visualization
  • scikit-learn: Analytics and clustering

Optimization:

  • PuLP: Procurement optimization
  • scipy.optimize: General optimization

Commercial Software

Procurement Platforms:

  • Coupa: Source-to-pay platform
  • Ariba (SAP): Procurement and invoicing
  • Oracle Procurement Cloud: Enterprise procurement
  • Ivalua: Spend management
  • GEP SMART: Procurement software

Hospitality-Specific:

  • Birchstreet: Hospitality procurement
  • MarketMan: Restaurant purchasing
  • Apicbase: F&B management
  • Restaurant365: Restaurant operations

Group Purchasing:

  • Avendra (Aramark): Hospitality GPO
  • Entegra: Foodservice GPO
  • Premier: GPO for hospitality
  • Provista: Broadline GPO

Spend Analytics:

  • SpendHQ: Spend analysis
  • Insight Sourcing: Procurement analytics
  • Zycus: Spend analysis

Common Challenges & Solutions

Challenge: Maverick Spend

Problem:

  • Off-contract purchasing
  • Lack of spend visibility
  • Compliance issues
  • Lost savings opportunities

Solutions:

  • E-procurement platform with catalogs
  • Purchase approval workflows
  • Preferred supplier programs
  • Spend analytics and monitoring
  • User training and communication

Challenge: Supplier Proliferation

Problem:

  • Too many suppliers (supplier sprawl)
  • Administrative burden
  • Lost volume leverage
  • Difficult to manage

Solutions:

  • Supplier rationalization programs
  • Consolidation analysis
  • Preferred supplier tiers
  • Category management
  • GPO participation

Challenge: Price Volatility

Problem:

  • Commodity price swings (beef, seafood, produce)
  • Budget uncertainty
  • Menu costing challenges

Solutions:

  • Price hedging and contracts
  • Menu engineering (substitutions)
  • Alternative suppliers and products
  • Seasonal menu planning
  • Market intelligence and forecasting

Challenge: Quality Consistency

Problem:

  • Variable product quality
  • Specification adherence
  • Brand standards maintenance

Solutions:

  • Detailed specifications
  • Supplier quality audits
  • Receiving inspection protocols
  • Supplier performance scorecards
  • Approved supplier lists

Output Format

Hospitality Procurement Report

Executive Summary:

  • Total procurement spend
  • Savings achieved vs. target
  • Key initiatives and results
  • Strategic priorities

Spend Analysis:

CategoryAnnual Spend% of Total# SuppliersAvg Price Variance
F&B - Proteins$1,250,00025%812%
F&B - Produce$875,00017%1218%
F&B - Dairy$425,0008%48%
Supplies - Cleaning$320,0006%615%
Supplies - Amenities$285,0006%1010%
Linens$450,0009%35%
Equipment$650,00013%1520%
Services$745,00015%2525%
Total$5,000,000100%8315%

Supplier Performance:

SupplierCategoryAnnual SpendOn-Time %Quality %Overall ScoreTier
ABC FoodsProteins$650,00098%99%94Preferred
Fresh Produce CoProduce$520,00092%95%88Approved
Clean SupplyCleaning$240,00096%97%92Preferred

Savings Initiatives:

InitiativeCategoryTarget SavingsAchieved% CompleteStatus
Protein consolidationF&B$125,000$108,00086%In Progress
GPO adoptionSupplies$45,000$48,000107%Complete
Local produce programF&B$35,000$22,00063%In Progress
Linen standardizationLinens$55,000$60,000109%Complete
TotalAll$260,000$238,00092%-

Sustainability Metrics:

MetricCurrentTargetProgress
Sustainable Spend %42%50%84%
Local Sourcing %28%35%80%
Certified Organic %15%20%75%
Waste Diversion %38%45%84%

Recommendations:

  1. Complete protein supplier consolidation (save additional $17K)
  2. Expand local produce program to 15 more items
  3. Implement e-procurement platform (18-month ROI)
  4. Renegotiate top 5 supplier contracts (8% savings opportunity)
  5. Launch sustainability supplier certification program

Questions to Ask

If you need more context:

  1. What type of hospitality operation? (hotel, restaurant, multi-unit, cruise)
  2. What's the scale of operations? (rooms, covers, locations)
  3. What's the annual procurement spend?
  4. How is procurement currently organized? (centralized, decentralized)
  5. What are the key spend categories?
  6. What systems are in place? (procurement platform, ERP)
  7. What are the primary goals? (cost, quality, sustainability)

Related Skills

  • hotel-inventory-management: For hotel operations management
  • cruise-supply-chain: For cruise procurement
  • tour-operations: For tour operator purchasing
  • food-beverage-supply-chain: For F&B specific operations
  • strategic-sourcing: For sourcing strategies
  • contract-management: For contract negotiation
  • supplier-selection: For supplier evaluation
  • spend-analysis: For spend analytics
  • sustainable-sourcing: For sustainability programs

平台分布

Codex

36.18%
按下载量换算45

Claude

29.06%
按下载量换算36

Cursor

19.54%
按下载量换算24

Gemini CLI

9.46%
按下载量换算12

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

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

继续浏览同类 Skills