How to Build an AI-Powered Product Changelog

Auto-generate release notes from commits and PRs

Ad placeholder (leaderboard)

Why an AI changelog generator is worth building

A good changelog keeps users informed and signals an actively maintained product, yet most teams let theirs rot because writing release notes by hand is tedious and easy to defer. An AI-powered generator removes that friction: it takes the raw record of what changed — your commits and merged pull requests — and turns it into grouped, readable, user-facing notes in seconds. You stay in control by reviewing the draft, but the blank-page problem vanishes and your changelog stays current. This tutorial walks through the full pipeline, and the tool below drafts the LLM prompt for you from your own commit list.

How it works: from commits to release notes

The pipeline has four stages. First, collect the raw changes: run git log <previous-tag>..<new-tag> --pretty=format:"%s%n%b" to capture commit subjects and bodies, and optionally fetch merged PR titles and descriptions from GitHub or GitLab’s API for richer context. Second, classify and group: send those changes to an LLM with instructions to bucket them into Features, Fixes, Improvements, and Breaking Changes, discarding internal noise like dependency bumps and refactors. Third, rewrite for users: ask the model to translate developer shorthand (“fix npe in auth guard”) into clear user language (“Fixed an error that could occur when signing in”). Fourth, publish: render the result to your changelog page, a GitHub release, or an in-app notice. The work is far easier if your commits follow a convention — Conventional Commits prefixes like feat:, fix:, and chore: give the model clean signal to group on.

Tips for accurate, trustworthy output

The two failure modes to guard against are misclassification and invention. Constrain the model explicitly: tell it to use only the provided input, to omit trivial or internal changes, and never to add features that are not present in the commits. Use a low temperature so factual content stays consistent, and prefer a fixed prompt template so every release reads in the same voice. Crucially, keep a human in the loop — the AI draft is a starting point, not a publishable artifact, and a quick edit catches overstated claims and tone issues before users see them. Once the flow is reliable, automate it in CI: trigger on a new tag, run the pipeline against the LLM API, and open a pull request with the drafted notes for a human to approve. Use the prompt builder below to produce the exact instruction you would send to your model.

Ad placeholder (rectangle)