About & method.
Lantern sifts conversion research for you: it reads the best CRO sources, scores each article on relevance, rigor, and actionability, and hands you a short selection. No ads, no trackers, no opaque algorithm. This page documents exactly what happens between a source URL and the article that lands in your feed.
the origin
Conversion research is scattered. Nielsen Norman, Baymard, the CRO blogs, studies behind a paywall, threads scrolling by. I wanted to track what actually moves a page or a funnel — not the recycled "10 growth hacks" — and I was spending more time hunting for signal than applying it.
Lantern is what I'd rather have read instead. One page, already filtered. An agent that read the week of research for me, dropped the duplicates and the disguised pitches, scored the rest on what matters — conversion relevance, evidence quality, actionability — and handed me a short selection with honest summaries. No marketing, no rephrased teaser.
I build it solo, evenings and weekends. It's an author project, not a startup. That means three things:
- No ads, no trackers. Lantern doesn't follow you, doesn't sell your data, and loads zero third-party script.
- No growth hacking. Ironic for a CRO site, but: no push notif, no gamification, no "streak". You read when you want.
- Explicit curation. Sources are public, scoring is documented below, and the AI never reorders your reading: the feed is chronological by default, score sort is opt-in.
from a URL to the feed
Every article that lands in your feed traversed five steps. Most take a few seconds; LLM scoring is the bottleneck. The pipeline runs once a day — a chosen rhythm, not a technical limit: the ~10 active sources don't publish around the clock, one daily pass is plenty.
+-- 01 -----+ +-- 02 ------+ +-- 03 ------+ +-- 04 -----+ +-- 05 -----+ | FETCH | -> | EXTRACT | -> | DEDUPE | -> | SCORE | -> | PUBLISH | +-----------+ +------------+ +------------+ +-----------+ +-----------+ rss-parser readability simhash 64b gpt-5-nano ranking + feed
What follows details each step — what it gets, what it produces, what can fail.
Raw content retrieval
A daily cron hits every active source via its RSS/Atom feed. No homemade scrapers: every source we track (Nielsen Norman, Baymard, Speero, Oddit, …) publishes a clean feed, so the step is simple and robust. The full list lives on the Sources page.
Clean content extraction
When a feed only ships a summary, we fetch the page and the readability algorithm (Mozilla port) splits content from chrome (header, sidebar, related). For feeds that already deliver clean markup, we skip this step.
Semantic deduplication
A 64-bit simhash is computed on the start of the article. If an article ingested in the last 14 days has a hash within Hamming distance < 8, we treat it as a cross-post (the same teardown picked up from one source to another, for instance) and keep the earliest source — the others are marked "alias".
LLM scoring & tagging
GPT-5-nano receives the title, the content, and a short system prompt. It returns: a 1-to-5
score on three axes (relevance, rigor, actionability), a type
(article / tool / study / case-study / framework), 2 to 5 tags, a one-line summary
and three justifications. See §03 How I score for the full prompt.
Publication & ranking
The article joins the database. The feed is chronological by default; score sort is opt-in. Articles below score 3.5 are kept in the database (audit, threshold tuning) but never published — the public feed only shows ≥ 3.5.
the prompt, the grid
Scoring is the only place where AI decides something on your behalf. To keep it honest, here's the exact system prompt and the grid it applies. And you can always ignore the score: the feed is chronological by default — score sort and the min-score filter are opt-in.
The grid
- 5 ★ — Conversion core. Hard numbers, directly transferable to a real page or funnel. Study, before/after experiment, reproducible teardown.
- 4 ★ — Very good. Real evidence (a quantified case, explicit method) and applicable.
- 3 ★ — Solid but adjacent or familiar. Argued, one good example.
- 2 ★ — Marginal or promotional. Substanceless teaser, tool pitch without data.
- 1 ★ — Noise. Off-topic, claim without evidence, AI-generated prose.
Publish bar: the final score is the weighted composite of the three axes (0.4·relevance + 0.3·rigor + 0.3·actionability, 1.0–5.0 scale). An article passes when that composite is ≥ 3.5 / 5. Below that, it stays in the database (audit, calibration) but doesn't reach the public feed.
The system prompt (excerpt)
The prompt runs in French (the scoring model reads both, the rubric is authored in French). Translated here for reference:
# role: CRO / growth research evaluator
You are a research evaluator for a CRO / growth practitioner who
builds and grows a product (conversion, pricing, experimentation,
UX, tooling). You output a structured score, not a marketing recap.
# 3 axes, integers 1-5
- RELEVANCE Useful to someone growing a product?
1 = off-topic · 5 = conversion/pricing core,
directly transferable to a page/funnel.
AI GATE: AI content is relevant ONLY if it ties
AI to a measured conversion/growth lever (test,
funnel, pricing, quantified uplift). Otherwise
(model review, "how I AI" tutorial, vendor agent
feature announce) → 1-2.
- RIGOR Thesis backed by data, method, a real test — or
promo? A purely promotional teaser OR a post where
a vendor pitches its own product with unverifiable
internal numbers caps at 2, even from a reputable
source.
- ACTIONABILITY Applicable to a real page / a test this week?
1 = theoretical · 5 = ready-to-use method.
# adjustments (the LLM applies them itself)
- anti-patterns (-1): empty listicle, disguised vendor content,
uplift claimed without numbers, AI boilerplate prose.
- bonus (+1): quantified before->after, quant research with method,
real hands-on report from a test.
Strict JSON output: { depth, novelty, applicability, type,
tags, summary, reasons }The three axes are weighted in code (0.4 relevance · 0.3 rigor · 0.3 actionability) into the
final score — they're stored under their legacy JSON keys depth / novelty /
applicability, which is why the prompt output above uses those names. The prompt is
versioned and frozen to stay comparable week to week; when we bump
it (rare), it's noted in the changelog.
What I don't do
- No per-user personalization. Everyone sees the same editorial score. Lantern doesn't learn from your clicks.
- No A/B testing on titles. The displayed title is the source's, period.
- No commercial boost. No source pays to appear. No source is excluded for criticizing us.
the usual questions
Q.01Lantern is free. What's the catch?
No catch. It's a personal project, infra cost is manageable solo. If the audience grows, I'll probably open an optional "supporter" tier to help cover LLM compute, but the core will stay free. No disguised freemium, no paywall appearing one day.
Q.02Why no mobile app?
The site is responsive and reads fine on mobile. A native app would require a store, reviews, a release cycle — too much for a solo project. If you want something on your home screen, add the site as a PWA from Safari/Chrome.
Q.03How do I suggest a source?
From the Sources page, at the bottom, "Add a source". You paste the URL, I check manually (quality, frequency, conversion relevance), and add if it matches the feed. You can also ping me on X or by email.
Q.04Is my data shared?
No. No third-party tracker, no pixel, zero third-party script. Full details — what's collected, subprocessors (Vercel, Neon EU, Resend, OpenAI, GitHub, Google), retention and your GDPR rights — are on the Privacy Policy page.
Q.05Why a single model instead of switching?
Because the score must stay comparable from week to week. Switching models subtly changes the grid, and pollutes historical comparisons. I benchmark the model against competitors every 3 months; I only migrate if the quality gap is clear, and I note the migration in the changelog.
Q.06Can Lantern miss an important article?
Yes. Three cases: (1) the source isn't covered — if the author posts on a personal blog not indexed by Lantern, I won't see it (suggest a source via the Sources page is the best fix); (2) the LLM under-rates — a dense but dry study, or a short post, can land at 3★ when it deserved 4; (3) a cross-post is filed as alias — if Lantern sees the same teardown picked up on two sources, it keeps the first seen and marks the other as alias. For all three there's no recovery filter today: what the pipeline drops doesn't reach the feed. The fixes are suggesting the missing source, or pinging me when something got under-rated. Lantern isn't exhaustive — it's filtered. If you want everything, keep Feedly on the side.