KNOWLEDGE HUB · PERSONAL KNOWLEDGE OS

Designing a personal AI that reads hundreds of sources a week, so I don't have to.

New work in AI outpaces anyone's reading speed. Knowledge Hub is a personal knowledge OS. I built it solo, put it in production on day two, and have run it there ever since.

A capture pipeline ingests 100 or more sources in a quiet week, with peaks near 500, into a corpus that stood at 4,339 in late July. A chat interface answers from that corpus and cites the saved source behind every claim.

I designed, researched, and built every layer, and the trust decisions below are mine end to end.

The Brief page for Monday, July 27: a Today's digest card counting 22 links across Agentic Coding, Business, Design, Game Design and Research, each topic with its link count, top source and score. Below it, four drafts await approval with their own scores. The sidebar lists Brief, Insights, Agents, Pipeline, Inbox, Knowledge, Gallery, Curated, Analytics, Drafts, Optimize and Ask AI.
ROLE:
Design, research & engineeringsolo
TIMEFRAME:
Deployed in week one4½ months shipping
SYSTEM:
RAG + 12 agentsevery answer cited
STATUS:
Live, single-user by design (as of July 2026)

The field moves faster than reading speed.

In a quiet week, 100 or more relevant sources arrive. The spring peak came close to 500. Nobody reads a meaningful fraction of that, and skimming loses the part that matters most: the connections and contradictions between sources, and the topics nobody has covered yet.

Capture tools do not fix this. They make piles, and piles rot. You cannot see what has gone stale, what contradicts what, or what is missing. My positioning depends on staying current in AI, so a rotting pile is a professional risk.

The system reads everything, so the handful I read closely is chosen rather than whatever happened to surface.

A note on method. I am the only person who can write to the system, so the evidence here comes from instrumentation rather than from users. Every number comes from the project's own dated records: commit history, migrations, eval reports, and the product's analytics, shown as captured.

The Analytics page: stat strip reading total links 4,339, extraction success 93 percent, this week 101; an Ingestion Pace bar chart of links saved per week for the last twelve weeks, peaking near five hundred in late May; Topic Coverage with Agentic Coding at 1,937 links and Design at 1,324; and a Score Distribution by priority bucket.
The system's own telemetry: 4,339 sources, 93% extraction success, and twelve weeks of real intake. Deep reading covers a sliver of any of these bars.

It started as a Telegram bot that saved links.

First commit on February 23, in production on Railway by day two. Send it a URL and it saves instantly, then a background pipeline extracts, summarizes, scores, and embeds the source before messaging back the graded save.

Ingestion turned out to be the easy part, solved in the first week. The trust, agents, retrieval, and branching work in this study is what the next four months built on top of it. The capture layer is still that same bot.

Piles rot, capture compounds// PILES ROT — CAPTURE COMPOUNDSTHE BOOKMARKS GRAVEYARDSAVED 2 WEEKS AGOSAVED 3 MONTHS AGOSAVED 7 MONTHS AGOSAVED 9 MONTHS AGOSAVED 14 MONTHS AGOCAPTURE, NOWhttps://arxiv.org/...IN SECONDSSaved ✓ — processing...MOMENTS LATER, THE PIPELINE REPORTS BACK:✓ AGENT EVALS — A FIELD GUIDEAI & AGENTS · AGENTIC CODING⭐ 0.8 — SUMMARIZED + EMBEDDED// MIRRORS THE BOT'S REAL TWO-STEP REPLY — ACK, THEN THE GRADED SAVE
Telegram is the main ingest pipeline: the bot must acknowledge the link, then return the status to the user. This lets the user see a quick score and classification and catch errors early.

Every source carries a priority score you can interrogate.

Each source row shows one value score from 0 to 100. It blends the model's priority rating with novelty against its own Space and the source's rank within its topic. The written reason sits one hover away, in the interface where you read rather than in a log.

A failed extraction is never dropped. The row saves and flags itself, with recovery one click away in the app or a /retry from Telegram.

The Knowledge table with a row's score tooltip open, reading: solid strategic insight on design practice shift with AI, clear framing of new deliverable standards, but primarily conceptual argument rather than craft demonstration. Value score 69, priority 72 described as Claude's quality rating, novelty 29 described as fresh versus corpus. Around it, rows carry source chips, category chips, score dots, and a REVIEW badge on a flagged row.
The real table, hover open: the model's written reason, the priority it set, novelty against the Space. Trust lives on the row because that's where reading happens, not a dashboard away.

A gap-analysis agent reads the corpus and reports what is missing.

Every source carries a decay state of active, aging, or stale. Aging trips automatically as newer saves supersede older ones. Stale requires a model review that docks the score.

The gap-analysis agent runs on demand, reading the whole corpus and reporting where coverage is thin against what the scoring says matters. Its first run, 5 weeks in at 627 sources, caught a blind spot. Five security subtopics were scoring at the corpus maximum with 8 saved links between them. The scoring had flagged the area as important and my reading had not kept up.

When a gap is confirmed, the research agent is the only sanctioned path to the open internet. It proposes topics, runs capped searches, sends every new source through the same scored pipeline, and supports per-run rollback. Against that security gap it pulled 45 sources.

