From a clear brief to a checked draft
Learn Whalory’s writing process, try the blind reading exercise, and inspect the boundaries of checks, feedback, and evidence.
Understand, write, read it again.
The same three steps for a two-line SMS and a product page. Only their length changes.
01
Understand the assignment.
Audience, destination, purpose, and the facts you know. At most three questions, and only when the answer would change the text.
In the example: five facts, one gap, and no question before the draft.
Illustrative exampleBrief - Reader
- Regulars on the bakery’s text list
- Where
- A text message, one part if it fits
- Purpose
- They come in at the new time
- Brand
- Rowan Bakery
- Known
- Starting Saturday, we open at 8 a.m.
- Unknown
- Sunday hours
- Asked first
- Nothing. An SMS is a small task, so the draft comes first and the gap stays visible.
02
Write within the brief.
Channel rules, your voice profile, and brackets for whatever is still unknown.
In the example: the name, then the new time. Sunday stays in a bracket, and the opt-out line comes last.
Illustrative exampleDraft Rowan Bakery: Starting Saturday, we open at 8 a.m. Sunday: [confirm: Sunday hours] Reply STOP to opt out
- Name, then newsThe bakery’s name and a colon, then the new opening time.
- Gap keptSunday hours stay in a bracket until someone confirms them.
- ChannelMarketing text: the name comes first and the opt-out line last. One part, no emoji, no link.
03
Read it again.
Scripted checks where your AI can run code, the same checklist by hand where it cannot, an editorial review, and your final decision.
In the example: one bracket is still open, and with its opt-out line the message fits in one SMS. The call is yours.
Illustrative exampleNote - Diagnosis: marketing text to regular customers. It invites them in, so it ends with an opt-out line.
- QA: script
- Follow-up: Do Sunday hours change too? Does your SMS provider add the opt-out line itself?
- Brackets leftOne: Sunday hours(Open)
- Length106 of 160; 1 message, GSM-7(Passed)
- Stock phrasesNone found by lint.py(Passed)
- ReviewA self-review pass, or a separate editor agent in the Claude Code plugin(Note)
Your call: fill the bracket or cut the line, then send.
Illustrative example
Brief
- Reader
- Regulars on the bakery’s text list
- Where
- A text message, one part if it fits
- Purpose
- They come in at the new time
- Brand
- Rowan Bakery
- Known
- Starting Saturday, we open at 8 a.m.
- Unknown
- Sunday hours
- Asked first
- Nothing. An SMS is a small task, so the draft comes first and the gap stays visible.
Draft
Rowan Bakery: Starting Saturday, we open at 8 a.m. Sunday: [confirm: Sunday hours] Reply STOP to opt out
Note
- Diagnosis: marketing text to regular customers. It invites them in, so it ends with an opt-out line.
- QA: script
- Follow-up: Do Sunday hours change too? Does your SMS provider add the opt-out line itself?
- Brackets leftOne: Sunday hours(Open)
- Length106 of 160; 1 message, GSM-7(Passed)
- Stock phrasesNone found by lint.py(Passed)
- ReviewA self-review pass, or a separate editor agent in the Claude Code plugin(Note)
Your call: fill the bracket or cut the line, then send.
- From the briefReader, place, and purpose are what the bakery told us.
- No question yetFor a message this small the draft comes first; Sunday waits in a bracket.
Read first. Reveal the labels later.
Two drafts from the same brief, labeled only A and B. Pick the one you would publish, then see which is which and what changed.
Nothing you choose leaves this page. We collect no votes and publish no win rate.
The brief
ForInstagram caption
caption for the new evening conversation class pls, info below
Supplied
- Class
- Spanish conversation, evening group
- Starts
- Tuesday, October 13
- When
- Tuesdays and Thursdays, 6:30 to 8 p.m.
- Group size
- eight people at most
- Sign-up
- a message on Instagram
Not supplied
- The fee
- Who teaches the class
Ready to unlock your full potential? 🚀 Our brand-new evening Spanish class is here! Taught by experienced native-speaking teachers, it’s the perfect way to build your confidence. Spots are filling fast, so send us a DM today to save your place!
Evening Spanish conversation starts Tuesday, October 13. We meet Tuesdays and Thursdays, 6:30 to 8 p.m., in groups of eight people at most. Fee: [fee]. Send us a message here to hold a seat.
If this were your business, which would you publish?
How Whalory’s checks improve.
The Hub is an optional service for signed rule updates and optional usage counts. It is currently off. You can use Whalory without it and update by downloading a new package. The stages below describe how a future Hub service would work.
Hub networking, automatic rule updates, and statistics sharing are disabled. The current package has no trusted production update channel.
Select a stage to read what it does.
Opt-in signals
Statistics sharing is disabled. The proposed service would require you to type a short confirmation code in your own terminal. Your AI assistant could not consent for you. A report would contain rule counts, not your text, file names, or prompts.
What leaves your machine
The local linters and MCP tools do not send your text. Hub networking is disabled. If the Hub opens in the future, each of the following data flows would have its own off switch:
- Automatic rule updates are disabled. The proposed service would download at most once a day or on request. It would add no identifier, but the server would see your IP address and the time.Turn off:
hub_client.py off updates - Weekly statistics remain off and closed. The planned opt-in service for Pro and Studio would send rule counts, rounded word counts and edit amounts, with a weekly license proof. It would send no text, file names, paths, prompts or license key.Turn off:
hub_client.py off - Weekly packets remain off and closed for every edition. The intended design keeps counts on your computer. Whalory would not post them; you would decide whether to share a packet through your own GitHub account.Turn off:
hub_client.py off packets
Changing your mind
Turning statistics off stops them at once and deletes the local files. It also asks the server to delete the reports it still holds, right away or on your next connection.hub_client.py off
Before you uninstall, delete the Hub’s data as well. Uninstalling alone leaves the Hub folder in place.hub_client.py forget
Off switches
One environment variable turns the whole Hub off: no downloads, no Hub files, and the checks keep their built-in rules.WHALORY_HUB=0
The Hub design includes a signed stop command that would pause rule updates across installations. The Hub is currently off.
Without the Hub
Core works fully without it. Nothing in the method, the checks, or your voice profile depends on sharing.
Before sharing opens
- A trusted production signing key is in place.
- Notices reviewed by a lawyer.
- The host’s written answer on what it logs.
- About 1,000 active paid licenses, for statistics.
How updates work
Update Whalory by downloading a new package and following the guide for your assistant. Automatic Hub rule updates are disabled. Each install format has its own update steps:
- Skill folder (Claude Code, Codex, Cursor, VS Code, Gemini CLI)
- Replace the whalory folder with the new version.
- claude.ai and the Gemini app
- Upload the new files again.
- Claude Code plugin
- claude plugin update, once the public marketplace exists.
- Pasted prompts and GPT or Gem packs
- Paste or upload the new text.
Release notes come inside every package, in CHANGELOG.md.Hub privacy notice (draft)
Before you install.
A skill package for the AI you already use. Before drafting, it works out the task, the channel, and the output language. It asks at most three short questions, and only when an answer would change the text. A missing fact becomes a bracket, never a guess, and the draft is checked before you see it. It writes in English and Persian.
Core is a whole folder. It holds playbooks for common tasks, craft and channel references in both languages, voice profile templates, and linters that run on your machine. The assistant opens only the part a task needs. For chats that cannot load skills there is a shorter paste-in prompt; it carries the method but none of the tools. Core packages include a paste-in prompt; the download page lists the available formats.
Core offers packages for assistants including Claude Code, Codex, Cursor, GitHub Copilot in VS Code, and Gemini CLI. Other formats include uploads, plugins, and paste-in prompts. The download page shows each route, its requirements, and whether it has been tested or reviewed against documentation.
Yes, each with its own craft files and its own linter. English defaults to US English, or the variant your profile sets. Persian defaults to the Persian of Iran, with its own digits, spacing, and quotation marks. Moving copy between the two languages, with every fact kept, is a Pro feature.
Whalory does not guess. The detail stays in a bracket, such as [confirm: weight], and the note after the draft lists every bracket, so you know what to confirm before publishing.
Core is free for everyone. Pro is a one-time $29 for one person, with 12 months of new versions, and adds every playbook, market file, agent, and tool. Studio is $199 a year for up to 5 people in one organization. Checkout for buyers outside Iran is not open yet, so the buttons lead to the waitlist.
Local linters and tools do not send your text. Hub updates and statistics sharing are off. Text you send to your AI assistant is handled under that provider’s own terms. The privacy page explains each data path.
Not in numbers yet. The study protocol and its scoring tools are ready, but no run has taken place, so we publish no scores. The evidence page shows how the study will work and what would count as a result, including a loss.
Another question? Ask it in the public repository.Open an issue on GitHub
How this site is written
We write this site with Whalory’s method and AI assistance. Source checks and editorial review are separate steps. Fictional examples are labeled, and each article includes its sources.
Evidence and evaluation method