Turn information into memory.
Live demo → — open a sample brief, or tap Watch the 1-minute demo.
▶ 1-minute demo with audio (MP4) · WebM · Download MP4
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.
memoRABLE is a Memory Engine.
- Bring one document (PDF, Markdown, plain text, or JSON).
- Remember it as six source-linked Memory Blocks:
Snapshot · Signals · Timeline · Decisions · Risks · Actions - Ground every memory — click it, and the exact source lines highlight.
- 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.
| 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
- Open memo-rable.vercel.app.
- Click Watch the 1-minute demo (video + sound, or silent GIF), or
- Click Open a sample brief / drop your own file.
- Click a memory → source highlights.
- Switch Email / Web / Document → Publish.
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:3000pdf.js layout is always the default. Embedded images (spreadsheets/screenshots) are OCR’d when present; pure text PDFs skip OCR and stay fast.
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 refineWith 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 |
flowchart LR
D[Document] --> X[Memory Extraction]
X --> G[Memory Graph]
G --> E[Unlayer Elements]
E --> O1[Email]
E --> O2[Web]
E --> O3[Document]
architecture · why memory · reliability
Next.js 15 · React 19 · TypeScript · Zod · @unlayer/react-elements · pdf.js · Vitest · Playwright
MIT — © 2026 Charan Rathore. See LICENSE.
