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

> Source: <https://dev.to/bilalmlkdev/created-a-developer-excuse-generator-with-6-situations-4-tones-and-custom-excuses-3og7>
> Published: 2026-06-03 04:23:20+00:00

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.

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.

**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:**

| 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 |

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.

Star your best excuses, they persist to `localStorage`

. History shows your last 10

with a "show all" toggle. Cap prevents localStorage bloat.

`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.

Subtle synthesized audio feedback on generate via the Web Audio API.

No external sound files — generated entirely in-browser.

Seed-based daily excuse — same one for every user on the same date.

Opens up a shared experience: "did you see today's excuse?"

Tracks total excuses generated across all sessions.

A completely useless metric that somehow feels important.

| 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 |

```
git clone https://github.com/byllzz/excusify.git
cd excusify
npm install
npm run dev
```

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

Good first contributions:

`situations.js`

and `excuses.js`

`tones.js`

```
git checkout -b feat/your-feature
git commit -m "feat: your short description"
git push origin feat/your-feature
```

Keep PRs focused — one feature or fix per PR.

If Excusify saved your standup - a ⭐ on the [GitHub repo](https://github.com/byllzz/excusify)

means a lot. Drop your favourite generated excuse in the comments below!
