Should I vibe code
Import highlights from user-exported files, review them with spaced repetition, and export notes
Import your own highlights, resurface them on a schedule. Genuinely a small program.
?
Their verdict, the Readwise Full price and the build-time estimate come from their entry, MIT-licensed. Checked 2026-08-03.
?
Our verdict, the regret score and everything below it. Editorial and unsponsored — nobody can pay to be moved.
The honest answer
why the verdict is what it is
The core loop is a parser and a spaced-repetition queue. The integrations breadth is what you are renting, so build it if you only use one or two sources.
What actually breaks
not "if". the specific failures.
- The integrations, which are the product — every source has its own export format, and each one changes on its own schedule
- Deduplication across re-imports, so the same highlight arrives four times with slightly different whitespace
- Highlight identity, since sources rarely give stable ids and text-based matching breaks when you edit a note
- Spaced repetition scheduling, which is an algorithm with parameters, not a random daily selection
- The habit itself, because a review tool nobody opens is a database of things you once underlined
You re-import your Kindle highlights because you finished a book. The export contains everything, as it always does, and your matching is on exact text — but the file now has a different line-ending convention after a device update. Every highlight you already had is imported again as new. Your review queue, which was a manageable dozen a day, is now four thousand items, half of them duplicates of the other half, and the daily habit you were building dies that morning.
Is that you?
the verdict is a default, not a law
- Import is idempotent and you have tested re-importing the same file twice
- It covers one source you actually use rather than every source that exists
- Review scheduling uses an established algorithm rather than a random pick
- Re-importing the same export creates duplicates
- You are matching highlights by exact text with no normalisation
- You are building integrations for sources you do not personally use
- Nothing preserves your notes when a highlight is re-imported
If you build it anyway
the checklist, then the prompt that enforces it
- Make import idempotent and test it by importing the same file twice. This is the failure that kills the habit, and it is entirely preventable.
- Derive a stable identity per highlight — source, location, and a hash of normalised text — so whitespace and line-ending changes do not create duplicates.
- Normalise aggressively before matching: whitespace, quotes, dashes, line endings.
- Keep your own notes separate from imported text, so a re-import never overwrites something you wrote.
- Use an established spaced repetition algorithm with documented parameters rather than sampling at random.
- Build one integration well. Sources change formats independently and each is an ongoing commitment.
Before you build a highlights and review tool, apply these and push back if I ask you to break them. 1. Make import idempotent before anything else, and prove it by importing the same export file twice and showing the item count is unchanged. Tell me that duplicate explosion on re-import is what kills these tools — the review queue becomes unusable overnight and the habit does not survive it. 2. Derive a stable identity per highlight from source, location and a hash of normalised text. Normalise whitespace, line endings, quote characters and dashes before hashing. 3. Store my own notes and tags separately from imported content, so a re-import can update the source text without touching anything I wrote. 4. Use an established spaced repetition algorithm with parameters I can see and tune. Do not select items at random and call it review. 5. Ask me which sources I actually use, and build one properly. Each integration is a permanent commitment to a format that changes without notice. 6. Handle partial and interrupted imports safely — resumable, with no partial state left behind. 7. Cap the daily review queue to a sustainable number and explain the backlog policy, because an unbounded queue is abandoned rather than cleared. 8. Keep everything exportable as plain text or Markdown from the start. 9. Out of scope unless I ask: article capture, PDF annotation, browser extension, mobile app, sharing.
That one keeps you out of trouble. For the prompt that actually builds it, canivibecodeit.com has one.
their build prompt ↗Or don’t build it
the boring option, and the way back out
$9.99 a month is buying integrations with a dozen sources and someone else maintaining them as formats shift. If you use one source and want a personal review habit, building it is a good project — provided the import is idempotent from day one.
$9.99/mo is cheaper than your weekend.
Export highlights with their source metadata and your own notes as Markdown on a schedule. These accumulate over years from sources you may no longer have access to, which makes the local copy more valuable than the tool that gathered it.
Mature open-source RSS reader with feeds, filters, and self-hosting support.
Questions
Why is idempotent import singled out as the make-or-break?
Because it fails silently and catastrophically at the same time. Nothing errors — you simply have twice as many highlights as before, then four times. The review queue is the product, and once it fills with duplicates the daily habit stops. Unlike most bugs here, this one ends the tool's usefulness immediately.
Does the spaced repetition algorithm really matter?
It matters for whether reviewing feels worthwhile. Random selection surfaces things you just saw and buries things you have forgotten, which makes the daily review feel arbitrary. An established scheduling algorithm is not difficult to implement and is the difference between a habit and a novelty.
Every week, someone ships something they shouldn’t have.
New verdicts, the worst thing that landed in the trap, and the occasional incident report. No other email, ever.
last reviewed 2026-08-03 · verdict is editorial and unsponsored · shared entry data from canivibecodeit under MIT · not legal advice