Official Hollywoo Production

The Most Prestigious Comedy Stage in Your Slack Workspace.

Submit a joke. Earn an EP-ID. Get roasted by your coworkers. Build a legacy. Or don't. BoJack didn't and look how that turned out.

The "D" in Hollywoo has been stolen. We are working on it.

Meet the Cast

Three personas. One workspace. Zero chill.

BoJack Horseman portrait

BoJack Horseman

Posts Dad Jokes on odd days

Washed-up 90s sitcom star. Posts Dad Jokes on odd days from icanhazdadjoke.com. Will make it weird.

Princess Carolyn portrait

Princess Carolyn

Posts Puns on even days

Your agent, your mother, your therapist, your problem. Posts Puns from JokeAPI on even days. Somehow manages everything.

Mr. Peanutbutter portrait

Mr. Peanutbutter

Sends the welcome DM

Good boy. Great energy. Zero self-awareness. Sends the welcome DM, enforces the rules, celebrates your milestones. HOORAY!

How It Works (It's Three Steps, We Counted)

01

Take the Stage

Mr. Peanutbutter

Type /pitch in Slack. A modal pops up. Write your best (or worst) material. Check the box confirming it meets Standards and Practices.

Has this ever happened to you? You have a joke but nowhere to put it. Well, we solved that problem!

02

Earn Your EP-ID

Princess Carolyn

Every approved entry gets a unique Episode ID — EP-001, EP-002, and so on forever. Your joke is posted as a branded Stage Entry Card. Your career has officially begun.

EP-001

I have been planning your comeback since before you needed one.

03

Face the Audience

BoJack Horseman

The workspace votes. Certified Cringe 💀 or It’s Fine I Guess 🐴. One vote per person. The card updates live. Your Cringe percentage is logged to your permanent Wit-ness Record.

Don’t worry. I’ve been humiliated by better audiences than this.

Every Feature Is a Cry for Attention

Eight features. Each one slightly more unnecessary than the last.

/pitchTake the Stage

The slash command that launched a thousand bad punchlines. Opens a modal. Requires a checkbox. Standards and Practices are not optional, and neither is this feature.

Live VotingCringe-o-Meter

Two buttons. One dignity. Certified Cringe 💀 or It’s Fine I Guess 🐴. Cards update in real time. Your coworkers will not be kind. That’s the point.

Wit-ness Record

Your permanent career portfolio. Episodes filed, Cringe percentage, career rating, paginated episode history. Accessible from any entry card. You will be judged. Extensively.

Encore Queue

Hit the 3-entry daily limit? Mr. Peanutbutter saves your joke and auto-posts it the next morning. No material is wasted. BoJack wishes someone had done this for his career.

NSFW ModerationStandards & Practices

A content blocklist with whole-word regex matching. Blocked entries are logged with the matched word, user, and timestamp. The Cringe Warden also deletes image posts and DMs offenders. This is a text-only stage.

Weekly Specials

Every week, the active persona posts a curated quote from the actual BoJack Horseman show. Also: if you submit a show quote as your own material, it gets blocked. Original content only. We know all the quotes.

Daily Broadcasts

BoJack and Princess Carolyn take turns posting curated jokes on a randomised schedule between 9am–9pm UTC. Daily. Whether they feel like it or not.

Warden's Watch

Startup heartbeat to a private logs channel. Background thread watching the encore queue and show runner. Health monitoring for a Slack bot. Is this necessary? Probably not. Did we build it anyway? Obviously.

“Why does this exist?”

It started as a joke channel.

Then someone submitted something NSFW.

Then someone submitted a BoJack quote as their own material.

Then we needed an encore queue.

Then we needed health monitoring.

Then we had 213 passing tests, a SQLite database with WAL mode, a dual-persona show runner, a background retry warden, and a full CI pipeline on GitHub Actions.

As Mr. Peanutbutter would say: “What is this, a crossover episode?” Yes. It is. Between a silly Slack channel and an engineering project.

  • Python 3.14
  • uv
  • Slack Bolt
  • SQLite WAL
  • Socket Mode
  • Threading
  • langdetect
  • requests
  • colorlog
  • pytest
  • GitHub Actions CI
  • icanhazdadjoke API
  • JokeAPI v2
  • Cloudinary
  • Python 3.14
  • uv
  • Slack Bolt
  • SQLite WAL
  • Socket Mode
  • Threading
  • langdetect
  • requests
  • colorlog
  • pytest
  • GitHub Actions CI
  • icanhazdadjoke API
  • JokeAPI v2
  • Cloudinary