# himanshu-1703/llmops-agent-app architecture

> Architecture diagram of the GitHub repository himanshu-1703/llmops-agent-app, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/himanshu-1703/llmops-agent-app
- Repository: https://github.com/himanshu-1703/llmops-agent-app

## Overview

Hiring Agent is a workspace-based hiring assistant: a user submits a task, the API runs a guarded plan-and-execute agent over resume files and a candidate tracker, then returns the response and workspace changes. A frontend and CLI provide ways to run the agent. Separate evaluation and experimentation subsystems assess agent quality and manage prompt/config challengers through MLflow. Edges reflect excerpted calls or SOURCE INDEX references; unsampled frontend/API wiring and some operational details are not asserted.

Main entry points: [`src/hiring_agent/app/agent.py`](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/app/agent.py) (Plan-Execute Agent), [`src/hiring_agent/evals/eval_agent.py`](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/evals/eval_agent.py) (Evaluation Runner), [`src/hiring_agent/experimentation/execute_experiment_pipeline.py`](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/experimentation/execute_experiment_pipeline.py) (Experiment Pipeline), [`src/hiring_agent/app/clients.py`](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/app/clients.py) (LLM Clients)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["User Interfaces"]
  node_frontend["Agent Frontend<br/>[agent_app.py]"]
  node_api_client["API Client<br/>[api_client.py]"]
  node_api["FastAPI App<br/>[main.py]"]
  node_agent_route["Agent Route<br/>[agent.py]"]
  node_workspace_route["Workspace Route<br/>[workspace.py]"]
  node_health_route["Health Route<br/>[health.py]"]
  node_schemas["API Schemas<br/>[schemas.py]"]
end

subgraph group_runtime["Hiring Agent Runtime"]
  node_agent["Plan-Execute Agent<br/>[agent.py]"]
  node_guards["Hiring Guardrails<br/>[guards.py]"]
  node_tools["Agent Tools<br/>[tools.py]"]
  node_workspace[("Hiring Workspace<br/>[workspace.py]")]
  node_prompts["Prompt Loading<br/>[prompts.py]"]
  node_clients["LLM Clients<br/>[clients.py]"]
  node_parameters["Agent Parameters"]
end

subgraph group_evaluation["Evaluation"]
  node_eval_runner["Evaluation Runner<br/>[eval_agent.py]"]
  node_eval_metrics["Evaluation Metrics<br/>[metrics.py]"]
  node_plan_judge["Plan Quality Judge<br/>[plan_judge.py]"]
  node_adherence_judge["Plan Adherence Judge<br/>[adherence_judge.py]"]
  node_slim_trace["Slim Trace<br/>[slim_trace.py]"]
  node_eval_report["Evaluation Reports<br/>[report.py]"]
end

subgraph group_experiments["Experimentation"]
  node_experiment["Experiment Pipeline"]
  node_mlflow[("MLflow Tracking<br/>[mlflow_utils.py]")]
  node_promotion["Promote Challenger"]
  node_rejection["Reject Challenger"]
end

node_user(("Hiring User"))

node_user -.->|"submits task"| node_frontend
node_frontend -->|"uses"| node_api_client
node_api_client -.->|"sends requests"| node_api
node_api -->|"registers route"| node_agent_route
node_api -->|"registers route"| node_workspace_route
node_api -->|"registers route"| node_health_route
node_agent_route -->|"uses models"| node_schemas
node_agent_route -->|"runs agent"| node_agent
node_agent_route -->|"snapshots workspace"| node_workspace
node_workspace_route -->|"uses workspace"| node_workspace
node_health_route -->|"checks clients"| node_clients
node_health_route -->|"checks guards"| node_guards
node_agent -->|"validates stages"| node_guards
node_agent -->|"invokes tools"| node_tools
node_agent -->|"snapshots state"| node_workspace
node_agent -->|"loads prompts"| node_prompts
node_agent -->|"uses models"| node_clients
node_tools -->|"reads and writes"| node_workspace
node_tools -->|"applies checks"| node_guards
node_tools -->|"uses clients"| node_clients
node_prompts -->|"uses logger"| node_clients
node_prompts -->|"reads settings"| node_parameters
node_clients -->|"loads settings"| node_parameters
node_eval_runner -->|"runs agent"| node_agent
node_eval_runner -->|"builds metrics"| node_eval_metrics
node_eval_runner -->|"judges plans"| node_plan_judge
node_eval_runner -->|"judges adherence"| node_adherence_judge
node_eval_runner -->|"writes reports"| node_eval_report
node_eval_metrics -->|"wraps trace metrics"| node_slim_trace
node_eval_metrics -->|"creates judge"| node_plan_judge
node_eval_metrics -->|"creates judge"| node_adherence_judge
node_experiment -->|"runs evaluations"| node_eval_runner
node_experiment -->|"reads averages"| node_eval_report
node_experiment -->|"loads prompts"| node_prompts
node_experiment -->|"uses parameters"| node_parameters
node_experiment -->|"logs runs"| node_mlflow
node_promotion -->|"promotes run"| node_mlflow
node_rejection -->|"rejects run"| node_mlflow

