Skip to content

Nextpoint Glossary

Canonical terminology for the Nextpoint platform. When terms conflict between UI, code, and conversation, this glossary is authoritative.

Product Terminology

These pairs refer to the same concept. The correct term depends on context.

UI / Product Term Code / Backend Term Definition When to Use Which
Import Batch A set of documents submitted for processing. Users "start an import"; the backend creates a Batch record. Use "import" in UI copy, user docs, and product discussions. Use "batch" in code, architecture docs, and event names (BatchProcessingEvent, batch_id).
Exchange Wire Transfer of documents between cases. The product name is "Exchange"; the Rails models are OutgoingWire / IncomingWire. Configured via $global_config[:wire_product_name]. Use "exchange" in product/UI contexts. Use "wire" when referencing Rails code. The NGE module is documentexchanger.

Product Suites

Nextpoint has two distinct product suites. They are separate domains, not a migration path.

Suite Domain Components Architecture
Discovery eDiscovery Document processing: import, extraction, upload, export, exchange, search, review/coding NGE modularized: documentextractor, documentloader, documentuploader, documentexporter, documentexchanger, documentpageservice, unzipservice
Litigation Litigation Video (transcode, stitch, sync), Depositions (transcripts, parsing), Treatments (presentation images) Entirely Legacy Rails. Separate domain — NOT unfinished migration work.

Architecture Terminology

nge_enabled?

Definition: A permanent, immutable case attribute. A case is created as either NGE or Legacy and stays that way forever.

NOT: A feature flag, migration toggle, or gradual adoption switch.

Impact: The entire processing pipeline, UI rendering, event tracking, and data storage differ based on this flag. It cannot be hot-swapped. See nge-legacy-divergence-map for 85+ code branch points.

NGE Pipeline Entry Point

Correct: documentextractor is the NGE import pipeline entry point, called via ProcessorApi.import() → POST /import.

Incorrect: documentloader is NOT the entry point. It is a downstream SNS subscriber.

Pipeline Flow

Rails → ProcessorApi.import()
documentextractor (entry point — content extraction)
    ▼ SNS events (DocumentExtracted, etc.)
    ├──→ documentloader (DB writes — metadata, exhibits, pages)
    │       │
    │       ▼ SNS events
    ├──→ documentuploader (PDF processing via Nutrient/PSPDFKit)
    │       │
    │       ▼ SNS events
    └──→ PSM (Pipeline Status Monitor — captures ALL events via Firehose)
            ▼ Parquet → Athena
            ▼ NgeCaseTrackerJob (Rails) polls Athena → MySQL → BatchCompletionJob

PSM (Pipeline Status Monitor)

Subscribes to ALL SNS events from ALL NGE modules via Kinesis Firehose. Stores events as Parquet files queryable via Athena. This is how Rails knows when NGE processing is complete.

Document Handling Divergence

This single architectural difference drives the majority of NGE/Legacy code divergences:

Aspect Legacy NGE
Storage Individual page images (TIFF/PNG) on S3 PDF-only in Nutrient (PSPDFKit)
Annotations Bates numbers and confidentiality stamps baked into image files Overlay layers rendered on-demand by Nutrient
Viewer S3 image tiles rendered in browser Nutrient JavaScript viewer
Export Re-assemble from page images Render from PDF + overlays
Bates validation Against DB page counts Against Nutrient page counts

This divergence is the root cause of the 85+ branch points documented in the divergence map.

Terminology Rules

  1. Always clarify context when using import/batch, wire/exchange, or NGE/Legacy — the correct term depends on audience (UI vs code vs architecture).
  2. Never describe nge_enabled? as a migration flag — it is permanent.
  3. Never describe Litigation as "not yet migrated" — it is a separate product domain.
  4. documentextractor is the entry point — not documentloader.
  5. Frame document handling as PDF+overlays (NGE) vs page images (Legacy) — this single distinction explains most divergences.
Ask the Architecture ×

Ask questions about Nextpoint architecture, patterns, rules, or any module. Powered by Claude Opus 4.6.