← All Publications

Norn — Contract Document Intelligence

Mimir Labs Technical Publication·March 2026

Overview

Norn is a contract document intelligence platform that transforms static documents into reusable, fillable, signable templates with governed lifecycle management. It bridges the gap between starting from scratch in Word every time and paying for a full contract lifecycle management suite.

Norn operates in three modes: Import existing documents (PDF, DOCX, ODT, TXT, Markdown), Compose contracts from scratch with a built-in rich text editor, or Fill existing templates and send them for signature. The result is a complete document workflow — from authoring through signing to governed archival — in a single tool.

Where the existing Mimir Labs tools operate on enterprise data structures, Norn operates on the documents that govern the relationships between the organizations those data structures serve. Contracts, service agreements, statements of work, and compliance documents define the legal and commercial context within which enterprise data exists.


Architectural Role

Norn extends the Mimir Labs platform lifecycle into the contractual domain:

  • Ratatosk: discover and define meaning in enterprise data
  • Ragnarok: migrate data into aligned structures
  • Bifrost: maintain alignment across systems
  • Jormungandr: enforce canonical governance
  • Norn: govern the documents that define business relationships

The relationship between Norn and the data platform is bidirectional. Contract data flows into the enterprise through manifest export, and enterprise data can inform contract generation through template field pre-population.


Application Modes

Template Mode

Import an existing document and convert it into a reusable template. Norn extracts text, detects candidate fields via heuristic pattern matching, and allows manual field promotion. The source document is preserved; fields are overlaid as a separate layer.

Compose Mode

Write a contract from scratch using the built-in rich text editor. Formatting toolbar supports bold, italic, underline, headings (H1–H3), bullet and numbered lists, and table insertion. Fields are inserted inline via the "+ Field" button — each becomes a fillable marker in the document body.

Five built-in contract starters are included:

  • Mutual Non-Disclosure Agreement — Standard mutual NDA with configurable terms
  • Statement of Work — Project scope, deliverables, timeline, and compensation
  • Master Services Agreement — Framework for ongoing professional services
  • Employment Agreement — Standard employment terms with compensation
  • Blank Document — Start from an empty page

Users can also select text in the editor and promote it directly to a field.

Fill Mode

Open an existing template, fill field values through a form dialog, and export or send for signature. Formula fields compute automatically. Signature and initials fields open a capture dialog. Completed documents export as PDF.


Document Import

Norn accepts multiple input formats:

FormatMethodText Extraction
PDFQPdfDocument + Tesseract OCRNative extraction first, OCR fallback at 300 DPI
DOCXXML parsing (word/document.xml)Direct extraction
ODTXML parsing (content.xml)Direct extraction
TXT, MDDirect file readSplit on page breaks or line count

For PDF ingestion:

  1. Loads the PDF via Qt's QPdfDocument
  2. Computes a SHA-256 hash of the source document (integrity baseline)
  3. Extracts text from every page immediately (native extraction first, Tesseract OCR fallback)
  4. If a .norn.json template file exists alongside the document, auto-loads it

OCR Processing

Each page of the ingested PDF is rendered to a high-resolution image (300 DPI) and processed through the active OCR engine. The OCR layer is abstracted behind the IOcrEngine interface:

MethodPurpose
initialize(dataPath, language)Load OCR model data
recognize(image)Full-page OCR with structured output
recognizeRegion(image, rect)Region-specific OCR for promoted selections
engineName()Display identifier

Two engines are available:

  • Tesseract (Free tier) — local CLI-based OCR, no data leaves the machine
  • Google Document AI (Pro+ tiers) — cloud OCR with superior accuracy for handwriting and complex layouts

Heuristic Field Detection

The FieldDetector analyzes extracted text to identify candidate fields using pattern matching:

PatternDetection RuleField TypeConfidence
Blank lines___________ (3+ underscores)Text0.70
Date patternsDate:, MM/DD/YYYY, Effective Date:Date0.80
Signature patternsSignature:, Authorized Representative:Signature0.85
Checkbox patterns[ ], [X]Checkbox0.75
Label:Value patternsCompany: ___, Name: ___Text0.60

All detections are suggestions. None are committed to the template without operator review.


Field System

Field Types

TypeWidgetUse Case
TextFree-form inputNames, addresses, company names, custom clauses
DateDate picker (ISO 8601)Effective dates, expiration dates
SignatureDraw / type / upload captureLegally binding signatures
InitialsDraw / type / upload capturePage-level acknowledgment
CheckboxBoolean toggleOpt-in/opt-out, service selections
RadioGrouped one-of-NMutually exclusive choices
DropdownCombo selectionPredefined option lists
CurrencyNumeric with symbolLine item prices, totals, fees
NumberPlain numericQuantities, percentages, counts
FormulaComputed (read-only)Line totals, subtotals, tax, grand total

Field Operations

  • Detect — Run heuristic pattern matching on extracted text
  • Promote — Select text and convert it to a fillable field
  • Split — Divide a field horizontally or vertically
  • Resize — Edit the field's source text to change its scope
  • Demote — Convert a field back to static text

