← back to the chaos

AI Job Hunter — interactive architecture map · local-first Tauri 2 monorepo

Client / RendererService HooksPrompts (LLM assembly)Shared ContractsRust CommandsRust DomainsScrapers (SCRAPERS · 25)AI ProvidersDataExternalPlatform Infra (single-owner · composed everywhere)1 · drives2 · useAiGenerate3 · generateResume()buildResumePromptProviderProfiletruncateextractMetadatacover letterrepair JSON4 · ai.generatePipelineinvoke adapterAiContract5 · invoke('ai_generate')6 · Pipeline stagesCompleter.resolve()7 · resolve(ProviderId)8 · POST /api/chat (stream)emit ai:stream deltasvalidateretryresearch complete()company researchpersist resultINSERTchat_stream (direct)export()pick templateexport DOCX/PDFrender PDFrender DOCXinject linksgetModelTierlocale lexiconlarge inputresolveresolveresolveresolveresolveresolveresolveHTTPSHTTPSHTTPSHTTPspawnspawnspawnAPI keydrivesuseAutopilotautopilot.*AutopilotContractinvokerun + schedulescrape boardsnotifytrack statusautopilot.stepuseBoardsscrape.runScrapeContractinvoke('scrape')ScraperEngine.runScraper traitSCRAPERS.get(id)browser boardsINSERT jobsupsert vectorscacheMatchContractinvoke('match_resume')embed + cosineAdzuna/JSearch APIHTTP APIbrowseranalyzeResumevalidateAndRepairai.generatePipelinepick resumedocuments.*DocumentsContractinvokeimportextract textExtractedResumeCRUDembed chunksprofile → resumestateeventsprefsbundleexport/importexport/importexport/importcredentials.*invokeOS keychainrouterproviderrouterouterouterouterouteroute#[command]#[command]#[command]#[command]re-exportre-exportre-exportshared() clientAppResultRequestTracenet::httpdata_dir()StageTrace/api/*data_dir()logsupdate checkmain.tsx renderer bootstrap__root.tsx router shellindex.tsx Dashboard routeai-generate.tsx AI Generate route analyze.tsx Analyze routeautopilot.tsx Autopilot routejobs.tsx Jobs routesettings.tsx Settings routeapp-client.ts AppClient · useAppClienttauri-client createTauriInvokeClientai-generate.machine generation FSMautopilot-run.machine run FSMpreferences-store Zustand prefscn() className merge · goduseNotification() toast hook · goduse-ai React Query · aiuse-ai-generations saved generationsuse-ai-provider provider keys/healthuse-autopilot autopilot runsuse-boards board cataloguse-match resume↔job match use-documents document storeuse-jobs job trackeruse-postings posting cacheuse-cli-agents coding agentsuse-credentials keychain credsuse-job-preferences search prefsuse-privacy privacy/backupuse-support diagnosticsuse-system system/resourcesgeneration.ts streamGenerate / stepsresume-ai.ts structured resume helpersgenerate/export DOCX/PDF export gluegenerate/templates 9 export templatesbuildResumePrompt @ajh/promptsbuildCoverLetterPrompt @ajh/promptsbuildMetadataPrompt name/role/keywordsvalidateMetadata repair JSONgenerate/links inject hyperlinksanalysis-prompt.ts @ajh/prompts/analyzevalidate.ts validateAndRepaircontext-manager/multi-pass chunked passescontext-manager/truncation budget trimcontext-manager/model-size getModelTier()provider/resolveProfile ProviderProfilelocale 11-language lexiconsindex.ts namespace barrelai.ts AiContractautopilot.ts AutopilotContractscrape.ts ScrapeContract match.ts MatchContract documents.ts DocumentsContractjobs.ts JobsContractboards.ts BoardsContractcliAgents.ts CliAgentsContractcredentials.ts CredentialsContractresume.ts ResumeContractsystem.ts SystemContractschemas/ Zod validationtypes/ JobRecord, MatchScore…shell/handler.rs invoke_handler registryai.rs · ai_generate stream commandpipeline.rs generatePipeline commanddocuments.rs import/exportresume.rs structured extractcover_letter.rs research + leakageai_generations.rs save/listboards.rs catalog/loginscrape · scrape_url run scrape match_resume.rs match score autopilot cmds workflow/runcli_agents.rs agent statussupport.rs diagnosticsprofile_import.rs LinkedIn importdata.rs backup/restoreai_provider::resolve strict provider routingpipeline::Completer stage orchestrationpipeline/retry retry + regeneratepipeline/validation output validationpipeline/enrichment cover-letter researchpipeline/cache stage cachescraping::engine ScraperEnginescraping::types Scraper traittray + deeplink notify + focusautopilot engine workflow + scheduler jobs::JobTracker SQLite trackerdocuments store import + SQLiteextraction router PDF/DOCX/RTF/HTMLexport/pdf canonical layoutexport model/docx DOCX + rich modelSCRAPERS registry · 25 boardsycombinator Scraper · APIremotive Scraper · APIremoteok Scraper · APIwwr WeWorkRemotely · APIarbeitnow Scraper · APIberlinstartupjobs Scraper · APIgermantechjobs Scraper · APIgreenhouse ATS · APIlever ATS · APIadzuna/jsearch Aggregator · APIsmartrecruiters ATS · APIpersonio ATS · APIrecruitee ATS · APIashby ATS · APIarbeitsagentur gov · APIlinkedin Scraper · browser ollama.rs local serveropenai.rs OpenAI / compatibleanthropic.rs Claude APIgemini.rs Google Gemini APIcli_agent/claude_code headless CLIcli_agent/codex headless CLIcli_agent/gemini_cli headless CLIOpenAI-compatible LM Studio / vLLM…SQLite (rusqlite) migrationsDataStore trait export/import documents table resumesjobs table postingsinteractions table per-job eventsai_generations table generated docsjob_preferences table saved searchescredentials keychain indexSQLite · job vectors vector[1024]SQLite · résumé vectors vector[1024]PostingsCache in-memoryOllama local · HTTPOpenAI API HTTPSAnthropic API HTTPSGemini API HTTPSLM Studio / vLLM OpenAI-compatClaude Code CLI spawned processCodex CLI spawned processGemini CLI spawned processChromium chromiumoxideJob board sites 25 boardsOS Keychain Tauri pluginGitHub Releases auto-updateplatform::config env + data_dir()net::http rustls pooled clienterror::AppError typed errorsobservability::Span timed traces
critical path
external / API call
DB read/write
mount / register
fix count bug count