# campusx-official/jev-demo architecture

> Architecture diagram of the GitHub repository campusx-official/jev-demo, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-07). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/campusx-official/jev-demo
- Repository: https://github.com/campusx-official/jev-demo

## Overview

This is a command-line smartphone review analyzer. The user runs `main.py`, which reads review rows from the CSV, sends each review to Jev for topic-mention and satisfaction judgments, then aggregates the retained star ratings and prints per-review and topic summaries. The graph preserves the question definitions and the separate aggregation stage. Relationships are supported by the sampled source and README; Jev is an external service.

Main entry points: [`main.py`](https://github.com/campusx-official/jev-demo/blob/main/main.py) (Review runner), [`analyzer.py`](https://github.com/campusx-official/jev-demo/blob/main/analyzer.py) (Review analyzer), [`aggregation.py`](https://github.com/campusx-official/jev-demo/blob/main/aggregation.py) (Topic aggregation), [`questions.py`](https://github.com/campusx-official/jev-demo/blob/main/questions.py) (Topic questions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Review workflow"]
  node_main["Review runner<br/>[main.py]"]
  node_reviews["Review CSV"]
end

subgraph group_analysis["Topic analysis"]
  node_analyzer["Review analyzer<br/>[analyzer.py]"]
  node_questions["Topic questions<br/>[questions.py]"]
end

subgraph group_results["Rating results"]
  node_aggregation["Topic aggregation<br/>[aggregation.py]"]
  node_console["Printed summary"]
end

node_user(("CLI user"))
node_jev{{"Jev service"}}

node_user -->|"runs"| node_main
node_main -->|"reads"| node_reviews
node_main -->|"analyzes reviews"| node_analyzer
node_analyzer -->|"uses definitions"| node_questions
node_analyzer -->|"requests judgments"| node_jev
node_main -->|"aggregates ratings"| node_aggregation
node_aggregation -->|"uses topics"| node_questions
node_main -->|"prints results"| node_console

click node_main "https://github.com/campusx-official/jev-demo/blob/main/main.py"
click node_reviews "https://github.com/campusx-official/jev-demo/blob/main/synthetic_phone_reviews.csv"
click node_analyzer "https://github.com/campusx-official/jev-demo/blob/main/analyzer.py"
click node_questions "https://github.com/campusx-official/jev-demo/blob/main/questions.py"
click node_aggregation "https://github.com/campusx-official/jev-demo/blob/main/aggregation.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_main,node_reviews,node_user toneBlue
class node_analyzer,node_questions toneAmber
class node_aggregation,node_console toneMint
class node_jev toneIndigo
```

## Components

### Review workflow

- [Review runner](https://github.com/campusx-official/jev-demo/blob/main/main.py): `main.py`
- [Review CSV](https://github.com/campusx-official/jev-demo/blob/main/synthetic_phone_reviews.csv): `synthetic_phone_reviews.csv`

### Topic analysis

- [Review analyzer](https://github.com/campusx-official/jev-demo/blob/main/analyzer.py): `analyzer.py`
- [Topic questions](https://github.com/campusx-official/jev-demo/blob/main/questions.py): `questions.py`

### Rating results

- [Topic aggregation](https://github.com/campusx-official/jev-demo/blob/main/aggregation.py): `aggregation.py`
- **Printed summary**

### Other components

- **CLI user**
- **Jev service**

## Connections

- CLI user → Review runner: runs (evidence: `README.md`)
- Review runner → Review CSV: reads (evidence: `main.py`)
- Review runner → Review analyzer: analyzes reviews (evidence: `main.py`)
- Review analyzer → Topic questions: uses definitions (evidence: `analyzer.py`)
- Review analyzer → Jev service: requests judgments (evidence: `analyzer.py`)
- Review runner → Topic aggregation: aggregates ratings (evidence: `main.py`)
- Topic aggregation → Topic questions: uses topics (evidence: `aggregation.py`)
- Review runner → Printed summary: prints results (evidence: `main.py`)
