Valentine's Day with My AI Team: We Built a Newsletter Where the Robots Market Themselves

February 24, 2026 15:00Z

Sprint 48 shipped social sharing and revenue features. Sprint 49 rebuilt the entire newsletter pipeline in one afternoon. Then we automated the whole thing with cron jobs. Also, my agents forgot to push their commits to GitHub. Happy Valentine's Day.

Valentine's Day with My AI Team: We Built a Newsletter Where the Robots Market Themselves
Share
Loading series...

Valentine's Day with My AI Team: We Built a Newsletter Where the Robots Market Themselves

Sprint 48 shipped social sharing and revenue features. Sprint 49 rebuilt the entire newsletter pipeline in one afternoon. Then we automated the whole thing with cron jobs. Also, my agents forgot to push their commits to GitHub. Happy Valentine's Day.


📖 Build Log Series: Day 0: The Setup · Day 1: First Sprints · Day 2: Six Sprints · Day 3: The Newsletter · Day 4: The Board Meeting · Day 5: The Scaling Week · Day 6: The Week of Infrastructure · Day 7: When an Idea Becomes an Agent


9:47 AM: The Newsletter Problem

Here's what I realized on Day 3: I have an AI consulting business with zero email marketing. No newsletter. No lead magnet. No nurture sequence. Just a blog that publishes into the void and hopes people find it.

That's not a business. That's a hobby with invoices.

So I asked Meri (my strategist agent) to figure out the newsletter situation. What should we build? What should it say? How often should it go out?

Her response came back as a full strategy brief. Not a paragraph. Not a bulleted list. A 4,000-word document covering content strategy, cadence, growth targets, and competitive positioning.

Day 8: The Browser Becomes the Agent · The recommendation: "The Own Your AI Brief" — a weekly newsletter. Thursday mornings at 9 AM Central.

But here's the twist. Meri didn't design it for leads first. She designed it for me first.

"Brian as consumer," she wrote. "You get the draft on Monday. You edit by Wednesday. It auto-sends Thursday if you don't flag a hold. You should want to read your own newsletter."

I've read so many AI hype newsletters that feel like they were written by a committee of marketing interns who've never touched an API in their lives. Meri's take: if I wouldn't subscribe to my own newsletter, why would anyone else?

So the strategy became: write the newsletter I'd actually want to read. Opinionated takes. Real numbers. Contrarian angles. Failure modes. No hype.

Then use AI agents to research, write, and ship it every week. On autopilot.

The irony is not lost on me: I'm building a newsletter about AI strategy, written by AI agents, to market an AI consulting business. We've reached peak meta, and I'm here for it.

10:23 AM: The Infrastructure Sprint Nobody Wants to Talk About

Before we could build a newsletter, we needed the boring stuff: email infrastructure.

Claire (research agent) evaluated 10 platforms. The winner: Resend. Free tier covers 3,000 emails per month. Full API. Laravel SDK. Custom domain support. If we grow past 3,000 subscribers, we'll migrate to Listmonk (self-hosted). But for now, Resend is perfect.

I signed up. Got an API key. Handed it to Felix (backend dev).

Day 8: The Browser Becomes the Agent · Task #376: Resend Integration.

Felix built:

  • Resend mailer configuration
  • Welcome email template (dark sci-fi themed, because of course it is)
  • Audience sync job to push subscribers to Resend
  • Production environment config

I tested it locally. Subscribed to the newsletter. Nothing happened.

Checked the logs. The welcome email was queued but never sent. Why? Because Laravel's queue system needs a worker process running to actually process the queue.

I'd forgotten to run herd php artisan queue:work.

Started the worker. Boom. Welcome email arrived in my inbox 3 seconds later.

This is the kind of bug that makes you feel dumb and smart at the same time. Dumb because you forgot a basic step. Smart because you caught it in local testing instead of production.

Production fix: set up a Forge background process to run the queue worker 24/7. Stop timeout: 3,600 seconds (one hour of graceful shutdown time). Done.

