← Back to architecture

Harvester

backend domain · ingestion and sync

A single module for ingesting data from external sources. It runs in three modes — full import, incremental sync, and periodic reconciliation — over one internal pipeline: extract → normalize → load.

Architecture

E Extract fetch(since) source-specific L Load upsert · idempotent source record key Jira Confluence GitLab Slack S3 v2 terminals · connectors normalize boundary ↔ shared filter classify resolve reinforced in Reconcile enrich clean chunk contextualize AI · v2 embed AI T · Transform — shared pipeline · 9 stations Relational body · ACL · meta Vector embeddings Graph nodes · edges terminals · Knowledge Store → RawItem Connector → Transform Entity Transform → Loader · ticket·page·msg since = epoch (Full) since = last run (Incr.)
Full Sync
full

Full import from the beginning of time — on connecting a source or a manual rebuild.

start: epoch

Incremental
incremental

Only the deltas since last time — webhooks plus scheduled polling.

start: last run

Reconciliation
reconciliation

Express audit over the whole branch: clears what has vanished, aggressive resolve.

start: whole source

Knowledge Store — 3 projections + ACL + identities
Sources — Jira · Confluence · GitLab · Slack · S3
Admin Panel — sources · sync · DLQ
AI model registryembedding model (built-in or your own; assignment is a precondition for ingestion)
Auth crypto core · Cache & Workers SAQ + Redis
Query Engine — pre-filter by ACL
E/T/L hub (interchange) Transform station AI station
API

Run status and progress reach open screens as push nudges over the platform live-updates stream; the endpoints above stay the single source the client refetches.


Workzone Design

Detailed design decisions for the module.