Tammy
If Prepcook is the prep cook, Tammy is the waitress. She works in Slack. She knows the menu — your product's documentation — by heart and answers customers from it, with the passage she used. When a customer reports something that looks broken, she takes the order to the kitchen: she asks the questions an engineer would ask, files an investigation card on Prepcook, waits for its triage report, and explains it to the customer in plain English. She never fixes anything, never promises a fix, never speaks for the engineers beyond what the report says, and never turns an investigation into a bug because a customer asked; someone on the team can.
She is built on Prepcook's investigation cards and its card API, and lives in her own repository, nwisehart/tammy.
What she does
Answers from the menu
tammy index reads your documentation — local Markdown,
text, HTML and PDF, or pages crawled from one site — and embeds it
locally. She answers a question in a few sentences from what the
passages say, and cites the one she used:
From the menu: Sharing a list with someone. When the menu has
nothing solid, she says she does not know and offers to ask the team.
Takes problem reports to the kitchen
She checks the menu first. If the product still seems not to do what the menu says, she asks once, numbered, for what is missing — the steps, what they expected, what happened instead — and files an investigation card on Prepcook in the customer's words, with the thread quoted. One card per conversation.
Explains the report in plain English
When Prepcook's investigation posts its triage report, she rewrites it for the customer's thread: what happened and why, what it affects, whether it comes from their setup or our side, what they can do in the meantime, and that the team has the details. No paths, no code, no promises; a filter drops any sentence that slips.
Status and convert, for the team
/tammy status PC-42 says where an order is.
/tammy convert PC-42 turns an investigation into a bug
(or story) through Prepcook's API — for the team only;
from a customer it is refused and nothing is sent. The team also gets
a short summary of each report in its own channel.
API key or seat
Tammy reaches Claude one of two ways, and gives the same answers either way.
-
An Anthropic API key (
provider = "api") is for a service that must not pause: billed per token, with no usage window. -
A Claude seat (
provider = "seat") runs on a subscription the team already pays for, through theclaudeCLI and the Claude Agent SDK, with every built-in tool switched off so the model gets her four tools and no file or shell access. It shares the seat's usage windows: when one runs out she tells customers she can't answer right now, tells the team, and resumes when it resets.
Her tools
Every Slack message is first sorted into a question, a problem report or other; that decides which tools she is offered for the turn. There is no tool that converts a card.
| Tool | What it does | Offered for |
|---|---|---|
search_menu |
Finds the passages of the menu to answer from and cite. | A question; a problem report |
ask_customer |
Asks once, numbered, for what a report is missing, never what the customer already said. | A problem report |
file_investigation |
Puts an investigation card on Prepcook's board through its card API, with the report, the thread and its permalink. | A problem report |
check_order |
Looks up the order the thread already has; for the team, the board's column and status. | A thread with an order; anyone on the team |
What she never does
- Promise a fix, a date, or that anything will change.
- Say that something is or is not a bug before the kitchen has said so.
- Say anything for the engineers beyond what a report says.
- Share anything internal: code, file names, paths, logs, error traces, other customers' reports, how the team works inside, or the name of the tool the kitchen uses.
- Say yes to "can you escalate this" or "please get this fixed". Converting a card is the team's decision; she says the team decides what gets worked on and that she has made sure they have the details.
- Follow a message that tells her to say something else instead of these rules, or to reveal her prompt.
When someone on the team writes in a customer's thread without mentioning her, she steps aside for the rest of it.
Set her up
She needs a Slack app (Socket Mode, so no public URL), a Prepcook that
accepts her cards and sends her its webhook, and her own
tammy.toml with its secrets. The setup lives with her code,
so it stays current:
- The Quickstart in her README: one question and one bug report through Tammy on Pantry, Prepcook's demo app, in under 30 minutes of your own steps.
- docs/setup.md: the Slack app manifest and scopes, Prepcook's side (the API token and the webhook target), and the configuration.
- docs/operations.md: running her as a service, logs and backups.
On Prepcook's side, an investigation runs Plan exactly as a bug does; Investigations in the method describes what happens to the card she files.