GraphMind
Turns unstructured docs into queryable knowledge graphs.
GraphMind is a full-stack knowledge graph project that converts unstructured content such as documents, notes, articles, and URLs into connected, queryable intelligence. Instead of only keyword matching, it extracts entities and relationships so users can explore connections like who appears across documents and which organizations they are linked to.
Problem it solves
Manual research across scattered files does not scale and usually forces repeated reading of the same material. GraphMind automates structured extraction and gives teams relationship-first queries, making research synthesis, due diligence, and competitive intelligence faster and more reliable.
Current status
GraphMind was originally built as a VM-hosted Docker Compose backend (FastAPI, Celery workers, RabbitMQ, Redis, Neo4j) with a Next.js frontend. While Oracle, AWS, and GCP all have free tiers, each still requires a card on file at signup for abuse prevention. Since I wanted a path that avoids entering payment details entirely while still showcasing the product, I rebuilt the deployment shape into a no-card demo architecture.
System architecture
Original build (VM + Docker Compose)
- Frontend: Next.js + TypeScript web app for ingesting content and exploring graph results.
- API layer: FastAPI service for ingest endpoints, graph reads, and job status responses.
- Async processing: Celery workers run long extraction jobs off-request.
- Queue + state: RabbitMQ handled task dispatch and Redis stored task/job status.
- Graph storage: Neo4j persisted entities and relationships for traversal queries.
- Infra: Single cloud VM running Docker Compose services for API, workers, queue, cache, and graph DB.
No-card demo build (current showcase)
- Frontend hosting: Vercel hosts the Next.js app.
- Graph database: Neo4j AuraDB Free provides managed graph storage without requiring a card.
- Cache/state: Upstash Redis Free stores short-lived state for async demo flows.
- Background flow: Workflow-style orchestration replaces always-on RabbitMQ/Celery daemons for demo execution.
- LLM extraction: OpenAI still performs entity/relationship extraction from chunked unstructured input.
- Goal: Preserve the product narrative and technical depth while avoiding paid infrastructure wiring.
Technology & service breakdown
- Next.js, React, TypeScript, Tailwind CSS: UI, routing, ingestion forms, and graph exploration screens.
- react-force-graph-2d: Interactive force-directed knowledge graph users can explore visually.
- FastAPI + Uvicorn (Python): Ingest requests, status polling, and graph query endpoints.
- OpenAI (function calling): Converts raw text chunks into structured entities and relationship triples.
- Neo4j + APOC: Primary graph database for storing and querying linked entities.
- Celery, RabbitMQ, Redis, Docker Compose (original): Async workers, queue, job-state cache, one-stack deploy.
- Vercel, Neo4j AuraDB Free, Upstash Redis Free (current demo): Stateless frontend + managed data services.
Why a graph over basic RAG/search
RAG and search tools are excellent for retrieving relevant chunks, but they still treat documents as mostly isolated units. GraphMind models the relationships between entities and facts, so insights come from the connections across sources, not only similarity scores within individual chunks.