DEV Community

Bilal Malik
Bilal Malik

Posted on

Created a developer excuse generator with 6 situations, 4 tones, and custom excuses

We've all been there. Standup starts in 3 minutes. The bug is still there.
The deploy failed. The PR has been sitting unreviewed for two days.
And "I don't know" just isn't professional enough.

So I built Excusify. Pick your situation, pick your tone, get a believable excuse.
Copy it. Send it. Survive the standup.

Live at excusify.vercel.app - open source, MIT licensed.


Table of Contents


What It Does

Pick from 6 built-in engineering situations, choose a tone, and get a context-aware excuse
instantly. Every generated excuse gets its own shareable URL. There's an Excuse of the Day
that's seed-based — same excuse for everyone on the same date.

72 hand-written excuses across all situation + tone combinations. Plus AI generation for
anything custom via the Claude API.


Situations & Tones

6 built-in situations:

Situation For when...
Bug still exists It was working on your machine
Missed deadline Scope was definitely not creep
Production went down It was like that when you got there
PR not reviewed You've only pinged them 4 times
Deploy failed CI/CD had other plans
Missed standup You were "in deep focus work"

4 tones:

  • Professional — For your PM
  • Chaotic — For your tech lead
  • Desperate — For your team
  • Corporate BS — For literally anyone in management

Sharing Options

Option How
Download PNG Tweet-ready image card via html2canvas
Twitter / LinkedIn One-click native share compose
Slack / WhatsApp Pre-formatted deep links
Copy as Slack block Paste-ready bold + quoted format
Shareable URL Unique link per excuse encoded in URL params

AI-Powered Custom Excuses

The built-in 72 excuses cover the classics. But for truly unique situations —
the cursed legacy codebase, the third rebase in a day, the meeting that could have been
an email — there's a custom input that hits the Claude API and generates a fresh,
believable excuse on the spot.


My Favourite Details

Favorites & History

Star your best excuses, they persist to localStorage. History shows your last 10
with a "show all" toggle. Cap prevents localStorage bloat.

Keyboard Shortcuts

Space to generate, C to copy, F to favorite, S/T to focus pickers,
? to show the shortcuts overlay. Full keyboard flow if you never want to touch the mouse.

Sound Effects

Subtle synthesized audio feedback on generate via the Web Audio API.
No external sound files — generated entirely in-browser.

Excuse of the Day

Seed-based daily excuse — same one for every user on the same date.
Opens up a shared experience: "did you see today's excuse?"

All-Time Counter

Tracks total excuses generated across all sessions.
A completely useless metric that somehow feels important.


Tech Stack

Tool Purpose
React + Vite Component architecture and build tooling
Tailwind CSS Utility-first styling, dark/light theme
html2canvas DOM-to-PNG export for share cards
Web Audio API Synthesized sound effects, no external files
Claude API AI-powered custom excuse generation
Vercel Deployment

Run It Locally

git clone https://github.com/byllzz/excusify.git
cd excusify
npm install
npm run dev
Enter fullscreen mode Exit fullscreen mode

Contributing

Got a better excuse? Found a tone that's missing? Open a PR.

Good first contributions:

  • [ ] Add new situations to situations.js and excuses.js
  • [ ] Add new tones — follow the pattern in tones.js
  • [ ] Improve custom AI excuse templates
  • [ ] Translate excuses — open a PR with a new locale file
  • [ ] Accessibility improvements — ARIA labels, focus management
git checkout -b feat/your-feature
git commit -m "feat: your short description"
git push origin feat/your-feature
Enter fullscreen mode Exit fullscreen mode

Keep PRs focused — one feature or fix per PR.


If Excusify saved your standup - a ⭐ on the GitHub repo
means a lot. Drop your favourite generated excuse in the comments below!

Top comments (0)