cd /news/ai-tools/we-built-a-real-time-ai-research-col… · home topics ai-tools article
[ARTICLE · art-18878] src=dev.to pub= topic=ai-tools verified=true sentiment=↑ positive

We Built a Real-Time AI Research Collaborator Into our JOT writing tool

VEKTOR Memory built JOT Collab, a real-time AI research collaborator embedded directly into its JOT writing tool that surfaces insights, suggestions, and relevant academic papers without requiring users to leave the editor. The system fires automatically four seconds after a user stops typing, reading the written content and delivering an observation, a declarative sentence suggestion, and four arXiv papers via Server-Sent Events. JOT Collab also stores every insight in VEKTOR’s memory graph, enabling cross-session recall so that a user’s thinking compounds across writing sessions.

read8 min publishedMay 31, 2026

There’s a moment every technical writer knows. You’re deep in a paragraph about memory migration frameworks or AI transparency, and you realize you’ve been trying to write, but your ideas need further refining.

You need a kickstart to find the right direction, and you need it quickly before the moment lapses.

No one’s pushing back on your assumptions. No one’s telling you the paper that directly contradicts your third point or provides you with insights outside of your current thoughts.

That’s the gap we decided to close. Over one sprint, we built JOT Collab, a live AI research collaborator embedded directly into the writing interface of VEKTOR Memory’s note editor.

Here’s what we built, and some of the challenges we faced.

Why Not Just Use Notion, Obsidian, or ChatGPT?

This is the obvious question. Here’s the honest answer:

Notion and Obsidian are excellent organisers. They store your notes, link your ideas, and keep your writing structured. But they are passive. They don’t read what you’re writing and say “you’re missing something.” They don’t surface the academic paper that directly challenges your third paragraph. They wait for you to ask.

ChatGPT and Claude are powerful, but they require you to context-switch. You copy your draft, open a new tab, paste it in, ask a question, get an answer, switch back, wait, collate the data, etc.

Every cycle breaks your flow. And they have no memory of what you wrote last week, or what insights you’ve already had on this topic.

JOT Collab is different in three specific ways:

It fires without being asked. Four seconds after you stop typing, it reads what you wrote and surfaces an insight, a suggestion, and four relevant papers — without you leaving the editor or switching context.

It builds on your history. Every insight is stored in VEKTOR’s memory graph. Start a new writing session on the same topic and it surfaces what you noticed last time. Your thinking compounds instead of resetting.

It challenges your synthesis, not just your text. The insight prompt reads your synthesis section headings and says things like “Section 2 assumes X, but this paper from 2024 argues the opposite.” That’s a different class of feedback from grammar suggestions or general summaries.

The closest analogy is a research assistant who has read everything you’ve written, knows the relevant literature, and interrupts you at exactly the right moment, without waiting to be asked.

The Idea: A Collaborator, Not a Chatbot

The distinction matters. A chatbot waits to be asked. A collaborator reads over your shoulder and says something when it has something worth saying.

JOT Collab watches the THOUGHTS pane. When you for four seconds, it fires three things simultaneously:

An insight — one sharp observation about what you just wrote, often referencing specific sections of the synthesis pane

A suggestion — a declarative sentence you should add but haven’t

arXiv papers — four relevant academic papers that arrive via Server-Sent Events after the insight renders

The goal was sub-second time-to-insight. The reality was a two-hour debugging session.

This is being tested on Groq llama-3.3–70b-versatile, a fast mid-sized model. And best part, it is still currently free via Api and run locally.

The Architecture

The system has three layers:

Server patch (jot-collab-server-patch.js) — a drop-in Node.js route handler with six endpoints: /api/jot/stream (SSE connection), /api/jot/think (insight + arXiv), /api/jot/suggest (gap suggestions), /api/jot/deepdive (on-demand paper synthesis), /api/jot/article (Medium article builder), and /api/jot/arxiv (proxy).

UI layer (jot-collab-ui.js) — 1,000 lines of vanilla JS that injects a collab panel into the synthesis pane, manages SSE connection lifecycle, handles session state (insight accumulation, paper caching, cross-session recall), and wires all the UI actions.

Card actions (jot-card-actions.js) — selection toolbar and per-card footer buttons (copy, fix, expand, simplify, summarise, flashcards, → jot) for the DESK chat view.

The insight prompt took fifteen iterations. The final version sends: your text, the synthesis section headings, and the last two insights you’ve already seen — so it never repeats the same angle twice.

What Broke, and Why

Press enter or click to view image in full size

The arXiv Race Condition

The hardest problem wasn’t the AI calls. It was timing.

The insight LLM call takes ~800ms. The arXiv fetch takes 2–5 seconds. Early on I tried to wait for both before responding, which meant the user waited 5 seconds to see anything. Then I tried a 1.5-second timeout that would respond with whatever papers had arrived — which meant 0 papers, always.

