HackerNews sample
The simplest end-to-end Curiosity Workspace app, indexing live data from HackerNews. Good as a 30-minute warm-up — the source has a public API, no authentication, and a small graph.
This page is both the blueprint and the walkthrough — schema, connector shape, search choices, and where to clone. For an end-to-end app on a richer domain (with ACLs, AI tools, embeddings), follow the Technical Support tutorial instead.
The graph
flowchart LR
User -->|Authored| Story
User -->|Authored| Comment
Story -->|HasComment| Comment
Comment -->|HasComment| Comment
Story -->|OfType| SubmissionType
| Node | Key | Properties |
|---|---|---|
Story |
id |
title, url, score, time |
Comment |
id |
text, time |
User |
id |
karma, created |
SubmissionType |
name |
"AskHN", "ShowHN", "Job", etc. |
Retrieval
- Text search over
Story.titleandComment.text. - Hybrid search on
Comment.textfor "find similar discussions". - Recency sort for browsing.
- Facets on
SubmissionType, storyscoreranges, andUser.karmatiers.
Connector
A small C# console app that:
- Reads the
/v0/topstoriesand/v0/newstoriesfeeds. - Hydrates each story plus its descendant comments.
- Upserts using HackerNews item IDs as stable keys.
- Commits in batches of 200.
Source: curiosity-ai/hn.
What this demonstrates
- A complete connector in ~150 lines of C#.
- Recursive comment threads modeled as
HasCommentedges. - Live data that updates continuously — good for testing incremental sync patterns.
- A Tesserae front-end with deep-linking to stories and user pages.
Where to clone
git clone https://github.com/curiosity-ai/hn
What it does not demonstrate
- ACL ingestion (HackerNews is public).
- AI tools (the data is interesting but the use case for chat is limited).
- Long-text embeddings (most stories are short titles plus a URL).
For a richer sample with all of the above, see Technical support.