Hierarchical document search engine

Your documents, searchable.

Drop files in. Search them by meaning, not just keywords. Every result links back to the exact location in the source — chapter, section, page.

Lectis · Latin, from reading and gathering.

What it is

A document search engine that respects structure. Textbooks have chapters. Manuals have sections. Specs have headings. Lectis parses that hierarchy first and chunks within it — so search results carry their breadcrumb path back to the source.

Runs locally as a free desktop application. No account, no internet, no fees. Files never leave your machine unless you choose to sync.

  • Local-first. Free desktop app. Your data stays with you.
  • Bring your own embeddings. OpenAI, Nomic, Voyage, Cohere, or local ONNX inference.
  • No vendor lock-in. Full export of chunks, vectors, and metadata at any time.
  • The tool disappears. A search box, a file list, a document viewer. Nothing more.

Who it's for

The reference-library hoarder

Textbooks, technical manuals, standards, papers. You currently Ctrl-F across dozens of open PDFs. Search your whole library by concept — and never pay.

The AI builder

You need a RAG pipeline. You don't want to stitch together LangChain, a vector DB, and a parsing library. Send documents in, get search results out.

The team

Specs, SOPs, compliance docs, internal knowledge. Confluence search isn't cutting it. Semantic search scoped to your workspace.

How it works

  1. 01

    Parse

    Format-specific extractors produce raw text plus a structural tree — headings, pages, sections. PDF, Markdown, HTML, plain text. OCR for scanned PDFs.

  2. 02

    Chunk

    Hierarchical chunker splits at the leaf level and generates parent summaries up the tree. Chunks respect paragraph and code-block boundaries.

  3. 03

    Embed

    Chunks go to your configured embedding provider — or run locally via ONNX. Vector dimensions lock per workspace at provisioning time.

  4. 04

    Search & expand

    Query in natural language. Get ranked chunks with breadcrumb paths. Expand around a hit — neighbors, parent, section, page — without a second search.

Status

Lectis ships in phases. The core engine and the desktop app are live; the hosted service is next.

  • Shipped

    Core engine

    Format parsers, hierarchical chunker, embedding abstraction, vector storage (LanceDB & Qdrant), search, and a store-agnostic chunk expander. CLI included.

  • Shipped

    Desktop application

    Native three-panel UI in Rust. Drag-and-drop ingestion, workspace management, source-document viewer with jump-to-hit, and one-click Connect to Claude for MCP integration.

  • In progress

    Hosted service

    REST API, async ingestion queue, Wasabi for source files, self-hosted Qdrant, per-workspace API keys, webhooks.

  • Later

    Sync, hybrid search, dashboards

    Desktop ↔ cloud sync, BM25 + vector hybrid retrieval, contextual retrieval, hosted dashboard.

Works with Claude

The desktop app exposes an MCP server. Click Connect to Claude, restart Claude Desktop, and Claude operates on the same workspace as the UI — same files, same index, same instance.

Eleven tools: list and create workspaces, search, fetch a chunk, expand around a hit, ingest text or files, link a GitHub repo, sync a code workspace.

search({
  workspace: "engineering-handbook",
  query: "how do we handle backpressure in queues?",
  top_k: 5
})

// → ranked chunks, each with:
//   id, parent_id, score
//   path: ["Reliability", "4.2 Queues", "4.2.3 Backpressure"]
//   chunk_text, doc_title, page_range