Signatory Assignment

Each field can be assigned to a signatory by name and email. When a document is sent for signing, each recipient sees only their assigned fields. Supports parallel (all at once) and sequential (ordered) signing.


Signature Capture

Norn provides three methods for capturing signatures and initials:

  • Draw — Freehand drawing on a canvas with mouse, touch, or stylus input. Pressure-sensitive when using a stylus.
  • Type — Type a name rendered in a script font. Multiple font options available (Dancing Script, Great Vibes, Segoe Script, etc.).
  • Upload — Import an existing signature image (PNG, JPG).

Captured signatures are stored per-contact in the CRM and rendered directly into exported PDFs at the field's bounding rectangle. The same signature can be reused across multiple contracts for the same contact.


Document Sending

Documents can be sent to one or more signatories via Norn's managed mailbox:

  1. Fill a document (leaving signatory-assigned fields blank)
  2. Assign fields to signatories by name and email
  3. Choose signing order: parallel (all at once) or sequential (in order)
  4. Send — each signatory receives a branded email with a secure signing link

Signatory Experience

Recipients click the link and land on a standalone signing page. No account required — access is token-based. The page shows:

  • The document name and their role
  • Only their assigned fields (all others are read-only)
  • A legal consent statement
  • A submit button

After submission, the signatory's token is invalidated. For sequential signing, the next signatory is automatically notified.

Completion Flow

When all signatories have signed:

  1. Document status transitions to "completed"
  2. The document owner receives a completion notification email
  3. The final document is available for export and archival

Security

  • Signatory tokens are single-use and time-limited (default: 7 days)
  • Signatories can only submit values for fields assigned to them (server-enforced)
  • Every access logs IP address and user agent
  • The original template data is stored server-side; signatories never receive the full template

Formula Engine

Formula fields are computed from other field values using a built-in recursive descent parser. Formulas are defined during template authoring and evaluated automatically during document filling.

Syntax

Field references use curly braces with the field's label:

{Quantity} * {Unit Price}
{Subtotal} + {Tax}
ROUND({Subtotal} * 0.07, 2)
SUM({Line 1 Total}, {Line 2 Total}, {Line 3 Total})

Supported Operations

CategorySyntaxExample
Arithmetic+ - * /{Qty} * {Price}
Parentheses( )({Subtotal} + {Tax}) * 1.0
SUMSUM(a, b, c)SUM({Line 1}, {Line 2}, {Line 3})
MIN / MAXMIN(a, b)MIN({Bid 1}, {Bid 2})
ROUNDROUND(expr, places)ROUND({Subtotal} * 0.07, 2)
LiteralsNumbers{Subtotal} * 0.07

Formulas evaluate in dependency order with multi-pass resolution (up to 3 passes) for chains. Currency fields are automatically formatted with the configured currency symbol and thousands separators.


Template Format

Templates are stored as .norn.json files — JSON documents containing:

  • Metadata: name, version, author, creation/update timestamps
  • Source binding: PDF path and SHA-256 hash (integrity verification)
  • Source type: "pdf", "text", or "composed" (from-scratch documents include an HTML body)
  • Field definitions: each field includes type, label, position, signatory assignment, and validation
  • Version history: up to 50 prior version snapshots with timestamps and change notes
  • Components: references to child templates stitched into composite documents

Templates are portable. They can be shared, versioned, and archived independently of the source document.

Template Versioning

Every save creates a version snapshot. Users can:

  • View version history with timestamps, field counts, and change notes
  • Revert to any prior version (current state is automatically snapshotted before revert)
  • Version numbers auto-increment on each save (e.g., 1.0 → 1.1 → 1.2)

The template file carries its complete history — no external version control required.

Composite Templates (Stitching)

Templates can be composed from multiple child templates to create composite documents:

  • Addendums: attach supplementary terms to a master agreement
  • Exhibits: reference schedules, price lists, or specification documents
  • Amendments: layer changes onto an existing contract without modifying the original

Components are ordered, labeled (e.g., "Exhibit A", "Amendment 1"), and resolved at fill/export time. Each component retains its own fields. Components are referenced by file path — the same exhibit can be shared across multiple master agreements, and updates propagate automatically.


Licensing and Feature Gating

Norn uses a tiered licensing model with server-side enforcement. Usage limits are checked before every contract creation and document send.

TierPriceContracts/MonthOCR EngineSend for SigningAdditional
Free$0/mo5Tesseract (local)No3 templates, PDF export
Pro$99/mo50Google Doc AIYesUnlimited templates, 3 seats
Business$399/mo250Google Doc AIYesAPI access, 10 seats, priority support
Enterprise$1,499/moUnlimitedGoogle Doc AIYesSSO, SLAs, unlimited seats, Ratatosk integration

All tiers include: import, compose, field detection, field promotion, formula engine, governed archive, lite CRM, template versioning, and composite templates.


