# saksham-kgen/greenday-pipeline architecture

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

- Interactive diagram: https://gitdiagram.com/saksham-kgen/greenday-pipeline
- Repository: https://github.com/saksham-kgen/greenday-pipeline

## Overview

Greenday turns individual videos or video directories into timestamped, translated, labeled, chapterized, PII-redacted transcripts and validation reports. The main workflow is orchestrated in pipeline.py: file checks and audio extraction lead into transcription, quality checks, sentence cleanup, translation, labeling, chapters, and privacy processing; metrics and flags are then written as per-video outputs and a batch manifest. The README documents these capabilities; sampled source excerpts do not show every orchestration call, so uncertain wiring is omitted.

Main entry points: [`pipeline.py`](https://github.com/saksham-kgen/greenday-pipeline/blob/main/pipeline.py) (Pipeline orchestrator), [`audio_extraction.py`](https://github.com/saksham-kgen/greenday-pipeline/blob/main/audio_extraction.py) (Audio extraction), [`audio_mute.py`](https://github.com/saksham-kgen/greenday-pipeline/blob/main/audio_mute.py) (Audio PII muting), [`transcription.py`](https://github.com/saksham-kgen/greenday-pipeline/blob/main/transcription.py) (Speech transcription)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ingest["Ingest and transcription"]
  node_file_checks["File checks<br/>[checks_file.py]"]
  node_audio_extract["Audio extraction"]
  node_transcription["Speech transcription<br/>[transcription.py]"]
  node_audio_checks["Audio quality checks<br/>[checks_audio.py]"]
  node_segmentation["Sentence segmentation<br/>[segmentation.py]"]
end

subgraph group_enrichment["Transcript enrichment"]
  node_translation["English translation<br/>[translate.py]"]
  node_classification["Sentence labeling<br/>[classify.py]"]
  node_chapters["Chapter segmentation<br/>[chapters.py]"]
end

subgraph group_privacy["Privacy processing"]
  node_text_pii["Text PII redaction<br/>[pii_text.py]"]
  node_pii_llm["Semantic PII detection<br/>[pii_llm.py]"]
  node_audio_mute["Audio PII muting<br/>[audio_mute.py]"]
end

subgraph group_quality_output["Validation and delivery"]
  node_validation["Metrics and transcript checks<br/>[validation.py]"]
  node_output["Video output writer<br/>[output.py]"]
end

node_video_input(("Video input"))
node_pipeline["Pipeline orchestrator<br/>[pipeline.py]"]
node_elevenlabs{{"ElevenLabs Scribe"}}
node_gemini{{"Gemini API"}}
node_ffmpeg{{"FFmpeg tools"}}
node_artifacts["Video files and manifest"]

node_video_input -->|"submits"| node_pipeline
node_pipeline -->|"runs"| node_file_checks
node_pipeline -->|"runs"| node_audio_extract
node_pipeline -->|"runs"| node_transcription
node_pipeline -->|"runs"| node_audio_checks
node_pipeline -->|"runs"| node_segmentation
node_pipeline -->|"runs"| node_translation
node_pipeline -->|"runs"| node_classification
node_pipeline -->|"runs"| node_chapters
node_pipeline -->|"runs"| node_text_pii
node_pipeline -->|"runs"| node_audio_mute
node_pipeline -->|"runs"| node_validation
node_pipeline -->|"writes outputs"| node_output
node_file_checks -->|"checks properties"| node_video_input
node_audio_extract -->|"extracts audio"| node_video_input
node_audio_extract -->|"uses"| node_ffmpeg
node_audio_extract -->|"provides WAV"| node_transcription
node_transcription -->|"requests transcript"| node_elevenlabs
node_transcription -->|"provides words"| node_audio_checks
node_audio_checks -->|"reads WAV"| node_audio_extract
node_audio_checks -->|"provides quality flags"| node_segmentation
node_segmentation -->|"provides sentences"| node_translation
node_translation -->|"requests translation"| node_gemini
node_classification -->|"requests labels"| node_gemini
node_chapters -->|"requests boundaries"| node_gemini
node_chapters -->|"provides chapters"| node_text_pii
node_text_pii -->|"requests semantic detection"| node_pii_llm
node_text_pii -->|"provides original-word spans"| node_audio_mute
node_audio_mute -->|"reads source video"| node_video_input
node_audio_mute -->|"mutes audio"| node_ffmpeg
node_validation -->|"provides metrics and flags"| node_output
node_audio_mute -->|"provides muted segments"| node_output
node_output -->|"writes files"| node_artifacts
node_pii_llm -.->|"requests detection"| node_gemini

click node_pipeline "https://github.com/saksham-kgen/greenday-pipeline/blob/main/pipeline.py"
click node_file_checks "https://github.com/saksham-kgen/greenday-pipeline/blob/main/checks_file.py"
click node_audio_extract "https://github.com/saksham-kgen/greenday-pipeline/blob/main/audio_extraction.py"
click node_transcription "https://github.com/saksham-kgen/greenday-pipeline/blob/main/transcription.py"
click node_audio_checks "https://github.com/saksham-kgen/greenday-pipeline/blob/main/checks_audio.py"
click node_segmentation "https://github.com/saksham-kgen/greenday-pipeline/blob/main/segmentation.py"
click node_translation "https://github.com/saksham-kgen/greenday-pipeline/blob/main/translate.py"
click node_classification "https://github.com/saksham-kgen/greenday-pipeline/blob/main/classify.py"
click node_chapters "https://github.com/saksham-kgen/greenday-pipeline/blob/main/chapters.py"
click node_text_pii "https://github.com/saksham-kgen/greenday-pipeline/blob/main/pii_text.py"
click node_pii_llm "https://github.com/saksham-kgen/greenday-pipeline/blob/main/pii_llm.py"
click node_audio_mute "https://github.com/saksham-kgen/greenday-pipeline/blob/main/audio_mute.py"
click node_validation "https://github.com/saksham-kgen/greenday-pipeline/blob/main/validation.py"
click node_output "https://github.com/saksham-kgen/greenday-pipeline/blob/main/output.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_file_checks,node_audio_extract,node_transcription,node_audio_checks,node_segmentation toneBlue
class node_translation,node_classification,node_chapters toneAmber
class node_text_pii,node_pii_llm,node_audio_mute,node_gemini toneMint
class node_validation,node_output toneRose
class node_video_input,node_elevenlabs,node_ffmpeg,node_artifacts toneIndigo
class node_pipeline toneTeal
```

## Components

### Ingest and transcription

- [File checks](https://github.com/saksham-kgen/greenday-pipeline/blob/main/checks_file.py): `checks_file.py`
- [Audio extraction](https://github.com/saksham-kgen/greenday-pipeline/blob/main/audio_extraction.py): `audio_extraction.py`
- [Speech transcription](https://github.com/saksham-kgen/greenday-pipeline/blob/main/transcription.py): `transcription.py`
- [Audio quality checks](https://github.com/saksham-kgen/greenday-pipeline/blob/main/checks_audio.py): `checks_audio.py`
- [Sentence segmentation](https://github.com/saksham-kgen/greenday-pipeline/blob/main/segmentation.py): `segmentation.py`

### Transcript enrichment

- [English translation](https://github.com/saksham-kgen/greenday-pipeline/blob/main/translate.py): `translate.py`
- [Sentence labeling](https://github.com/saksham-kgen/greenday-pipeline/blob/main/classify.py): `classify.py`
- [Chapter segmentation](https://github.com/saksham-kgen/greenday-pipeline/blob/main/chapters.py): `chapters.py`

### Privacy processing

- [Text PII redaction](https://github.com/saksham-kgen/greenday-pipeline/blob/main/pii_text.py): `pii_text.py`
- [Semantic PII detection](https://github.com/saksham-kgen/greenday-pipeline/blob/main/pii_llm.py): `pii_llm.py`
- [Audio PII muting](https://github.com/saksham-kgen/greenday-pipeline/blob/main/audio_mute.py): `audio_mute.py`

### Validation and delivery

- [Metrics and transcript checks](https://github.com/saksham-kgen/greenday-pipeline/blob/main/validation.py): `validation.py`
- [Video output writer](https://github.com/saksham-kgen/greenday-pipeline/blob/main/output.py): `output.py`

### Other components

- **Video input**
- [Pipeline orchestrator](https://github.com/saksham-kgen/greenday-pipeline/blob/main/pipeline.py): `pipeline.py`
- **ElevenLabs Scribe**
- **Gemini API**
- **FFmpeg tools**
- **Video files and manifest**

## Connections

- Video input → Pipeline orchestrator: submits
- Pipeline orchestrator → File checks: runs
- Pipeline orchestrator → Audio extraction: runs
- Pipeline orchestrator → Speech transcription: runs
- Pipeline orchestrator → Audio quality checks: runs
- Pipeline orchestrator → Sentence segmentation: runs
- Pipeline orchestrator → English translation: runs
- Pipeline orchestrator → Sentence labeling: runs
- Pipeline orchestrator → Chapter segmentation: runs
- Pipeline orchestrator → Text PII redaction: runs
- Pipeline orchestrator → Audio PII muting: runs
- Pipeline orchestrator → Metrics and transcript checks: runs
- Pipeline orchestrator → Video output writer: writes outputs
- File checks → Video input: checks properties
- Audio extraction → Video input: extracts audio
- Audio extraction → FFmpeg tools: uses
- Audio extraction → Speech transcription: provides WAV
- Speech transcription → ElevenLabs Scribe: requests transcript
- Speech transcription → Audio quality checks: provides words
- Audio quality checks → Audio extraction: reads WAV
- Audio quality checks → Sentence segmentation: provides quality flags
- Sentence segmentation → English translation: provides sentences
- English translation → Gemini API: requests translation
- Sentence labeling → Gemini API: requests labels
- Chapter segmentation → Gemini API: requests boundaries
- Chapter segmentation → Text PII redaction: provides chapters
- Text PII redaction → Semantic PII detection: requests semantic detection
- Text PII redaction → Audio PII muting: provides original-word spans
- Audio PII muting → Video input: reads source video
- Audio PII muting → FFmpeg tools: mutes audio
- Metrics and transcript checks → Video output writer: provides metrics and flags
- Audio PII muting → Video output writer: provides muted segments
- Video output writer → Video files and manifest: writes files
- Semantic PII detection → Gemini API: requests detection
