Gratitoonie is an experiment in gratitude, AI, and digital currency. Take a moment to write something you’re grateful for. A language model will read it and, if it’s convinced you’re being sincere, will reward you with Gratitoonies (GTNY). You can keep these digital coins as a reminder of your gratitude, or send them to someone else as a token of thanks.

Here’s an example of a GTNY wallet:

A Gratitoonie wallet

Traditional cryptocurrencies rely on proof of work or proof of stake. Gratitoonie relies on proof of gratitude.

How it works

  • Earn: write something you’re grateful for. Based on the proof of gratitude algorithm, you get 0–5 GTNY and a gratitude record. Your words stay private unless you choose to publish them publicly.
  • Send: pass Gratitoonies on to another member, or email a cheque to someone who isn’t a member yet (you can send them instructions on how to claim).
  • See what others are grateful for: read the expressions people have chosen to share publicly.

Gratitoonie is invite-only. You join with an invite code, or when someone else emails you a cheque. An account is just a username and a password - no email address, phone number, or real name is required.

Proof of Gratitude

Proof of Gratitude is the rule that decides when new Gratitoonies are created. It is not a proof that anyone is sincere, just a careful, consistent way of deciding.

  1. You write an expression of gratitude.
  2. It’s compared with expressions already submitted.
  3. A language model assesses whether it’s recognizable gratitude, how specific and meaningful it is, and how novel it is. It also screens out submissions that do not align with our terms of use.
  4. If accepted, the coins and a record are added to your wallet.
  5. Daily limits (3 expressions, 10 GTNY) keep it a small habit.

Coins, records, and cheques

Gratitoonies are fungible, like coins: once sent, a coin carries no memory of what earned it. A gratitude record is the opposite: a unique keepsake created with each accepted expression, which remembers its creator forever. When sending coins you can attach one (a Centiment) so the recipient knows the story behind them.

Here’s an example of where you can send Gratitoonies and attach a Centiment:

Sending Gratitoonies

To send Gratitoonies to someone who isn’t a member yet, you write a cheque: the site gives you a short message with a one-time link, which you paste into an email yourself (the site never sends email or sees anyone’s address). Opening the link lets them join with the coins already in their wallet. The amount is held until the cheque is claimed. If nobody claims it within 30 days, the coins are returned to you.

There are some nods to blockchain technology, described in greater detail in the About page. Gratitoonies have no monetary value and can’t be bought, sold, or taken outside the site.

How it’s built

Gratitoonie is a fairly conventional web app, kept deliberately small and cheap to run.

  • Frontend: Next.js and React, written in TypeScript. CSS for themes.
  • Backend: Python with FastAPI.
  • Database: PostgreSQL with pgvector. The ledger lives in the same database, with the hash chain checked on demand. It’s not a proper blockchain, but there is a verifiable record of all transactions that anyone can pull down as a JSON file.
  • AI: Novelty is assessed locally using embeddings generated with FastEmbed (bge-small). We then call OpenAI’s gpt-5-nano model to assess the expression of gratitude.
  • Docker: Everything runs in Docker Compose containers, with Caddy handling HTTPS certificates automatically.
  • Hosting: We host on an AWS Lightsail server. We build locally and deploy to the server to save on storage costs.

I did not write one line of code for this project. I wrote the specs, decided on strategy, and filled in the gaps for deployment. Even the about pages, terms of use, and privacy policy were written by the AI. I only wrote the post you’re reading now.

Check it out

Visit gtny.app. Since you have made it to the bottom of this page, here’s a special invite code: GTNY-ABXM-AS4Z valid for the first 10 users.