# shengjidaguai-china/bosshunter architecture

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

- Interactive diagram: https://gitdiagram.com/shengjidaguai-china/bosshunter
- Repository: https://github.com/shengjidaguai-china/bosshunter

## Overview

BossHunter is a local job-search agent: users configure a résumé and search preferences, collect and score jobs, review candidates before any outreach, then prepare/send greetings and monitor HR responses. The CLI pipeline excerpt documents that sequence; the README adds multi-platform read-only collection, customized résumés, and workbench capabilities. The web service and database internals were only partially sampled, so their detailed route-to-handler wiring is not expanded here.

Main entry points: [`src/bosshunter/pipeline.py`](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/pipeline.py) (Full pipeline), [`src/bosshunter/db.py`](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/db.py) (Job database), [`src/bosshunter/executor/monitor.py`](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/executor/monitor.py) (Reply monitoring), [`src/bosshunter/web/frontend/src/App.tsx`](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/web/frontend/src/App.tsx) (Web workbench)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["User interfaces"]
  node_webui["Web workbench<br/>[App.tsx]"]
  node_webapi["Web API<br/>[server.py]"]
  node_cli["CLI<br/>[main.py]"]
end

subgraph group_workflow["Job workflow"]
  node_tasks["Workbench tasks<br/>[tasks.py]"]
  node_pipeline["Full pipeline<br/>[pipeline.py]"]
  node_collection["Collection queue<br/>[orchestrator.py]"]
  node_platforms["Platform collectors"]
  node_scoring["Job scoring<br/>[scorer.py]"]
  node_prefilter["Keyword prefilter<br/>[prefilter.py]"]
  node_approval["Human approval<br/>[confirm.py]"]
  node_greeter["Greeting generation<br/>[greeter.py]"]
end

subgraph group_browser["Browser automation"]
  node_sender["Safe delivery<br/>[sender.py]"]
  node_browserclient["Browser client<br/>[client.py]"]
  node_chrome["Chrome session<br/>[session.py]"]
end

subgraph group_state["Persistence and follow-up"]
  node_monitor["Reply monitoring<br/>[monitor.py]"]
  node_tracker["Application status<br/>[status.py]"]
  node_database[("Job database<br/>[db.py]")]
end

subgraph group_resume["Résumé handling"]
  node_resumeai["Résumé tailoring<br/>[resume.py]"]
  node_resumeapi["Résumé upload and preview<br/>[resume_upload.py]"]
end

node_user(("Job seeker"))
node_jobplatforms["Recruiting platforms"]

node_user -->|"uses workbench"| node_webui
node_webui -->|"requests data and tasks"| node_webapi
node_user -->|"runs commands"| node_cli
node_cli -->|"starts full flow"| node_pipeline
node_webapi -->|"starts tasks"| node_tasks
node_pipeline -->|"collects jobs"| node_collection
node_collection -->|"dispatches serially"| node_platforms
node_platforms -->|"reads listings"| node_jobplatforms
node_collection -->|"stores candidates"| node_database
node_pipeline -->|"scores jobs"| node_scoring
node_scoring -->|"pre-filters"| node_prefilter
node_scoring -->|"reads and updates jobs"| node_database
node_pipeline -->|"requests review"| node_approval
node_user -->|"approves jobs"| node_approval
node_pipeline -->|"generates greetings"| node_greeter
node_pipeline -->|"sends approved greetings"| node_sender
node_sender -->|"controls browser"| node_browserclient
node_browserclient -->|"sends runtime commands"| node_chrome
node_chrome -->|"interacts with BOSS"| node_jobplatforms
node_sender -->|"records delivery"| node_database
node_pipeline -->|"starts monitoring"| node_monitor
node_monitor -->|"checks conversations"| node_browserclient
node_monitor -->|"updates follow-up status"| node_tracker
node_monitor -->|"reads and records activity"| node_database
node_webui -->|"uploads and previews"| node_resumeapi
node_resumeapi -->|"provides résumé input"| node_resumeai
node_resumeai -.->|"saves tailored résumé data"| node_database