click node_frontend "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/frontend/agent_app.py"
click node_api_client "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/frontend/api_client.py"
click node_api "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/api/main.py"
click node_agent_route "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/api/routers/agent.py"
click node_workspace_route "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/api/routers/workspace.py"
click node_health_route "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/api/routers/health.py"
click node_schemas "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/api/schemas.py"
click node_agent "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/app/agent.py"
click node_guards "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/app/guards.py"
click node_tools "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/app/tools.py"
click node_workspace "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/app/workspace.py"
click node_prompts "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/app/prompts.py"
click node_clients "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/app/clients.py"
click node_parameters "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/config/parameter_config.py"
click node_eval_runner "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/evals/eval_agent.py"
click node_eval_metrics "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/evals/metrics.py"
click node_plan_judge "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/evals/plan_judge.py"
click node_adherence_judge "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/evals/adherence_judge.py"
click node_slim_trace "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/evals/slim_trace.py"
click node_eval_report "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/evals/report.py"
click node_experiment "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/experimentation/execute_experiment_pipeline.py"
click node_mlflow "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/utils/mlflow_utils.py"
click node_promotion "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/experimentation/promote_challenger.py"
click node_rejection "https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/experimentation/reject_challenger.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_frontend,node_api_client,node_api,node_agent_route,node_workspace_route,node_health_route,node_schemas,node_user toneBlue
class node_agent,node_guards,node_tools,node_workspace,node_prompts,node_clients,node_parameters toneAmber
class node_eval_runner,node_eval_metrics,node_plan_judge,node_adherence_judge,node_slim_trace,node_eval_report toneMint
class node_experiment,node_mlflow,node_promotion,node_rejection toneRose
```

## Components

### User Interfaces

- [Agent Frontend](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/frontend/agent_app.py): `src/hiring_agent/frontend/agent_app.py`
- [API Client](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/frontend/api_client.py): `src/hiring_agent/frontend/api_client.py`
- [FastAPI App](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/api/main.py): `src/hiring_agent/api/main.py`
- [Agent Route](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/api/routers/agent.py): `src/hiring_agent/api/routers/agent.py`
- [Workspace Route](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/api/routers/workspace.py): `src/hiring_agent/api/routers/workspace.py`
- [Health Route](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/api/routers/health.py): `src/hiring_agent/api/routers/health.py`
- [API Schemas](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/api/schemas.py): `src/hiring_agent/api/schemas.py`

### Hiring Agent Runtime

- [Plan-Execute Agent](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/app/agent.py): `src/hiring_agent/app/agent.py`
- [Hiring Guardrails](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/app/guards.py): `src/hiring_agent/app/guards.py`
- [Agent Tools](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/app/tools.py): `src/hiring_agent/app/tools.py`
- [Hiring Workspace](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/app/workspace.py): `src/hiring_agent/app/workspace.py`
- [Prompt Loading](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/app/prompts.py): `src/hiring_agent/app/prompts.py`
- [LLM Clients](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/app/clients.py): `src/hiring_agent/app/clients.py`
- [Agent Parameters](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/config/parameter_config.py): `src/hiring_agent/config/parameter_config.py`

### Evaluation

- [Evaluation Runner](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/evals/eval_agent.py): `src/hiring_agent/evals/eval_agent.py`
- [Evaluation Metrics](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/evals/metrics.py): `src/hiring_agent/evals/metrics.py`
- [Plan Quality Judge](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/evals/plan_judge.py): `src/hiring_agent/evals/plan_judge.py`
- [Plan Adherence Judge](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/evals/adherence_judge.py): `src/hiring_agent/evals/adherence_judge.py`
- [Slim Trace](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/evals/slim_trace.py): `src/hiring_agent/evals/slim_trace.py`
- [Evaluation Reports](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/evals/report.py): `src/hiring_agent/evals/report.py`

### Experimentation

- [Experiment Pipeline](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/experimentation/execute_experiment_pipeline.py): `src/hiring_agent/experimentation/execute_experiment_pipeline.py`
- [MLflow Tracking](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/utils/mlflow_utils.py): `src/hiring_agent/utils/mlflow_utils.py`
- [Promote Challenger](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/experimentation/promote_challenger.py): `src/hiring_agent/experimentation/promote_challenger.py`
- [Reject Challenger](https://github.com/himanshu-1703/llmops-agent-app/blob/main/src/hiring_agent/experimentation/reject_challenger.py): `src/hiring_agent/experimentation/reject_challenger.py`

### Other components

- **Hiring User**

## Connections

- Hiring User → Agent Frontend: submits task
- Agent Frontend → API Client: uses (evidence: `src/hiring_agent/frontend/agent_app.py`)
- API Client → FastAPI App: sends requests
- FastAPI App → Agent Route: registers route (evidence: `src/hiring_agent/api/main.py`)
- FastAPI App → Workspace Route: registers route (evidence: `src/hiring_agent/api/main.py`)
- FastAPI App → Health Route: registers route (evidence: `src/hiring_agent/api/main.py`)
- Agent Route → API Schemas: uses models (evidence: `src/hiring_agent/api/routers/agent.py`)
- Agent Route → Plan-Execute Agent: runs agent (evidence: `src/hiring_agent/api/routers/agent.py`)
- Agent Route → Hiring Workspace: snapshots workspace (evidence: `src/hiring_agent/api/routers/agent.py`)
- Workspace Route → Hiring Workspace: uses workspace (evidence: `src/hiring_agent/api/routers/workspace.py`)
- Health Route → LLM Clients: checks clients (evidence: `src/hiring_agent/api/routers/health.py`)
- Health Route → Hiring Guardrails: checks guards (evidence: `src/hiring_agent/api/routers/health.py`)
- Plan-Execute Agent → Hiring Guardrails: validates stages (evidence: `src/hiring_agent/app/agent.py`)
- Plan-Execute Agent → Agent Tools: invokes tools (evidence: `src/hiring_agent/app/agent.py`)
- Plan-Execute Agent → Hiring Workspace: snapshots state (evidence: `src/hiring_agent/app/agent.py`)
- Plan-Execute Agent → Prompt Loading: loads prompts (evidence: `src/hiring_agent/app/agent.py`)
- Plan-Execute Agent → LLM Clients: uses models (evidence: `src/hiring_agent/app/agent.py`)
- Agent Tools → Hiring Workspace: reads and writes (evidence: `src/hiring_agent/app/tools.py`)
- Agent Tools → Hiring Guardrails: applies checks (evidence: `src/hiring_agent/app/tools.py`)
- Agent Tools → LLM Clients: uses clients (evidence: `src/hiring_agent/app/tools.py`)
- Prompt Loading → LLM Clients: uses logger (evidence: `src/hiring_agent/app/prompts.py`)
- Prompt Loading → Agent Parameters: reads settings (evidence: `src/hiring_agent/app/prompts.py`)
- LLM Clients → Agent Parameters: loads settings (evidence: `src/hiring_agent/app/clients.py`)
- Evaluation Runner → Plan-Execute Agent: runs agent (evidence: `src/hiring_agent/evals/eval_agent.py`)
- Evaluation Runner → Evaluation Metrics: builds metrics (evidence: `src/hiring_agent/evals/eval_agent.py`)
- Evaluation Runner → Plan Quality Judge: judges plans (evidence: `src/hiring_agent/evals/eval_agent.py`)
- Evaluation Runner → Plan Adherence Judge: judges adherence (evidence: `src/hiring_agent/evals/eval_agent.py`)
- Evaluation Runner → Evaluation Reports: writes reports (evidence: `src/hiring_agent/evals/eval_agent.py`)
- Evaluation Metrics → Slim Trace: wraps trace metrics (evidence: `src/hiring_agent/evals/metrics.py`)
- Evaluation Metrics → Plan Quality Judge: creates judge (evidence: `src/hiring_agent/evals/metrics.py`)
- Evaluation Metrics → Plan Adherence Judge: creates judge (evidence: `src/hiring_agent/evals/metrics.py`)
- Experiment Pipeline → Evaluation Runner: runs evaluations (evidence: `src/hiring_agent/experimentation/execute_experiment_pipeline.py`)
- Experiment Pipeline → Evaluation Reports: reads averages (evidence: `src/hiring_agent/experimentation/execute_experiment_pipeline.py`)
- Experiment Pipeline → Prompt Loading: loads prompts (evidence: `src/hiring_agent/experimentation/execute_experiment_pipeline.py`)
- Experiment Pipeline → Agent Parameters: uses parameters (evidence: `src/hiring_agent/experimentation/execute_experiment_pipeline.py`)
- Experiment Pipeline → MLflow Tracking: logs runs (evidence: `src/hiring_agent/experimentation/execute_experiment_pipeline.py`)
- Promote Challenger → MLflow Tracking: promotes run (evidence: `src/hiring_agent/experimentation/promote_challenger.py`)
- Reject Challenger → MLflow Tracking: rejects run (evidence: `src/hiring_agent/experimentation/reject_challenger.py`)
