<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anestis</title>
    <description>The latest articles on DEV Community by Anestis (@cloudonemonk).</description>
    <link>https://dev.to/cloudonemonk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F295976%2Fa4d9304f-ce57-403b-8222-f8e4e9a7e858.jpg</url>
      <title>DEV Community: Anestis</title>
      <link>https://dev.to/cloudonemonk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cloudonemonk"/>
    <language>en</language>
    <item>
      <title>Building The World Now: six months of stack notes</title>
      <dc:creator>Anestis</dc:creator>
      <pubDate>Wed, 22 Apr 2026 09:29:20 +0000</pubDate>
      <link>https://dev.to/cloudonemonk/building-the-world-now-six-months-of-stack-notes-10pa</link>
      <guid>https://dev.to/cloudonemonk/building-the-world-now-six-months-of-stack-notes-10pa</guid>
      <description>&lt;p&gt;About six months ago I started &lt;a href="https://www.the-world-now.com" rel="noopener noreferrer"&gt;The World Now&lt;/a&gt; as a side project, an attempt to build a news site where the pipeline is mostly automated but the editorial judgment still feels like a human made the call.&lt;/p&gt;

&lt;p&gt;No filler, no scraped soup, no "10 things you won't believe." Here's where it's at and what's running under the hood.&lt;/p&gt;

&lt;p&gt;## The stack&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 15&lt;/strong&gt; on Vercel, App Router, RSC where it makes sense.
Turbopack for dev, which is genuinely fast but eats HMR state maybe
once a day and forces a restart.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB Atlas&lt;/strong&gt; for articles, events, users, engagement. One DB
doing most of the work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS Lambda + Serverless Framework&lt;/strong&gt; for the article generation
pipeline. Cron-triggered, drafts with Grok-4, runs an editorial QA
pass, publishes when it passes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resend&lt;/strong&gt; for email — three audiences: free daily, free weekly,
paid weekly deep-dive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stripe&lt;/strong&gt; for the paid tier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mediavine&lt;/strong&gt; for display ads on the free tier.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing fancy. The interesting part isn't any single piece, it's the pipeline.&lt;/p&gt;

&lt;p&gt;## The article pipeline&lt;/p&gt;

&lt;p&gt;Every hour a Lambda wakes up, decides whether to publish, then:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pulls from ~20 sources (France24, Times of Israel, ReliefWeb, a
few RSS endpoints I wrote custom parsers for).&lt;/li&gt;
&lt;li&gt;Dedups against the last 14 days of articles and against
unique-image-across-all-articles.&lt;/li&gt;
&lt;li&gt;Drafts in one of two formats: &lt;strong&gt;BREAKING_NEWS&lt;/strong&gt; (short, fast,
~1,100 words) or &lt;strong&gt;SITUATION_REPORT&lt;/strong&gt; (long-form, context-heavy,
~1,500 words with secondary and tertiary images).&lt;/li&gt;
&lt;li&gt;Generates hero + secondary images, with placeholders while they
render.&lt;/li&gt;
&lt;li&gt;Runs editorial QA — word-count checks, unique-image gate, citation
format, no clickbait titles, no bare brackets, no word-count
trailers leaking in.&lt;/li&gt;
&lt;li&gt;If QA fails: one retry. If it fails twice: drop the article
entirely. I'd rather publish fewer good ones than patch bad ones.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Last 20 articles audited averaged 55 citations per BREAKING_NEWS and 70 per SITUATION_REPORT. That's the part I'm proudest of — the thing is genuinely grounded, every claim traceable.&lt;/p&gt;

&lt;p&gt;## What's going wrong&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google doesn't love me.&lt;/strong&gt; Every page in my ranking-target set is&lt;br&gt;
  showing "Crawled, currently not indexed" in Search Console. I've been at this for weeks now, structured data tightened, internal linking cleaned up, manual URL inspections, sitemap pings. Nothing moves.&lt;/p&gt;

&lt;p&gt;Google then sees the pages, reads them, and shrugs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bing, on the other hand, is crushing it.&lt;/strong&gt; +37.6% impressions week over week, consistent top-10 positions on a handful of competitive&lt;br&gt;
  queries, and a traffic mix that's well over 60% Bing at this point.&lt;br&gt;
  Which is a sentence I never expected to write.&lt;/p&gt;

&lt;p&gt;So the plan is: double down on what's working, and keep trying to get out of Google jail.&lt;/p&gt;

&lt;p&gt;## What's next&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Per-location earthquake pages (&lt;code&gt;/earthquakes-today/[location]&lt;/code&gt;)
with live USGS data — 15 country/state variants, each with its own
fault systems, safety playbook, and official channels (JMA for Japan,
ShakeAlert for California, ITSAK for Greece, and so on). Generic
templates with a name swap won't cut it; each one needs to actually
be useful for that specific place.&lt;/li&gt;
&lt;li&gt;A "listen on your commute" version of the weekly deep-dive using
voice cloning. Evaluating VoxCPM2 vs Inworld TTS-1.5 vs ElevenLabs
right now — cost vs quality is the current blocker.&lt;/li&gt;
&lt;li&gt;Getting out of Google jail. Somehow.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;## The link&lt;/p&gt;

&lt;p&gt;If you want to poke around:&lt;br&gt;
  &lt;strong&gt;&lt;a href="https://www.the-world-now.com" rel="noopener noreferrer"&gt;the-world-now.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you've been through the "crawled, currently not indexed" wall and something actually worked — drop it in the comments. I'll owe you&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>seo</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
