# f100001e/jobcrawler architecture

> Architecture diagram of the GitHub repository f100001e/jobcrawler, 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/f100001e/jobcrawler
- Repository: https://github.com/f100001e/jobcrawler

## Overview

This repository implements company/contact discovery followed by email outreach, with an interactive launcher for running crawler and mailer modes. The crawler gathers and deduplicates company records from configured sources, includes Apollo people enrichment, and uses a SQLite database; the mailer selects pending contacts, sends email, and updates contact status. The README is empty and the source excerpts are partial, so some crawler stages and integrations are not shown; only documented or evidenced connections are included.

Main entry points: [`Source/crawler.py`](https://github.com/f100001e/jobcrawler/blob/main/Source/crawler.py) (Company crawler), [`Source/mailer.py`](https://github.com/f100001e/jobcrawler/blob/main/Source/mailer.py) (Email sender), [`Source/run.py`](https://github.com/f100001e/jobcrawler/blob/main/Source/run.py) (Interactive launcher), [`Source/companies.yml`](https://github.com/f100001e/jobcrawler/blob/main/Source/companies.yml) (Company configuration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_launch["Operations"]
  node_launcher["Interactive launcher<br/>[run.py]"]
end

subgraph group_discover["Discovery"]
  node_crawler["Company crawler<br/>[crawler.py]"]
  node_company_sources["Company sources"]
  node_company_config["Company configuration<br/>[companies.yml]"]
  node_apollo{{"Apollo API"}}
  node_contact_db[("Contact database")]
end

subgraph group_outreach["Outreach"]
  node_mailer["Email sender<br/>[mailer.py]"]
  node_smtp{{"SMTP service"}}
end

node_operator(("Operator"))
node_contact_recipient(("Email recipient"))

node_operator -->|"chooses mode"| node_launcher
node_launcher -->|"runs crawler"| node_crawler
node_launcher -->|"runs mailer"| node_mailer
node_crawler -->|"reads config"| node_company_config
node_crawler -->|"fetches records"| node_company_sources
node_crawler -.->|"requests enrichment"| node_apollo
node_crawler -->|"stores records"| node_contact_db
node_mailer -->|"reads queue"| node_contact_db
node_mailer -->|"updates status"| node_contact_db
node_mailer -->|"sends email"| node_smtp
node_smtp -->|"delivers email"| node_contact_recipient

click node_launcher "https://github.com/f100001e/jobcrawler/blob/main/Source/run.py"
click node_crawler "https://github.com/f100001e/jobcrawler/blob/main/Source/crawler.py"
click node_company_config "https://github.com/f100001e/jobcrawler/blob/main/Source/companies.yml"
click node_mailer "https://github.com/f100001e/jobcrawler/blob/main/Source/mailer.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_launcher toneBlue
class node_crawler,node_company_sources,node_company_config,node_apollo,node_contact_db toneAmber
class node_mailer,node_smtp toneMint
class node_operator,node_contact_recipient toneIndigo
```

## Components

### Operations

- [Interactive launcher](https://github.com/f100001e/jobcrawler/blob/main/Source/run.py): `Source/run.py`

### Discovery

- [Company crawler](https://github.com/f100001e/jobcrawler/blob/main/Source/crawler.py): `Source/crawler.py`
- **Company sources**
- [Company configuration](https://github.com/f100001e/jobcrawler/blob/main/Source/companies.yml): `Source/companies.yml`
- **Apollo API**
- **Contact database**

### Outreach

- [Email sender](https://github.com/f100001e/jobcrawler/blob/main/Source/mailer.py): `Source/mailer.py`
- **SMTP service**

### Other components

- **Operator**
- **Email recipient**

## Connections

- Operator → Interactive launcher: chooses mode
- Interactive launcher → Company crawler: runs crawler
- Interactive launcher → Email sender: runs mailer
- Company crawler → Company configuration: reads config
- Company crawler → Company sources: fetches records
- Company crawler → Apollo API: requests enrichment
- Company crawler → Contact database: stores records
- Email sender → Contact database: reads queue
- Email sender → Contact database: updates status
- Email sender → SMTP service: sends email
- SMTP service → Email recipient: delivers email
