# karthik0930raj-ship-it/vantage architecture

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

- Interactive diagram: https://gitdiagram.com/karthik0930raj-ship-it/vantage
- Repository: https://github.com/karthik0930raj-ship-it/vantage

## Overview

VANTAGE is a browser-based equity research and valuation terminal. An analyst selects a company, the client combines its seeded company profile with live provider data, and valuation models feed the IRM decision workflow, which presents mandate-aware ratings and sizing. The interface also exposes deal analysis, filings, news, audits, charts, printable reports, and AI-generated memos. The README documents the broader provider and IRM capabilities; sampled excerpts confirm selected client calls and server-side provider behavior, so uncertain internal wiring is omitted.

Main entry points: [`js/views/shell.js`](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/shell.js) (Terminal shell), [`js/loader.js`](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/loader.js) (Provider client), [`server.js`](https://github.com/karthik0930raj-ship-it/vantage/blob/main/server.js) (Data and AI proxy), [`js/app.js`](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/app.js) (App bootstrap)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Terminal interface"]
  node_app["App bootstrap<br/>[app.js]"]
  node_events["Input bindings<br/>[events.js]"]
  node_state["Terminal state<br/>[state.js]"]
  node_shell["Terminal shell<br/>[shell.js]"]
  node_valuation_views["Valuation views<br/>[tabs-valuation.js]"]
  node_deal_views["Deals and risk views<br/>[tabs-deals.js]"]
  node_core_views["Company views<br/>[tabs-core.js]"]
  node_info_views["Filings and news<br/>[tabs-info.js]"]
  node_irm_view["IRM view<br/>[tabs-irm.js]"]
  node_charts["Charts<br/>[charts.js]"]
  node_report["Valuation report<br/>[report.js]"]
  node_ai_view["AI analyst view<br/>[ai.js]"]
  node_settings["Provider settings<br/>[settings.js]"]
end

subgraph group_data["Company data"]
  node_universe["Company universe<br/>[data.js]"]
  node_loader["Provider client<br/>[loader.js]"]
end

subgraph group_models["Valuation models"]
  node_engines["Financial engines<br/>[engines.js]"]
end

subgraph group_decisions["IRM decisions"]
  node_irm["IRM pipeline<br/>[irm.js]"]
end

subgraph group_integrations["External services"]
  node_backend["Data and AI proxy<br/>[server.js]"]
  node_market_providers["Market data providers"]
  node_fred["FRED"]
  node_edgar["SEC EDGAR"]
  node_newsapi["NewsAPI"]
  node_nim["NVIDIA NIM"]
end

node_analyst(("Analyst"))

node_analyst -->|"opens terminal"| node_app
node_analyst -->|"enters selections"| node_events
node_app -->|"renders"| node_shell
node_app -->|"loads bindings"| node_events
node_events -->|"updates"| node_state
node_state -->|"supplies view state"| node_shell
node_universe -->|"seeds company data"| node_core_views
node_universe -->|"supplies profiles"| node_engines
node_loader -->|"requests data"| node_backend
node_backend -->|"returns data"| node_loader
node_backend -.->|"fetches market data"| node_market_providers
node_backend -.->|"fetches rates"| node_fred
node_backend -.->|"fetches filings"| node_edgar
node_loader -.->|"loads rate series"| node_fred
node_loader -.->|"loads filings"| node_edgar
node_loader -.->|"loads news"| node_newsapi
node_core_views -->|"requests company data"| node_loader
node_info_views -->|"requests filings and news"| node_loader
node_valuation_views -->|"runs valuation models"| node_engines
node_deal_views -->|"runs deal models"| node_engines
node_irm_view -->|"runs core models"| node_engines
node_irm_view -->|"derives IRM outputs"| node_irm
node_irm_view -->|"reads model inputs"| node_state
node_irm_view -->|"reads company profile"| node_universe
node_shell -->|"renders selected views"| node_valuation_views
node_shell -->|"renders selected views"| node_deal_views
node_shell -->|"renders selected views"| node_core_views
node_shell -->|"renders selected views"| node_info_views
node_shell -->|"renders selected view"| node_irm_view
node_shell -->|"renders charts"| node_charts
node_shell -->|"renders report"| node_report
node_shell -->|"renders analyst view"| node_ai_view
node_ai_view -.->|"requests AI memo"| node_backend
node_backend -.->|"requests memo generation"| node_nim
node_app -->|"loads rates"| node_loader
node_app -->|"looks up company"| node_universe
node_app -->|"renders settings"| node_settings

click node_app "https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/app.js"
click node_events "https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/events.js"
click node_state "https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/state.js"
click node_shell "https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/shell.js"
click node_valuation_views "https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/tabs-valuation.js"
click node_deal_views "https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/tabs-deals.js"
click node_core_views "https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/tabs-core.js"
click node_info_views "https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/tabs-info.js"
click node_irm_view "https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/tabs-irm.js"
click node_charts "https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/charts.js"
click node_report "https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/report.js"
click node_ai_view "https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/ai.js"
click node_universe "https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/data.js"
click node_loader "https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/loader.js"
click node_backend "https://github.com/karthik0930raj-ship-it/vantage/blob/main/server.js"
click node_engines "https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/engines.js"
click node_irm "https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/irm.js"
click node_settings "https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/settings.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_app,node_events,node_state,node_shell,node_valuation_views,node_deal_views,node_core_views,node_info_views,node_irm_view,node_charts,node_report,node_ai_view,node_settings toneBlue
class node_universe,node_loader toneAmber
class node_engines toneMint
class node_irm toneRose
class node_backend,node_market_providers,node_fred,node_edgar,node_newsapi,node_nim,node_analyst toneIndigo
```

## Components

### Terminal interface

- [App bootstrap](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/app.js): `js/app.js`
- [Input bindings](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/events.js): `js/events.js`
- [Terminal state](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/state.js): `js/state.js`
- [Terminal shell](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/shell.js): `js/views/shell.js`
- [Valuation views](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/tabs-valuation.js): `js/views/tabs-valuation.js`
- [Deals and risk views](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/tabs-deals.js): `js/views/tabs-deals.js`
- [Company views](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/tabs-core.js): `js/views/tabs-core.js`
- [Filings and news](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/tabs-info.js): `js/views/tabs-info.js`
- [IRM view](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/tabs-irm.js): `js/views/tabs-irm.js`
- [Charts](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/charts.js): `js/views/charts.js`
- [Valuation report](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/report.js): `js/views/report.js`
- [AI analyst view](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/views/ai.js): `js/views/ai.js`
- [Provider settings](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/settings.js): `js/settings.js`

### Company data

- [Company universe](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/data.js): `js/data.js`
- [Provider client](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/loader.js): `js/loader.js`

### Valuation models

- [Financial engines](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/engines.js): `js/engines.js`

### IRM decisions

- [IRM pipeline](https://github.com/karthik0930raj-ship-it/vantage/blob/main/js/irm.js): `js/irm.js`

### External services

- [Data and AI proxy](https://github.com/karthik0930raj-ship-it/vantage/blob/main/server.js): `server.js`
- **Market data providers**
- **FRED**
- **SEC EDGAR**
- **NewsAPI**
- **NVIDIA NIM**

### Other components

- **Analyst**

## Connections

- Analyst → App bootstrap: opens terminal
- Analyst → Input bindings: enters selections
- App bootstrap → Terminal shell: renders
- App bootstrap → Input bindings: loads bindings
- Input bindings → Terminal state: updates
- Terminal state → Terminal shell: supplies view state
- Company universe → Company views: seeds company data
- Company universe → Financial engines: supplies profiles
- Provider client → Data and AI proxy: requests data
- Data and AI proxy → Provider client: returns data
- Data and AI proxy → Market data providers: fetches market data
- Data and AI proxy → FRED: fetches rates
- Data and AI proxy → SEC EDGAR: fetches filings
- Provider client → FRED: loads rate series
- Provider client → SEC EDGAR: loads filings
- Provider client → NewsAPI: loads news
- Company views → Provider client: requests company data
- Filings and news → Provider client: requests filings and news
- Valuation views → Financial engines: runs valuation models
- Deals and risk views → Financial engines: runs deal models
- IRM view → Financial engines: runs core models
- IRM view → IRM pipeline: derives IRM outputs
- IRM view → Terminal state: reads model inputs
- IRM view → Company universe: reads company profile
- Terminal shell → Valuation views: renders selected views
- Terminal shell → Deals and risk views: renders selected views
- Terminal shell → Company views: renders selected views
- Terminal shell → Filings and news: renders selected views
- Terminal shell → IRM view: renders selected view
- Terminal shell → Charts: renders charts
- Terminal shell → Valuation report: renders report
- Terminal shell → AI analyst view: renders analyst view
- AI analyst view → Data and AI proxy: requests AI memo
- Data and AI proxy → NVIDIA NIM: requests memo generation
- App bootstrap → Provider client: loads rates
- App bootstrap → Company universe: looks up company
- App bootstrap → Provider settings: renders settings
