RevOpsGYm / openenv.yaml
Sriram611
Initial RevOps Gym environment
cffeda9
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