Overview
Norn is a contract document intelligence platform that transforms static documents into governed, reusable, signable templates with full 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.
At its core, Norn introduces the document package — a governed, portable, machine-actionable contract object that carries its template, fields, sections, signatures, provenance chain, and integrity metadata as a single structured unit. Document packages are the foundation for compatibility validation, template exchange, and deterministic document governance.
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 and sections 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. Sections can be created inline, or browsed from the section library — a curated collection of 19 reusable clauses.
24 starter templates are included across five categories:
| Category | Templates |
|---|---|
| Services & Consulting | MSA, SOW, Independent Contractor, Subcontractor, Software Development, SLA |
| Employment & HR | Employment Agreement, Internship, Non-Solicitation |
| Sales & Commercial | Sales Agreement, Referral, License, Lease, Equipment Rental, Promissory Note |
| Legal & Compliance | Mutual NDA, Data Processing Agreement, Release & Waiver, Assignment, Cease & Desist |
| Business Structures | Partnership, Joint Venture, Letter of Intent, Memorandum of Understanding |
19 reusable sections ship as a clause library:
Confidentiality, Non-Compete, Non-Solicitation, IP Assignment, Indemnification, Limitation of Liability, Arbitration, Litigation, Mediation, Governing Law, Force Majeure, Insurance, Data Protection, Termination, Entire Agreement, Notices, Assignment, Signature Block (2-party), Signature Block (3-party).
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 with footer provenance metadata.
Tabbed Interface
Multiple documents can be open simultaneously, each in its own tab with independent mode, fields, sections, and OCR state. The field panel and CRM dock sync to whichever tab is active. Closing a tab with unsaved changes prompts to save. A welcome screen appears when no documents are open, offering quick-start workflow buttons.
Document Import
Norn accepts multiple input formats:
| Format | Method | Text Extraction |
|---|---|---|
| QPdfDocument + Tesseract OCR | Native extraction first, OCR fallback at 300 DPI | |
| DOCX | XML parsing (word/document.xml) | Direct extraction + image preservation |
| ODT | XML parsing (content.xml) | Direct extraction |
| TXT, MD | Direct file read | Split on page breaks or line count |
Image Preservation
Images are first-class document content elements. When importing DOCX files, Norn extracts all images from the word/media/ directory and registers them as managed image assets with:
- Stable content ID and MIME type
- Placement metadata (inline, header, footer, table cell, anchored)
- Role classification (logo, signature, seal, diagram, exhibit, decoration)
- Original and display dimensions
- Template element flag for replaceable images (e.g., org logos)
Images are preserved through parsing, editing, templating, versioning, and export.
OCR Processing
Each page of an ingested PDF is rendered at 300 DPI and processed through the active OCR engine. 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
Section and Field Detection
The FieldDetector identifies both sections (document structure) and fields (fillable regions) simultaneously. Detection is heuristic and deterministic — no AI, no inference.
Section detection recognizes: numbered headings (1., 2.1), roman numerals (I., II.), lettered sections (A., B.), Article/Section/Clause prefixes, ALL-CAPS headings, and common contract section names. Each section is auto-categorized: confidentiality, restrictive, IP, liability, compensation, term, dispute, compliance, definitions, core, execution, general.
Field detection identifies: blank lines, date patterns, signature patterns, checkbox patterns, and label:value patterns. Each field is assigned a replacement mode that controls how it interacts with source text:
| Mode | Behavior |
|---|---|
| Replace Entire Region | The full source text region becomes the field |
| Replace Input Only | Labels like "Name:" are preserved; only the blank/value portion becomes the field |
| Preserve Label, Replace Control | For checkboxes: the label text stays, only the control glyph becomes the field |
| Insert Adjacent | For pure-label signatures: the field is placed adjacent to the descriptive text, not replacing it |
Fields that belong to a detected section carry the section's ID, establishing a nesting relationship. Fields outside any section remain top-level.
Formatting Artifact Filter
Page breaks, page numbers, horizontal rules, watermarks, copyright lines, and other rendering artifacts are automatically detected and excluded from field and section detection. Users can manually mark additional text as ignored via the "Ignore Text" button in the field panel. Ignored patterns persist in the template file.
Field System
Field Types
| Type | Widget | Use Case |
|---|---|---|
| Text | Free-form input | Names, addresses, company names, custom clauses |
| Date | Date picker (ISO 8601) | Effective dates, expiration dates |
| Signature | Draw / type / upload capture | Legally binding signatures |
| Initials | Draw / type / upload capture | Page-level acknowledgment |
| Checkbox | Boolean toggle | Opt-in/opt-out, service selections |
| Radio | Grouped one-of-N | Mutually exclusive choices |
| Dropdown | Combo selection | Predefined option lists |
| Currency | Numeric with symbol | Line item prices, totals, fees |
| Number | Plain numeric | Quantities, percentages, counts |
| Formula | Computed (read-only) | Line totals, subtotals, tax, grand total |
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
Three capture methods:
- Draw — Freehand on canvas with mouse, touch, or stylus (pressure-sensitive)
- Type — Name rendered in a script font (multiple fonts available)
- Upload — Import an existing signature image (PNG, JPG)
Signatures are stored per-contact in the CRM and rendered directly into exported PDFs.
Document Sending
Documents are sent via Norn's managed mailbox (SendGrid SMTP):
- Fill a document, assign fields to signatories
- Choose parallel or sequential signing order
- Each signatory receives a branded email with a secure signing link
- Recipients fill only their assigned fields on a standalone signing page (no account required)
- Completion notification sent when all signatures collected
Token-based access: single-use, time-limited (default 7 days), field-scoped, IP-logged.
Formula Engine
Recursive descent parser supporting field references ({Quantity} * {Unit Price}), arithmetic (+ - * /), parentheses, and functions (SUM, MIN, MAX, ROUND). Multi-pass evaluation for dependency chains. Currency formatting with locale-aware thousands separators.
Template Format
Templates are stored as .norn files — JSON documents containing:
- Identity: ID, form number, name, version, author, timestamps
- Source binding: PDF path and SHA-256 hash (integrity verification)
- Source type:
"pdf","text", or"composed" - Field declarations: each with type, label, position, replacement mode, signatory assignment
- Section definitions: conditional content blocks with condition expressions
- Variable declarations: workflow parameters that control section inclusion
- Image assets: managed images with placement, dimensions, and role metadata
- Footer configuration: provenance metadata and optional branding
- Document metadata: document type, jurisdiction, governing law, industry
- Ignored patterns: user-defined text to exclude from detection
- Version history: up to 50 prior version snapshots
- Components: references to child templates for composite documents
Template Versioning
Every save snapshots the previous version and auto-increments the version number. Users can view history and revert to any prior version.
Save Dialog
Templates are saved with a form number (e.g., "MSA-2026-001") and version (e.g., "1.0") via a custom dialog. The system produces both a .norn template file and an optional master PDF with the same name.
Conditional Sections
Sections bring conditional logic into the compose workflow:
- Inline: select text → wrap as section → set condition
- From library: browse 19 pre-built clauses and insert directly
- Condition tree model: AND/OR nesting with variable references
Composite Templates (Stitching)
Templates can be composed from multiple child templates: addendums, exhibits, amendments. Components are ordered, labeled, and resolved at fill/export time.
Document Package Model
A document package is the canonical governed contract object — a structured, portable, machine-actionable container. This is distinct from formatting/rendering artifacts (page breaks, etc.), which are treated separately in the codebase.
Each package carries:
| Element | Purpose |
|---|---|
| Package ID | Stable UUID for this package instance |
| Schema version | Package format version (independent of template version) |
| Compatibility | NornNative, NornCompatible, RawImport, or External |
| Template lineage | Source template ID, version, and lineage chain |
| Field declarations | All fields with types, positions, and replacement modes |
| Section definitions | All sections with conditions and nesting |
| Signature state | Unsigned → Pending → Partially Signed → Fully Signed → Voided |
| Provenance chain | Timestamped entries: created, modified, signed, exported, forked |
| Integrity hash | SHA-256 of the serialized package |
Compatibility Validation
The PackageValidator provides deterministic structural validation:
- Required fields present (package ID, schema version, template ID)
- Field declarations have IDs
- Section conditions reference declared variables
- Provenance chain is chronological
- Integrity hash matches
A document is Norn-native if created in Norn with full structural metadata. It is Norn-compatible if imported and enriched. Raw imports and external documents are classified separately.
Footer Provenance
Exported documents carry configurable footer metadata:
Governance metadata (always available):
- Template ID, version, generation timestamp
- Form number / control number
- SHA-256 integrity hash
Branding (optional, tier-aware):
- Default: "Generated with Norn"
- Alternate: "Structured by Norn" or custom text
- Draft copies: branding on by default
- Execution copies: branding off by default (paid tiers can remove entirely)
Footer rendering does not break document layout fidelity.
Template Exchange (Foundation)
Templates can exist as governed packages with metadata, lineage, and visibility controls:
| Visibility | Access |
|---|---|
| Private | Only the creator |
| Org-Shared | All users in the organization |
| Public | Listed on the exchange (Phase 2) |
| Verified | Reviewed and verified (Phase 2) |
Phase 1 (current): private and org-shared template libraries with publisher attribution, document type / jurisdiction / industry metadata, and fork tracking.
Phase 2 (planned): public listings, moderation workflow, verified badge, commercial template packs.
Licensing and Feature Gating
Server-side enforcement with tier-specific limits:
| Tier | Price | Contracts/Month | OCR Engine | Send for Signing | Additional |
|---|---|---|---|---|---|
| Free | $0/mo | 5 | Tesseract (local) | No | 3 templates, PDF export |
| Pro | $99/mo | 50 | Google Doc AI | Yes | Unlimited templates, 3 seats |
| Business | $399/mo | 250 | Google Doc AI | Yes | API access, 10 seats, priority support |
| Enterprise | $1,499/mo | Unlimited | Google Doc AI | Yes | SSO, SLAs, unlimited seats, Ratatosk integration |
All tiers include: import, compose, field detection, section detection, formula engine, conditional sections, workflow builder, governed archive, lite CRM, template versioning, composite templates, image preservation, footer provenance, and document package metadata.
Lite CRM
Contacts auto-populate from filled template fields. Saved signatures and initials stored per-contact. Contract records track lifecycle: Draft → Sent → Viewed → Signed → Expired → Archived.
Document Archive
Compliance controls: immutability (signed contracts), access logging (append-only), retention enforcement (7-year default), SHA-256 integrity verification.
Platform Integration
Ratatosk Manifest Export
Contract data exports as Ratatosk-compatible manifests: contacts → crm_entities, contract metadata → norn_contracts, field values → Mimisbrunnr-aligned columns.
Enterprise Direct Ingestion
Enterprise tier enables direct Yggdrasil API ingestion for trusted recurring contract workflows.
Account Management
Same credentials as the Mimir Labs portal. JWT-based authentication with 7-day sessions. Per-user product entitlements track tier, usage, and feature gates. Purchases automatically create or upgrade entitlements via webhook.
Security Model
- OCR processing is local by default (Tesseract)
- No document content transmitted to Mimir Labs at any tier
- Signature request emails contain only metadata and signing links
- Signatory tokens are single-use, time-limited, and field-scoped
- Document packages carry SHA-256 integrity hashes and provenance chains
- Image assets are validated for MIME type and size (10 MB limit)
- Footer branding removable on execution copies for paid tiers
Technology Stack
| Component | Technology | Rationale |
|---|---|---|
| Desktop | C++17 / Qt 6 Widgets | Cross-platform, native PDF rendering, local OCR |
| Web App | Next.js 15 / React 19 / TypeScript | Server-side extraction, responsive UI |
| PDF Rendering | Qt Pdf + QPdfWriter / QPainter | 300 DPI, no external dependencies |
| Compose Editor | QTextEdit (desktop) | Rich text with inline field and section markers |
| OCR (Free) | Tesseract 5.x CLI | Free, local, no library linking |
| OCR (Premium) | Google Document AI | Superior accuracy, handwriting |
| Signature Capture | QPainter paths (desktop), HTML Canvas (web) | Draw + typed + uploaded |
| SendGrid SMTP | Branded signature request and completion emails | |
| Persistence | .norn files (local), PostgreSQL (server) | Portable templates, governed entitlements |
| Integrity | SHA-256 (Qt Cryptographic) | Document fingerprinting, provenance chains |
| Icons | Lucide (MIT) | Consistent thin-line icon set |
Platform Significance
Norn addresses the document layer that the rest of the Mimir Labs platform does not cover. Enterprise documents — contracts, agreements, compliance artifacts — typically have no structural awareness, no version control, and no governed lifecycle.
Norn makes documents structurally aware. It identifies fillable regions, preserves them as reusable templates, captures signatures with legal equivalence, governs documents through their lifecycle, and packages them as machine-actionable objects with provenance and integrity guarantees. 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.