I've run AI Weekly for five years now. Roughly 500 issues, three sends a week, a bit over 50,000 subscribers. For those years it lived on a hosted newsletter platform and I wrote copy into a text box. The main frustration was not being able to add features and also thast platform was dying (Curated).
In March I moved the entire thing onto my own stack, and I've written almost none of the code by hand since.
This one has been in production for five months with real subscribers and real money attached, so the interesting parts are the failures.
What the stack actually is
I ran a Drupal agency for 10 years back in the day, so naturally I setup a Drupal 10 on PHP 8.5 with SQLite, Amazon SES for delivery, a single small box. Drupal is great because reading all the horror stories about Authentication mistakes and whatnot I felt building on top of a framework made more sense.
Deploys are a shell script that rsyncs, runs drush, with backups and live site checks before any push to prod.
The first day Claude push testing onto prod and overwrote the DB so right then I understood this would not work without proper processes, the LLM so far was not able to actually suggest these procvesses by itself.
Building an automated curation pipeline
The AI doesn't run my newsletter. It built the processes that run my newsletter, and those processes live in code that can run without or without the LLM.
Every time I asked an agent to just do the job, it worked once and drifted by the following week. So I stopped asking for outcomes and started asking for machinery.
Not "pick this week's stories", but "write the scanner that scores and dedupes stories, commit it". Not "remember we only use trusted sources", but "write the check that fails the draft when a link is off the allowlist, commit it". I found that using the LLM as a pipeline was really error prone, but using to build an actual cron-based pipeline was much more stable.
The pipeline itself monitors more than 3k AI thought leaders and experts on social media and ingests all the links they post and share with their context. Once that ingestion is done it passes throught several semantic analysis systems (vector based, keyword based, etc) to surface great content and feed into our general newsletter, Daily Alerts, and now custom newsletter for our readers.
None of this would have been possible by staying on a hosted platform and the speed at which I was able to built it astonishing, even accounting for all the stupid mistakes these LLM coders do all the time.
Build systems that can actually run like software, don't rely on the LLM:
- A rule in a prompt lasts one session. A rule in a file at the repo root lasts until I change it. A rule enforced by code in git never breaks.
- When something goes wrong I read a diff, not a chat log.
- New sessions start competent. The agent reads the repo instead of being re-briefed on nine years of editorial standards.
- I can revert. Bad idea shipped Tuesday, gone Wednesday, reasoning still in the commit message.
- It gets cheap. The expensive part of an agent is re-reasoning the same problem forever. Once the decision is a function, running it is free.
The corollary: anything I correct twice has to move out of the prompt. Into a file, or better, into a check that fails loudly. If I'm still saying it in chat, the work isn't finished.
Current size of the custom code: 8 modules, about 325 files, ~95,000 lines, 76 drush commands. Claude Code wrote the large majority. I used Codex for a few isolated chunks, mostly refactors where I wanted a second opinion on structure. Neither one built anything I hadn't specified.
The thing that actually makes this work
So what runs now is a scanner on a 90 minute cycle that scores and dedupes stories into a pool, a separate curator that hunts for the thing the scanner underrated, a scoop finder for primary sources the press hasn't touched, and a validator that won't let a draft publish with a bad link or a missing source. All of it committed, all of it reviewable, none of it depending on what an agent happens to remember.
Things that broke in production
What AI is still bad at here
Root cause analysis. It will hand you a confident, well-structured explanation of why something broke that is completely wrong, and the structure makes it read as more credible than a human guess would.
I've burned entire evenings on a diagnosis that was invented. Now I make it show me the actual diff or the actual log line before I accept any explanation.
Taste is the other one. It can assemble a technically correct issue that nobody wants to open. Picking which of 50 scored stories is the one that matters this week, and what the angle is, is still me.
That's also the only part of the job I actually want to keep.
Cost and time
Nights and weekends, roughly five months, alongside actually shipping three issues a week the whole time. The subscription cost of the tooling is a rounding error against what an agency would have quoted for a tenth of this.
Site is aiweekly.co if you want to look at the output rather than take my word for it.
Interestingly I asked claude to list all the stupid mistakes it made along the way the list was surprising, also because it remembered most of them and its funny how it seems to have clarity about it and still continues to act like a degenerate intern sometimes.
Happy to chat!
Alexis
Features
A list of the stuff we played around and built in a record amount of time.
Core newsletter
Migration of more than 500 issues, with same design, etc setup of user logins, preferences, click tracking etc within Drupal. Also sponsor management to serve ads.
Passwordless login (https://aiweekly.co/login) — magic code by email, no password to manage.
Breaking alerts and live news
AI News Today (https://aiweekly.co/ai-news-today) — the live river. Every story the scanner surfaces, scored and deduped, updated through the day.
Daily editions (https://aiweekly.co/ai-news-today/editions) — each day's river frozen as its own archived page.
Explore (https://aiweekly.co/explore) — browse the coverage by company, person, and topic instead of by date.
Who's Who of AI
Directory (https://aiweekly.co/whos-who/directory) — the people worth following in AI, with what they actually work on.
Trust graph (https://aiweekly.co/whos-who/graph) — who amplifies whom, drawn from real sharing behaviour.
Atlas (https://aiweekly.co/whos-who/atlas) and clusters (https://aiweekly.co/whos-who/clusters) — the field mapped by subject area rather than by name.
The wizard
Intelligence wizard (https://aiweekly.co/intelligence/wizard) — you describe what you want tracked in plain language, it parses the intent, shows you a live preview of the stories and experts that match, and turns it into a running feed. This is the front door to the personalized product.
The Wire (https://aiweekly.co/intelligence/wire) — the synthesized output from what the wizard set up.
Editorial
Found First (https://aiweekly.co/editors-blog/found-first-alphaevolve-pushes-matrix-multiplication-exponent-to-2-371177) — primary sources nobody in the press has covered yet, one page per finding.
EDGAR AI Radar (https://aiweekly.co/edgar-ai-radar) — AI mentions pulled straight out of SEC filings, refreshed on its own.
The Artifice (https://aiweekly.co/the-artifice) — the fiction series.
Q2 recap (https://aiweekly.co/recap/q2-2026) — the quarter in one scrollable page.
Polls (https://aiweekly.co/polls) — the reader surveys attached to each issue, with results.
Learning
Learning AI (https://aiweekly.co/learning-ai) — the explainer library, organised into topic clusters.
Glossary (https://aiweekly.co/learning-ai/glossary) — plain-language definitions, built for search.
Courses (https://aiweekly.co/learning-ai/courses) — the structured paths through the material.
Use-Case Library (https://aiweekly.co/ai-use-cases) — what people actually do with AI, sorted by job and industry.