Skip to content

Extraction & pool health

Everything that makes Aletheia more than a text editor — entities, tags, chunks, embeddings, action items — is produced by the extraction pipeline. It runs automatically in the background. Settings → Pool Health is where you watch it work.

Settings → Pool Health: the extraction queue and failed-job triage.

The extraction queue by stage, and a failed-extractions triage list (empty here — every job succeeded).

What extraction does

When you save (or import) a note, it's queued for processing in stages:

  • Stage A — classical. Fast, deterministic parsing: chunking the note into passages and the pattern-based first pass.
  • Embedding. Each chunk gets a semantic embedding — the fingerprint that powers semantic and hybrid search.
  • Stage C — LLM. The heavier, model-driven pass: extracting entities, auto-tags, and action items from the prose.

This is why a note's sidecar fills in progressively: Stage A and embedding finish in seconds; the LLM stage lands a moment later.

The extraction queue broken out by stage.

The extraction queue by stage. **①** Stage A (classical parsing) · **②** Stage C (the LLM pass).

Reading the queue

Each stage shows five counts:

Count Meaning
queued Jobs waiting to run
running Jobs in flight right now
done Jobs completed
failed Jobs that errored out after retries
skipped Jobs deliberately not run

The per-stage job counts.

Each stage's counts. **①** queued (waiting) · **②** done (completed) · **③** failed (errored after retries).

A healthy corpus trends toward done, with queues that drain after a burst of writing or an import. In the screenshot, Stage A has processed 24 jobs and Stage C has 12 queued — extraction catching up on the LLM pass right after a seed of notes.

Failed extractions

The Failed extractions panel is a triage list of jobs that couldn't complete. When it's empty you'll see "Every extraction job has succeeded." When it isn't, each entry can be retried or inspected — nothing is dropped silently, so a transient failure (say, an API hiccup) is visible and recoverable rather than a note that quietly never got enriched.

The Failed extractions triage panel.

The **Failed extractions** panel lists jobs that couldn't complete — each is retriable, never dropped silently.

The status bar is your at-a-glance health

You don't need to sit on this tab. The status bar at the bottom of every surface shows live notes · chunks · tags · entities counts and subsystem status. If chunks or entities lag well behind your note count, extraction is either busy or stuck — Pool Health tells you which.

The status bar at the bottom of every surface.

The bottom status bar is your at-a-glance health. **①** Healthy subsystem status · **②** chunks · **③** entities.

Extraction depends on the AI provider

The embedding and LLM stages call an AI provider. If that provider is rate-limited or its quota is exhausted, extraction degrades gracefully — jobs queue and retry rather than failing permanently — but new notes won't become semantically searchable until it recovers. A growing Stage C queue that never drains is the signal to check provider status.

After a big import, let the queue drain before you judge search

Bulk imports create large queues. Semantic search and chat only see a note once its chunks are embedded, so give the queue time to clear before concluding "search can't find my imported notes" — it can, once they're processed.

Next: What MCP-first means →