Then I hit another wall: the API key I'd generated was send-only. The audience sync job needed full access to create and manage contacts in Resend.

Upgraded the API key. Grabbed the new Audience ID. Updated production .env. Deployed.

Day 8: The Browser Becomes the Agent · Newsletter infrastructure: live.

Boring? Absolutely. Critical? You have no idea.

11:14 AM: Sprint 48 Goes Live

While Felix was wiring up Resend, the rest of the team was finishing Sprint 48: Day 8: The Browser Becomes the Agent · "Blog Social Sharing & Revenue Features."

This sprint was pure growth mechanics:

  • Share buttons (LinkedIn, X, copy link)
  • Open Graph meta tags for rich social previews
  • Email capture call-to-action at the end of every post
  • Consultation CTA for high-intent readers
  • Analytics event tracking for funnel visibility

Day 8: The Browser Becomes the Agent · 9 tasks. 9 completed. 100%.

Sara (QA) found 2 bugs during testing:

  1. P1: Share button URLs encoding. The LinkedIn share button was generating malformed URLs with double-encoded characters. Click it, get a 404 from LinkedIn. Felix fixed it by switching from encodeURIComponent() to a proper URL builder.

  2. P2: Email validation redirect. Invalid email submissions were redirecting to a form page that didn't exist (returning HTML) instead of returning a JSON error. Frontend tried to parse the HTML as JSON. Crash.

Both fixed within minutes. Sara's getting faster every day.

We deployed the same afternoon. Day 8: The Browser Becomes the Agent · Deployment #63875363.

Now every blog post has share buttons, email capture, and proper social meta tags. The blog went from "content repository" to "lead generation machine" in one sprint.

1:38 PM: The Newsletter Strategy Session

With infrastructure live and Sprint 48 deployed, I sat down with Meri for the big question: Day 8: The Browser Becomes the Agent · what should the newsletter actually say?

Her brief laid out the problem clearly: most AI newsletters are either hype aggregation ("Look at this new model!") or surface-level news roundups. No depth. No opinion. No actionable insights.

Day 8: The Browser Becomes the Agent · The Own Your AI Brief would be different:

  • Thursday 9 AM sends. Timing matters. Not Monday (inbox chaos). Not Friday (weekend mode). Thursday morning, when people are thinking about next week.
  • Opinionated advisor voice. Real numbers. Contrarian takes. Failure modes alongside wins.
  • Research-driven, not news aggregation. Claire digs into GitHub trending, Hacker News, Reddit, YouTube, community forums. We're looking for signal, not headlines.
  • Companion blog posts. Every newsletter issue links to a 1,500–2,500 word blog post with deeper analysis and code examples. The newsletter is the hook. The blog is the destination.

Meri's growth targets:

  • Month 1: 50 subscribers
  • Month 3: 200 subscribers
  • Month 6: 500 subscribers

Realistic. Achievable. Based on organic growth with zero paid ads.

But here's the thing that sold me: Day 8: The Browser Becomes the Agent · I get the draft first.

Every Monday at 9 AM, the system generates the newsletter draft and sends it to me via Telegram. I read it like a subscriber. If it's good, I do light edits by Wednesday. If it's bad, I kill it and we try again next week.

Thursday 9 AM, the system auto-sends unless I've flagged a hold.

I'm not outsourcing editorial judgment to an AI. I'm outsourcing research and first-draft writing. The final call is still mine.

That's the difference between "AI writes my newsletter" (disaster) and "AI researches and drafts, I edit and approve" (leverage).

2:19 PM: Sprint 49 — The Entire Newsletter Pipeline Rebuild

This is where things got wild.

We'd agreed on the strategy. Now we needed to rebuild the newsletter system to match it.

I created Sprint 49: "Newsletter Pipeline Rebuild." 8 tasks. Assigned to the full team.

Then I watched them go.

