ResearchIndex – The Spatial Knowledge Web for Research Teams
Inspiration
I'm a researcher working on a design thesis: what should Human‑AI Interaction become? Over the past few months I collected 17 research papers on topics like intent communication, multi‑agent orchestration, generative interfaces, and trust. The real problem isn't finding papers; it's remembering the connections between them.
Every day my team's insights live inside Slack threads. But Slack treats conversations as a timeline — you scroll, you forget, you re‑discover the same conclusion three months later. An idea about "intent tagging" in one channel should be linked to "friction‑led intelligence" in another, but unless someone explicitly types that cross‑reference, the connection stays buried.
I built ResearchIndex because research labs need a permanent, spatial memory of their conversations. Not a search bar that returns chat logs, but a knowledge graph that reveals the hidden structure of a team's thinking.
What it does
ResearchIndex is a Slack agent that turns chaotic research discussions into a searchable, graph‑connected knowledge web. Every message posted in a public channel is automatically indexed in real time. Key concepts are extracted, embedded into a vector database, and linked in a knowledge graph.
Core features
- Semantic search (
/ask) – Ask natural‑language questions and get ranked results from across channels, complete with a connected‑concept map and clickable deep links back to the original messages. - Concept exploration (
/connect) – Pick any concept and see which other ideas co‑occur with it, and in which channels. - Weekly snapshot (
/snapshot) – A digest of your lab's evolving knowledge: total entities, most connected concepts, and the top cross‑channel discovery. - Real‑time indexing – Every new public message is embedded and added to the graph instantly via Slack's Events API.
- Automatic entity extraction – A local AI model extracts key technical terms from every message, building a rich graph of your team's shared vocabulary.
- Cross‑disciplinary synthesis – Because concepts are linked via co‑occurrence, the agent reveals hidden bridges between seemingly unrelated discussions — the heart of innovation.
How we built it
The entire stack runs on a laptop with no external API costs for AI. All components are Python.
- Slack Agent – Bolt for Python, Socket Mode, slash commands, and event subscriptions (Real‑Time Search API). The bot listens for every public message and indexes them instantly.
- MCP Server – FastMCP framework. Exposes four tools:
index_message,search_knowledge,connect_concept,snapshot_knowledge. This is the brain that connects Slack to the AI and databases. - AI Models – Ollama serving Gemma 2B for entity extraction and nomic‑embed‑text for vector embeddings. Both run locally, no cloud GPU needed.
- Vector Database – Pinecone stores embedded message chunks for fast semantic search.
- Graph Database – Neo4j AuraDB models entities and their relationships (
MENTIONS,CO_OCCURS_WITH), enabling traversal and cross‑channel discovery. - Demo Data – Seeded 60+ messages based on real HAI research papers, simulating a multi‑person team across six channels.
Languages & frameworks
Python, Slack Bolt SDK, FastMCP, Pinecone, Neo4j, Ollama, Gemma 2B, nomic‑embed‑text, Slack Events API, Slack Slash Commands, Socket Mode.
Challenges we ran into
The biggest challenge was making the Slack agent talk to the MCP server reliably. The initial Deno‑based Slack Agent template had endless module resolution issues and version conflicts. After hours of debugging, I switched to Python's Bolt framework, which gave full control over the MCP integration.
Another challenge was real‑time indexing. Slack posts custom‑username messages as message_changed events, not plain message events. My initial handler was looking for text at the top level and ignoring the nested event.message.text. Once I understood the payload structure, the fix was straightforward.
The MCP client also needed careful session management. Using a fresh Client instance per call prevented "nesting counter" errors that appeared under concurrent events.
Finally, running AI models locally on a laptop required choosing small but capable models. Gemma 2B and nomic‑embed‑text gave the right balance between speed and accuracy, making the system usable without a GPU.
Accomplishments that we're proud of
- Real cross‑synthesis – The agent can answer a question like "spatial canvas with intent communication" and pull results from five different channels, showing a graph of how "intent tagging," "audit trail," and "friction‑led intelligence" are connected. That's not keyword search; it's reasoning over a knowledge web.
- Fully local AI – No API keys for embeddings or entity extraction. Everything runs on a laptop with Ollama, making the tool accessible to any research lab regardless of budget.
- Snapshot command – The weekly digest is a simple feature that demonstrates the value of persistent knowledge. A team can literally watch their collective intelligence grow.
- Clean demo data – The seeded workspace is based on real papers and genuine HAI concepts, so the output looks like an actual research team's discussions, not a toy example.
What we learned
- The MCP protocol is powerful, but the HTTP transport requires careful client handling. Using the official
fastmcp.Clientlibrary with a fresh instance per call resolved most connection issues. - Bolt's Socket Mode is robust once the app‑level token is correctly configured. Most connection failures were due to token mismatches, not code bugs.
- Combining vector search with graph traversal is more than the sum of its parts. Semantic search finds relevant messages; graph traversal reveals how they're related.
- Entity extraction with a small local model is practical if you keep prompts short and outputs parseable. It won't be perfect, but it's good enough to build a dense graph.
What's next for ResearchIndex
- Slack AI integration – Use Slack's built‑in summarization to generate "knowledge cards" for long threads, stored as nodes in the graph.
- Multi‑modal canvas – Expand beyond text to a visual workspace where concepts from chats can be arranged, connected, and annotated, feeding back into the graph.
- Federated labs – Allow multiple Slack workspaces to share public knowledge graphs, enabling cross‑institutional research discovery.
- Proactive suggestions – When the agent detects a new message that strongly relates to a concept from weeks ago, it could nudge the team: "This connects to something you discussed in #ethics‑and‑trust."
- Long‑term memory for AI agents – The indexed knowledge graph could serve as a memory backbone for future autonomous research assistants, keeping them grounded in the team's actual reasoning.
Impact
Research labs in low‑resource settings, open‑science communities, and small university teams lose hundreds of hours re‑discovering knowledge that already exists in their Slack history. A postdoc leaves and years of tacit reasoning vanish. Students re‑ask questions answered six months ago. This is a knowledge‑equity problem: only well‑funded R&D centres can afford institutional‑memory tools.
ResearchIndex fixes this. It turns Slack from a write‑only timeline into a permanent, spatial knowledge web. Every message is indexed, every concept is linked, and every insight is immediately recoverable.
Measurable impact (from our test workspace seeded with 17 HAI papers):
- 69 unique research concepts extracted and linked across 6 channels
- 106 co‑occurrence relationships revealing cross‑disciplinary connections
- Semantic search answers a complex question like "spatial canvas with intent communication" by pulling relevant messages from 5 different channels and showing a connected‑concept map
- Real‑time indexing makes a newly posted message searchable within seconds
Scaled impact: In a 10‑person lab, ResearchIndex could recover over 200 hours per year otherwise lost to searching past discussions. New members onboard faster because they can query the lab's intellectual history. Interdisciplinary discoveries become systematic, not accidental.
SDGs addressed:
- SDG 9 – Innovation & Infrastructure: democratising access to research knowledge management
- SDG 4 – Quality Education: making institutional memory accessible to students and early‑career researchers
Real‑Time Test Data: Before & After
Before ResearchIndex
A researcher asks a cross‑disciplinary question: "How does intent communication relate to friction‑led intelligence?"
Without ResearchIndex, this means:
- Scrolling through
#intent-communicationchannel manually - Remembering that
#mental-models-trustalso discussed friction - Searching message history with keyword matching (often returns irrelevant results)
- No overview of how concepts are connected across channels
The result: hours wasted, missed connections, repeated discussions.
After ResearchIndex
The same researcher types /ask intent communication and friction-led intelligence.
The agent instantly returns:
- Top 5 semantic matches with clickable links back to the original messages
- Connected concepts map showing that Intent Tagging, Audit Trail, Friction‑Led Intelligence, Proactive Agents, and Dynamic Trust Slider all co‑occur across channels
- Key relationships like
Intent Tagging ↔ Friction‑Led Intelligence · Audit Trail ↔ Multi‑Agent Orchestration
The researcher can also run /connect intent tagging to explore its neighbours in the knowledge graph, or /snapshot to see how the knowledge base has grown this week.
Live proof of real‑time indexing:
- A new message is posted in
#generative-interfaces: "We need a confidence indicator for agent decisions." - Within seconds,
/ask confidence indicatorreturns that message as a top result, showing it is already embedded and linked to existing concepts.
What It Retrieves
For a single query like /ask spatial canvas with intent communication, the agent retrieves:
- Semantic matches: Messages from
#generative-interfaces,#intent-communication,#cross-cutting,#design-tools, and#multi-agent-orchestration, ranked by relevance score. - Connected concepts (from Neo4j): Intent Tagging, Intent‑Based Outcome Specification, Visual Tokens, Audit Trail, Reflection Loops, Friction‑Led Intelligence, Spatial Canvas, Generative Widgets, Dynamic Trust Slider.
- Key relationships: A visual map showing which concepts co‑occur in the same messages, e.g.
Visual Tokens ↔ Spatial Canvas · Intent Tagging ↔ Friction‑Led Intelligence.
For /connect intent tagging:
- All entities that co‑occur with Intent Tagging in any message, with weights.
- The channels where Intent Tagging is mentioned (revealing cross‑disciplinary reach).
For /snapshot:
- Total entities in the graph (69 in our test).
- Total relationships (106).
- Top 3 most connected concepts (e.g., Subagents with 6 links).
- Top cross‑channel concept (e.g., an entity mentioned in 3 different channels).
Architecture Diagram

The MCP server orchestrates AI models, vector storage, and graph database. Bolt agent handles Slack communication via Socket Mode and the Events API.
Log in or sign up for Devpost to join the conversation.