A gap signal detail in Insights, 93 percent confidence, June 24, 2026: Agentic Coding, Agent Authorization and Payment Systems. The corpus has eight-plus thin subtopics covering agent payment authorization, each with only one link but priority scores of 0.82 to 0.92. Below: why it matters, the top link in the area, two suggested searches, and buttons reading Ask AI about this gap, Research this, and Draft about this.
Still catching them: eight thin subtopics the pipeline scored 0.82–0.92, one link each, with the three actions that close the loop: ask, research, draft.
The Research Topics panel open over a chat: a sources toggle set to diverse, a Suggest-from-conversation button, five suggested topics about graph engineering each with its own Research button, and a Research-all-5 action, above the composer and the answers-are-generated-from-your-saved-links footer.
When the corpus can't cover a question, the same chat fixes it: the research panel suggests topics from the conversation, runs capped searches, and reports back into the thread.

Twelve specialist agents compose into behavior none of them has alone.

The corpus feeds 12 specialist agents, including connection discovery, contradiction detection, gap analysis, synthesis, research, and a reading-queue prioritizer that never calls a model at all.

Each one is simple in isolation. What makes them useful is composition. Agents write signals, which are machine observations reviewed like proposals and never applied automatically. By mid-April, at about 1,000 sources, they had written about 960 signals, roughly one per source.

All 12 started on weekly crons. At about $8 a week in model spend for a single user, I turned scheduling off. Every agent now runs on demand, and the only cron left is a 10-cent digest.

High-level view of the whole system: Telegram URLs and web or gallery adds pass a security gate into extract (a tool registry with 11-plus tools), summarize and score (Haiku plus per-topic rubrics), and embed (Voyage plus novelty); failures are saved, retried, and never dropped. Everything lands in the personal knowledge corpus, over 4,250 sources measured 7/27 and growing by about 300 per week, on Supabase and pgvector. Twelve on-demand agents (connections, contradictions, gaps, synthesis) write signals back and can trigger research runs on Exa, and it surfaces in the AI chat, every answer sourced and cited from the corpus.
One URL in, grounded answers out: capture, pipeline, corpus, agents, surfaces. The research loop is the only path to the open web.

Chat answers only from the corpus, and says when the corpus falls short.

The daily interface is a conversation with the corpus.

A question gets embedded, and the system over-fetches 20 to 40 candidates from the vector store, since recall is cheap and the reranker judges relevance better than raw distance does. The top 10 go to the model under one standing rule. Every claim cites a named saved source, and when the corpus does not cover a question, the model says so.

That architecture was not there on day one. Chat shipped in week 4 as plain cosine top-k, and the over-fetch and rerank came three months later, after daily use showed a single similarity score could not carry retrieval alone.

Nothing in a conversation is ever overwritten. The first version truncated the thread on edit, and a reload could interleave stale and new messages. A conversation graph replaced it, with sibling branches, a version pager, and branch-from-here on any message. An outline rail with AI topic labels, bookmarks, and an auto-sort that only proposes (preview, approve, undo) keeps 100-message chats navigable.

Flow of how the Ask AI chat sources and answers user questions: a question is embedded, the system over-fetches 20 to 40 sources from the corpus, re-ranks them, and sends the top 10 to the model, where every claim is sourced, ending in a cited answer. The corpus band beneath notes every source embedded and scored, with gap analysis and decay review helping rank results.
Over-fetch wide, rerank hard, ground every claim in a named source, or say the corpus doesn't cover it.
Screen recording at double speed: a question is typed into the chat home over the corpus folders, the composer sends, a Searching-your-library state appears, and a structured answer streams in: themes, bolded source names, Referenced Resources cards with match percentages, and follow-up suggestion chips.
Ask, search the library, and a grounded answer streams in with its sources attached: the architecture above, at work.
A real answer opening with One Critical Gap ('your saved links do not cover how to handle sellers who do not accept USDC or crypto payments'), above a Resources list and six Referenced Resources cards with match percentages. At the bottom, a bar reads: two branches converge on 3 shared sources, with a Synthesize button.
Nothing is overwritten, and when two branches converge on the same three sources, the system offers one grounded synthesis. The answer above does the honest thing too: it names what the saved links don't cover.

Extractor routing lives in a database table, so tools swap without a deploy.

Extraction is adversarial. Platforms wall off content, public APIs add challenge screens, and managed builders drop system dependencies without warning. When a tool fails, the save still lands, flagged and incomplete, and every platform's extractor chain ends at the same universal fallback.

That routing table is why each swap was a single row change. Over five months a YouTube bot wall, a Turnstile challenge on the public cobalt API, and two managed builders dropping yt-dlp and ffmpeg from the deploy each forced a replacement. Almost none of the pipeline's tools are the ones it started with, and every tool call is logged with its duration and cost.

