1. The shelf model
Everything in Aster sits in three levels, and there is deliberately no fourth:
- SubjectAI
- ChannelYouTube
- CreatorAndrej Karpathy
- Their pageyoutube.com/@AndrejKarpathy
Three levels on the shelf, and a fourth step that leaves it. The dashed cell is not a screen in Aster — it is the creator's own site, opening in a new tab.
- A subject is a field you are learning — AI, biology, economics, design. On the home screen each one is a planet.
- A channel is a platform inside that subject. Every new subject is seeded with eleven of them: YouTube, Bilibili, X, Rednote, WeChat, Substack, LinkedIn, Podcast, GitHub, Official Website and Other. You can add your own.
- A creator is one account on one platform. Clicking the row opens their page in a new tab.
Aster never stores the content itself — no saved articles, no read-it-later queue, no clipped highlights. It stores who is worth reading and tells you when they published. The step after a creator row is always the creator's own site.
The same person usually appears more than once — as a YouTube channel, an X account, a newsletter. Aster keeps those as separate rows on the shelf, because they are separate sources, but merges them back into one person in the Feed and in Activity.
2. Home — your subjects
The home screen is your subjects as planets on the starfield. There are eight worlds, each available ringed or ringless, and you pick one when you create or rename a subject. It is a label, not a setting — nothing behaves differently because a subject is Azure rather than Dust.
What you can do here
- Drag a planet to reposition it. The layout is yours and is saved.
- Right-click (long-press on touch) for rename, change planet, resize, delete.
- Click to open the subject.
New accounts start empty. The onboarding sheet after signup asks which fields you follow and creates exactly those subjects — nothing is seeded that you did not ask for.
3. Inside a subject — the platform shelves
Opening a subject shows its channels as rows, grouped into three sections: International, Chinese, and Miscellaneous (Official Website, Other, and any channel you created yourself). The three sections are draggable — the order is saved per subject — and each one collapses.
The activity readout
The right side of every channel row is a two-line readout: the freshest last-post age in that channel, and how many of its creators published this week. A row with nothing probed keeps a calm, empty right side rather than inventing a number. When the freshest post is under 24 hours old, the age pulses.
Sub-groups
A crowded platform section can be split the same way a crowded channel can. The toolbar at the top right of the subject — + Add, Collapse all / Expand all, + New group, Select — acts on whichever platform section you are looking at. Drag a channel onto a divider to file it, or right-click → Move to group.
4. Inside a channel — the creator list
This is where the people are. Each row carries an avatar, a name, an optional note and tags, and — on platforms Aster can read — a last-posted age.
The age label
"3d ago", "2mo ago", and anything beyond a year collapses to "1yr+ ago". A creator who published in the last 24 hours gets a quiet pulsing highlight. If they published more than once in that window, the row shows density instead — "10 posts (past 24h)" — so a firehose does not read the same as a single post. Probing happens when you open the page, on demand and throttled; nothing runs in the background against an account nobody is using.
Groups
Groups are your own sections inside a channel. Rename them on the divider, drag to reorder, drag a creator onto a divider to file them, or use right-click → Move to group. Select turns the rows into a checklist so you can move a handful at once. Group headers show no creator counts, on purpose.
The star
Every row carries a five-point star. Highlighting belongs to the person, not the row: star someone on YouTube and their X and Substack accounts light up too. Highlighted people sort first inside their existing section — it is priority, never promotion. A highlighted person is never moved from "quiet" into "active", and never bypasses the rules that decide what the reading guide covers.
Fixing what Aster got wrong
Automatic recognition is good, not perfect. Edit profile opens one sheet for the name, link, note, group and tags together; Profile picture uploads your own image. Anything you type by hand is yours — Aster will not overwrite it on a later check.
5. Adding a creator
One step: paste a link. Aster fetches the display name and avatar, and files the creator where you opened + Add from — the destination subject and channel are inferred from context and shown read-only, so there is no subject/channel picker to get wrong. The only thing you choose is the group inside that channel, and leaving it Ungrouped is fine.
Avatars are stored as permanent images on Aster's own image CDN rather than hot-linked from the platform, so a row does not go blank when a platform changes its image URLs.
Which link to paste
| Platform | Paste this |
|---|---|
| YouTube | The channel URL or @handle page |
| X | The profile URL. A new X creator also gets their public bio into the note field, with t.co links expanded |
| GitHub | The user or organisation profile URL |
| The profile URL | |
| Substack | The publication homepage, its custom domain, any article link, or a substack.com/@handle profile |
| Podcasts | An Apple Podcasts or Spotify show link, or a self-hosted show's own site or feed |
| Bilibili | The space.bilibili.com page, or a b23.tv share short-link |
| Rednote | The profile link, or an xhslink.com share link from the app |
| WeChat 公众号 | Any article from the account — there is no public profile page to paste, so Aster reads the account's name, avatar and bio from the article page itself |
| Blogs and personal sites | The site's own URL |
A search-results page names no creator, so pasting one honestly shows nothing rather than guessing.
6. Feed — everything your people published
The Feed is the product's one stream, and it is a projection of what Aster has already checked, not a separate crawl. Opening it triggers the same throttled background check the shelf uses.
How it is grouped
By person, merged across platforms — so someone posting on YouTube, X and LinkedIn is one card, not three. The card shows their avatar, name, the marks of every platform they published on, an "N updates · M platforms" line and a total reading time. Their posts branch below on a thin thread, newest first: three visible, the rest folded behind "Show N more".
Andrej KarpathyYouTube · X · Substack — 4 updates · 3 platforms · ≈ 41 min
- YouTubeA lecture rebuilding a small language model from scratch LLMs≈ 27 minnewest first
- XA note on why evaluation harnesses mislead Research≈ 2 min
- SubstackAn essay on what tooling changed this year Essay≈ 12 min
- Show 1 morefolded, never filtered
Schematic, not a screenshot: one person, their accounts merged, their posts branching below with the reading guide's topic and time chips on each.
Folding is not filtering. Every post survives; it is just nested under its person. Cards are ordered by each person's newest post. Inside a GitHub card, consecutive commits fold into one line per repository, while releases, new repos, pull requests and issues stay individual lines with a kind badge.
The window and the sort
Chips pick Today / 3 days / 7 days, remembered per device, and the list shows exactly that slice. A second control orders it by Newest or A–Z. Choosing A–Z groups the page under letter headings and puts an alphabet rail in the margin — click a letter to jump, drag down it to scrub, and the letter you are reading highlights as you scroll. Chinese names file under their pinyin initial, so 木辰有点菜 sits under M. On narrow screens the rail docks to the right edge, the way an index does on a phone.
Platform chips
One chip for every platform you follow, not only the ones with posts — so a quiet platform tells you "no posts in the last N days" instead of silently disappearing. Once your shelf covers more platforms than the row can hold, the strip pages left and right with ‹ › rather than wrapping.
The reading guide
This is the layer that reads for you, and it is what Pro pays for. Every post carries:
- a one-line characterization — what kind of piece it is and what it is about, written in your interface language, never a copy of the post's own text;
- a topic chip naming its field;
- a time chip — the real video or episode length when the page publishes one (YouTube, Bilibili — no AI involved), an honest estimate otherwise, and an explicit N/A when neither can be determined. Never silence.
Annotations cover the whole 7-day window and build incrementally: a post is annotated once and carried across regenerations, so only new posts cost anything. At the ready hour you pick in Settings, the guide builds itself in the background and the Feed button's dot lights. Refresh rebuilds any time, and an unchanged shelf skips the model calls entirely. The banner sums exactly what is on screen — "N creators · M updates · about X to read it all" — and, when sources could not be reached, says so: "Couldn't reach N of M sources."
Hover preview
Hovering a post shows a small card with its cover image, headline, opening lines and source, so you can judge it without opening a tab. Covers work on every platform Aster reads, including the Chinese ones, which refuse to serve their images to other sites and are therefore fetched through Aster's own relay. The card appears only when there is genuinely something to show — a plain text post simply does not have one. It is pointer-only, so it never appears on phones.
There is no ranking and no AI filter, and there will not be one. The model describes; it never decides what you see or in what order. A post someone else would call noise may be exactly what you were waiting for — that judgment is yours.
7. Activity — who is actually alive this week
Where the Feed is the day, Activity is the week. Each person's accounts are merged into one row: posts this week, last-post age, the platforms they are on, and an AI profile — Focus (what they publish about), Strengths (what they are best at), and one honest positioning line. The profile is one batched call cached for a week per person, re-run when their recent titles change. Without a model key the page degrades to activity statistics rather than failing.
One time axis
The displayed local Monday-to-Sunday calendar week drives everything on the page — the header range, the post total, the seven-column meter, the sections and the sorting. Three sections, and the difference between the last two matters:
- Active recently — posted in the displayed week.
- Quiet lately — has a feed Aster can read, and published nothing in that week.
- No readable signal — has no public feed Aster can read at all. This is not the same as being quiet, and Aster will not pretend it is.
Controls
Two chip clusters sit above the list: All / ⭐ Favorites (which people) and, split by a hairline, Activity / A–Z (how they are sorted). Section headers freeze while their own rows are in view. A small ? above the date explains merging, the time range, the sections and the gold rows. Highlighted people keep their warm-gold row but no star here — Activity is an overview, not another editing surface.
8. Search
One box, every creator on your shelf. Results are labelled Subject · Channel and open the creator's page directly. It searches your shelf, not the web.
9. Bulk import
Reached from + Add → Import many at once, or from Settings. Three ways in:
- Paste text — a free-form list of names, handles or links. An AI parse extracts name, platform and URL.
- Screenshots — drop images of a follow list. OCR runs inside your browser; the images are never uploaded.
- CSV — a Google Takeout
subscriptions.csvis recognised deterministically, with zero AI, localized headers included. Rows land with their real channel names and canonical URLs; avatars fill in gradually through a rate-limited background pass. Other CSVs fall back to the normal text parse.
For rows that arrive as a name with no link, Aster tries to find the canonical URL. Podcasts resolve for free and deterministically through Apple's iTunes Search with a strict prefix gate, so a wrong show never attaches; other platforms go through the model plus server-side verification. Then a review stage lets you fix the subject, the per-row platform and any URL before a single bulk save. Oversized files are refused with a reason, and very long lists are truncated with an honest count — never silently.
10. Cross-platform account discovery
Add someone once and Aster looks for their other accounts. It runs only for newly added or imported creators — it is not a background sweep of your whole shelf.
The hard part is not finding candidates; it is not confusing a similarly named stranger, a developer account or a product sub-brand for the person. So Aster collects bounded first-party evidence — profile links the creator declared themselves, official-site connectors, bios — while the model's native Web Search retrieves cited candidates. Every search candidate must carry a genuine tool-result citation and a canonical URL on a supported platform. A separate judgment classifies each as same identity / related / different, and deterministic gates reject implausible name jumps, fabricated citations, contradictions, employers, projects and sub-brands. AnthropicDev stays distinct from Anthropic.
How results reach you
Never by interrupting. A creator with candidates gets a small + badge on their avatar; opening it shows a review of platform, username and URL, split into two panes: Confirmed matches (checked) and Possible matches (unchecked). Nothing is ever auto-merged. Each candidate has its own Don't remind again. Right-click → Find other accounts re-runs the check on demand, with a 10-minute per-person cooldown, and reports one of four honest outcomes: candidates, no account passed the evidence bar, the check was incomplete, or you hit the rate limit.
Cross-language accounts are handled without a web search where possible: when a creator's Rednote account carries a Chinese name sharing nothing with their English one, Aster looks it up through Rednote's own post index, where posts about the creator tag the account. Several separate posts must converge on the same account before it is even examined — and that only decides what gets looked at; confirmation still rests on the account's own first-party evidence.
11. Settings
One page, five sections, reachable from the account chip menu. The grey index down the left works as tabs — clicking an entry shows that section on its own.
| Section | What is in it |
|---|---|
| Profile | Avatar, display name, @handle, bio. The handle is your identity — 3–20 characters, letters, numbers and underscore — and is separate from the display name, which you can change freely. Bio is capped at 160 characters. |
| Your shelf | Four honest numbers about your own reading: creators followed and the people behind them, how much they published in the last 7 days (using the Feed's own window, so the figure is verifiable), your Top Voice for that week, and who you open most — the last counted on this device only and never synced. Rendered as ordinary settings rows, deliberately not a dashboard. |
| Account | Email, set or change password, sign out, and your plan — with the renewal or trial-end date on Pro. Manage opens Stripe's own billing portal. |
| Preferences | The reading guide's ready hour (its only home), hide planet names, ask before deleting, and the product-wide language control. |
| Data & about | Export the whole shelf as JSON, open bulk import, and About / Terms / Privacy. |
12. Cosmos — upcoming
Cosmos is the shared-shelves feature, and it has not shipped. It exists because of the idea underneath Aster: a great follow-list shouldn't be a privilege. When it ships you will be able to browse other people's shelves, see the diff against your own, and copy a whole follow-list in one confirmed tap — never auto-merged.
Sharing will stay a choice. Each shelf carries a Private / Public toggle, and Private is where every shelf starts.
Today every shelf is private, at the database. This is not a promise about intent — read policies allow a row to be read only by its owner, so there is currently no path by which another user could see your shelf. Cosmos requires opening that deliberately, with an explicit opt-in, and it has not been opened.
13. Free and Pro
The split is not a feature ladder. Free is the shelf; Pro is the layer that reads it for you.
| Plan | What you get |
|---|---|
| Free | Unlimited subjects, channels and creators. Every platform, including Rednote and WeChat 公众号. Metadata recognition on add, manual groups, tags, notes and highlights, bulk import, global search, JSON export. |
| Pro — $10/month or $99/year | The Feed and its reading guide, Activity and its AI profiles, last-posted age on every platform including the paid sources, and cross-platform account discovery. Both intervals include a 7-day free trial; a card is collected up front and cancelling before day 7 charges nothing. |
Prices are USD everywhere, on the Chinese site too — only the surrounding words are translated, never the currency or the amount.
On a free account the Feed and Activity entries stay visible and open a page naming what they do, with a way through to Pro. Hiding them was rejected: a feature nobody can see is a feature nobody can decide to buy, and a vanishing page reads as breakage. Nothing is deleted when a subscription ends — the shelf is untouched and only the reading layer locks.
14. What counts as a post
This is the most important table in this document, because it is where Aster is opinionated. "Last posted" is only useful if it means the creator published something — so reposts, reactions and filler deliberately do not count. A creator who only writes short status posts on LinkedIn will read as considerably quieter here than they look on LinkedIn. That is the intended reading, not a gap.
| Platform | What counts | What never counts | Source |
|---|---|---|---|
| YouTube | Regular /videos uploads | Shorts — never, for age, density, Activity or the reading guide | Free |
| X | What the creator wrote, including quote tweets (they added commentary) | A plain retweet of someone else's post | Free path first; a paid source only for accounts logged-out X won't reveal |
| GitHub | Releases first (with the maintainer's own notes), then new repos and opened PRs/issues; commits fold to one line per repository | Stars, forks, comments and other reactions | Free |
| Published articles only | Ordinary status posts, reposts, comments | Free | |
| Substack | Published posts, read from the publication's public RSS | — | Free, no key, no login |
| Podcasts | Published episodes | — | Free |
| Bilibili | Video uploads; 动态 (text/image posts) when the video date is missing or over 30 days old | Forwards and live blips | Free for videos; paid rescue for 动态 |
| Rednote | Notes | — | Paid source only — there is no free server path |
| WeChat 公众号 | The latest publishing day; clicking the row lists that day's articles with their covers, since there is no public profile page to open | — | Paid source for the feed; identity is read free from an article page |
GitHub organisations are handled specially: orgs never surface releases in their own activity feed, so Aster reads them from the org's most active repositories instead — which is why Hugging Face and OpenAI show real activity rather than nothing. A creator's row shows a gold Release marker when a version shipped, and a shipped release survives into the reading guide even when a later routine push would otherwise have buried it.
15. Your data
What is stored
- Your email (for login), and your handle, display name, avatar and bio if you set them.
- The subjects, channels and creators you save, with your notes, tags, groups and highlights.
- Preferences — language, the ready hour, planet-name visibility, delete confirmations.
- A local cache in your browser so the shelf opens instantly. "Who you open most" in Settings lives only there and is never synced.
What is not done
No advertising. No selling or sharing of personal data. No third-party analytics trackers. Metadata about creators — names, avatars, post dates — is fetched server-side from their public pages, and those requests carry none of your personal data. Screenshots you drop into bulk import are OCR'd in your own browser and never leave it.
Getting it out, and deleting it
Settings → Data & about exports the whole shelf as JSON, any time, no request needed. Deleting a creator, channel or subject removes it from the database. For full account deletion, email sco.boulevard@outlook.com.
The formal version is the Privacy page, which opens from the footer of astershelf.space.
16. Subprocessors
Every outside service Aster depends on, what it does, and what it can see. If a service is not on this list, Aster does not send anything to it.
Infrastructure
| Service | What it does for Aster | What it can see |
|---|---|---|
| Vercel | Hosts the site and runs every server-side function | Ordinary request data — IP address, user agent, the requested path |
| Supabase | The database, and authentication (email and password, magic link, Google sign-in) | Your account record and your shelf. Rows are readable only by their owner |
| Cloudflare R2 | Stores creator avatars and profile images, content-addressed so identical images are stored once | The images themselves. No account identifiers |
| Stripe | Subscription checkout, billing portal and invoices | Your name, email and payment details. Card details never touch Aster — checkout and the portal are Stripe's own pages |
| Google Fonts | Serves Fraunces, the site's single typeface | Your browser's IP address, as any font request does |
| Google (OAuth) | Optional "Continue with Google" sign-in | Only used if you choose it. Aster receives your email address and nothing more |
| jsDelivr & esm.sh | Deliver two browser libraries: the Supabase client, and the OCR engine used by bulk import | Your browser's IP address |
The intelligence layer
| Service | What it does for Aster | What is sent |
|---|---|---|
| DeepSeek | The only language model in the product. deepseek-v4-flash writes the Feed's reading-guide lines, topic labels and time estimates, the Activity profiles, and parses bulk-import text. deepseek-v4-pro, with native Web Search, runs account discovery | Post titles and short excerpts, creator names, platform names, and public profile evidence. Never your email, handle or account identifiers |
| Groq | Speech-to-text (whisper-large-v3-turbo) when a video's own captions are unavailable, so the reading guide can say what a video is actually about | The audio of a public post |
| TikHub | Public post data for Rednote and WeChat 公众号 — the two platforms with no free server path | The public account or article URL being read |
| twitterapi.io | X post timing for accounts logged-out X will not reveal. Tried only after the free path | The public X handle being read |
| unavatar.io | Avatar lookup fallback when a page publishes no usable image | The public handle or domain being looked up |
| Apple iTunes Search | Resolving podcasts by name during import — free, keyless, deterministic | The show name being searched |
Every metered service above is behind a single kill switch, and every one of them degrades rather than fails: with no model key the reading guide falls back to raw titles, import falls back to deterministic parsing, discovery returns an honest "incomplete", and paid probes are skipped. An outage shows up as an outage — "Couldn't reach N of M sources" — and never as a quiet day.
17. What Aster deliberately won't do
- No fourth level. Aster does not save articles, clip highlights, or hold a read-it-later queue. The step after a creator is their own page.
- No ranking, no algorithmic feed, no unread counts. The Feed is chronological within a window you choose.
- No AI filter. The model describes posts; it never decides which ones you see.
- No engagement metrics. No follower counts, no engagement rates, no audience demographics, no campaign reports. Aster is not an influencer-marketing tool and will not become one.
- No social graph. No likes, comments or messaging — not now and not with Cosmos.
- No light mode. One calm cosmic-dark theme, no toggle.
- No background crawling. Probing happens when you open a page. An account nobody opens costs nothing.
Aster is an independent project built in public by one person. If something here is wrong, unclear, or missing — or if you think one of these lines should change — write to sco.boulevard@outlook.com.