# atanub707/tailor-ai architecture

> Architecture diagram of the GitHub repository atanub707/tailor-ai, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/atanub707/tailor-ai
- Repository: https://github.com/atanub707/tailor-ai

## Overview

Tailor AI is a self-hosted job-search and application-preparation product. The user searches listings, evaluates fit against a local CV, tailors and exports a resume, then can prepare an assisted application that leaves final submission to the user. The graph preserves discovery, CV/fit, application preparation and execution, plus the shared LLM and local-storage layers. Some API wiring and unsampled capabilities are represented only where the README or source index supports them; relationships without visible evidence are omitted.

Main entry points: [`server/applicationPackage/packageEngine.ts`](https://github.com/atanub707/tailor-ai/blob/main/server/applicationPackage/packageEngine.ts) (Application package), [`src/App.tsx`](https://github.com/atanub707/tailor-ai/blob/main/src/App.tsx) (App dashboard), [`server/search/searchOrchestrator.ts`](https://github.com/atanub707/tailor-ai/blob/main/server/search/searchOrchestrator.ts) (Job search), [`server/applicationEngine/executionEngine.ts`](https://github.com/atanub707/tailor-ai/blob/main/server/applicationEngine/executionEngine.ts) (Execution engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Desktop client"]
  node_ui["App dashboard<br/>[App.tsx]"]
end

subgraph group_discovery["Job discovery"]
  node_search["Job search"]
  node_scrapers["Job sources"]
  node_ats["ATS providers"]
end

subgraph group_candidate["Candidate AI"]
  node_profile[("Candidate profile")]
  node_fit["Fit scoring<br/>[fitEngine.ts]"]
  node_requirements["JD requirements"]
  node_tailor["CV tailoring<br/>[tailorService.ts]"]
  node_cvbuilder["CV generation<br/>[llmCvTailor.ts]"]
  node_pdf["PDF export<br/>[docxGenerator.ts]"]
end

subgraph group_apply["Application workflow"]
  node_package["Application package<br/>[packageEngine.ts]"]
  node_packagemodel["Package snapshot<br/>[packageModel.ts]"]
  node_appservice["Application service"]
  node_inspect["Form inspection<br/>[engine.ts]"]
  node_atsinspectors["ATS inspectors<br/>[leverInspector.ts]"]
  node_execution["Execution engine<br/>[executionEngine.ts]"]
  node_executionstore[("Execution records<br/>[executionStore.ts]")]
  node_companion["Browser companion"]
  node_answerbank["Answer bank"]
end

subgraph group_shared["Shared services"]
  node_jobstore[("Local job store<br/>[fileStorage.ts]")]
  node_llm["LLM adapter<br/>[llmAdapter.ts]"]
end

node_user(("Job seeker"))

node_user -->|"uses"| node_ui
node_ui -.->|"searches jobs"| node_search
node_search -->|"stores results"| node_jobstore
node_search -.->|"gets listings"| node_scrapers
node_search -.->|"queries providers"| node_ats
node_ui -.->|"edits profile"| node_profile
node_fit -->|"parses JD"| node_requirements
node_tailor -->|"uses fit"| node_fit
node_tailor -->|"generates draft"| node_cvbuilder
node_cvbuilder -->|"requests text"| node_llm
node_tailor -.->|"exports resume"| node_pdf
node_ui -.->|"prepares application"| node_package
node_package -->|"scores candidate"| node_fit
node_package -->|"tailors resume"| node_tailor
node_package -->|"creates artifact"| node_pdf
node_package -->|"builds snapshot"| node_packagemodel
node_appservice -->|"prepares package"| node_package
node_appservice -->|"plans application"| node_inspect
node_inspect -->|"dispatches inspection"| node_atsinspectors
node_appservice -->|"coordinates execution"| node_execution
node_execution -->|"reinspects form"| node_inspect
node_execution -->|"records attempts"| node_executionstore
node_execution -.->|"requires review"| node_user
node_companion -->|"uses application engine"| node_inspect
node_answerbank -.->|"supplies answers"| node_package
node_llm -.->|"calls configured provider"| node_user

click node_ui "https://github.com/atanub707/tailor-ai/blob/main/src/App.tsx"
click node_search "https://github.com/atanub707/tailor-ai/blob/main/server/search/searchOrchestrator.ts"
click node_scrapers "https://github.com/atanub707/tailor-ai/tree/main/server/scraper"
click node_ats "https://github.com/atanub707/tailor-ai/tree/main/server/providers"
click node_jobstore "https://github.com/atanub707/tailor-ai/blob/main/server/storage/fileStorage.ts"
click node_profile "https://github.com/atanub707/tailor-ai/blob/main/server/storage/applicantProfile.ts"
click node_fit "https://github.com/atanub707/tailor-ai/blob/main/server/fit/fitEngine.ts"
click node_requirements "https://github.com/atanub707/tailor-ai/blob/main/server/fit/requirementsParser.ts"
click node_tailor "https://github.com/atanub707/tailor-ai/blob/main/server/tailor/tailorService.ts"
click node_cvbuilder "https://github.com/atanub707/tailor-ai/blob/main/server/builder/llmCvTailor.ts"
click node_pdf "https://github.com/atanub707/tailor-ai/blob/main/server/builder/docxGenerator.ts"
click node_llm "https://github.com/atanub707/tailor-ai/blob/main/server/llm/llmAdapter.ts"
click node_package "https://github.com/atanub707/tailor-ai/blob/main/server/applicationPackage/packageEngine.ts"
click node_packagemodel "https://github.com/atanub707/tailor-ai/blob/main/server/applicationPackage/packageModel.ts"
click node_appservice "https://github.com/atanub707/tailor-ai/blob/main/server/applicationExperience/applicationService.ts"
click node_inspect "https://github.com/atanub707/tailor-ai/blob/main/server/applicationEngine/engine.ts"
click node_atsinspectors "https://github.com/atanub707/tailor-ai/blob/main/server/applicationEngine/leverInspector.ts"
click node_execution "https://github.com/atanub707/tailor-ai/blob/main/server/applicationEngine/executionEngine.ts"
click node_executionstore "https://github.com/atanub707/tailor-ai/blob/main/server/applicationEngine/executionStore.ts"
click node_companion "https://github.com/atanub707/tailor-ai/blob/main/server/browserCompanion/companionService.ts"
click node_answerbank "https://github.com/atanub707/tailor-ai/blob/main/server/autoApply/answerBank/answerBankService.ts"

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_ui toneBlue
class node_search,node_scrapers,node_ats toneAmber
class node_profile,node_fit,node_requirements,node_tailor,node_cvbuilder,node_pdf toneMint
class node_package,node_packagemodel,node_appservice,node_inspect,node_atsinspectors,node_execution,node_executionstore,node_companion,node_answerbank toneRose
class node_jobstore,node_llm,node_user toneIndigo
```

## Components

### Desktop client

- [App dashboard](https://github.com/atanub707/tailor-ai/blob/main/src/App.tsx): `src/App.tsx`

### Job discovery

- [Job search](https://github.com/atanub707/tailor-ai/blob/main/server/search/searchOrchestrator.ts): `server/search/searchOrchestrator.ts`
- [Job sources](https://github.com/atanub707/tailor-ai/tree/main/server/scraper): `server/scraper`
- [ATS providers](https://github.com/atanub707/tailor-ai/tree/main/server/providers): `server/providers`

### Candidate AI

- [Candidate profile](https://github.com/atanub707/tailor-ai/blob/main/server/storage/applicantProfile.ts): `server/storage/applicantProfile.ts`
- [Fit scoring](https://github.com/atanub707/tailor-ai/blob/main/server/fit/fitEngine.ts): `server/fit/fitEngine.ts`
- [JD requirements](https://github.com/atanub707/tailor-ai/blob/main/server/fit/requirementsParser.ts): `server/fit/requirementsParser.ts`
- [CV tailoring](https://github.com/atanub707/tailor-ai/blob/main/server/tailor/tailorService.ts): `server/tailor/tailorService.ts`
- [CV generation](https://github.com/atanub707/tailor-ai/blob/main/server/builder/llmCvTailor.ts): `server/builder/llmCvTailor.ts`
- [PDF export](https://github.com/atanub707/tailor-ai/blob/main/server/builder/docxGenerator.ts): `server/builder/docxGenerator.ts`

### Application workflow

- [Application package](https://github.com/atanub707/tailor-ai/blob/main/server/applicationPackage/packageEngine.ts): `server/applicationPackage/packageEngine.ts`
- [Package snapshot](https://github.com/atanub707/tailor-ai/blob/main/server/applicationPackage/packageModel.ts): `server/applicationPackage/packageModel.ts`
- [Application service](https://github.com/atanub707/tailor-ai/blob/main/server/applicationExperience/applicationService.ts): `server/applicationExperience/applicationService.ts`
- [Form inspection](https://github.com/atanub707/tailor-ai/blob/main/server/applicationEngine/engine.ts): `server/applicationEngine/engine.ts`
- [ATS inspectors](https://github.com/atanub707/tailor-ai/blob/main/server/applicationEngine/leverInspector.ts): `server/applicationEngine/leverInspector.ts`
- [Execution engine](https://github.com/atanub707/tailor-ai/blob/main/server/applicationEngine/executionEngine.ts): `server/applicationEngine/executionEngine.ts`
- [Execution records](https://github.com/atanub707/tailor-ai/blob/main/server/applicationEngine/executionStore.ts): `server/applicationEngine/executionStore.ts`
- [Browser companion](https://github.com/atanub707/tailor-ai/blob/main/server/browserCompanion/companionService.ts): `server/browserCompanion/companionService.ts`
- [Answer bank](https://github.com/atanub707/tailor-ai/blob/main/server/autoApply/answerBank/answerBankService.ts): `server/autoApply/answerBank/answerBankService.ts`

### Shared services

- [Local job store](https://github.com/atanub707/tailor-ai/blob/main/server/storage/fileStorage.ts): `server/storage/fileStorage.ts`
- [LLM adapter](https://github.com/atanub707/tailor-ai/blob/main/server/llm/llmAdapter.ts): `server/llm/llmAdapter.ts`

### Other components

- **Job seeker**

## Connections

- Job seeker → App dashboard: uses (evidence: `README.md`)
- App dashboard → Job search: searches jobs
- Job search → Local job store: stores results (evidence: `server/search/searchOrchestrator.ts`)
- Job search → Job sources: gets listings (evidence: `server/search/searchOrchestrator.ts`)
- Job search → ATS providers: queries providers (evidence: `server/search/searchOrchestrator.ts`)
- App dashboard → Candidate profile: edits profile
- Fit scoring → JD requirements: parses JD (evidence: `server/fit/fitEngine.ts`)
- CV tailoring → Fit scoring: uses fit (evidence: `server/tailor/tailorService.ts`)
- CV tailoring → CV generation: generates draft (evidence: `server/tailor/tailorService.ts`)
- CV generation → LLM adapter: requests text (evidence: `server/builder/llmCvTailor.ts`)
- CV tailoring → PDF export: exports resume
- App dashboard → Application package: prepares application
- Application package → Fit scoring: scores candidate (evidence: `server/applicationPackage/packageEngine.ts`)
- Application package → CV tailoring: tailors resume (evidence: `server/applicationPackage/packageEngine.ts`)
- Application package → PDF export: creates artifact (evidence: `server/applicationPackage/packageEngine.ts`)
- Application package → Package snapshot: builds snapshot (evidence: `server/applicationPackage/packageEngine.ts`)
- Application service → Application package: prepares package (evidence: `server/applicationExperience/applicationService.ts`)
- Application service → Form inspection: plans application (evidence: `server/applicationExperience/applicationService.ts`)
- Form inspection → ATS inspectors: dispatches inspection (evidence: `server/applicationEngine/engine.ts`)
- Application service → Execution engine: coordinates execution (evidence: `server/applicationExperience/applicationService.ts`)
- Execution engine → Form inspection: reinspects form (evidence: `server/applicationEngine/executionEngine.ts`)
- Execution engine → Execution records: records attempts (evidence: `server/applicationEngine/executionEngine.ts`)
- Execution engine → Job seeker: requires review (evidence: `README.md`)
- Browser companion → Form inspection: uses application engine (evidence: `server/browserCompanion/companionService.ts`)
- Answer bank → Application package: supplies answers
- LLM adapter → Job seeker: calls configured provider
