Skip to main content
Every document records the processing revision that successfully completed for OCR, content extraction, and optional LLM classification:
  • pipeline_version_ocr
  • pipeline_version_content
  • pipeline_version_llm
The binary carries the current revision for each pipeline. Maintainers bump a revision when code, a prompt, an output schema, or another processing contract changes enough that older results may be worth regenerating.

Version zero

Version 0 means the pipeline has never completed successfully for that document. A failed LLM request therefore remains at 0. A valid low-confidence response is still a completed classification: Suchi adds the needs-review tag and records the current LLM revision without applying its uncertain metadata. A later successful classification at or above the configured threshold clears an earlier classifier-owned needs-review assignment if the new result does not request that tag. It does not remove manual, rule-assigned, imported, or legacy tags without recorded classifier ownership. A changed title alone does not establish confidence; failed requests and low-confidence results retain the tag. This distinction matters when the LLM is first enabled. Existing version-zero documents are not automatically presented as outdated LLM results because they have no prior LLM result to upgrade. Select the documents in Documents and use Rescan when you want to classify them.

Automatic proposals

On boot, Suchi compares stored revisions with the binary’s current revisions. Detection, eligibility and documentless approval runs are scoped independently to each filing system. Global pipeline/OCR/LLM configuration does not make a proposal or --system S02 rescan apply to another system. When previously processed results are older, it opens one admin approval per affected pipeline and system. For LLM classification, automatic proposals only include documents with a successful earlier revision (pipeline_version_llm >= 1). Enabling the LLM or changing its endpoint, model, key, timeout, threshold, or egress setting does not create a proposal. Those configuration changes require an explicit selected rescan. Password-protected PDFs waiting for decryption are also excluded. A rescan cannot advance them while the password gate is closed; supplying a password already re-enqueues the document through the current pipeline. The proposal in Approvals names the improved processing step and matching document count, without displaying internal revision numbers. Its actions are:
  • Rescan all N: enqueue every matching document.
  • Try 20 first: enqueue up to 20 random matches. This only appears when more than 20 documents match.
  • Dismiss: close this proposal without enqueuing work.
The underlying approval choices remain approve_all, approve_sample, and dismiss; the web app presents human labels. Rescans use the same durable post-ingest path as new uploads, so a process interruption does not lose the work. Dismissed proposals stay closed for that pipeline’s target revision across restarts. Startup honors saved dismissals and closes duplicate proposals left by older builds; explicitly approved work still runs. A later code revision can create a new proposal, and other pipelines are unaffected. If another rescan brings the matching count to zero, the detector cancels the obsolete open proposal on the next boot.

Explicit rescans

Camera-image fixes correct EXIF orientation and the page density of image-derived PDFs, and retry difficult QR codes when local ZBar is available. They retain content revision 2; existing revision-2 documents need an explicit selected rescan. OCR revision 2 adds one sparse-text retry for empty pages and a confidence-filtered sparse supplement for raster images in the lightweight engine. The existing approval path offers older OCR results for rescan. Original images remain available even when an earlier installation stored invalid derived bytes or skipped conversion. Select affected images in Documents and choose Rescan, or accept the relevant proposal, to regenerate their archive and indexed text from the immutable original. Upgrading alone does not repair previously processed images. Use the Documents selection controls for ordinary operator-driven rescans. The CLI provides narrower filters and dry runs:
Unlike automatic LLM upgrade proposals, --stale llm includes version-zero documents. This is intentional because the command is an explicit operator decision.

Failures

Exhausted or terminal jobs appear under Dead jobs — needs attention in Approvals. Correct the underlying problem, then choose Retry to reset the same durable row and run it again. Choose Dismiss when the failure was expected or no longer needs attention. Both actions are administrator-only and audited; dismissing a job does not delete its document. Related pages: LLM classifier, Approvals, CLI, and Automations.