name: email-sorting-env version: "1.0.0" description: "A real-world email sorting environment where an AI agent classifies emails as spam, important, or promotion. Includes easy, medium, and hard difficulty levels with meaningful reward signals." author: "Mayur Patil" task_type: classification observation_space: type: dict fields: email: type: dict fields: subject: type: string description: "The subject line of the email" body: type: string description: "The body content of the email" sender: type: string description: "The sender email address" step: type: integer description: "Current step number in the episode" max_steps: type: integer description: "Maximum steps allowed per episode" total_reward: type: float description: "Cumulative reward so far" done: type: boolean description: "Whether the episode is finished" valid_actions: type: list description: "List of valid actions the agent can take" action_space: type: string values: - spam - important - promotion description: "Agent must classify each email into one of these three categories" reward: range: [-0.5, 1.0] description: "Positive reward for correct classification, negative for wrong. Higher reward for harder difficulty." breakdown: easy_correct: 0.5 medium_correct: 0.75 hard_correct: 1.0 easy_wrong: -0.5 medium_wrong: -0.3 hard_wrong: -0.1 invalid_action: -0.2 tasks: - id: easy_sorting name: "Easy Email Sorting" description: "Sort obviously spam emails like prize winning scams" difficulty: easy max_steps: 10 grader: type: llm prompt_template: "Score the agent's email classification performance from 0.0 to 1.0 based on accuracy. The agent must correctly classify obvious spam emails (prize scams, fake giveaways) vs important emails. A score of 1.0 means perfect classification, 0.0 means all wrong." - id: medium_sorting name: "Medium Email Sorting" description: "Distinguish between newsletters, promotions, and important emails" difficulty: medium max_steps: 10 grader: type: llm prompt_template: "Score the agent's email classification performance from 0.0 to 1.0. The agent must distinguish between spam, promotion, and important emails across 3 categories. A score of 1.0 means perfect classification, 0.0 means all wrong." - id: hard_sorting name: "Hard Email Sorting" description: "Detect phishing emails disguised as banks and trusted services" difficulty: hard max_steps: 10 grader: type: llm prompt_template: "Score the agent's email classification performance from 0.0 to 1.0. The agent must detect subtle phishing emails disguised as legitimate bank and service communications. A score of 1.0 means perfect classification, 0.0 means all wrong." episode: max_steps: 10 reset_on_done: true api: endpoints: - name: reset method: POST path: /reset description: "Reset environment and return initial state" - name: step method: POST path: /step description: "Take action and return next state, reward, done, info" - name: state method: GET path: /state description: "Return current state without taking action"