Skip to main content

System Architecture

How JobJitsu is structured as a local-first AI Career Operating System.
This document synthesizes the architecture folder into one implementable system view.
It does not redefine product vision (../product/) or invent features.

Terms: ../product/TERMINOLOGY.md · Rules: OVERVIEW.md + PACKAGE_BOUNDARIES.md · What: ../product/PLATFORM_SPECIFICATION.md

Detail lives in sibling docs; this file is the system map.

TopicDetail
Thesis & lawsOVERVIEW.md
PackagesMONOREPO.md · PACKAGE_BOUNDARIES.md (includes domain DAG + fence checklist)
EventsEVENT_SYSTEM.md
Desktop / IPCDESKTOP_ARCHITECTURE.md · TAURI_TS_RUNTIME.md
AIAI_ARCHITECTURE.md
Workflow / Task Queue / ValidationAI_ARCHITECTURE.md (workflow engine section)
Data modelsDATA_MODELS.md
Plugins / ExtensionsPLUGIN_ARCHITECTURE.md · EXTENSION_SYSTEM.md
Scheduler / TestingSCHEDULER.md · TESTING_STRATEGY.md
Decisions../adr/README.md

1. System context (C4 — Level 1)​

In scope: one desktop process family on the user’s machine; local storage; optional user-configured remote AI Providers (honestly labeled — never Agent · On-device).

Out of scope: JobJitsu cloud backend, SaaS multi-tenant APIs, employer surveillance.


2. Containers (C4 — Level 2)​

ContainerResponsibilityADR / doc
Renderer UIViews, Agent · On-device chrome, subscribe to eventsADR 0002, DESKTOP
Host runtimeDI, IPC handlers, event bus, load models, enforce policyADR 0001, 0013, TAURI_TS_RUNTIME
Domain packagesIdentity, applications, queue, send, …PACKAGE_BOUNDARIES
packages/aiAI Provider, Model Manager, Context Builder, ValidationADR 0005, AI_ARCHITECTURE
On-device storageDocuments, blobs, optional embeddings indexADR 0006
Plugins / ExtensionsSkills vs host contribution pointsADR 0004, 0012

Law: UI never calls AI Providers or storage directly — only host commands/queries and event subscriptions (EVENT_SYSTEM.md law 7).


3. Layering​

LayerMay depend onMust not
UIHost IPC onlysend, ai, storage internals
HostAll packages via compositionBypass Queue for Send when approval required
Domainshared, events, storage, peers per boundariesagent → send
AIshared, identity/knowledge readsEgress, default cloud
SpineNothing / minimalNetwork sinks

4. Runtime request paths​

4.1 Preparative craft (no egress)​

4.2 Sovereign send​

AC: No Send.Attempted without Queue.Approved when approval-before-send is on (Trusted Automation exception path: EVENT_SYSTEM.md).


5. AI control plane​

See AI_ARCHITECTURE.md (including its workflow engine section).

PiecePackageStatus
Workflow Planner / EngineagentExperimental contract (documented)
AI Task QueueagentExperimental contract
Context BuilderaiCore · H1
AI Provider / Model ManageraiCore · H1
AI ValidationaiExperimental until backlog epic
Review QueuequeueCore · H1
SendsendCore · H1

Specialized “agents” in the platform specification are Workflow roles, not separate packages.


6. Data & knowledge​

Canonical entities and write ownership: DATA_MODELS.md.

  • Knowledge Base defaults to packages/identity until a split package is justified.
  • Timeline is audit/craft history — not knowledge facts.
  • Application prep/egress stages vs tracking statuses are mapped explicitly (do not conflate).

7. Events​

SSOT catalog: EVENT_SYSTEM.md. Typed names live in packages/events (code sync of newer names is a follow-up).

Durable allowlist includes Send.*, Privacy.EgressRecorded, Queue approve/reject, Agent.Paused, Preferences.Changed, Plugin/Extension toggles, Application.Submitted.


8. Extensibility​

KindMeaningDoc
PluginCapability-gated agent skillPLUGIN_ARCHITECTURE
ExtensionHost contribution (Job Provider, send channel, UI, …)EXTENSION_SYSTEM

Job Providers implement the discovery Source / Job Provider contract (PACKAGE_BOUNDARIES.md). Browser automation apply-assist is Experimental and must not bypass Queue → Send.


9. Desktop shell​

  • Target host: Tauri (ADR 0001); current foundation may run Vite-first (TAURI_TS_RUNTIME.md).
  • UI: React (ADR 0002).
  • IPC: Deny-by-default catalog in DESKTOP_ARCHITECTURE.md.
  • IA (H1): Applications, Queue, Follow-ups, Agent, Preferences, Timeline/Logs.
  • Chrome: Agent · On-device when local; remote labeled honestly.

10. Cross-cutting​

ConcernApproach
Config / Preferencesconfig document + preferences façade; Settings UI = shell
SchedulerLocal jobs only (SCHEDULER.md, ADR 0010)
LoggingLocal sinks; redact prompts by default
TestingPrivacy and agent≠send must-pass (TESTING_STRATEGY.md, ADR 0007)
ErrorsHost ErrorReporter; calm recovery copy (brand)

11. Non-goals (architecture defects if built)​

From ../product/NON_GOALS.md and OVERVIEW laws:

  • JobJitsu cloud holding career data
  • Agent-owned send / spray autopilot
  • UI→AI Provider calls
  • Silent cloud AI fallback
  • Urgency / streak systems as product metrics

12. Implementation guidance​

  1. Prefer vertical slices (../backlog/VERTICAL_SLICES.md).
  2. Enforce fences with tests/lint (agent ↛ send, UI ↛ ai).
  3. Emit catalog events with PII-minimized payloads.
  4. Treat Experimental modules as optional until backlog admits them.
  5. Process: ../../DEFINITION_OF_DONE.md · .cursor/rules/.

Document control​

FieldValue
StatusLiving system map
SupersedesUnfilled root architecture prompt stubs
Does not replaceSibling deep-dive docs or ADRs