click node_webui "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/web/frontend/src/App.tsx"
click node_webapi "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/web/server.py"
click node_cli "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/main.py"
click node_tasks "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/web/tasks.py"
click node_pipeline "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/pipeline.py"
click node_collection "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/collection/orchestrator.py"
click node_platforms "https://github.com/shengjidaguai-china/bosshunter/tree/main/src/bosshunter/collection/platforms"
click node_scoring "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/ai/scorer.py"
click node_prefilter "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/ai/prefilter.py"
click node_approval "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/ui/confirm.py"
click node_greeter "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/ai/greeter.py"
click node_sender "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/executor/sender.py"
click node_browserclient "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/browser/client.py"
click node_chrome "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/browser/session.py"
click node_monitor "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/executor/monitor.py"
click node_tracker "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/tracker/status.py"
click node_database "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/db.py"
click node_resumeai "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/ai/resume.py"
click node_resumeapi "https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/web/resume_upload.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_webui,node_webapi,node_cli toneBlue
class node_tasks,node_pipeline,node_collection,node_platforms,node_scoring,node_prefilter,node_approval,node_greeter toneAmber
class node_sender,node_browserclient,node_chrome toneMint
class node_monitor,node_tracker,node_database toneRose
class node_resumeai,node_resumeapi,node_user,node_jobplatforms toneIndigo
```

## Components

### User interfaces

- [Web workbench](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/web/frontend/src/App.tsx): `src/bosshunter/web/frontend/src/App.tsx`
- [Web API](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/web/server.py): `src/bosshunter/web/server.py`
- [CLI](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/main.py): `src/bosshunter/main.py`

### Job workflow

- [Workbench tasks](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/web/tasks.py): `src/bosshunter/web/tasks.py`
- [Full pipeline](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/pipeline.py): `src/bosshunter/pipeline.py`
- [Collection queue](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/collection/orchestrator.py): `src/bosshunter/collection/orchestrator.py`
- [Platform collectors](https://github.com/shengjidaguai-china/bosshunter/tree/main/src/bosshunter/collection/platforms): `src/bosshunter/collection/platforms`
- [Job scoring](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/ai/scorer.py): `src/bosshunter/ai/scorer.py`
- [Keyword prefilter](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/ai/prefilter.py): `src/bosshunter/ai/prefilter.py`
- [Human approval](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/ui/confirm.py): `src/bosshunter/ui/confirm.py`
- [Greeting generation](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/ai/greeter.py): `src/bosshunter/ai/greeter.py`

### Browser automation

- [Safe delivery](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/executor/sender.py): `src/bosshunter/executor/sender.py`
- [Browser client](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/browser/client.py): `src/bosshunter/browser/client.py`
- [Chrome session](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/browser/session.py): `src/bosshunter/browser/session.py`

### Persistence and follow-up

- [Reply monitoring](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/executor/monitor.py): `src/bosshunter/executor/monitor.py`
- [Application status](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/tracker/status.py): `src/bosshunter/tracker/status.py`
- [Job database](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/db.py): `src/bosshunter/db.py`

### Résumé handling

- [Résumé tailoring](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/ai/resume.py): `src/bosshunter/ai/resume.py`
- [Résumé upload and preview](https://github.com/shengjidaguai-china/bosshunter/blob/main/src/bosshunter/web/resume_upload.py): `src/bosshunter/web/resume_upload.py`

### Other components

- **Job seeker**
- **Recruiting platforms**

## Connections

- Job seeker → Web workbench: uses workbench
- Web workbench → Web API: requests data and tasks
- Job seeker → CLI: runs commands
- CLI → Full pipeline: starts full flow
- Web API → Workbench tasks: starts tasks
- Full pipeline → Collection queue: collects jobs
- Collection queue → Platform collectors: dispatches serially
- Platform collectors → Recruiting platforms: reads listings
- Collection queue → Job database: stores candidates
- Full pipeline → Job scoring: scores jobs
- Job scoring → Keyword prefilter: pre-filters
- Job scoring → Job database: reads and updates jobs
- Full pipeline → Human approval: requests review
- Job seeker → Human approval: approves jobs
- Full pipeline → Greeting generation: generates greetings
- Full pipeline → Safe delivery: sends approved greetings
- Safe delivery → Browser client: controls browser
- Browser client → Chrome session: sends runtime commands
- Chrome session → Recruiting platforms: interacts with BOSS
- Safe delivery → Job database: records delivery
- Full pipeline → Reply monitoring: starts monitoring
- Reply monitoring → Browser client: checks conversations
- Reply monitoring → Application status: updates follow-up status
- Reply monitoring → Job database: reads and records activity
- Web workbench → Résumé upload and preview: uploads and previews
- Résumé upload and preview → Résumé tailoring: provides résumé input
- Résumé tailoring → Job database: saves tailored résumé data
