# kaniska-praba007/hackerrank-orchestrate-june-edition-submission architecture

> Architecture diagram of the GitHub repository kaniska-praba007/hackerrank-orchestrate-june-edition-submission, 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/kaniska-praba007/hackerrank-orchestrate-june-edition-submission
- Repository: https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission

## Overview

This repository is a multimodal insurance and damage-claim evidence review system for cars, laptops, and packages. Its main workflow loads claim, history, and evidence-requirement CSVs plus claim images; parses claim intent; analyzes images; checks evidence sufficiency and risk; verifies a decision; and writes a schema-shaped CSV result. A separate evaluation command reruns the pipeline against labelled claims and reports metrics. The README documents optional caching; its runtime wiring is not visible in the sampled source, so that relationship is marked unverified.

Main entry points: [`code/pipeline/orchestrator.py`](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/pipeline/orchestrator.py) (Graph Orchestrator), [`code/agents/claim_parser.py`](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/claim_parser.py) (Claim Parser), [`code/agents/visual_analyzer.py`](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/visual_analyzer.py) (Visual Analyzer), [`code/models/schemas.py`](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/models/schemas.py) (Typed Schemas)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["CLI and Evaluation"]
  node_cli["CLI Commands<br/>[main.py]"]
  node_evaluation["Evaluation Runner<br/>[main.py]"]
end

subgraph group_pipeline["Claim Pipeline"]
  node_orchestrator["Graph Orchestrator<br/>[orchestrator.py]"]
  node_ingestion["CSV and Image Loading<br/>[ingestion.py]"]
  node_state["Pipeline State<br/>[state.py]"]
  node_writer["Output Writer<br/>[output_writer.py]"]
end

subgraph group_agents["Review Agents"]
  node_parser["Claim Parser<br/>[claim_parser.py]"]
  node_mock_parser["Mock Claim Parser"]
  node_vision["Visual Analyzer<br/>[visual_analyzer.py]"]
  node_mock_vision["Mock Visual Analyzer"]
  node_evidence["Evidence Engine<br/>[evidence_engine.py]"]
  node_matcher["Part Matcher<br/>[part_matcher.py]"]
  node_risk["Risk Detector<br/>[risk_detector.py]"]
  node_mock_risk["Mock Risk<br/>[mock_risk.py]"]
  node_verifier["Claim Verifier<br/>[verifier.py]"]
end

subgraph group_runtime["Models and Services"]
  node_schemas["Typed Schemas<br/>[schemas.py]"]
  node_retry["LLM Retry<br/>[retry_llm.py]"]
  node_cache[("Optional Cache<br/>[cache.py]")]
end

node_operator(("Operator"))
node_csv_inputs["Claim CSVs"]
node_gemini{{"Gemini API"}}
node_results["Prediction CSV"]
node_report["Evaluation Report"]

node_operator -->|"runs"| node_cli
node_csv_inputs -->|"provides paths"| node_cli
node_cli -->|"runs pipeline"| node_orchestrator
node_cli -->|"runs evaluation"| node_evaluation
node_evaluation -->|"runs pipeline"| node_orchestrator
node_orchestrator -->|"loads records"| node_ingestion
node_ingestion -->|"creates records"| node_schemas
node_orchestrator -->|"uses state"| node_state
node_orchestrator -->|"dispatches parsing"| node_parser
node_orchestrator -->|"dispatches mock"| node_mock_parser
node_orchestrator -->|"dispatches analysis"| node_vision
node_orchestrator -->|"dispatches mock"| node_mock_vision
node_orchestrator -->|"checks sufficiency"| node_evidence
node_evidence -->|"matches parts"| node_matcher
node_orchestrator -->|"detects risk"| node_risk
node_orchestrator -->|"selects mock"| node_mock_risk
node_orchestrator -->|"decides claim"| node_verifier
node_orchestrator -->|"writes output"| node_writer
node_writer -->|"writes CSV"| node_results
node_evaluation -->|"reads predictions"| node_results
node_evaluation -->|"writes report"| node_report
node_parser -->|"returns intent"| node_schemas
node_vision -->|"returns findings"| node_schemas
node_risk -->|"uses risk types"| node_schemas
node_verifier -->|"returns decision"| node_schemas
node_parser -->|"retries calls"| node_retry
node_vision -->|"retries calls"| node_retry
node_parser -->|"calls model"| node_gemini
node_vision -->|"calls vision"| node_gemini
node_parser -.->|"may cache calls"| node_cache
node_vision -.->|"may cache calls"| node_cache

