# jirmaicds/verifiedpulse architecture

> Architecture diagram of the GitHub repository jirmaicds/verifiedpulse, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jirmaicds/verifiedpulse
- Repository: https://github.com/jirmaicds/verifiedpulse

## Overview

VerifiedPulse accepts claims, gathers web evidence, evaluates propositions through rotating LLM providers, scores misinformation risk, and persists checks and provider statistics. The server also exposes metrics and provider-status endpoints. The README is empty; the graph uses the sampled implementation, and unsampled frontend or SQL details are not expanded.

Main entry points: [`lib/check-claim-handler.js`](https://github.com/jirmaicds/verifiedpulse/blob/main/lib/check-claim-handler.js) (Claim handler), [`server.js`](https://github.com/jirmaicds/verifiedpulse/blob/main/server.js) (HTTP server), [`lib/database.js`](https://github.com/jirmaicds/verifiedpulse/blob/main/lib/database.js) (Metrics aggregation), [`lib/llm-providers.js`](https://github.com/jirmaicds/verifiedpulse/blob/main/lib/llm-providers.js) (LLM rotation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API and workflow"]
  node_server["HTTP server<br/>[server.js]"]
  node_claim["Claim handler"]
  node_api_check["Claim endpoint<br/>[check-claim.js]"]
  node_http["HTTP helpers<br/>[http.js]"]
  node_providers_api["Provider endpoint<br/>[providers.js]"]
  node_metrics_api["Metrics endpoint<br/>[metrics.js]"]
end

subgraph group_analysis["Evidence and analysis"]
  node_search["Web search"]
  node_evidence["Evidence formatting<br/>[llm-providers.js]"]
  node_providers["LLM rotation<br/>[llm-providers.js]"]
  node_risk["Risk classification<br/>[risk.js]"]
end

subgraph group_state["Persistence and monitoring"]
  node_checks[("Check records<br/>[database.js]")]
  node_misinfo[("Misinformation events<br/>[database.js]")]
  node_provider_stats[("Provider statistics<br/>[database.js]")]
  node_metrics["Metrics aggregation<br/>[database.js]"]
end

node_user(("Claim submitter"))
node_search_service["Search service"]
node_llm_service["LLM providers"]
node_supabase[("Supabase")]

node_user -->|"submits claim"| node_server
node_server -->|"routes claim"| node_claim
node_server -->|"serves stats"| node_providers
node_server -->|"fetches metrics"| node_metrics
node_api_check -->|"delegates to"| node_claim
node_claim -->|"reads and sends"| node_http
node_claim -->|"searches claim"| node_search
node_search -->|"queries"| node_search_service
node_claim -->|"formats results"| node_evidence
node_claim -->|"evaluates claim"| node_providers
node_providers -->|"calls provider"| node_llm_service
node_claim -->|"classifies propositions"| node_risk
node_claim -->|"inserts check"| node_checks
node_claim -->|"records failed check"| node_misinfo
node_claim -->|"updates stats"| node_provider_stats
node_checks -->|"writes and reads"| node_supabase
node_misinfo -->|"writes and reads"| node_supabase
node_provider_stats -->|"reads and writes"| node_supabase
node_metrics -->|"queries records"| node_supabase
node_metrics -->|"classifies fallback"| node_risk
node_metrics_api -->|"fetches metrics"| node_metrics
node_metrics_api -->|"sends JSON"| node_http
node_providers_api -->|"fetches stats"| node_providers
node_providers_api -->|"sends JSON"| node_http

click node_server "https://github.com/jirmaicds/verifiedpulse/blob/main/server.js"
click node_claim "https://github.com/jirmaicds/verifiedpulse/blob/main/lib/check-claim-handler.js"
click node_api_check "https://github.com/jirmaicds/verifiedpulse/blob/main/api/check-claim.js"
click node_http "https://github.com/jirmaicds/verifiedpulse/blob/main/lib/http.js"
click node_search "https://github.com/jirmaicds/verifiedpulse/blob/main/lib/check-claim-handler.js"
click node_evidence "https://github.com/jirmaicds/verifiedpulse/blob/main/lib/llm-providers.js"
click node_providers "https://github.com/jirmaicds/verifiedpulse/blob/main/lib/llm-providers.js"
click node_risk "https://github.com/jirmaicds/verifiedpulse/blob/main/lib/risk.js"
click node_checks "https://github.com/jirmaicds/verifiedpulse/blob/main/lib/database.js"
click node_misinfo "https://github.com/jirmaicds/verifiedpulse/blob/main/lib/database.js"
click node_provider_stats "https://github.com/jirmaicds/verifiedpulse/blob/main/lib/database.js"
click node_metrics "https://github.com/jirmaicds/verifiedpulse/blob/main/lib/database.js"
click node_providers_api "https://github.com/jirmaicds/verifiedpulse/blob/main/api/providers.js"
click node_metrics_api "https://github.com/jirmaicds/verifiedpulse/blob/main/api/metrics.js"

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_server,node_claim,node_api_check,node_http,node_providers_api,node_metrics_api toneBlue
class node_search,node_evidence,node_providers,node_risk,node_supabase toneAmber
class node_checks,node_misinfo,node_provider_stats,node_metrics toneMint
class node_user,node_search_service,node_llm_service toneIndigo
```

## Components

### API and workflow

- [HTTP server](https://github.com/jirmaicds/verifiedpulse/blob/main/server.js): `server.js`
- [Claim handler](https://github.com/jirmaicds/verifiedpulse/blob/main/lib/check-claim-handler.js): `lib/check-claim-handler.js`
- [Claim endpoint](https://github.com/jirmaicds/verifiedpulse/blob/main/api/check-claim.js): `api/check-claim.js`
- [HTTP helpers](https://github.com/jirmaicds/verifiedpulse/blob/main/lib/http.js): `lib/http.js`
- [Provider endpoint](https://github.com/jirmaicds/verifiedpulse/blob/main/api/providers.js): `api/providers.js`
- [Metrics endpoint](https://github.com/jirmaicds/verifiedpulse/blob/main/api/metrics.js): `api/metrics.js`

### Evidence and analysis

- [Web search](https://github.com/jirmaicds/verifiedpulse/blob/main/lib/check-claim-handler.js): `lib/check-claim-handler.js`
- [Evidence formatting](https://github.com/jirmaicds/verifiedpulse/blob/main/lib/llm-providers.js): `lib/llm-providers.js`
- [LLM rotation](https://github.com/jirmaicds/verifiedpulse/blob/main/lib/llm-providers.js): `lib/llm-providers.js`
- [Risk classification](https://github.com/jirmaicds/verifiedpulse/blob/main/lib/risk.js): `lib/risk.js`

### Persistence and monitoring

- [Check records](https://github.com/jirmaicds/verifiedpulse/blob/main/lib/database.js): `lib/database.js`
- [Misinformation events](https://github.com/jirmaicds/verifiedpulse/blob/main/lib/database.js): `lib/database.js`
- [Provider statistics](https://github.com/jirmaicds/verifiedpulse/blob/main/lib/database.js): `lib/database.js`
- [Metrics aggregation](https://github.com/jirmaicds/verifiedpulse/blob/main/lib/database.js): `lib/database.js`

### Other components

- **Claim submitter**
- **Search service**
- **LLM providers**
- **Supabase**

## Connections

- Claim submitter → HTTP server: submits claim (evidence: `server.js`)
- HTTP server → Claim handler: routes claim (evidence: `server.js`)
- HTTP server → LLM rotation: serves stats (evidence: `server.js`)
- HTTP server → Metrics aggregation: fetches metrics (evidence: `server.js`)
- Claim endpoint → Claim handler: delegates to (evidence: `api/check-claim.js`)
- Claim handler → HTTP helpers: reads and sends (evidence: `lib/check-claim-handler.js`)
- Claim handler → Web search: searches claim (evidence: `lib/check-claim-handler.js`)
- Web search → Search service: queries (evidence: `lib/check-claim-handler.js`)
- Claim handler → Evidence formatting: formats results (evidence: `lib/check-claim-handler.js`)
- Claim handler → LLM rotation: evaluates claim (evidence: `lib/check-claim-handler.js`)
- LLM rotation → LLM providers: calls provider (evidence: `lib/llm-providers.js`)
- Claim handler → Risk classification: classifies propositions (evidence: `lib/check-claim-handler.js`)
- Claim handler → Check records: inserts check (evidence: `lib/check-claim-handler.js`)
- Claim handler → Misinformation events: records failed check (evidence: `lib/check-claim-handler.js`)
- Claim handler → Provider statistics: updates stats (evidence: `lib/check-claim-handler.js`)
- Check records → Supabase: writes and reads (evidence: `lib/database.js`)
- Misinformation events → Supabase: writes and reads (evidence: `lib/database.js`)
- Provider statistics → Supabase: reads and writes (evidence: `lib/database.js`)
- Metrics aggregation → Supabase: queries records (evidence: `lib/database.js`)
- Metrics aggregation → Risk classification: classifies fallback (evidence: `lib/database.js`)
- Metrics endpoint → Metrics aggregation: fetches metrics (evidence: `api/metrics.js`)
- Metrics endpoint → HTTP helpers: sends JSON (evidence: `api/metrics.js`)
- Provider endpoint → LLM rotation: fetches stats (evidence: `api/providers.js`)
- Provider endpoint → HTTP helpers: sends JSON (evidence: `api/providers.js`)
