# How Humanizer Removes Chatbot-Specific Artifacts from Text

> Humanizer removes chatbot artifacts like disclaimers and sign-offs with a two-stage regex pipeline. Discover how it makes AI text sound more human.

- Repository: [Siqi Chen/humanizer](https://github.com/blader/humanizer)
- Tags: deep-dive
- Published: 2026-09-05

---

**Humanizer eliminates chatbot-specific artifacts by running a two-stage regex pipeline that strips sign-off phrases, knowledge-limit disclaimers, and overly-agreeable tones using patterns #20-#22 defined in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md).**

The open-source **blader/humanizer** project treats chatbot-generated remnants as a distinct class of textual artifacts requiring surgical removal rather than rephrasing. When processing input, the skill specifically targets conversational AI tells—such as assistant-style sign-offs and hedge phrases—that signal machine authorship. These artifacts are governed by three dedicated regex patterns that delete offending sentences entirely, ensuring the final output reads as human-written prose.

## The Three Chatbot-Specific Pattern Categories

Humanizer dedicates patterns **#20 through #22** exclusively to chatbot cleanup. Unlike content-level patterns that rewrite text, these rules apply empty-string replacements to delete constructs entirely.

### Pattern #20: Assistant Sign-Offs and Offers for Help

This pattern catches chatbot text left in the answer, including phrases like *"I hope this helps!"* and *"Let me know if you have more questions."* According to the source documentation in [`README.md`](https://github.com/blader/humanizer/blob/main/README.md), these sign-offs are removed completely rather than rewritten, eliminating the telltale assistant voice from the output.

### Pattern #21: Knowledge-Limit Disclaimers

Pattern #21 targets hedging language that reveals AI uncertainty, such as *"While details are limited in available sources..."* These knowledge-limit disclaimers are stripped out to prevent the final text from sounding like an AI guessing at facts. The regex matches the full disclaimer sentence and replaces it with an empty string.

### Pattern #22: Overly-Agreeable Tones

This pattern removes performative enthusiasm common in conversational AI, including phrases like *"Great question! You're absolutely right!"* By deleting these overly-agreeable tonal markers, Humanizer prevents the text from sounding scripted or sycophantic.

## The Two-Stage Detection Pipeline

Humanizer implements a **two-stage pipeline** to ensure complete artifact removal, even when chatbot phrases are nested or chained together.

1. **First Pass:** The raw input is scanned against all 35 patterns—including the three chatbot patterns. Each pattern is implemented as a regular-expression rule in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) that matches the offending construct and provides a replacement template. For chatbot patterns, the replacement is always an empty string.

2. **Second Pass:** After the initial rewrite, the text is re-evaluated against the same pattern list. This second scan catches residual artifacts that may have become visible after the first cleanup, guaranteeing that nested sign-offs or disclaimers are fully removed before final output.

## Source Code Implementation

The chatbot detection logic is defined across three primary files in the repository:

- **[`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md)** – Contains the raw skill definition and the full regex pattern logic, including the implementation of patterns #20-#22.
- **[`README.md`](https://github.com/blader/humanizer/blob/main/README.md)** – Documents the 35 pattern categories with usage examples and version history.
- **[`AGENTS.md`](https://github.com/blader/humanizer/blob/main/AGENTS.md)** – Provides guidance for AI agents on loading the skill without breaking compatibility.

These files collectively define the regex rules that identify chatbot-specific artifacts and specify the empty-string replacements that remove them.

## Practical Usage Examples

You can invoke Humanizer to strip chatbot artifacts using standard skill calls.

Basic usage with inline text:

```markdown
/humanizer

Please humanize this text:

I hope this helps! Let me know if you have more questions. While details are limited in available sources, the answer is clear.

```

Processing a file path:

```markdown
Humanize the prose in docs/launch-post.md

```

Focused cleanup with a custom prompt:

```markdown
/humanizer

Remove any chatbot sign-offs, disclaimer lines, or overly-agreeable tones from the following text:

Great question! You're absolutely right! Here's what I can tell you…

```

In each case, patterns #20-#22 delete the flagged sentences entirely, leaving only the core human-readable content.

## Summary

- Humanizer treats chatbot sign-offs, disclaimers, and agreeable tones as **distinct artifacts** requiring deletion.
- **Patterns #20-#22** in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) target these specific conversational AI tells.
- A **two-stage pipeline** ensures nested or chained artifacts are fully removed through double-pass regex evaluation.
- Replacements use **empty strings** rather than rephrasing, completely eliminating the machine-authored voice.
- The logic is implemented in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) and documented in [`README.md`](https://github.com/blader/humanizer/blob/main/README.md) and [`AGENTS.md`](https://github.com/blader/humanizer/blob/main/AGENTS.md).

## Frequently Asked Questions

### How does Humanizer detect chatbot-specific artifacts?

Humanizer uses three regular-expression patterns (#20, #21, and #22) defined in [`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md) to match specific chatbot tells: assistant sign-offs, knowledge-limit disclaimers, and overly-agreeable tones. These patterns scan the input text for exact phrase matches and trigger complete sentence removal.

### What happens to the text when Humanizer finds a chatbot pattern?

When a chatbot pattern matches, Humanizer replaces the offending sentence with an empty string, deleting it entirely rather than rewriting it. This ensures the final prose reads as if written by a human from scratch, without AI-generated filler or hedging.

### Why does Humanizer use a two-stage pipeline for removal?

The two-stage pipeline addresses nested and residual artifacts that may become visible only after initial cleanup. The first pass removes obvious chatbot phrases, while the second pass re-scans the rewritten text to catch any remaining fragments, ensuring complete sanitization of the output.

### Where are the chatbot detection patterns defined in the repository?

The regex patterns are defined in **[`SKILL.md`](https://github.com/blader/humanizer/blob/main/SKILL.md)**, which serves as the raw skill definition. Human-readable documentation of these patterns appears in **[`README.md`](https://github.com/blader/humanizer/blob/main/README.md)** (lines 101-109 specifically document the chatbot patterns), while **[`AGENTS.md`](https://github.com/blader/humanizer/blob/main/AGENTS.md)** contains integration guidance for AI systems loading the skill.