Inspiration
I am both a technologist and a comedian. I have been in plenty of standups where I can tell people are not tuned in and I have seen plenty of changelogs that I know no one read.
So I built Diff Riff (quite proud of the name!) based on the idea that if a changelog is trustworthy enough to use and entertaining enough to look forward to, more people will notice the work around them. Comedy is not the product by itself, it is the delivery mechanism that makes an otherwise boring work summarization worth tuning into.
What it does
Diff Riff looks at your Github history of Pull Requests and Commits and creates color commentary about it in the form of an audio stand up routine. These Riffs are sent to a Slack channel of the user's choosing on a regular basis and they are available and shareable on diffriff.com as well.
Each Diff Riff includes sources and cites links to the repo for users to dig deeper. The overall experience is designed to get everyone engaged and delighted to be in a standup, not dreading it.
How I built it
I used Codex extensively to build this. GPT 5.6 helped me with refining the product requirements doc, shaping the OAuth and deployment paths, building and testing the Worker, debugging Slack delivery, creating the private web experience, and iterating on the product language. The final app is not just a prototype, it has migrations, tests, a one-command deploy path, staging and production environments, and real integration boundaries.
I switched between GPT 5.6 Sol for planning, scoping, and architecting, I used Terra for much of the building and implementation, and I used Luna for quick fixes, asking questions about the code base, and quick targeted changes.
The Tech Involved:
- Cloudflare Workers + Hono for the application and HTTP routes.
- Cloudflare Workflows for durable generation runs, so interactive surfaces can respond promptly while a riff is produced in the background.
- Turso/LibSQL for workspaces, runs, OAuth state, sessions, and revocable share records.
- Cloudflare R2 for MP3 storage, served through authenticated or token-gated Worker routes rather than a public bucket.
- GitHub App + GitHub OAuth for repository access and private web authorization.
- Slack OAuth + Block Kit for multi-workspace delivery, setup, and feedback.
- GPT-5.6 for structured analysis and writing; ElevenLabs v3 for the final audio render.
The repository includes migrations, fixture-based testing, a full build check, and npm run deploy, which validates, migrates, and deploys staging and production.
Challenges I ran into
LLMs are not always very funny. I distilled a lot of my comedy into a prompt to try to get it to be funnier and I spent time refining the prompt a few times. The product did not feel like a standup set with the existing TTS models, so I used ElevenLabs instead of standard TTS models.
GPT 5.6 also initially tried to build the Slack app with just a Bot token, I had to have it build OAuth on a second pass. We also had a bit of trouble managing the channel selection, detecting if the bot was in a given channel, and other Slack quirkiness.
I also spent time refining the prompt to keep the target on the work and not the worker. I did not want the system to insult individuals with a joke, so I made sure it was lighthearted and addressed the work and not the people who submitted it.
Accomplishments that I'm proud of
First of all, I am pretty darn proud of the name. DiffRiff.com is descriptive, short, rolls off the tongue, and is and a dotcom!
Second, wiring all of this up with external APIs and orchestrating the interplay between Github, Slack, my app, OpenAI, ElevenLabs, and Cloudflare was a fun challenge of designing for and around their various capabilities. I am quite proud of the way we take advantage of a lot of their features and functionality.
What I learned
I learned that “make it funny” is not enough to be useful. The usefulness comes in making the important thing easier to notice, easier to remember, and easier to discuss.
I also learned that AI features become more credible when the boundaries are designed as carefully as the prompt. Structured outputs, source links, bounded inputs, fallback behavior, and a real delivery surface made a much bigger difference than trying to squeeze one more clever line out of the model.
I also learned that the new ChatGPT model family is quite good at design! I asked it for a marketing site that was not generic vibe-coded slop and it really nailed a unique design on the first try. I was pleasantly surprised by its creativity.
Finally, working with Codex reinforced how valuable a persistent implementation partner can be when the job crosses product decisions, infrastructure, integration debugging, and the small language choices that make an app feel finished. I ran it through brainstorming, implementation, questions, and all sorts of uses. It was great.
What's next for Diff Riff
I'll want to add pricing at some point. AI is not cheap, so the next logical step is to add pricing plans, perhaps per repo or per number of Riffs generated each time.
I also want to add additional comedy styles. I have done a lot of projects around making AI funnier, and the voice, persona, model choice, and prompt all interact to create unique voices. I'll definitely want a roster of different AI comedians!
Finally, expanding it to other surfaces like Microsoft Teams, email, and even other agents so I can create a Diff Riff and deliver it via API or MCP to other agents.
Built With
- cloudflare
- codex
- elevenlabs
- github
- gpt5.6
- hono
- openai
- turso
- typescript
Log in or sign up for Devpost to join the conversation.