name: revops-gym version: "0.1.0" description: > A dynamic SaaS "flight simulator" where an LLM agent (the Pilot) must balance MRR growth against churn, burn rate, and CAC while an adversarial Crisis Engine (Claude) escalates pressure on the agent's weakest metric. Inspired by real B2B RevOps decision-making under uncertainty. author: your-hf-username license: MIT theme: world-modeling tags: - saas - revops - adversarial - multi-agent - business-simulation environment: class: RevOpsEnv module: revops_gym.env type: Environment server: port: 7860 host: "0.0.0.0" observation_space: type: dict fields: - name: mrr type: float description: Monthly Recurring Revenue in USD - name: cac type: float description: Customer Acquisition Cost in USD - name: ltv type: float description: Customer Lifetime Value in USD - name: churn_rate type: float description: Monthly churn rate 0-1 - name: cash_runway type: float description: Months of runway remaining - name: marketing_spend type: float description: Current monthly marketing budget - name: support_quality type: float description: Support quality score 0-1 - name: active_crisis type: string description: Current adversarial crisis tag or NONE - name: step_number type: int description: Current step in the episode - name: ltv_cac_ratio type: float description: LTV/CAC golden ratio action_space: type: dict fields: - name: action_type type: string enum: - increase_marketing - decrease_marketing - hire_support - fire_support - discount_campaign - raise_prices - feature_investment - cut_costs - negotiate_contracts - pivot_segment - name: magnitude type: float description: Strength of action 0.1–1.0 reward: type: composite components: - name: ltv_cac_ratio weight: 0.35 - name: mrr_growth weight: 0.30 - name: burn_efficiency weight: 0.20 - name: survival_bonus weight: 0.15 termination: conditions: - mrr_below_floor - cash_runway_zero - churn_above_ceiling max_steps: 30