Recognition wall of custom kudos cards, plus who gets missed

By General Input

Every kudos your team has ever sent, as illustrated cards in one grid, with a quiet this quarter list so praise stops landing on the same five people.

Integrations

  • Generate Image
  • Slack
  • Google Drive

Type

App

Categories

  • HR & People

Build me a recognition wall app for my team. The point is that recognition becomes visible and permanent: every kudos anyone has ever sent lives on one wall as a custom illustrated card, and managers can see at a glance who has been quietly overlooked.

The home view is the wall itself. A grid of every kudos card ever sent, newest first, rendered from the archived artwork. Each card shows the generated illustration, who recognized whom, the reason in their own words, the quarter it was sent in, and a link back to the Slack message where it was posted. Two filters sit above the grid, one for team and one for quarter, and the visible counts update as you filter. Lazy load the images and paginate so the wall stays fast once there are hundreds of cards.

The compose flow is the heart of the app. A Send kudos button opens a form where you pick the teammate from the Slack workspace roster (Slack, List Users, filtered to active humans with bots and deactivated accounts removed), write the reason in plain language, and choose a card style from a small set of presets such as hand drawn and playful, retro trading card, clean and corporate, or comic panel. Block self recognition: the signed in user must never appear in their own recipient picker, and the send handler must reject it again server side. Require a real reason rather than a single word.

When they hit send, one handler runs the whole chain. First it generates the card art with Generate Image (Generate an Image) at a 1:1 aspect ratio, building the image prompt from the chosen style, the recipient's name, and the substance of the reason that was written. Generate Image returns base64, so decode it before doing anything else with it.

Next it archives the card to Google Drive, because Drive is what lets the wall keep rendering the art forever. Keep one parent folder for the wall and, inside it, one folder per quarter such as 2026 Q3. Look for the quarter folder with List Files using a Drive query on folder name and parent, and create it with Create Folder when it does not exist yet. Upload the decoded image with Upload File (Multipart), named after the recipient and the date, into that quarter folder, and use Create Permission so everyone who opens the wall can view the file. Store the Drive file id on the entry.

Then it posts to Slack. Upload a File puts the card image into the kudos channel, Send a Message posts the recognition text alongside it, and Get Permalink fetches the link to that message. Write the message so it names the sender explicitly, for example Maya recognized Chris for..., because the app posts through one connected Slack account rather than as each individual sender. Save the permalink on the entry so every card on the wall links back to the real conversation.

The app keeps its own ledger in its own persistence, not a spreadsheet. One row per kudos, holding sender, recipient, the reason text, the card style, the Drive file id, the Slack permalink, the team label, the quarter, and the timestamp. Everything the wall shows comes from this ledger joined with the archived artwork.

The view managers actually come back for is Quiet this quarter. Take the Slack roster from List Users, subtract everyone who has received at least one kudos in the selected quarter, and list the rest with their team and the date they were last recognized, or Never. Each row gets a Recognize button that opens the compose form with that person already selected. This list is the whole reason the app exists, so give it real estate rather than burying it in a tab nobody finds.

Slack profiles do not reliably carry a team, so let an admin set a team label per person, stored in the app, and use those labels for the team filter and for grouping in the recap. Default anyone unlabelled to Unassigned.

Every user gets a personal view called My kudos, split into what they have sent and what they have received, showing the same cards and links. Match the signed in user to their Slack identity so this works without anyone having to pick themselves from a list.

Add a Quarterly recap button that kicks off a background agent. The agent reads the ledger for the chosen quarter, groups recognition by person and by team, drafts a written recap covering the totals, the standout stories, and which teams gave the most, generates a celebration collage with Generate Image (Generate an Image) featuring the most recognized teammates, posts the recap and the collage into the kudos channel with Slack Upload a File and Send a Message, files the recap text and the collage into that quarter's Drive folder with Upload File (Multipart), and finally writes a saved recap back into the app. Saved recaps live in a Recaps view where anyone can reopen a past quarter, and the button shows a running state while the agent works.

Small things that matter: show an empty state on the wall that pushes people straight into the compose flow, show the card art at full size when a card is opened, and confirm each send with a link directly to the Slack message.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredChat quality review board for LiveChat support leadsWin back no-show and cancelled appointments every morningLive Loop returns analytics with product-level drill-downNewsletter pre-flight and approval board for Mailjet sendsTurn a prospect spreadsheet into personalized sequence enrollmentsMailjet email delivery lookup console for support teamsCatch feature flags that never got switched on in productionKajabi customer support console for member access fixes