The stack: four dated swaps, one invariant// THE STACK — BUILT FOR SWAPPINGA FAILED TOOL DEGRADES A SAVE — IT NEVER DROPS ONEROUTING LIVES IN A DATABASE TABLE · EVERY CHAIN ENDS AT JINA.AIPUBLIC COBALT APIAPR 22SELF-HOSTED @ FLY.IOTHE PUBLIC API GREW A TURNSTILE WALLCOBALT — YOUTUBE PATHAPR 27YT-DLP + DENO SOLVERYOUTUBE'S BOT WALL CLOSED ON CLOUD IPSNIXPACKS / RAILPACKAPR 27RAW DOCKERFILEBUILDERS DROPPED YT-DLP + FFMPEG, SILENTLYPLAIN COSINE TOP-KJUN 20VOYAGE RERANK-2.5ONE NUMBER WAS DOING THREE JOBSTHE REST OF THE REGISTRY — TELEGRAM · SAFE BROWSING · FXTWITTER · COSMOS · LINKEDIN OGDESIGN PORTFOLIOS · SUPADATA → DEEPGRAM · HAIKU + SONNET · VOYAGE · PGVECTOR · SUPABASE · RAILWAY · EXA · OBSIDIAN// TOOLS SWAP BY DATABASE ROW — HOT-RELOADED, NO REDEPLOY
Four dated swaps under one invariant. The rest of the registry rides in the band.

Two failures in June, both caught by measurement rather than by noticing.

An audit caught a schema change that had silently broken chat retrieval. For a stretch of time, every question drew zero context from the corpus. The grounding rule is why nobody got a wrong answer: with no sources to cite, the system said the corpus did not cover the question instead of improvising.

The same month, measurement caught the scorer burying good design work. A study I would rate a 9 sat at 0.30 on the 0-to-1 value scale, and only 5% of design links ever reached HIGH against a 20% target. The fix started with an eval harness rather than a prompt edit. A 50-link gold set, then a rubric rewrite, then re-measurement. Design links now clear 40%, and the floor moved up with the ceiling.

Both failures ran for weeks without being visible in normal use. The instrumentation is what surfaced them.

Measure first, then fix: the scoring recalibration// MEASURE FIRST, THEN FIXHIGH-WORTH DESIGN SAVES ACTUALLY SCORED ‘HIGH’GOLD SET N=50, INDEPENDENT LABELER — BUILT BEFORE THE FIXBEFORE — ONE GLOBAL RUBRIC~8%AFTER — CRAFT-AWARE RUBRIC (MIGRATION 068)~63%BASELINE, 987 DESIGN LINKS: 5.0% REACHED HIGH VS A 20% TARGET — 95% CAPPED ≤0.74// FROM THE REPO'S OWN EVAL DOCS — JUN 17–18, 2026
Recall of high-worth design work on the 50-link gold set, before and after the rubric rewrite: about 8% to about 63%. The 5% to 40% in the copy is the share of all design links reaching HIGH, the same fix measured two ways.

In production since day two, still compounding five months later.

Knowledge Hub is live: 865 commits and 249 merged PRs between February 23 and early July, a corpus measured at 4,339 sources in late July and still growing, cited chat on top, and 12 agents on call.

What changed for me is the part I did not build a metric for. Before, I bookmarked things and forgot them. Now I review far more than I did, I can retrieve something weeks after saving it, and the chat is where I start when I take on a new project or an unfamiliar topic. The system reads everything so the things I read closely are chosen rather than whatever surfaced that day.

There is a guest view. Friends, coworkers, and anyone else can read the corpus and browse example chats, without writing to it or running agents. Designing a read-only surface for people who did not build the system was its own problem, and it is the reason the interface had to make sense to someone other than me.

Every AI product I design follows the same rule: ground the answer or say you cannot. Knowledge Hub is where I hold myself to it, on a system where I am the only person it can fail.

Stat card: sources added and scored, 4,339.Stat card: average new sources per week, about 300.

// LINKS SAVED AND ADDED TO THE CORPUS AS OF 7/27 + AVG NUMBER OF NEW SOURCES PER WEEK

Corpus growth chart from February to late July: a curve from zero at the first commit through 627 at the gap agent's first run on March 30, about 1,000 sources and 960 signals on April 14, 3,241 on June 16, to 4,339 measured July 27, with milestone flags for the capture bot deploying February 23, chat with RAG on March 17, agents going manual May 7, and rerank plus branching June 20 to 23. A footer reads: every point measured and dated, repo docs through June, the product's own analytics for July 27.

UP NEXT:

Platform One AI Assistant & Chat Bot

Designing an AI assistant projected to cut support tickets by 40%

Platform One website with the P1 Assistant chat panel open, offering answers and quick links for account questions
01 resume (PDF, opens in new tab)

Product Designer engineering intuitive UX for complex DoD, GovTech, and AI systems.

02 X.com (opens in new tab)

Follow @andrewmarksart for design, vibe coding, the latest AI news, and things I think are cool or interesting.

03 Linked in (opens in new tab)

Connect with me on LinkedIn /in/andrewmarksart/ as I build projects in public on AI agents & the future of UX.

04 GitHub (opens in new tab)

View my public work on GitHub. DM for access to select private AI and UX repositories.

05 About

Focused on how humans and AI work together. From secure DoD systems to rapid AI prototyping, I use my background to turn complex data into UX research and design that lets AI systems scale.

Reach me directly: