# elias569/fintech-app architecture

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

- Interactive diagram: https://gitdiagram.com/elias569/fintech-app
- Repository: https://github.com/elias569/fintech-app

## Overview

VentureLink is a startup–investor matching prototype, with a separate set of Indian-market intelligence demos. The documented core workflow is startup deck ingestion and investor thesis registration, followed by two-way match discovery and AI-drafted introductions. The React app routes role-based users through onboarding and dashboards; the sampled discovery page uses mock investor data, so frontend-to-API calls are not established by the excerpts. Backend behavior is concentrated in one FastAPI module and uses in-memory profiles, optional Redis caching, and OpenAI. Frontend page details and unsampled backend wiring are represented only where the README supports them.

Main entry points: [`backend/main.py`](https://github.com/elias569/fintech-app/blob/main/backend/main.py) (FastAPI endpoints), [`src/App.tsx`](https://github.com/elias569/fintech-app/blob/main/src/App.tsx) (App router), [`src/pages/AuthPage.tsx`](https://github.com/elias569/fintech-app/blob/main/src/pages/AuthPage.tsx) (Demo sign-in), [`src/pages/OnboardingPage.tsx`](https://github.com/elias569/fintech-app/blob/main/src/pages/OnboardingPage.tsx) (Profile onboarding)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Role-based client"]
  node_app["App router<br/>[App.tsx]"]
  node_auth["Demo sign-in<br/>[AuthPage.tsx]"]
  node_onboarding["Profile onboarding<br/>[OnboardingPage.tsx]"]
  node_startupdash["Startup dashboard<br/>[Dashboardpage.tsx]"]
  node_investordash["Investor dashboard"]
  node_discover["Match discovery<br/>[DiscoverPage.tsx]"]
  node_landing["Product landing"]
end

subgraph group_matching["Venture matching API"]
  node_api["FastAPI endpoints<br/>[main.py]"]
  node_deck["Deck ingestion<br/>[main.py]"]
  node_investor["Investor registration<br/>[main.py]"]
  node_startupmatches["Startup matches<br/>[main.py]"]
  node_dealflow["Investor dealflow<br/>[main.py]"]
  node_intro["Intro drafting<br/>[main.py]"]
end

subgraph group_intelligence["Market intelligence"]
  node_market["Opportunity radar<br/>[main.py]"]
  node_charts["Chart patterns<br/>[main.py]"]
  node_chat["Market chat<br/>[main.py]"]
end

subgraph group_services["Storage and AI"]
  node_profiles[("In-memory profiles<br/>[main.py]")]
  node_cache["Match cache<br/>[cache.py]"]
  node_redis[("Redis")]
  node_openai["OpenAI API"]
end

node_user(("Startup or investor"))

node_user -->|"uses"| node_app
node_app -->|"renders"| node_auth
node_app -->|"renders"| node_landing
node_app -->|"renders"| node_onboarding
node_app -->|"renders"| node_startupdash
node_app -->|"renders"| node_investordash
node_app -->|"renders"| node_discover
node_auth -->|"submits identity"| node_app
node_onboarding -->|"navigates"| node_app
node_user -->|"calls API"| node_api
node_api -->|"dispatches upload"| node_deck
node_api -->|"dispatches registration"| node_investor
node_api -->|"dispatches query"| node_startupmatches
node_api -->|"dispatches query"| node_dealflow
node_api -->|"dispatches request"| node_intro
node_api -->|"dispatches query"| node_market
node_api -->|"dispatches query"| node_charts
node_api -->|"dispatches request"| node_chat
node_deck -->|"extracts profile"| node_openai
node_deck -->|"writes startup"| node_profiles
node_investor -->|"writes investor"| node_profiles
node_startupmatches -->|"reads profiles"| node_profiles
node_startupmatches -->|"gets or sets"| node_cache
node_startupmatches -->|"scores matches"| node_openai
node_dealflow -->|"reads profiles"| node_profiles
node_dealflow -->|"ranks deals"| node_openai
node_intro -->|"reads profiles"| node_profiles
node_intro -->|"drafts email"| node_openai
node_cache -.->|"uses optionally"| node_redis

click node_app "https://github.com/elias569/fintech-app/blob/main/src/App.tsx"
click node_auth "https://github.com/elias569/fintech-app/blob/main/src/pages/AuthPage.tsx"
click node_onboarding "https://github.com/elias569/fintech-app/blob/main/src/pages/OnboardingPage.tsx"
click node_startupdash "https://github.com/elias569/fintech-app/blob/main/src/pages/Dashboardpage.tsx"
click node_investordash "https://github.com/elias569/fintech-app/blob/main/src/pages/InvestorDashboardPage.tsx"
click node_discover "https://github.com/elias569/fintech-app/blob/main/src/pages/DiscoverPage.tsx"
click node_landing "https://github.com/elias569/fintech-app/blob/main/src/pages/LandingPageFull.tsx"
click node_api "https://github.com/elias569/fintech-app/blob/main/backend/main.py"
click node_deck "https://github.com/elias569/fintech-app/blob/main/backend/main.py"
click node_investor "https://github.com/elias569/fintech-app/blob/main/backend/main.py"
click node_startupmatches "https://github.com/elias569/fintech-app/blob/main/backend/main.py"
click node_dealflow "https://github.com/elias569/fintech-app/blob/main/backend/main.py"
click node_intro "https://github.com/elias569/fintech-app/blob/main/backend/main.py"
click node_market "https://github.com/elias569/fintech-app/blob/main/backend/main.py"
click node_charts "https://github.com/elias569/fintech-app/blob/main/backend/main.py"
click node_chat "https://github.com/elias569/fintech-app/blob/main/backend/main.py"
click node_profiles "https://github.com/elias569/fintech-app/blob/main/backend/main.py"
click node_cache "https://github.com/elias569/fintech-app/blob/main/backend/redis/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_app,node_auth,node_onboarding,node_startupdash,node_investordash,node_discover,node_landing toneBlue
class node_api,node_deck,node_investor,node_startupmatches,node_dealflow,node_intro toneAmber
class node_market,node_charts,node_chat toneMint
class node_profiles,node_cache,node_redis,node_openai toneRose
class node_user toneIndigo
```

## Components

### Role-based client

- [App router](https://github.com/elias569/fintech-app/blob/main/src/App.tsx): `src/App.tsx`
- [Demo sign-in](https://github.com/elias569/fintech-app/blob/main/src/pages/AuthPage.tsx): `src/pages/AuthPage.tsx`
- [Profile onboarding](https://github.com/elias569/fintech-app/blob/main/src/pages/OnboardingPage.tsx): `src/pages/OnboardingPage.tsx`
- [Startup dashboard](https://github.com/elias569/fintech-app/blob/main/src/pages/Dashboardpage.tsx): `src/pages/Dashboardpage.tsx`
- [Investor dashboard](https://github.com/elias569/fintech-app/blob/main/src/pages/InvestorDashboardPage.tsx): `src/pages/InvestorDashboardPage.tsx`
- [Match discovery](https://github.com/elias569/fintech-app/blob/main/src/pages/DiscoverPage.tsx): `src/pages/DiscoverPage.tsx`
- [Product landing](https://github.com/elias569/fintech-app/blob/main/src/pages/LandingPageFull.tsx): `src/pages/LandingPageFull.tsx`

### Venture matching API

- [FastAPI endpoints](https://github.com/elias569/fintech-app/blob/main/backend/main.py): `backend/main.py`
- [Deck ingestion](https://github.com/elias569/fintech-app/blob/main/backend/main.py): `backend/main.py`
- [Investor registration](https://github.com/elias569/fintech-app/blob/main/backend/main.py): `backend/main.py`
- [Startup matches](https://github.com/elias569/fintech-app/blob/main/backend/main.py): `backend/main.py`
- [Investor dealflow](https://github.com/elias569/fintech-app/blob/main/backend/main.py): `backend/main.py`
- [Intro drafting](https://github.com/elias569/fintech-app/blob/main/backend/main.py): `backend/main.py`

### Market intelligence

- [Opportunity radar](https://github.com/elias569/fintech-app/blob/main/backend/main.py): `backend/main.py`
- [Chart patterns](https://github.com/elias569/fintech-app/blob/main/backend/main.py): `backend/main.py`
- [Market chat](https://github.com/elias569/fintech-app/blob/main/backend/main.py): `backend/main.py`

### Storage and AI

- [In-memory profiles](https://github.com/elias569/fintech-app/blob/main/backend/main.py): `backend/main.py`
- [Match cache](https://github.com/elias569/fintech-app/blob/main/backend/redis/cache.py): `backend/redis/cache.py`
- **Redis**
- **OpenAI API**

### Other components

- **Startup or investor**

## Connections

- Startup or investor → App router: uses
- App router → Demo sign-in: renders
- App router → Product landing: renders
- App router → Profile onboarding: renders
- App router → Startup dashboard: renders
- App router → Investor dashboard: renders
- App router → Match discovery: renders
- Demo sign-in → App router: submits identity
- Profile onboarding → App router: navigates
- Startup or investor → FastAPI endpoints: calls API
- FastAPI endpoints → Deck ingestion: dispatches upload
- FastAPI endpoints → Investor registration: dispatches registration
- FastAPI endpoints → Startup matches: dispatches query
- FastAPI endpoints → Investor dealflow: dispatches query
- FastAPI endpoints → Intro drafting: dispatches request
- FastAPI endpoints → Opportunity radar: dispatches query
- FastAPI endpoints → Chart patterns: dispatches query
- FastAPI endpoints → Market chat: dispatches request
- Deck ingestion → OpenAI API: extracts profile
- Deck ingestion → In-memory profiles: writes startup
- Investor registration → In-memory profiles: writes investor
- Startup matches → In-memory profiles: reads profiles
- Startup matches → Match cache: gets or sets
- Startup matches → OpenAI API: scores matches
- Investor dealflow → In-memory profiles: reads profiles
- Investor dealflow → OpenAI API: ranks deals
- Intro drafting → In-memory profiles: reads profiles
- Intro drafting → OpenAI API: drafts email
- Match cache → Redis: uses optionally
