name: Technology Investment Decision
category: Technology
description: Analyze technology investment decisions considering productivity gains, costs, and adoption risks
version: 1.0.0
tags: [technology, investment, productivity, automation]

parameters:
  - key: toolCost
    label: Annual Tool Cost ($)
    type: number
    default: 25000
    min: 1000
    max: 500000
    step: 1000
    description: Annual cost for the technology solution

  - key: teamSize
    label: Team Size
    type: number
    default: 10
    min: 1
    max: 100
    step: 1
    description: Number of team members who will use the technology

  - key: productivityGain
    label: Expected Productivity Gain (%)
    type: number
    default: 20
    min: 5
    max: 50
    step: 1
    description: Expected productivity improvement percentage

  - key: adoptionRate
    label: Team Adoption Rate (%)
    type: number
    default: 80
    min: 30
    max: 100
    step: 5
    description: Percentage of team expected to adopt the technology

outputs:
  - key: annualSavings
    label: Annual Savings ($)
    description: Total annual cost savings from productivity gains

  - key: netBenefit
    label: Net Annual Benefit ($)
    description: Annual savings minus tool costs

  - key: roi
    label: ROI Percentage
    description: Return on investment percentage

simulation:
  logic: |
    // Calculate productivity savings
    const avgSalary = 120000 // Average developer salary
    const actualAdoption = (adoptionRate / 100) * (0.8 + random() * 0.4) // Add uncertainty
    const effectiveProductivity = (productivityGain / 100) * actualAdoption
    
    // Calculate savings with some variance
    const savingsVariance = 0.8 + random() * 0.4
    const annualSavings = teamSize * avgSalary * effectiveProductivity * savingsVariance
    
    // Calculate net benefit and ROI
    const netBenefit = annualSavings - toolCost
    const roi = toolCost > 0 ? (netBenefit / toolCost) * 100 : 0
    
    return {
      annualSavings: Math.round(annualSavings),
      netBenefit: Math.round(netBenefit), 
      roi: Math.round(roi * 10) / 10
    }