Skip to content
charan-rathorePublic

About

Turn documents into source-linked memory you can inspect, then publish the same understanding to email, web and docs. Local-first; AI optional.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

80 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

memoRABLE

Turn information into memory.

Live demo → — open a sample brief, or tap Watch the 1-minute demo.

memoRABLE silent GIF walkthrough

▶ 1-minute demo with audio (MP4) · WebM · Download MP4


Why does this exist?

Documents are easy to store and hard to remember.

A board brief gets pasted into email, retyped into a status page, then rewritten again for a slide. Facts drift. Context disappears. “Summarize this PDF” tools make another blob of text — still ungrounded, still one-format, still easy to mistrust.

People don’t need another summary.
They need reusable knowledge that stays tied to the source and can leave as Email, Web, or Document without being rewritten.

That’s why memoRABLE exists.


What is the product?

memoRABLE is a Memory Engine.

  1. Bring one document (PDF, Markdown, plain text, or JSON).
  2. Remember it as six source-linked Memory Blocks:
    Snapshot · Signals · Timeline · Decisions · Risks · Actions
  3. Ground every memory — click it, and the exact source lines highlight.
  4. Publish once with Unlayer Elements into Email, Web, and Document.

One understanding. Three publications. Same memory graph.
Nothing is uploaded by default. AI is optional and off unless you turn it on.


Why should people use it?

If you… memoRABLE gives you…
Rewrite the same brief into email + docs + web One memory → three outputs that can’t disagree
Don’t trust AI summaries Provenance: Remembered from the exact lines
Need Elements to be obvious in a demo UI says Powered by Elements / Composed using Elements
Care about privacy Local-first by default
Work with PDFs and notes Drop a file or paste — PDFs: first 40 pages
Document → Memory Extraction → Memory Graph (6 blocks) → Unlayer Elements → Email · Web · Document

Promises that must never break

  • Recent-document source text stays in this browser and is not uploaded by the local library.
  • Recent documents expire after 7 days and the library keeps at most 24 entries.
  • A saved source excerpt is limited to 1,048,576 UTF-16 units.
  • The capability-detection helper reports unavailable features as false and contains storage probe failures.

The local-library limits are covered in tests/unit/doc-library.test.ts. The optional reference-storage helpers are tested in tests/unit/storage.test.ts and implemented in src/reliability/storage.ts. The capability helper's contract is covered in tests/unit/capabilities.test.ts. These helpers are not wired into the reader; the tests cover helper roundtrip and error handling, not reader restoration after reload.

Try it

  1. Open memo-rable.vercel.app.
  2. Click Watch the 1-minute demo (video + sound, or silent GIF), or
  3. Click Open a sample brief / drop your own file.
  4. Click a memory → source highlights.
  5. Switch Email / Web / Document → Publish.

Setup (local)

Need: Node 20.9–24 (.nvmrc pins 22).

git clone https://github.com/charan-rathore/memoRABLE.git
cd memoRABLE

nvm use                 # or: nvm install 22 && nvm use 22
npm install
npm run dev             # → http://localhost:3000

PDF path (pdf.js + selective OCR)

pdf.js layout is always the default. Embedded images (spreadsheets/screenshots) are OCR’d when present; pure text PDFs skip OCR and stay fast.

Optional: Docling refine (experimental, research-only)

Docling never blocks the UI.

npm run docgraph                              # sidecar → http://127.0.0.1:8765
NEXT_PUBLIC_DOCGRAPH=1 npm run dev            # allow selective background refine

With the flag on, uploads still parse via pdf.js first. Docling may refine in the background only for research-like / long / table-heavy PDFs, and only replaces memories when quality improves. SHA-256 parse cache avoids re-parsing. Graphify-schema graphs are built in TypeScript (not on the Docling critical path). See services/docgraph/README.md.

Command What it does
npm run dev Local app
npm run verify Lint + types + tests + production build
npm run test:e2e Playwright (npx playwright install chromium once)
npm run demo:video Regenerate public/media/demo.mp4 + GIF

Architecture

memoRABLE document-to-memory architecture

Interactive architecture guide - open any stage for code links and failure boundaries. GitHub displays HTML source; clone or download the repository and open the HTML locally to preserve its code links. This guide does not change the application UI.

flowchart LR
  D[Document] --> X[Memory Extraction]
  X --> G[Memory Graph]
  G --> E[Unlayer Elements]
  E --> O1[Email]
  E --> O2[Web]
  E --> O3[Document]
Loading

architecture · why memory · reliability


Stack

Next.js 15 · React 19 · TypeScript · Zod · @unlayer/react-elements · pdf.js · Vitest · Playwright


License

MIT — © 2026 Charan Rathore. See LICENSE.

About

Turn documents into source-linked memory you can inspect, then publish the same understanding to email, web and docs. Local-first; AI optional.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages