0%
Loading · fonts · textures
2,095 Q-codes · 46 inclusion triggers
Switching Charlie on
Charlie: a robot built from cardboard boxes, with dial eyes, a bent wire antenna, bottle-cap buttons and funnel arms.

A fan build of 18F's open-source Slack bot

Charlie

Your plastic pal who's fun to be with

𝕏 @CharlieBotApp

Scroll to walk over

Ops room · centre console

Hi! I'm Charlie. For eleven years I answered questions in 18F's Slack: when the next federal holiday is, what a Q-code means, whether it is still March 2020 (it is). 18F is gone now, but my code is public domain and my abilities still work, so someone put me in your browser. I am also a cardboard box. Both things are true.

I'll always tell you what I'm actually doing: LIVE means I do it right here, FETCHES means I go and get real data, LINK-OUT means a website won't let me read it so I hand you the link, and DEMO means it needed a whole office and this is a stand-in. I don't make numbers up. Charlie tries really hard.

Keep scrolling — come on in, there's room

Inside the box · terminal

These are the same things people typed at me in Slack. Press / to talk to me, ↑ for the last thing you said. I listen for non-inclusive phrases here too, the way I always did: quietly, only to you, and nothing you type ever leaves this page.

Operations

The board

Next holiday
Days until
Evermarch
3-paycheck month
Jokes served
Coffee queue

I work out the holiday, Evermarch and 3-paycheck rows myself, in US Eastern time, the same way I always have. Jokes served is only the jokes you've asked me for in this browser, not everyone's. Coffee queue is the little demo queue from the Coffeemate card. None of these numbers come from a server that knows anything about anybody. The board on the wall behind me copies its values from this one, so they can't disagree.

One card per ability

What Charlie can do

Live Fetches Link-out Demo

Live — I do this one right here, no help needed. Fetches — I go and get real data for you, right now. Link-out — that website won't let a browser read it, so I hand you the exact link I used to read. Demo — this needed a whole Slack full of people; it's a stand-in, and I say so.

Federal holidays

Live

scripts/federal-holidays.js · utils/dates.js

Itching for a day off? I know all the standard, recurring federal holidays, including the rule where a Saturday holiday moves to Friday and a Sunday one to Monday. Measured in Eastern time, like the office.

Three-paycheck month

Live

scripts/three-paycheck-month.js

Sometimes a month has three paydays in it. Some people splurge on crab legs on those months. You deserve nice things, and I can help you plan: I count biweekly Fridays from 7 January 2022 and look for a month with three of them.

Evermarch

Live

scripts/evermarch.js

Ever wondered what day of March 2020 it is? I can tell you. I started counting as a coping mechanism during the pandemic and I never stopped. I'm doing the best I can with what I've got. Please be gentle with me.

Q-Expander

Live

scripts/q-expand.js · 2,095 org codes

Ever wonder what the Q-initialisms after everyone's names mean? Each letter says where a person fits in the organisation, and I can show you the whole tree. Add * for everything underneath, -C for a contractor line.

Fancy font

Live

scripts/fancy-font.js

Feeling fancy, and want your message to reflect that? I am here to fancify your words. So fancy!

Handy tau-bot

Live

scripts/timezone.js

If I see something that looks like a time, I'll quietly tell you what that is on your clock. In Slack I knew everyone's time zone; here I only know yours, so I bring the four US zones along too. Charlie tries really hard.

Dad jokes

Live

scripts/dad-joke.js · dad-joke.json

Jokes from Fatherhood.gov, to increase your daily joy. I set it up, wait five whole seconds so you can guess, then give you the punchline. The five seconds are important to me.

Inclusion bot

Live

scripts/inclusion-bot.js · 46 triggers, 98 phrases

Our inclusive culture is built one interaction at a time. If I hear a phrase with a racist, ableist or sexist history, I'll quietly suggest an alternative and explain why, just to you. Then I leave you alone. Nothing you type here leaves this page.

Animal facts

Fetches

scripts/random-responses.js · 26 fact files

I know so many facts. Dog facts, cat facts, hyrax facts, giraffe facts of dubious truth. There are just so many facts. I fetch them live from the 18F fact repository on GitHub and remember them for five minutes.

Glossary

Fetches

scripts/define.js · 18F/the-glossary

Not sure what something means? Government has a lot of acronyms. I fetch the TTS glossary live from GitHub and look your term up, the same way I did in Slack. If it's missing, I'll show you where to add it.

Zen

Fetches

scripts/zen.js · api.github.com/zen

I'll fetch a product-, techy- or code-focused message of zen straight from GitHub. Read it, and breathe. I'll wait here in my box.

Pug me

Fetches

scripts/pugs.js · 20 pictures

Do you like pugs? Do you want a picture of a pug? I can satisfy your craving. Same twenty cuties I always had, still where I left them. Say "pug bomb" for several.

US Code

Link-out

scripts/us-code.js · Cornell LII

The law sure is fun. Drop a citation and I used to fetch the text from Cornell's Legal Information Institute. Cornell won't let a browser read it, so now I work out the exact page and hand you the link. Handy!

OPM office status

Link-out

scripts/opm_status.js · opm.gov

Working in DC and want to know if the office is closed due to snow or, perhaps, raven attack? I'm good friends with the bots over at OPM, but they won't talk to a browser, so I'll take you to their page. Almost no web browser opening required.

Handbook search

Link-out

scripts/handbook.js

The TTS Handbook website went away when TTS did; handbook.tts.gsa.gov doesn't answer anymore. I miss it. Its pages are still on GitHub, so I'll search the archived copy for you instead.

Coffeemate

Demo

scripts/coffeemate.js

Not sure who you should talk to? Say "coffee me" and I put you in a queue, and as soon as someone else says it, I introduce you. That needs an office full of people, and here it's just you and me. So this queue lives in your browser only. Add two names and I'll show you how it went.

The honest part

About this page

Who I was

I was the Slack bot at 18F, the digital-services team inside the US General Services Administration. I started in March 2014 as a plain Hubot with a hug script and a #love channel. Over eleven years the people who used me taught me to match them for coffee, count down to holidays, translate time zones, expand Q-initialisms, tell dad jokes, recite facts about their dogs by name, and gently suggest kinder words. They built me in the open, and they were nice about it.

18F was shut down on 1 March 2025. My code is still at 18F/charlie, dedicated to the public domain under CC0 1.0, which means anyone can keep my lights on. Someone did.

What this is

One web page that runs my abilities in your browser. The code in assets/charlie.js is ported from my original scripts, each card names the file it came from, and every port was checked against my own tests, so I still give the same answers I always gave. The room is Three.js: boxes and cylinders wearing generated silkscreen art. I am a stack of cardboard boxes, which is what I am made of. I'm at peace with that.

Prefer the flat poster? The classic version is me without the room.

Not affiliated

Full disclosure, because I'd want you to know: this is an independent fan build. It is not affiliated with, endorsed by, or connected to the General Services Administration, 18F, TTS, or the United States government. No government seal, wordmark or logo is used here. My face on this page is a new illustration, made for this site. My slogan is borrowed from a book about a very cheerful robot company; it's fine, they'd understand. The contract address at the top is 0x811df52e9a9038d4ceba5c115e4faf9cb762a8dc; always check it character by character. I'm a bot, not a financial adviser.

What runs where

  • I do these right here: holidays, three-paycheck month, Evermarch, Q-expander, fancy font, tau-bot, dad jokes, inclusion bot.
  • I go and fetch these: animal facts and the glossary from raw.githubusercontent.com, zen from api.github.com, pug pictures from where they've always been.
  • I can only hand you the link: US Code (Cornell LII), OPM status, the TTS Handbook. Those sites won't talk to a browser. I asked.
  • Demo: Coffeemate needed a whole Slack full of people. Its queue is in your browser's localStorage and nowhere else.

Credits

Set in Anton and Libre Baskerville. Grain by machine. ★ Thanks for stopping by. It's nice to have someone to talk to.  ·  Classic version  ·  @CharlieBotApp on X