Start with the right information
Set the audience, purpose, and facts the text needs. Whalory guides your assistant to ask useful questions before drafting and mark information that is still missing.
Prepare a briefInstall Whalory as a skill in your AI assistant. It guides the assistant to clarify your brief, draft and revise, follow your voice, and review the result.
Whalory gives your AI assistant a writing process. Your assistant’s AI generates the text; Whalory’s local checks run without an API key.
Set the audience, purpose, and facts the text needs. Whalory guides your assistant to ask useful questions before drafting and mark information that is still missing.
Prepare a briefTurn your information into a draft, or make an existing text shorter, better organized, and suited to its reader. Keep the meaning you intended.
See the writing processLocal checks flag issues such as stock phrases, text length, and Persian character and spacing errors. They help you spot problems; factual accuracy needs a separate review.
Try the text checksDefine how formal or friendly the writing should be, which words fit, and which phrases to avoid. Give these preferences to your assistant for use in future drafts.
Build a voice profileKeep the facts while adapting the delivery for an email, a text message, a website, or a social post. Account for each format’s length, structure, and call to action.
Compare writing formatsCheck the draft against the original brief, supplied facts, and chosen voice. Whalory provides a review process; a separate editor agent depends on what your assistant supports.
Compare two revisionsPrepare a brief, build a voice profile, and export the details for your assistant. Live AI text generation is currently disabled in the website workspace.
The interactive examples below are prepared texts. Compare their formats and try language checks that run in your browser.
Give the product features, price, audience, voice, and intended channels.
The campaign command guides your assistant through planning, drafting, and reviewing website copy, a social caption, and a text message.
The comparison tool flags changes to numbers and names. You still check the meaning and verify the facts.
This is an illustrative workflow. Your assistant generates the copy; quality depends on your information and the model.
Prepare your own campaign briefFor recurring client or brand work, Pro adds a campaign command, version comparison, and batch checks. Core supports general writing and rewriting in your existing assistant.
Compare the editions in detailA text message is read for the news; a product page is read for the details. The same facts need a different draft for each place.
All three drafts use these facts and nothing else.
Prepared exampleCaféInstagram caption
Starting Placeholder: [start date] (note 3), Linden Coffee opens at 7 a.m., an hour earlier. (note 1)
A few of you asked for coffee before work. (note 2) Now there’s time for one.
In a hurry? Grab your coffee to go from the side window.
Still open: [start date] This draft still has gaps in brackets. Copy or download it as a draft, or fill them in first.
News in the first line
The new opening time is the news, so it sits above the “more” cut. “An hour earlier” saves regulars from doing the math between 7 and 8.
The reason you gave
The brief says a few regulars asked for this. Their request explains the change in their own terms and promises nothing new.
Start date kept open
No start date was supplied. The caption keeps the gap in plain view, so a guessed date cannot go out as news.
The feed cuts a caption off behind “more”, so the news goes in the first line. Hashtags go at the end, five at most.
These checks run in your browser on the text as it stands. They check form, not truth: whether a fact is right is still your call.
No gap left in brackets
Look againStill open: [start date].
Sources: whalory/SKILL.mdwhalory/scripts/lint_en.py
Nothing from the avoid list
PassNone of the phrases on the avoid list.
Consistent quotes, apostrophes, and spacing
PassOne style of quotes and apostrophes, single spaces.
Caption of 2,200 characters at most
PassWithin the limit: 198 of 2,200.
Source: whalory/data/channels/social.json developers.facebook.com
Five hashtags at most
PassWithin the limit: 0 of 5.
Source: whalory/data/channels/social.json threads.com
Stock phrases from Whalory’s own rule files, with the linter rule each one comes from:
en-cliche-open whalory/SKILL.mden-cliche-open whalory/SKILL.mden-cliche-open whalory/SKILL.mden-superlative whalory/references/en/claims.mden-superlative whalory/references/en/claims.mden-superlative whalory/references/en/claims.mden-buzzword whalory/references/en/ai-tells.mden-journey whalory/SKILL.mden-moral-close whalory/references/en/ai-tells.mden-ai-vocab whalory/references/en/ai-tells.mdAnd this example brand’s avoid list, the way a voice profile keeps one:
Sources: whalory/references/voice-profile.mdwhalory/SKILL.md
Here is the same message, written badly on purpose. Edit it until every check passes.
The flawed version loads with the page’s script, because the checks run in your browser.
Eight working habits Whalory brings to the AI you use. We wrote each example for this page.
Core, the free edition, includes the first seven; the eighth is a study that has not run yet.
Whalory asks only when the answer would change the text, and never more than three questions at a time.
Illustrative example
Product page for our handmade candles. Mention the fast delivery.
Do you know when an order arrives, or only when it leaves you?
A customer buying a birthday gift may read “fast delivery” as a promise that it will arrive in time.
We ship every order within one business day.
Arrival stays out of the sentence until someone confirms it.
A number, a name, or a promise missing from your facts gets a bracket, never a guess.
Our cedar candles burn for 60 hours.
Our cedar candles burn for [confirm: burn time].
Burn time is not in the facts, so “60 hours” was a guess.
A long text goes out in several parts. This counter splits it by encoding, with the same rules as Whalory’s own counter.
One message holds 160; once it splits, each part holds 153. Room for 44 more before the next split.
Messages: 1. Encoding: GSM-7, the basic alphabet.
The numbers follow the GSM-7 and UCS-2 rules in Whalory’s counter. Your SMS provider may count or bill differently.
A voice profile keeps your dials and your words. Whalory reads it before every task.
Its eight dials
| Say | Don’t say |
|---|---|
| voice profile | brand voice document |
| Whalory Pro | Whalory Premium |
The English checks catch mixed US and UK spelling, stray straight quotes, and a numeral that opens a sentence. Persian copy gets checks of its own, for half-spaces and Persian digits.
12 "Cedar" candles are back. Today’s orders ship by 5pm & the rest ship tomorrow, each in a gray box with a personalised label.
Twelve “Cedar” candles are back. Today’s orders ship by 5pm and the rest ship tomorrow, each in a gray box with a personalized label.
en-numeral-starta numeral opens the sentenceen-quote-mixstraight and curly quotes in one texten-double-spacetwo spaces after a full stopen-ampersandan ampersand in running texten-spelling-mixUS and UK spelling in one textStock phrases that make English copy sound generated get flagged by name. Try a sentence of your own.
Patterns found: 3
en-cliche-openWarningIn today’s fast-paced worldStock opening. Start with the fact.en-buzzwordWarningunlockBuzzword. Say what it does, and for whom.en-buzzwordWarningseamlessBuzzword. Say what it does, and for whom.Patterns found: 3
Twelve rules from Whalory’s English linter run here, in your browser. Nothing leaves the page, and the full linter checks much more.
Scripts check what a machine can count. A careful reading checks the rest, and the note says which checks ran.
Pass your driving test in 30 days.
Facts supplied: a 30-day driving course. No pass rate.
The facts give a 30-day course and no pass rate. A learner paying for lessons may read this line as a promise about the result. Keep the 30 days and drop the promise: “A 30-day course for the driving test.”
Who reviews: the Claude Code plugin includes a separate editor agent in both Core and Pro. In other hosts, independent review depends on their agent capabilities; otherwise the assistant reviews its own draft in a separate pass.
A comparison with raw AI, with its method fixed before any run.
No run has taken place, so there are no results to show.
Read the method