Read-only access· nothing that can post as you
Every post you saved, in a library you can search.
Sift connects to your X account with read-only access, imports the posts you bookmarked, and files each one under a category with tags and a one-line summary. Search the whole library, export it as plain CSV, and read a digest of what you saved — with every item linking back to the original on x.com.
We ask for bookmark.read and three other read scopes. There is no write scope in the request, so nothing here can post, follow, like or message on your behalf. The free plan imports your 100 most recent bookmarks, and Settings deletes everything we hold in one click.
Before you add an index, run EXPLAIN (ANALYZE, BUFFERS). Half the time the plan is fine and the buffer numbers are telling you the working set no longer fits in cache — an index will not fix that.
Read the buffer counts in EXPLAIN ANALYZE before reaching for another index.
Most of the work in an eval suite is deciding what correct means. Writing the grader is the hard part; running it against a thousand samples is the easy part everyone talks about.
Argues the grading rubric, not the harness, is the real cost of an eval suite.
Dense product UI, in four rules: one type scale, one line-height per role, never more than two weights on a screen, and tabular numerals anywhere a number can change.
A four-rule checklist for setting type in information-dense interfaces.
Showing 3 of 428 · one paid check a day · this month $1.05 of X API spend
Illustration of the library view. The posts are written sample content, not quotes from real accounts.
What is verifiable today
No testimonials or customer logos here — the product is new and we have nothing honest to quote. These five are properties of the code and of X's published policy instead.
Read-only scopes
tweet.read,users.read,bookmark.read,offline.access. No write scope exists to misuse.Deleted there, gone here
A nightly job removes anything X reports as deleted, within 24 hours.
Plain CSV, yours
A file you own, not a lock-in. Capped at 500 posts a day, which is X's limit.
$0.005 per post read
X's published rate. We show you what your own account costs to run.
Self-hosted
App, Postgres and the scheduler are three containers on one box.
How it works
Four steps, and one of them costs money
The whole product is a loop: connect once, import once, then one cheap check a day forever.
- 1
Connect X
Sign in with X and approve read-only access — no password ever reaches us, and the request contains no scope that could post, follow or message. Revoking it from Settings also deletes every bookmark, category and token we hold.
- 2
Import
We read your saved posts newest-first, up to your plan's cap: the 100 most recent on Free, 500 on Pro with another 250 filled in each week. Reading a post from X costs $0.005, which is exactly why the caps exist and why they are on this page.
- 3
Sort
Each bookmark gets one of 12 fixed categories, a few free-form tags and a one-line summary. All of it is rendered in a separate labelled row, because a generated label sitting inside the post text would be an alteration of the post.
- 4
Digest
Once a day on Pro, once a week on Free, you get an email grouped by category with a link to every original post. Saved nothing since the last one? No email.
Features
Six things, each doing one job properly
No chat window, no feed, no reader designed to keep you here. Bookmarks in, sorted, out again whenever you want them.
Search that reaches the text
Full-text search across the body of every saved post, narrowed by category or tag. Filters live in the URL, so any view you build is a link you can keep.
Categories, tags, summaries
Claude Haiku files each bookmark into one of 12 fixed categories and adds tags plus a one-line summary. Measured at $0.18 per 1,000 bookmarks — around 3% of what the reads that produced them cost.
A digest you would actually open
One email grouping what you saved, by category, with a canonical x.com link on every item. Daily on Pro, weekly on Free, and never sent empty.
CSV export, not a lock-in
Download a plain CSV — categories and tags included — for a spreadsheet, Notion, Obsidian or Readwise. 500 posts per day, which is X's redistribution limit rather than a plan gate.
Deletion sync, nightly
A nightly job asks X which of your stored posts are gone and clears them within 24 hours. A marker stays where the post was, so a bookmark you remember never silently vanishes.
Cost you can audit
Every read is metered per post at X's $0.005 rate and attributed to your account. A typical month measures $1.05, a dormant one $0.07 — no bundle, no mystery.
The digest
Saving it is not the same as reading it
A bookmark you never open again is a delete with extra steps. So the digest is the part of the product that does the work: one email grouping what you saved by category, with a canonical link to every original post — daily on Pro, weekly on Free, and nothing at all on a day you saved nothing.
The one-line intro is generated, which costs $0.032 per user per month. The grouping, the links and the attribution are not generated at all — they are the same rules the library follows.
Sift · your daily digest
to you · 07:00 in your timezone · 4 saved yesterday
Engineering
2- x.com ↗
@pg_notes_demo
EXPLAIN (ANALYZE, BUFFERS) before you add an index
- x.com ↗
@queue_theory_demo
Backpressure is a product decision, not a config flag
AI/ML
1- x.com ↗
@evals_daily_demo
Writing the grader is the hard part of an eval
Design
1- x.com ↗
@type_and_grid_demo
Four rules for type in dense product UI
Every item links to the original post. Nothing saved yesterday means no email at all.
Labelling
Our words are never dressed up as theirs
X's display rules permit formatting changes to a post and nothing else. So every category, tag and summary we generate is quarantined: a separate row outside the post container, in a hue used nowhere else in the product, under a literal AI badge, and announced separately to screen readers so the two are never read as one paragraph.
It would be easier to drop a category chip into the post body. That would also be an alteration of someone else's post, so we made the separation a visible design feature instead of a buried policy note.
Post content — X's, verbatim
Most of the work in an eval suite is deciding what correct means. Writing the grader is the hard part; running it is the part everyone talks about.
Ours — separate row, own hue, labelled
Argues the grading rubric, not the harness, is the real cost of an eval suite.
Cost
The price is a consequence of the engineering
X bills per post returned, so how you ask decides what it costs. Asking for one post to find out whether anything is new costs $0.005; the naive version — re-fetching 100 posts every day — costs $15 a month to learn nothing.
That one decision is why a dormant account measures $0.07 a month and a typical one $1.05, and why the free plan can import your newest 100 bookmarks for about $0.55 instead of an unbounded bill. It is also why the caps are stated on this page: they are the reason the numbers hold.
What X actually charges us
- $0.005
One post read
X's published pay-per-use rate
- ~$0.55
Free import, 100 bookmarks
one-time, per signup
- $0.070
Dormant account
per month, one check a day
- $1.050
Typical account
per month, 120 new bookmarks
- $6.725
Heavy account
per month, 1,069 new bookmarks
- $15.00
Re-fetching 100 posts daily
the naive version, learning nothing
Measured against the sync engine that ships, not modelled. At $6/month a heavy account is roughly break-even — which is what the fair-use threshold of 1,000 new bookmarks a month is for.
Pricing
Two plans, and the reason
behind every number.
Every bookmark we read is billed to us by X at $0.005 a post. So the caps below are not upsell theatre — they are the numbers our own code enforces, and they are the reason this can be priced at $6 instead of guessed at.
Annual works out to two months free.
Free
Enough of your library to find out whether having it sorted changes anything. No card.
$0/ month
No card, no expiry, no drip of reminder emails.
Read-only access. Delete everything we hold from Settings, in one click.
- Initial import
- 100 newest bookmarksThe most recent ones, and that is where it stops.
- Backfill
- Not includedOlder bookmarks stay on X, untouched.
- Digest email
- Once a weekNothing new saved? No email.
- New-bookmark check
- Every 7 daysOne $0.005 request, not a re-scan of your library.
- Library ceiling
- 2,000 bookmarks storedCounting the import, the backfill and everything you save later.
- Fair use
- 200 new saves a monthA soft line. Cross it and we talk, we do not cut you off.
- CSV export
- Not includedYour bookmarks stay searchable in the app.
What Free costs us. Your 100 bookmarks are $0.50 of post reads plus the author lookups behind them — about $0.55, paid by us, once. That is the whole reason the number is 100.
Pro
For a library you actually rely on — your whole archive, filled in week by week, and a digest every morning.
$6/ month
Billed monthly — $72 over a year.
$5/ month
$60 billed once a year — $12 less than paying monthly.
Checkout is not switched on for this deployment yet, so Pro cannot be bought here today. The free plan works in full.
- Initial import
- 500 newest bookmarksImported the moment you connect.
- Backfill
- +250 older every weekKeeps reaching back until it has 20,000 of your archive.
- Digest email
- Every dayNothing new saved? No email.
- New-bookmark check
- DailyOne $0.005 request, not a re-scan of your library.
- Library ceiling
- 25,000 bookmarks storedCounting the import, the backfill and everything you save later.
- Fair use
- 1,000 new saves a monthA soft line. Cross it and we talk, we do not cut you off.
- CSV export
- 500 posts a dayX's policy cap on how much post content we may hand one person daily.
What Pro costs us. A typical Pro library measures about $1.05 a month in X reads; the heaviest we have measured is $6.73 — more than Pro brings in at either price. That is what the fair-use line is for, and why it is written down here instead of enforced quietly.
The cap, explained
Why the free plan stops at 100 bookmarks.
X charges per post returned, not per request. Reading 100 of your bookmarks therefore costs us $0.50 in post reads, plus a lookup for each author we have not seen before — about $0.55 in total, before you have paid anything.
At 100 that is a cost we can absorb for everyone who wants to try this. Uncapped, one signup with a 5,000-bookmark history costs us around $26 on the spot. A free tier like that does not survive a good launch day, and the usual way out — quietly throttling people later — is worse than saying the number now.
Pro solves the same problem differently: instead of one enormous import, it takes your newest 500 immediately and reaches back 250 more each week. You watch the archive fill in, and the cost is spread across the subscription that pays for it rather than landing before it.
One-time cost of reading a library
| Bookmarks | Costs us |
|---|---|
| 100Free plan stops here | ~$0.55 |
| 500Pro starts here | ~$2.75 |
| 1,000 | ~$5.30 |
| 5,000 | ~$26 |
At X's published rate of $0.005 per post read, plus author lookups at twice that. Author cost falls as the shared cache fills, which is why these are approximate.
Export is 500 posts a day
That ceiling is X's, not ours: their developer policy limits how much post content any app may hand to one person per day. Run it on consecutive days and you can take everything out.
Read-only, on both plans
We ask X for permission to read your posts, your profile and your bookmarks — and nothing that can post, follow, message or unfollow. Paying changes the caps, never the permissions.
Prices in US dollars
$6 a month or $60 a year, excluding any tax that applies where you are. No setup fee, no per-seat pricing, no usage surcharge.
Questions
The things worth asking first.
Permissions, cost, X's rules and getting your data back out — answered properly, because these are the questions that decide whether connecting an account is a good idea.
Getting started
What connecting actually does, and what it cannot do.
Do you need my X password?
No, and we could not accept it if you offered. Connecting runs X's own authorization flow — OAuth 2.0 with PKCE — so you approve the request on x.com and X hands us a token afterwards. Your password never reaches this app.
The token is limited to four read scopes and nothing else: tweet.read, users.read, bookmark.read, offline.access. It is encrypted before it is stored, and deleting your account revokes it at X rather than merely forgetting it here.
Can you post, follow or send messages as me?
No. We never request a write scope, so the token we hold is physically incapable of posting, replying, liking, following, unfollowing or messaging — there is nothing to misuse and nothing for us to promise not to do. It can read your posts, your public profile and your bookmarks. That is the whole surface.
Does it work if I have 10,000 bookmarks?
Yes, progressively. Pro imports your newest 500 the moment you connect, then reaches back another 250 every week — so a 10,000-bookmark archive fills in over about 38 weeks, with a progress bar in the app the whole time. Backfill keeps reaching back until it has 20,000 of your history.
It is deliberate rather than a limitation we are embarrassed about: importing everything on day one would cost us tens of dollars before your first payment, which is exactly the shape of business that has to raise prices later. New bookmarks you save from now on arrive the next day regardless — backfill only affects how fast the old ones appear.
What happens to a bookmark once you have it?
It is stored with its author, its canonical x.com link and the date you saved it, then a model gives it one of 12 fixed categories, a few tags and a one-line summary. Those three things are ours, not X's, so they are shown in their own labelled row and never folded into the post text. After that it is searchable, filterable by category and tag, and it appears in your next digest.
What it costs
Where the money goes, and why the free plan has a ceiling.
Why is the free import capped at 100 bookmarks?
Because reading bookmarks is metered. X bills us $0.005 per post returned, so your 100 bookmarks are $0.50 of post reads plus a lookup for every author we have not seen before — roughly $0.55 per free signup, paid by us, before you have paid anything.
100 is a number we can afford for everyone who wants to try this. Uncapped, a single signup with a 5,000-bookmark history costs about $26 on the spot, and a free tier shaped like that fails on its best day. We would rather publish the limit than discover it in public.
What does Pro cost?
$6 a month, or $60 paid once a year, which works out to two months free. It buys the newest 500 bookmarks up front, another 250 of your archive every week, a daily digest instead of a weekly one, and CSV export.
Will I ever be charged for API usage on top?
No. The price is flat, and what we spend at X is our problem to manage, not a line item we pass to you. The fair-use threshold is how we bound it: 1,000 newly saved bookmarks a month on Pro, 200 on Free. Crossing it starts a conversation about what you are doing — not a surcharge and not a silent slowdown.
Why is the daily digest a paid feature?
Because checking for new bookmarks costs money every time. We ask X for your single most recent bookmark and compare it to what we already have — one post read, $0.005. Pro does that daily; Free does it every 7 days, which is what keeps a quiet free account down to a couple of cents a month. The digest cadence follows the check, because emailing you daily about a library we only look at weekly would be theatre.
Your data and X's rules
What is stored, who else touches it, and what X's policy requires of us.
What happens when I delete a post on X?
It goes from here within 24 hours. Every night we ask X's batch compliance endpoint which of the posts we store have been deleted, withheld or suspended, and act on the answer before the next digest goes out — so a deleted post cannot turn up in your inbox afterwards.
What you see is a tombstone rather than a hole: the row stays in your library marked as no longer available on X, with the content removed. Silently dropping a bookmark you remember saving is worse than telling you it is gone. This is X's requirement for anyone storing post content offline, and it is also the behaviour we would want.
Who else sees my bookmarks?
Two services, both named because you are entitled to know. Anthropic receives batches of post text to produce the categories, tags and summaries — without your handle, your email or your user id attached, because classification does not need to know whose library it is. Our email relay receives the rendered digest, which is what sending it to you requires.
That is the entire list. Your bookmarks are not sold, not used to train anything of ours, not enriched with third-party data and not shown to other users. The privacy policy spells out both processors and what each one receives.
Is the AI summary part of the post?
No, and we work to make that obvious. X's display rules forbid altering post content, and a generated label sitting inside a post body reads as exactly that. So categories, tags and summaries always render in their own row, in their own colour, with their own label — in the app and in the email. Even the CSV export prefixes those columns with ai_. The post text itself is never edited, trimmed or rewritten.
Do you store where a post was posted from?
No. X's policy forbids storing or aggregating location data separately from the post it belongs to, so we do not extract it at all — there are no geo columns in the database to fill in. There is no map view, no "bookmarks near you", and no plan for either.
What happens if I delete my account?
One button in Settings: we revoke our access token at X, then purge your bookmark list, the categories, tags and summaries generated for you, your sync state, your digest history and your stored tokens. No support ticket, no cooling-off period, no "deactivated" state that quietly keeps everything.
Two things survive, and we would rather say so than claim a clean sweep. Post text itself sits in a store shared by everyone who bookmarked the same post, so deleting your account removes the link between you and those posts rather than other people's copies. And the log of what we spent at X stays as a financial record, with your user id stripped out of it. The privacy policy sets out both.
Exporting
You can take everything with you. The ceiling on how fast is X's.
Can I export everything?
Yes — 500 posts per day, on Pro. That number is X's, not ours: their developer policy permits handing up to 500 post objects to each person who uses a service per day, by non-automated means. So export is a button you press, the count is enforced on our server, and a large library comes out over consecutive days — 2,000 bookmarks in 4 days, for instance.
The file is CSV, one row per bookmark: post id, canonical link, author handle, when it was posted, when you saved it, the post text, and the category, tags and summary in their own ai_ columns. Posts we have tombstoned are left out, because content deleted on X may not be redistributed.
Can you sync automatically to Notion, Obsidian or Readwise?
Not today. Pushing post content into a third-party service on a schedule is precisely what X's redistribution rules restrict; the exception they spell out is a download the person asks for. So we do the download well and leave the last step to you — the CSV imports directly into Notion or a spreadsheet, and our free in-browser converter turns it into Markdown for a notes app. If that changes, it will be because we asked X and got a written answer, not because we decided the rule probably did not apply.
Billing
Plans, switching between them, and what a card is needed for.
Monthly or annual — what is the difference?
Price only. Monthly is $6, which is $72 across a year. Annual is $60 billed once — $12 less, or two months free, depending on which way you like to read it. The caps, the digest and the export allowance are identical.
Do I need a card to try it?
No. The free plan needs your X connection and nothing else — no card, no expiry date, no countdown. It imports your newest 100 bookmarks, sorts them and sends a weekly digest for as long as you want it.
What happens if I move back to the free plan?
You keep the library you already have. Moving to Free reapplies the free caps — a weekly digest instead of a daily one, a check for new bookmarks every 7 days, no CSV export and no further backfill — but nothing already imported is deleted for changing plan. The only things that remove a bookmark are deleting your account, or the post disappearing from X. Self-serve checkout is not switched on for this deployment yet, so there is no subscription to change here today.
Still deciding
The two documents that answer the rest are the privacy policy — what is stored, for how long, and which processors see post text — and the terms, which set out the caps above as commitments rather than marketing.
Free tools
5 small tools, no account, no upload
Each one runs entirely in your browser and never touches the X API — which is both the honest privacy claim and the reason they are free.
X post character counter
Counts a post the way X does — links are 23 characters, emoji and CJK count double.
Runs in your browser
Thread splitter
Paste long text and get a numbered thread split on sentence boundaries, never mid-word.
Runs in your browser
Bookmark sync cost calculator
What reading N bookmarks actually costs on X's pay-per-use API, at the current published rates.
Runs in your browser
Bookmark export converter
Convert a CSV or JSON bookmark export to Markdown, CSV or JSON. In-browser, no upload.
Runs in your browser
X archive explorer
Open your official X data archive and search your posts and likes locally. Nothing leaves the tab.
Runs in your browser