click node_cli "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/main.py"
click node_evaluation "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/evaluation/main.py"
click node_orchestrator "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/pipeline/orchestrator.py"
click node_ingestion "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/pipeline/ingestion.py"
click node_state "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/pipeline/state.py"
click node_writer "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/pipeline/output_writer.py"
click node_parser "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/claim_parser.py"
click node_mock_parser "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/mock_claim_parser.py"
click node_vision "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/visual_analyzer.py"
click node_mock_vision "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/mock_visual_analyzer.py"
click node_evidence "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/evidence_engine.py"
click node_matcher "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/part_matcher.py"
click node_risk "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/risk_detector.py"
click node_mock_risk "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/mock_risk.py"
click node_verifier "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/verifier.py"
click node_schemas "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/models/schemas.py"
click node_retry "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/services/retry_llm.py"
click node_cache "https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/services/cache.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_cli,node_evaluation toneBlue
class node_orchestrator,node_ingestion,node_state,node_writer toneAmber
class node_parser,node_mock_parser,node_vision,node_mock_vision,node_evidence,node_matcher,node_risk,node_mock_risk,node_verifier,node_gemini toneMint
class node_schemas,node_retry,node_cache toneRose
class node_operator,node_csv_inputs,node_results,node_report toneIndigo
```

## Components

### CLI and Evaluation

- [CLI Commands](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/main.py): `code/main.py`
- [Evaluation Runner](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/evaluation/main.py): `code/evaluation/main.py`

### Claim Pipeline

- [Graph Orchestrator](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/pipeline/orchestrator.py): `code/pipeline/orchestrator.py`
- [CSV and Image Loading](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/pipeline/ingestion.py): `code/pipeline/ingestion.py`
- [Pipeline State](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/pipeline/state.py): `code/pipeline/state.py`
- [Output Writer](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/pipeline/output_writer.py): `code/pipeline/output_writer.py`

### Review Agents

- [Claim Parser](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/claim_parser.py): `code/agents/claim_parser.py`
- [Mock Claim Parser](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/mock_claim_parser.py): `code/agents/mock_claim_parser.py`
- [Visual Analyzer](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/visual_analyzer.py): `code/agents/visual_analyzer.py`
- [Mock Visual Analyzer](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/mock_visual_analyzer.py): `code/agents/mock_visual_analyzer.py`
- [Evidence Engine](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/evidence_engine.py): `code/agents/evidence_engine.py`
- [Part Matcher](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/part_matcher.py): `code/agents/part_matcher.py`
- [Risk Detector](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/risk_detector.py): `code/agents/risk_detector.py`
- [Mock Risk](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/mock_risk.py): `code/agents/mock_risk.py`
- [Claim Verifier](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/agents/verifier.py): `code/agents/verifier.py`

### Models and Services

- [Typed Schemas](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/models/schemas.py): `code/models/schemas.py`
- [LLM Retry](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/services/retry_llm.py): `code/services/retry_llm.py`
- [Optional Cache](https://github.com/kaniska-praba007/hackerrank-orchestrate-june-edition-submission/blob/main/code/services/cache.py): `code/services/cache.py`

### Other components

- **Operator**
- **Claim CSVs**
- **Gemini API**
- **Prediction CSV**
- **Evaluation Report**

## Connections

- Operator → CLI Commands: runs (evidence: `code/main.py`)
- Claim CSVs → CLI Commands: provides paths (evidence: `code/main.py`)
- CLI Commands → Graph Orchestrator: runs pipeline (evidence: `code/main.py`)
- CLI Commands → Evaluation Runner: runs evaluation (evidence: `code/main.py`)
- Evaluation Runner → Graph Orchestrator: runs pipeline (evidence: `code/evaluation/main.py`)
- Graph Orchestrator → CSV and Image Loading: loads records (evidence: `code/pipeline/orchestrator.py`)
- CSV and Image Loading → Typed Schemas: creates records (evidence: `code/pipeline/ingestion.py`)
- Graph Orchestrator → Pipeline State: uses state (evidence: `code/pipeline/orchestrator.py`)
- Graph Orchestrator → Claim Parser: dispatches parsing (evidence: `code/pipeline/orchestrator.py`)
- Graph Orchestrator → Mock Claim Parser: dispatches mock (evidence: `code/pipeline/orchestrator.py`)
- Graph Orchestrator → Visual Analyzer: dispatches analysis (evidence: `code/pipeline/orchestrator.py`)
- Graph Orchestrator → Mock Visual Analyzer: dispatches mock (evidence: `code/pipeline/orchestrator.py`)
- Graph Orchestrator → Evidence Engine: checks sufficiency (evidence: `code/pipeline/orchestrator.py`)
- Evidence Engine → Part Matcher: matches parts (evidence: `code/agents/evidence_engine.py`)
- Graph Orchestrator → Risk Detector: detects risk (evidence: `code/pipeline/orchestrator.py`)
- Graph Orchestrator → Mock Risk: selects mock (evidence: `code/pipeline/orchestrator.py`)
- Graph Orchestrator → Claim Verifier: decides claim (evidence: `code/pipeline/orchestrator.py`)
- Graph Orchestrator → Output Writer: writes output (evidence: `code/pipeline/orchestrator.py`)
- Output Writer → Prediction CSV: writes CSV (evidence: `code/pipeline/output_writer.py`)
- Evaluation Runner → Prediction CSV: reads predictions (evidence: `code/evaluation/main.py`)
- Evaluation Runner → Evaluation Report: writes report (evidence: `code/evaluation/main.py`)
- Claim Parser → Typed Schemas: returns intent (evidence: `code/agents/claim_parser.py`)
- Visual Analyzer → Typed Schemas: returns findings (evidence: `code/agents/visual_analyzer.py`)
- Risk Detector → Typed Schemas: uses risk types (evidence: `code/agents/risk_detector.py`)
- Claim Verifier → Typed Schemas: returns decision (evidence: `code/agents/verifier.py`)
- Claim Parser → LLM Retry: retries calls (evidence: `code/agents/claim_parser.py`)
- Visual Analyzer → LLM Retry: retries calls (evidence: `code/agents/visual_analyzer.py`)
- Claim Parser → Gemini API: calls model (evidence: `code/agents/claim_parser.py`)
- Visual Analyzer → Gemini API: calls vision (evidence: `code/agents/visual_analyzer.py`)
- Claim Parser → Optional Cache: may cache calls
- Visual Analyzer → Optional Cache: may cache calls
