Model or dataset
hexiecs/talk-normal avatar
hexiecs/talk-normal

talk-normal: a system prompt that strips AI filler from LLM answers

Make any LLM talk like a normal person. A system prompt that removes AI slop.

1,841 stars57 forksShellMIT

At a glance

What is it?
talk-normal is a single MIT-licensed system prompt that rewrites verbose model output into shorter, direct answers. The repository reports 72 to 73 percent length reductions on two models, but the rule set is the real artifact and it is maintained by hand.
Who is it for?
Adopt talk-normal if you are shipping a chat or support surface where users complain about padding and you want to change tone without touching model weights or hosting. Do not adopt it if your product depends on the model producing long structured deliverables, code walkthroughs or teaching material, because the prompt is tuned to cut length and will cut that content too.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 147 days ago.
What is it written in?
Mainly Shell, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem talk-normal targets: padding that survives every model upgrade

Ask a hosted model a one-line factual question and you often get four paragraphs back. The README calls this out directly with the phrase "No filler, no fluff, just the answer." The repository's own before-and-after for the question "What is Python?" is the clearest illustration: the original answer runs 1583 characters and arrives as a numbered list of six features with bolded labels, while the rewritten answer is 513 characters of continuous prose. Nothing factual was added between the two versions. The second one simply stops restating that Python is popular, stops labeling its own bullet points, and drops the closing sentence about community support. That is the whole target: the model's habit of narrating its own structure and softening every claim with a summary paragraph. The audience is anyone who has already picked a model and a hosting arrangement and now wants the output to read like a colleague wrote it. It is not a fine-tuning recipe, not a wrapper library, and not a hosted endpoint.

What the repository actually contains

The primary language listed for the repository is Shell, which is worth pausing on. A prompt project written in Shell means the deliverable is text plus whatever scripts exist to install or test that text. The README points to three supporting files: CONTRIBUTING.md for rule suggestions, CHANGELOG.md for recent rule history, and TEST_RESULTS.md for the full comparison across ten test questions. There are no releases retrieved for the project, so there is no versioned artifact to pin. You consume it by copying the prompt out of the repository at a commit you choose. That has a practical consequence most prompt projects share: your dependency is a file whose contents can change between the moment you read the README and the moment you clone. If you need reproducibility, record the commit hash alongside your own prompt, because the repository does not give you a tag to point at.

How a system prompt changes output length at all

The mechanism is the ordinary one for system prompts and it is worth being precise about the limits. A system prompt is prepended to the conversation and conditions the model's next-token distribution for the whole exchange. talk-normal does not post-process the response, does not truncate it, and does not run a second model pass to compress the first. The shortening you see in TEST_RESULTS.md is the model choosing different tokens because the instructions changed. That distinction matters when you evaluate it. A post-processing summarizer can guarantee a length ceiling; a prompt cannot. What a prompt can do is change which content the model considers worth emitting, which is why the Python example keeps the definition and the paradigm list but loses the community-support paragraph. The model is not summarizing its own draft. It is writing a different draft. The README states the prompt works with GPT, Claude, Gemini and LLaMA, and reports measured reductions on GPT-4o-mini and GPT-5.4 only. Those are the two data points the material supports.

The reported numbers and what they do not cover

The README gives 73 percent reduction on GPT-4o-mini and 72 percent on GPT-5.4, described as preserving all useful information. Ten test questions back those figures in TEST_RESULTS.md. Read the claim narrowly. Two models, ten questions, one prompt revision. The ten questions are not described in the material as a stratified sample of task types, so there is no basis for assuming the same ratio holds for a code-generation request, a multi-step debugging session, or a document you asked the model to translate. Length reduction on a definitional question is easy: the model has redundant material to cut. Length reduction on a request where the answer genuinely needs enumeration is a different problem, and the material does not report a case where the prompt was asked to shorten something that should not be shortened. That is the gap I would test first.

Getting it into a request

There is no install step described in the material, no package name, and no configuration key. You take the prompt text and place it in the system role of your API call or your client's system-prompt field. In the OpenAI chat completions shape that means the message object with role set to system, sent before the user turn. In Anthropic's API it is the top-level system parameter rather than a message in the array. In a local runner the equivalent is whatever flag or config entry that runner uses for a system message. Because the repository ships no releases, the sensible pattern is to vendor the prompt into your own codebase as a string constant or a checked-in text file, note the upstream commit in a comment, and treat upstream changes as a diff you review rather than something you pull automatically. The CHANGELOG.md file is the thing to read before accepting such a diff, since it records how the rules have moved.

Where the approach breaks down

The failure mode is over-application. A prompt that rewards directness and penalizes filler does not know which of your users wanted the long version. Ask it to explain a regex, and the useful part is often the step-by-step reasoning about why each group matches. Ask it for a migration plan, and the useful part is the enumeration of ordered steps. A prompt tuned to cut length will tend to cut those too, and the 72 to 73 percent figures describe exactly that pressure. The second limitation is that a system prompt is advisory. Models drift, providers update weights behind the same model name, and a prompt that produced tight answers last quarter can start producing looser ones without any change on your side. The repository's own CHANGELOG.md exists because the rules need revision, which is evidence that the prompt is not a one-time fix. The third is scope: this changes style, not correctness. If your model is padding because it is uncertain, removing the padding removes the signal that it was uncertain.

The alternative you are actually choosing between

The obvious comparison is a post-processing step: let the model answer at whatever length it wants, then run a second, cheaper model over the output with an instruction to compress it. The difference in approach is where the constraint lives. Post-processing gives you a hard, measurable ceiling and a separate artifact you can log, evaluate and tune independently of your main model. It also costs a second inference call per response and can drop details the compressor judges unimportant, with no way to know it did. talk-normal spends no extra tokens on a second pass and keeps the decision inside the same generation, so the model can decide that this particular answer needs its full length. You trade a guarantee for judgment. If your product requirement is "responses under 400 characters," the prompt is the wrong tool. If your requirement is "responses that read like a person wrote them," the second pass is the wrong tool, because a compressor tends to produce prose that reads like a compressor wrote it.

Maintenance cost and the MIT licence in practice

The maintenance burden is rule review, not dependency upgrades. There is no package to bump, no transitive tree, and no runtime to keep patched. What you inherit is a prompt whose rules change upstream, and a CHANGELOG.md that tells you when they did. Budget for re-running your own evaluation set whenever you accept an upstream diff, because the published TEST_RESULTS.md covers the maintainer's questions, not yours. The MIT licence is permissive: it allows commercial use, modification and redistribution, and it requires that the copyright notice and permission notice travel with copies or substantial portions of the software. It provides the software as is, without warranty. This is a general description of the licence text, not legal advice, and if you are embedding the prompt in a shipped product you should have your own counsel read the licence and the repository's CONTRIBUTING.md before you rely on either.

Editorial conclusion

Adopt talk-normal if you are shipping a chat or support surface where users complain about padding and you want to change tone without touching model weights or hosting. Do not adopt it if your product depends on the model producing long structured deliverables, code walkthroughs or teaching material, because the prompt is tuned to cut length and will cut that content too. Before you commit, open the prompt file on the main branch, check CHANGELOG.md to see how often rules have been rewritten, and run your own ten questions through the model you actually serve, since the published figures cover only GPT-4o-mini and GPT-5.4.

Official sources

  1. hexiecs/talk-normal on GitHub
  2. Issues
  3. License: MIT
  4. README
Community notes

Community notes