We automate changelog generation in CityCatalyst using a Node.js script and OpenAI. On every new release tag, a GitHub Action extracts commit messages between the latest two tags, sends them to OpenAI’s GPT model, and receives a human-friendly summary in Keep a Changelog format. This summary is inserted at the top of CHANGELOG.md and committed automatically. This approach ensures our changelog is always clear, up-to-date, and requires no manual effort.