← Back to posts

Herald: An AI Changelog System Built in a Day and Abandoned in a Week

· 6 min read

The Fastest I’ve Ever Built Something I Didn’t Need

On September 3rd 2025, I sat down with Kiro - AWS’s AI coding agent, which I was trying for the first time - and built an entire automated changelog system from scratch. Fifteen commits in a single day. I called it Herald.

By November 28th, I deleted all of it.

Herald is the most complete thing I’ve ever built that served absolutely no purpose. And the speed at which I built it is exactly why it existed at all.

What Herald Actually Was

The idea was straightforward: automatically generate human-readable changelogs from git history, powered by AI. The architecture looked like this:

  1. Git Analysis Lambda - scan commits, detect what changed, categorise by type
  2. Bedrock Content Generation Lambda - feed commit data to Claude, get back prose
  3. Build Orchestration Lambda - coordinate the pipeline
  4. README Extraction Lambda - pull context from project docs
  5. Full CDK infrastructure stack - the whole backend, properly deployed
  6. Historical archive system - search and navigation across past changelogs
  7. CI/CD pipeline - CodeBuild, CodeStar connections, the works

This wasn’t a prototype. This was a fully architected system with error handling, monitoring infrastructure, type definitions, data integration tests, and search functionality. In one day.

The Kiro Effect

Kiro was new to me. I was testing it out, seeing what it could do. And what it could do, it turned out, was make me feel incredibly productive while building something nobody asked for.

The workflow was intoxicating. I’d describe a component, Kiro would generate it, I’d review and tweak, commit, move on. The feedback loop was so tight that the question “should I build this?” never had time to surface. By the time you’d normally be sketching an architecture diagram, I had working Lambda functions.

There’s a specific danger here that I think anyone using AI coding tools has experienced: the cost of building drops so low that the decision to build becomes automatic. You don’t evaluate whether a changelog system is the best use of your time. You just… build it. Because you can. Because it’s Tuesday and you’re curious about a new tool and the code is flowing.

The commit messages tell the story. Look at the cadence:

  • feat(types): add comprehensive changelog type definitions
  • feat(aws): implement Git analysis Lambda function
  • feat(aws): implement AWS Bedrock content generation Lambda
  • feat(aws): implement README extraction Lambda function
  • feat(aws): implement build orchestration Lambda function
  • feat(aws): implement complete CDK infrastructure stack
  • feat(herald): implement complete historical archive system with search
  • feat(herald): implement comprehensive data integration and testing
  • feat(herald): implement comprehensive error handling and monitoring
  • feat(herald): implement comprehensive CI/CD deployment infrastructure
  • update kiro tasklist
  • feat(herald): complete task 16 and improve project configuration

That’s a full system. Types, four Lambda functions, CDK infrastructure, archives, testing, error handling, CI/CD. All in one sitting. That “update kiro tasklist” commit in the middle is the tell - Kiro was managing a task list and I was checking things off like a to-do app speedrun.

The Slow Death

September 4th: one more commit. Code quality cleanup.

Then September 9th: six commits trying to get the CI/CD pipeline working. CodeStar connection issues, CodeBuild cache conflicts, branch triggers pointing at the wrong branch. The kind of unglamorous infrastructure plumbing that AI tools are less good at - the stuff where you’re fighting AWS service integration quirks, not generating green-field code.

September 12th: Herald gets migrated from Biome to ESLint as part of a broader linting change. Routine maintenance. Not a sign of life, just a sign of it existing in the monorepo.

Then silence. Three months of nothing.

November 28th: “Remove Herald/Changelog and clean up GitHub connection from staging account.”

One commit. Gone.

The Real Problem

Herald wasn’t a bad idea. Automated changelogs are genuinely useful. The architecture was sound. The code was well-structured. If I’d needed it, it would have worked.

But I didn’t need it. Our startup is two people: me and my non-technical business partner. I knew what changed because I was the one changing it. The elaborate pipeline of Lambdas analysing git history and feeding it to Bedrock for prose generation was solving a communication problem we didn’t have - while the problems we did have (CI reliability, deployment automation, actual product features) sat waiting.

This is the pattern I keep seeing with AI coding tools: the bottleneck shifts. Before AI assistance, the bottleneck was implementation speed. You had to be selective about what to build because building was expensive. With AI tools, implementation is cheap but judgment becomes the bottleneck. The hard part isn’t writing the code anymore. The hard part is deciding what code to write.

Herald was a judgment failure dressed up as productivity.

The Shiny Object Pattern

I’d love to say Herald was an isolated incident, but it wasn’t. This period - mid-2025 - was peak “shiny object” season. Every new AI coding tool was an excuse to build something. Cursor, Kiro, Claude in various forms - each one got its inaugural project, and those projects had a suspicious tendency to be technically interesting but strategically irrelevant.

The pattern is always the same:

  1. Try new AI tool
  2. Need a project to test it on
  3. Pick something that sounds cool
  4. Build it in a day because the tool is good
  5. Feel productive
  6. Never use it
  7. Delete it three months later

The speed is the trap. If Herald had taken two weeks to build, I would have abandoned it after day two when the novelty wore off and I remembered that nobody was asking for it. But it took a day. The sunk cost was so low that I never hit the “wait, why am I doing this?” checkpoint.

What I’d Do Differently

Not “don’t use AI coding tools” - that ship has sailed and they’re genuinely transformative. But I’ve started applying a rule: before starting any new project with AI assistance, write down the user and the problem in one sentence. If you can’t, or if the user is “me, because it would be cool,” stop.

Herald’s sentence would have been: “Engineers will read AI-generated changelogs instead of git log.” Nobody was going to do that. Nobody was struggling with git log. The problem was fictional.

The other thing I’d do differently: separate the tool evaluation from the project. If you want to test Kiro, test it on something you already need to build. Don’t invent work to justify trying a new toy. The toy will still be shiny tomorrow, and you’ll have something useful to show for it.

The Epitaph

Herald lived for 86 days. In that time, it accumulated 15 commits on its birthday, a handful of pipeline fixes, one linting migration, and zero users. It was deleted in a single commit with no ceremony.

It was, by every measure, the most well-engineered thing I’ve ever thrown away.

Rest in peace, Herald. You were a very good answer to a question nobody asked.