Lite CRM

Norn includes a lightweight contact and contract record management system:

Contacts are auto-populated from filled template fields. When a user fills in "Client Name," "Signer Email," and "Company," the CRM creates or updates a contact record automatically. Saved signatures and initials are stored per-contact for reuse.

Contract Records track the lifecycle of each generated document:

  • Draft (created, not yet sent)
  • Sent (transmitted for signature)
  • Viewed (recipient opened the signing link)
  • Signed (all signatures collected)
  • Expired (signing deadline passed)
  • Archived (moved to long-term governed storage)

The CRM is JSON-backed (no database required) and persists in a single file alongside the archive.


Document Archive

All documents — signed contracts, unsigned drafts, and templates — are stored in a governed archive.

Compliance Controls

Immutability. Signed contracts cannot be modified after archival. The file hash is computed at archive time and verified on every retrieval.

Access Logging. Every access — view, download, export, delete request — is logged with timestamp, user identifier, and action type. The access log is append-only.

Retention Enforcement. Signed contracts carry a configurable retention period (default: 7 years). Deletion requests are denied until the retention period expires. Denied requests are logged.

Integrity Verification. On-demand or batch SHA-256 hash verification detects any file corruption or unauthorized modification.

Storage Backends

BackendStatusUse Case
Local filesystemActiveSingle-user, Free/Pro tiers
Remote VPSReady (inactive)Team access, Business/Enterprise tiers

Platform Integration

Ratatosk Manifest Export

Norn can export filled contract data as a Ratatosk-compatible manifest:

  1. Contact fields map to crm_entities / crm_contacts (CRM taxonomy)
  2. Contract metadata maps to a norn_contracts table (Sales taxonomy)
  3. All filled field values become additional columns with Mimisbrunnr-aligned naming

The manifest follows the standard Ratatosk format and can be loaded directly for governance review. From there, Ragnarok can migrate the data into Yggdrasil ERP, or Jormungandr can validate it against the canonical model.

Enterprise Direct Ingestion

Enterprise tier enables direct Yggdrasil API ingestion, bypassing the Ratatosk review step for trusted, recurring contract workflows (e.g., auto-provisioning a customer record when an MSA is signed).


Account Management

Norn accounts are managed through the Mimir Labs platform at app.mimirlabs.net:

  • Authentication: Same credentials as the Mimir Labs portal. JWT-based with 7-day sessions.
  • Entitlements: Per-user product entitlements track tier, usage, and feature gates.
  • Provisioning: Purchases automatically create or upgrade entitlements via webhook. Downgrades and cancellations are handled gracefully with usage period preservation.
  • Account API: GET /api/norn/account returns current tier, usage vs. limits, and feature gates.

Security Model

Norn is designed for environments where document confidentiality is critical.

  • OCR processing is local by default (Tesseract). No document content leaves the machine.
  • Google Document AI processing (Pro+) sends page images to Google's API. Users supply their own API key and accept Google's data processing terms.
  • No document content is transmitted to Mimir Labs infrastructure at any tier.
  • Signature request emails contain only metadata and a signing link — never document content.
  • Signatory tokens are single-use, time-limited, and field-scoped.
  • Connection credentials for the remote archive are encrypted and stored locally.
  • The archive access log provides a complete audit trail for compliance review.

Technology Stack

ComponentTechnologyRationale
DesktopC++17 / Qt 6 WidgetsCross-platform, native PDF rendering, local OCR
Web AppNext.js 15 / React 19 / TypeScriptServer-side extraction, responsive UI
PDF RenderingQt Pdf + QPdfWriter / QPainter300 DPI rendering, no external dependencies
Compose EditorQTextEdit (desktop)Rich text with inline field markers
OCR (Free)Tesseract 5.x CLIFree, local, no library linking required
OCR (Premium)Google Document AISuperior accuracy, handwriting support
Signature CaptureQPainter paths (desktop), HTML Canvas (web)Freehand + typed + uploaded
EmailNodemailer (SMTP)Branded signature request and completion emails
PersistenceJSON files (local), PostgreSQL (server)Portable templates, governed entitlements
IntegritySHA-256 (Qt Cryptographic)Document fingerprinting and archive verification

Platform Significance

Norn addresses the document layer that the rest of the Mimir Labs platform does not cover.

Enterprise data has structure, governance, and enforcement. Enterprise documents — the contracts, agreements, and compliance artifacts that define the legal framework around that data — typically have none of these properties. They are static files passed between parties with no structural awareness, no version control, and no governed lifecycle.

Norn makes documents structurally aware. It identifies the points where human input is required, preserves those points as reusable templates, captures signatures with legal equivalence, and governs the resulting documents through their lifecycle. When combined with the broader Mimir Labs platform, it creates a closed loop: contracts define relationships, data flows through those relationships, governance ensures alignment, and the archive preserves the record.


Copyright 2024–2026 Mimir Labs LLC. All rights reserved.