Groundwork

Groundwork

A knowledge graph and a Claude agent. Built for myself.

A knowledge graph and a Claude agent with full read/write access. Built it for myself.

Two tables: nodes and edges. Properties are freeform JSON. No rigid schemas, no app-specific tables.

Everything is a node. Beliefs, people, feed items, signals, projects, the page you're reading now.

The agent sits on top of the graph. Skills are markdown files. One for ingesting a profile, one for surfacing what I read, one for drafting content, one for working through a thesis. A few hundred lines each. The agent picks which one to use.

One agent, many skills.

What I use it for

  • Brainstorming. I dump something I'm chewing on. The agent expands it, finds what already connects in the graph, and lets me follow threads.

    One node, threads branching out.

  • Loading my own data. What matters to me ends up as a node. Beliefs, values, what energises me, what drains me, people I want to keep close, things I've read.

  • A personalised feed. Hacker News, RSS, a handful of other sources. Pulled in, scored against the graph, ranked. What I scroll on my phone is shaped by what I actually care about.

    Raw feed scored by the graph, ranked.

  • Writing and the website. Every page on qni.dk, including this one, is a node. I draft, edit and publish through the agent.

    Draft to published page.

  • Background agents. Cron-scheduled runs that work while I'm away. Pulling the feed. Ranking it. Cleaning out what's gone stale. Pre-drafting things I'll come back to.

    Agents firing on a schedule.

  • Idea validation. When I want to dig into a specific idea, I have skills for research and outreach. One thing the graph is useful for, not the point of it.

What is public, what is not

Groundwork. Chat on the left, graph on the right.

What you see on qni.dk is a few dozen nodes. This page, the blog, projects, notes. The graph itself is around 600 nodes and 600 edges. Drafts, raw research, journal entries, signals from things I read, contacts, transcripts. They sit in the same database, connected to the same nodes. Publishing is flipping a status.

Still early. The architecture is deliberately boring. Postgres on Neon, a Hono worker on Cloudflare, the Claude Agent SDK, MCP tools for graph access.

Back to projects