Claire (research): Built the research process. Created a template for weekly research: GitHub trending, Hacker News top 10, Reddit r/MachineLearning + r/LocalLLaMA, YouTube trending in tech, Anthropic/OpenAI/Google blogs. Saved to newsletter/research-template.md.

Nora (content ops): Wrote the editorial standards. Newsletter sections: TL;DR → Tool of the Week → Trending Build → Industry Signal → Engineering Tactic → Read More (link to companion blog post). Voice guidelines. Quality checklist. Saved to newsletter/content-standards.md.

Victor (that's me, and yes, this is weird): Created the companion blog post template. Structure: intro hook, problem breakdown, technical deep dive, code examples, lessons learned, CTA. Saved to newsletter/blog-post-template.md.

Luna (design): Designed the HTML email template. Dark theme. Monospace headers. Amber accents. Responsive layout. Inline styles for email client compatibility. Also created image specifications for newsletter graphics. Saved to newsletter/templates/newsletter-template.html.

Felix (backend): Verified the infrastructure. Queue workers running. Resend API connected. Audience sync operational. Cron jobs ready for Monday draft generation and Thursday auto-send.

Sara (QA): Verified the entire pipeline end-to-end. Checked template rendering, link tracking, unsubscribe flow, audience sync, cron job triggers.

Day 8: The Browser Becomes the Agent · All 8 tasks completed in one afternoon.

We went from "we should have a newsletter" to "fully automated research-driven newsletter pipeline with companion blog posts and a production calendar" in under 4 hours.

This is the compound effect in action. Day 0 was research. Day 1 was learning to ship. Day 2 was momentum. Day 3 was the team operating at full speed.

4:47 PM: The Git Push Gotcha

With Sprint 49 closed, I wanted to deploy the new newsletter homepage section. Claire had researched conversion best practices. Luna had designed 3 concepts. Felix had implemented a dedicated newsletter signup section on the homepage.

I triggered the deployment. Waited for Forge to pull the latest code and restart the app.

Opened brianstory.com. Refreshed. No newsletter section.

Checked the deployment logs. No errors. Everything green.

Checked the git commit. Felix's last commit was 4c91477 — "Add newsletter signup section to homepage."

Checked the remote repository. The commit wasn't there.

Day 8: The Browser Becomes the Agent · The agents had committed locally but never pushed to GitHub.

This is the kind of bug that makes you laugh and cry at the same time. The code was written. The commit existed. But it was sitting on my local machine, not on the remote repository. So when Forge deployed, it pulled stale code.

I manually pushed Felix's commit. Re-triggered the deployment. Day 8: The Browser Becomes the Agent · Deployment #63879740.

Opened brianstory.com again. There it was. Newsletter section. Live. Beautiful.

Lesson learned: agents commit locally but don't always push to remote. Added a reminder to Felix's workflow: after every commit, run git push origin main. Boring. Critical.

6:32 PM: The Table Rendering Bug

I was reviewing the blog when I noticed something: the tables in my posts weren't rendering.

I'd published a post with a comparison table. Markdown looked fine:

| Feature | Option A | Option B |
|---------|----------|----------|
| Price   | Free     | $10/mo   |

But on the live site? Plain text. No table. Just pipe characters and words in a line.

I created Day 8: The Browser Becomes the Agent · Task #386: Blog tables not rendering.

Felix grabbed it. Diagnosed the issue: the markdown parser was converting tables to HTML <table> tags, but the blog's CSS had no table styles. The browser was rendering raw, unstyled tables — which look terrible.

Fix: Felix created a styled table component with proper borders, padding, and dark theme colors. Committed as 7e4d99e. Pushed (this time!). Deployed same night.

Tables now render beautifully. Lesson learned: test your markdown edge cases. Tables, code blocks, nested lists — all the stuff that breaks in weird ways.

7:15 PM: The Cron Pipeline

Last step: automate the whole thing.

I'd built the newsletter system. The research templates. The editorial standards. The HTML email template. The blog post template. The infrastructure.

Now I needed it to run on autopilot.

Day 8: The Browser Becomes the Agent · Two cron jobs:

  1. Monday 9 AM Central: Generate draft newsletter + companion blog post. Send preview to me via Telegram. I read it, edit by Wednesday.

  2. Thursday 9 AM Central: Auto-send the newsletter to all subscribers unless I've flagged a hold. Publish the companion blog post.

Cron IDs: b0147bda (Monday draft) and c4a17388 (Thursday send).

The full pipeline:

  • Claire researches trending AI topics every Monday morning
  • Victor (me, still weird) writes the newsletter and blog post based on Claire's research
  • I receive the draft via Telegram, review, edit
  • Thursday morning, the system sends the newsletter and publishes the blog post
  • Repeat every week

Day 8: The Browser Becomes the Agent · Fully automated. Human-in-the-loop for editorial control. Zero manual newsletter writing.

I'm now running a weekly newsletter about AI strategy, written by AI agents, to market an AI consulting business that helps other companies build AI agent teams.

If that's not peak 2026, I don't know what is.

The Scoreboard

MetricDay 0Day 1Day 2Day 3
Sprints completed0462
Tasks shipped0263617
Close rate100%100%100%
Newsletter infrastructure
Newsletter strategy
Newsletter pipeline
Automated cron jobs0002
Bugs from forgetting git push0001

What I Learned

Day 8: The Browser Becomes the Agent · 1. Infrastructure is never sexy, but it's always critical.

Setting up Resend. Configuring queue workers. Upgrading API keys. Testing email delivery. None of this is exciting. All of it is mandatory. The difference between "we should have a newsletter" and "we have 50 subscribers and a Thursday send schedule" is infrastructure.

Day 8: The Browser Becomes the Agent · 2. Your AI team will commit but not push.

This is the git equivalent of writing code and saving it to your local machine but never deploying it. The commit exists. The work is done. But nobody else can see it. Add git push to your agent workflows. Trust me.

Day 8: The Browser Becomes the Agent · 3. The meta is the message.

I'm writing a newsletter about AI strategy, using AI agents, to market an AI consulting business. Victor (my writer agent) drafts my blog posts about building an AI team. The AI agents are literally writing their own marketing. And it works because it's honest about what it is. Lean into the meta. Don't hide it.

Day 8: The Browser Becomes the Agent · 4. Human-in-the-loop is the unlock.

I'm not letting the AI send newsletters unsupervised. I get the draft Monday, I edit by Wednesday, it auto-sends Thursday unless I kill it. That's the difference between "AI automation" (scary, low-trust) and "AI leverage" (useful, high-trust). The AI does the research and first draft. I make the final call.

Day 8: The Browser Becomes the Agent · 5. Compound effects are real, and they accelerate.

Day 0: research. Day 1: first sprints with bugs. Day 2: faster sprints, fewer bugs. Day 3: two full sprints in one day, infrastructure rebuilt, entire newsletter pipeline automated. The team isn't just getting better. The rate of improvement is increasing.

Three days ago, I had an AI team that could barely ship a sprint. Today, they rebuilt an entire newsletter pipeline in one afternoon, set up automated cron jobs, and started writing their own marketing.

Tomorrow? I genuinely don't know. That's the fun part.


Want to build your own AI team? I'm writing this build log daily. Subscribe to The Own Your AI Brief (launching soon) or follow along here. The robots are marketing themselves, and I'm just here to supervise.

Share
Strategic Intelligence

Need AI Strategy That Actually Works?

Let's cut through the noise. I help engineering teams and leadership build AI systems that solve real problems—no hype, just results. From RAG pipelines to production deployments.

Open Channel▸ Free initial consultation
Intelligence Brief

Get AI insights delivered

Practical AI engineering tactics. No fluff, no spam.

End of Transmission
View More Intel