← 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 · 24)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.tsxrenderer bootstrap__root.tsxrouter shellindex.tsxDashboard routeai-generate.tsxAI Generate route1analyze.tsxAnalyze routeautopilot.tsxAutopilot routejobs.tsxJobs routesettings.tsxSettings routeapp-client.tsAppClient · useAppClienttauri-clientcreateTauriInvokeClientai-generate.machinegeneration FSMautopilot-run.machinerun FSMpreferences-storeZustand prefscn()className merge · goduseNotification()toast hook · goduse-aiReact Query · aiuse-ai-generationssaved generationsuse-ai-providerprovider keys/healthuse-autopilotautopilot runsuse-boardsboard cataloguse-matchresume↔job match1use-documentsdocument storeuse-jobsjob trackeruse-postingsposting cacheuse-cli-agentscoding agentsuse-credentialskeychain credsuse-job-preferencessearch prefsuse-privacyprivacy/backupuse-supportdiagnosticsuse-systemsystem/resourcesgeneration.tsstreamGenerate / stepsresume-ai.tsstructured resume helpersgenerate/exportDOCX/PDF export gluegenerate/templates9 export templatesbuildResumePrompt@ajh/promptsbuildCoverLetterPrompt@ajh/promptsbuildMetadataPromptname/role/keywordsvalidateMetadatarepair JSONgenerate/linksinject hyperlinksanalysis-prompt.ts@ajh/prompts/analyzevalidate.tsvalidateAndRepaircontext-manager/multi-passchunked passescontext-manager/truncationbudget trimcontext-manager/model-sizegetModelTier()provider/resolveProfileProviderProfilelocale11-language lexiconsindex.tsnamespace barrelai.tsAiContractautopilot.tsAutopilotContractscrape.tsScrapeContract1match.tsMatchContract1documents.tsDocumentsContractjobs.tsJobsContractboards.tsBoardsContractcliAgents.tsCliAgentsContractcredentials.tsCredentialsContractresume.tsResumeContractsystem.tsSystemContractschemas/Zod validationtypes/JobRecord, MatchScore…commands/mod.rsinvoke_handler registryai.rs · ai_generatestream commandpipeline.rsgeneratePipeline commanddocuments.rsimport/exportresume.rsstructured extractcover_letter.rsresearch + leakageai_generations.rssave/listboards.rscatalog/loginscrape · scrape_urlrun scrape1match_resume.rsmatch score1autopilot cmdsworkflow/runcli_agents.rsagent statussupport.rsdiagnosticsprofile_import.rsLinkedIn importdata.rsbackup/restoreai_provider::resolvestrict provider routingpipeline::Completerstage orchestrationpipeline/retryretry + regeneratepipeline/validationoutput validationpipeline/enrichmentcover-letter researchpipeline/cachestage cachescraping::engineScraperEnginescraping::typesScraper traittray + deeplinknotify + focusautopilot engineworkflow + scheduler1jobs::JobTrackerSQLite trackerdocuments storeimport + SQLiteextraction routerPDF/DOCX/RTF/HTMLexport/pdfcanonical layoutexport model/docxDOCX + rich modelSCRAPERSregistry · 24 boardsycombinatorScraper · APIremotiveScraper · APIremoteokScraper · APIwwrWeWorkRemotely · APIarbeitnowScraper · APIberlinstartupjobsScraper · APIgermantechjobsScraper · APIgreenhouseATS · APIleverATS · APIadzuna/jsearchAggregator · APIsmartrecruitersATS · APIpersonioATS · APIrecruiteeATS · APIashbyATS · APIarbeitsagenturgov · APIlinkedinScraper · browser1ollama.rslocal serveropenai.rsOpenAI / compatibleanthropic.rsClaude APIgemini.rsGoogle Gemini APIcli_agent/claude_codeheadless CLIcli_agent/codexheadless CLIcli_agent/gemini_cliheadless CLIOpenAI-compatibleLM Studio / vLLM…SQLite (rusqlite)migrationsDataStore traitexport/import1documents tableresumesjobs tablepostingsinteractions tableper-job eventsai_generations tablegenerated docsjob_preferences tablesaved searchescredentialskeychain indexSQLite · job vectorsvector[1024]SQLite · résumé vectorsvector[1024]PostingsCachein-memoryOllamalocal · HTTPOpenAI APIHTTPSAnthropic APIHTTPSGemini APIHTTPSLM Studio / vLLMOpenAI-compatClaude Code CLIspawned processCodex CLIspawned processGemini CLIspawned processChromiumchromiumoxideJob board sites24 boardsOS KeychainTauri pluginGitHub Releasesauto-updateplatform::configenv + data_dir()net::httprustls pooled clienterror::AppErrortyped errorsobservability::Spantimed traces
critical path
external / API call
DB read/write
mount / register
fix count bug count