# artemnovitckii/creator-lab architecture

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

- Interactive diagram: https://gitdiagram.com/artemnovitckii/creator-lab
- Repository: https://github.com/artemnovitckii/creator-lab

## Overview

Creator Lab is a local research app that turns a creator’s Reels into classified, searchable scripts with engagement context. The main workflow runs from the dashboard through the local server and pipeline: collect Reel metadata, prepare audio and transcribe it, classify transcript content, save results, then filter and compare them in the dashboard. A separate recording view replays saved results; synthetic demo data supports rehearsal without provider calls. The README documents the provider stages and product capabilities; some implementation details are unsampled, so uncertain wiring is omitted.

Main entry points: [`lib/providers.mjs`](https://github.com/artemnovitckii/creator-lab/blob/main/lib/providers.mjs) (Provider and media calls), [`server.mjs`](https://github.com/artemnovitckii/creator-lab/blob/main/server.mjs) (HTTP server and API), [`lib/pipeline.mjs`](https://github.com/artemnovitckii/creator-lab/blob/main/lib/pipeline.mjs) (Run orchestration), [`public/app.js`](https://github.com/artemnovitckii/creator-lab/blob/main/public/app.js) (Research dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Research interface"]
  node_browser["Research dashboard<br/>[app.js]"]
  node_research["Filters and metrics<br/>[research.mjs]"]
  node_record["Recording view<br/>[record.js]"]
end

subgraph group_runtime["Local runtime"]
  node_server["HTTP server and API<br/>[server.mjs]"]
  node_demo["Synthetic rehearsal<br/>[demo.mjs]"]
end

subgraph group_processing["Analysis pipeline"]
  node_pipeline["Run orchestration<br/>[pipeline.mjs]"]
  node_normalize["Reel normalization<br/>[data.mjs]"]
  node_schema["Classification schema<br/>[schema.mjs]"]
end

subgraph group_integrations["Providers and data"]
  node_providers["Provider and media calls<br/>[providers.mjs]"]
  node_store[("Run files and cache")]
end

node_creator(("Creator"))
node_apify{{"Apify scraper"}}
node_fireworks{{"Fireworks transcription"}}
node_groq{{"Groq transcription"}}
node_jev{{"TypeSafe Jev"}}
node_cdn{{"Instagram or Apify CDN"}}

node_creator -->|"configures analysis"| node_browser
node_browser -->|"requests API"| node_server
node_record -->|"loads saved runs"| node_server
node_server -->|"creates and runs"| node_pipeline
node_server -->|"serves rehearsal"| node_demo
node_pipeline -->|"requests collection and analysis"| node_providers
node_pipeline -->|"deduplicates Reels"| node_normalize
node_pipeline -->|"reads and saves runs"| node_store
node_providers -->|"collects metadata"| node_apify
node_providers -->|"fetches media"| node_cdn
node_providers -.->|"transcribes audio"| node_fireworks
node_providers -.->|"transcribes audio"| node_groq
node_providers -->|"builds and parses requests"| node_schema
node_providers -->|"classifies transcript"| node_jev
node_browser -->|"filters and summarizes"| node_research
node_server -->|"sends run updates"| node_browser
node_server -->|"provides replay data"| node_record
node_store -->|"restores saved runs"| node_pipeline

click node_browser "https://github.com/artemnovitckii/creator-lab/blob/main/public/app.js"
click node_research "https://github.com/artemnovitckii/creator-lab/blob/main/public/research.mjs"
click node_record "https://github.com/artemnovitckii/creator-lab/blob/main/public/record.js"
click node_server "https://github.com/artemnovitckii/creator-lab/blob/main/server.mjs"
click node_demo "https://github.com/artemnovitckii/creator-lab/blob/main/lib/demo.mjs"
click node_pipeline "https://github.com/artemnovitckii/creator-lab/blob/main/lib/pipeline.mjs"
click node_normalize "https://github.com/artemnovitckii/creator-lab/blob/main/lib/data.mjs"
click node_schema "https://github.com/artemnovitckii/creator-lab/blob/main/lib/schema.mjs"
click node_providers "https://github.com/artemnovitckii/creator-lab/blob/main/lib/providers.mjs"

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_browser,node_research,node_record toneBlue
class node_server,node_demo toneAmber
class node_pipeline,node_normalize,node_schema,node_apify,node_cdn toneMint
class node_providers,node_store toneRose
class node_creator,node_fireworks,node_groq,node_jev toneIndigo
```

## Components

### Research interface

- [Research dashboard](https://github.com/artemnovitckii/creator-lab/blob/main/public/app.js): `public/app.js`
- [Filters and metrics](https://github.com/artemnovitckii/creator-lab/blob/main/public/research.mjs): `public/research.mjs`
- [Recording view](https://github.com/artemnovitckii/creator-lab/blob/main/public/record.js): `public/record.js`

### Local runtime

- [HTTP server and API](https://github.com/artemnovitckii/creator-lab/blob/main/server.mjs): `server.mjs`
- [Synthetic rehearsal](https://github.com/artemnovitckii/creator-lab/blob/main/lib/demo.mjs): `lib/demo.mjs`

### Analysis pipeline

- [Run orchestration](https://github.com/artemnovitckii/creator-lab/blob/main/lib/pipeline.mjs): `lib/pipeline.mjs`
- [Reel normalization](https://github.com/artemnovitckii/creator-lab/blob/main/lib/data.mjs): `lib/data.mjs`
- [Classification schema](https://github.com/artemnovitckii/creator-lab/blob/main/lib/schema.mjs): `lib/schema.mjs`

### Providers and data

- [Provider and media calls](https://github.com/artemnovitckii/creator-lab/blob/main/lib/providers.mjs): `lib/providers.mjs`
- **Run files and cache**

### Other components

- **Creator**
- **Apify scraper**
- **Fireworks transcription**
- **Groq transcription**
- **TypeSafe Jev**
- **Instagram or Apify CDN**

## Connections

- Creator → Research dashboard: configures analysis
- Research dashboard → HTTP server and API: requests API
- Recording view → HTTP server and API: loads saved runs
- HTTP server and API → Run orchestration: creates and runs
- HTTP server and API → Synthetic rehearsal: serves rehearsal
- Run orchestration → Provider and media calls: requests collection and analysis
- Run orchestration → Reel normalization: deduplicates Reels
- Run orchestration → Run files and cache: reads and saves runs
- Provider and media calls → Apify scraper: collects metadata
- Provider and media calls → Instagram or Apify CDN: fetches media
- Provider and media calls → Fireworks transcription: transcribes audio
- Provider and media calls → Groq transcription: transcribes audio
- Provider and media calls → Classification schema: builds and parses requests
- Provider and media calls → TypeSafe Jev: classifies transcript
- Research dashboard → Filters and metrics: filters and summarizes
- HTTP server and API → Research dashboard: sends run updates
- HTTP server and API → Recording view: provides replay data
- Run files and cache → Run orchestration: restores saved runs
