CoolFace
Apppublic

Omtiwari553/AutoOps-Ai

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
App README

AutoOps AI+

Autonomous Career Task & Preparation Environment — OpenEnv Hackathon Submission

![OpenEnv Compatible](https://openenv.dev) ![Python 3.10+](https://python.org) ![FastAPI](https://fastapi.tiangolo.com)


Description

AutoOps AI+ is a fully autonomous career task environment built for the OpenEnv hackathon. It simulates the end-to-end job search workflow — from resume analysis and job discovery to application submission, cover letter generation, interview scheduling, and mock interview practice.

An AI agent interacts with the environment step-by-step using a rich set of career tools. Each action moves the agent closer to its career goal, while a deterministic reward function provides meaningful signal about the quality of its decisions. The environment prevents spam applications, rewards high-quality matches, and penalizes poor performance.

The three task tiers (easy → medium → hard) progressively test the agent's ability to plan multi-step career strategies, balance competing priorities (apply broadly vs. apply well), and demonstrate self-improvement across mock interview sessions.


Observation Space

FieldTypeDescription
current_stepintSteps taken so far
max_stepsintEpisode step budget
user_goalstrThe career goal to accomplish
available_actionsList[str]Legal actions at this step
applicationsList[Application]Jobs applied to
interviewsList[Interview]Scheduled interviews
mock_sessionsList[MockSession]Practice interview results
skill_gapsList[str]Missing skills identified
last_action_resultstrResult of previous action
last_action_successboolWhether last action succeeded
reward_so_farfloatCumulative reward in episode
doneboolEpisode complete flag

Action Space

Tool NameArgsDescription
analyze_resumeresume_text: strParse skills from resume text
search_jobsrole, location, limitFind matching jobs
smart_applyjob_id: intApply if match score > 0.5
generate_cover_letterjob_id, tonePersonalized cover letter
schedule_interviewcompany, date, typeBook an interview slot
send_emailto, subject, body, typeSend a career email
conduct_mock_interviewquestions, answersPractice interview session
skill_gap_analysisjob_skills: listIdentify missing skills
salary_researchrole, locationResearch salary range data
finish—End the episode

Tasks

TaskDifficultyMax StepsGoal
easy_01Easy10Apply to 1 job with match score > 0.5
medium_01Medium20Apply to 2-5 jobs, schedule interview, send follow-up
hard_01Hard40Full pipeline: apply, mock prep, skill gaps, salary research

Reward Function

EventReward
Quality application (match ≥ 0.6)+0.30
Average application (match ≥ 0.5)+0.15
Interview scheduled+0.20
Strong mock interview (score ≥ 70%)+0.30
Average mock interview (score ≥ 50%)+0.10
Cover letter generated+0.15
Skill gap identified+0.10
Salary researched+0.10
Email sent+0.05
Spam application (match < 0.5)-0.20
Duplicate application-0.15
No improvement after 3 mocks-0.30
Tool error-0.05

Setup

bash
# 1. Install uv
pip install uv

# 2. Create virtual env and install deps
uv sync

# 3. Generate uv.lock (REQUIRED for openenv validate)
uv lock

# 4. Start server locally for testing
uv run autoops-server
# OR: uvicorn server.app:app --host 0.0.0.0 --port 7860

Test Endpoints

bash
# Health check
curl http://localhost:7860/health

# Reset environment
curl -X POST http://localhost:7860/reset \
  -H "Content-Type: application/json" -d '{}'

# Get state
curl http://localhost:7860/state

# Take a step
curl -X POST http://localhost:7860/step \
  -H "Content-Type: application/json" \
  -d '{"tool_name": "analyze_resume", "args": {"resume_text": "React, JS, CSS"}}'

# List tasks
curl http://localhost:7860/tasks

Run Inference Agent

bash
export API_BASE_URL="https://router.huggingface.co/v1"
export HF_TOKEN="your_token_here"
export MODEL_NAME="Qwen/Qwen2.5-72B-Instruct"
export SERVER_URL="http://localhost:7860"
python inference.py

Run Tests

bash
uv run pytest tests/ -v

Docker

bash
docker build -t autoops-ai-plus .
docker run -p 7860:7860 \
  -e API_BASE_URL="https://router.huggingface.co/v1" \
  -e HF_TOKEN="your_token_here" \
  -e MODEL_NAME="Qwen/Qwen2.5-72B-Instruct" \
  autoops-ai-plus

Environment Variables

VariableDescriptionDefault
API_BASE_URLLLM API endpointhttps://router.huggingface.co/v1
MODEL_NAMEModel identifierQwen/Qwen2.5-72B-Instruct
HF_TOKENHuggingFace / API key—
SERVER_URLEnvironment server URLhttp://localhost:7860
MAX_STEPSMax steps per inference episode15

Baseline Scores

TaskScoreRewardNotes
easy_010.850.45Apply + quality check
medium_010.720.70Apply + interview + follow-up
hard_010.610.95Full pipeline

Project Structure

autoops-ai-plus/
├── README.md
├── Dockerfile
├── pyproject.toml
├── uv.lock
├── openenv.yaml
├── inference.py              ← Root-level OpenAI agent
├── server/
│   ├── __init__.py
│   └── app.py                ← FastAPI server
├── environment/
│   ├── __init__.py
│   ├── env.py                ← CareerEnv (step/reset/state)
│   ├── models.py             ← Pydantic models
│   └── reward.py             ← Reward calculator
├── tasks/
│   ├── __init__.py
│   ├── definitions.py
│   ├── easy_task.json
│   ├── medium_task.json
│   └── hard_task.json
├── graders/
│   ├── __init__.py
│   ├── easy_grader.py
│   ├── medium_grader.py
│   └── hard_grader.py
├── tools/
│   ├── __init__.py
│   ├── resume_tool.py
│   ├── job_search_tool.py
│   ├── apply_tool.py
│   ├── email_tool.py
│   ├── calendar_tool.py
│   ├── interview_tool.py
│   ├── skill_tool.py
│   └── cover_letter_tool.py
└── tests/
    ├── test_env.py
    └── test_graders.py

Author

OmTiwarii — OpenEnv Hackathon 2025