The fix was obvious in retrospect: decouple completely. Send the insight immediately. Push papers via SSE when they arrive. The UI’s SSE handler updates only the papers section without wiping the insight. The user sees the insight in under a second, then papers appear a few seconds later.

The secondary problem: arXiv returns zero results for non-academic vocabulary. “Cyberattacks” and “intentional design flaws” aren’t in arXiv’s index. The solution was a four-level progressive fallback:

LLM-translated academic query (e.g. “adversarial ML security backdoor attacks”) + category filter

Same query without category filter

Key nouns from the text + broad category

artificial intelligence machine learning as last resort

Something always loads.

The Suggestion Quality Problem

Getting an LLM to suggest intellectual gaps, not grammar fixes, this turned out to be the hardest engineering problem of the sprint.

Every attempt returned "which include → namely" or "are emphasizing → emphasize" regardless of how firmly the prompt said "DO NOT fix grammar." The model pattern-matches to "editor" and defaults to copy editing.

Two things fixed it:

First, server-side rejection of any suggestion with kind: "replace". If the model sends a word substitution, the server drops it silently and returns null. The UI shows nothing rather than showing something useless.

Second, few-shot examples with explicit NO labels:

GOOD: {"kind":"insert","content":"Titanium alloys achieve comparable durability while enabling thinner, more adaptive structures than traditional steel."}

BAD: {"kind":"replace","quote":"are emphasizing","content":"emphasize"} — NO, this is grammar

Models follow examples far more reliably than abstract instructions.

The Duplicate Suggestion Problem

Suggestions were appearing twice. The server broadcasts via SSE and also returns via the HTTP respons, two paths both calling addSuggestionToPanel. The deduplication check by ID should have caught it, but both arrived within 50ms of each other, before either had set the _bound flag.

Fix: disable SSE suggestion rendering entirely. Suggestions come via the HTTP parallel call only. One path, no race.

The Session Panel

Once the collab system worked, I added a session panel that sits below the collab area throughout your writing session:

⊕ Save to notes: Captures your thoughts, synthesis sections, the last three insights, and all papers seen this session as a structured VEKTOR memory note. Also saves the last insight with a [JOT-INSIGHT] tag so cross-session recall can surface it next time you write about the same topic.

↓ Export .md: Downloads a complete markdown file with APA citations at the bottom, ready to paste into a Medium draft.

✦ Build article: Sthis ends your notes, synthesis, insights, and paper references to the LLM with an explicit 8-section Medium template (hook → introduction → core concept → key insight → evidence → implications → counterarguments → conclusion). The result loads directly into the THOUGHTS pane where you can edit it.

The Cross-Session Memory

The most underrated feature: on the first insight of a new writing session, JOT Collab queries VEKTOR’s memory graph for past [JOT-INSIGHT] memories on the same topic. If you wrote about LLM memory three weeks ago and had an insight about episodic vs associative retrieval, it surfaces that in a subtle "from past sessions" section.

Writing isn’t isolated sessions. Ideas compound. The infrastructure for that compounding already existed in VEKTOR — this just exposed it at the right moment.

Where This Is Going

The next version should cross-talk more tightly between the collab panel and the synthesis sections. Right now the insight references synthesis headings by name (“Section 2 assumes X”). The next step is making suggestions aware of which specific claim in the synthesis they’re challenging, not just the section label.

The article builder produces decent first drafts. It won’t replace editing. But it compresses the gap between “I have notes” and “I have a structure I can work with” from two hours to fifteen seconds.

Releasing soon v1.6.1

JOT Collab ships as part of VEKTOR Slipstream v1.6.1. The three files — jot-collab-server-patch.js, jot-collab-ui.js, jot-card-actions.js — drop into any VEKTOR installation. Full setup at vektormemory.com.

The writing tool you use should make you think harder and transmit ideas much faster.

Vektor Memory Refer a Friend Promo — 50% Off First Month for Both of You

We just launched a referral program. If you love VEKTOR, share it with a friend, and you both get 50% off your first month:

https://vektormemory.com/product How It Works:

Step 1 — Share your referral link: REFER50

Step 2 — Your friend checks out

The discount code: REFER50 is entered at checkout. They get 50% off their first month automatically, and you do too — no coupon hunting required

June 2026 Promo (27th of May — Ends 30th of June)

AI, Agent Memory, LLM, Vector Database, Note Taking Tools, Research, Arxiv

AI

Generative Ai Tools

Notetaking

Llm Applications

Llm Agent

── more in #ai-tools 4 stories · sorted by recency
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/we-built-a-real-time…] indexed:0 read:8min 2026-05-31 ·