# Show HN: Free text classification piece for Activepieces

> Source: <https://jeffyclassify.com/blog/activepieces-jeffy/>
> Published: 2026-10-20 02:26:41+00:00

Oct 2026 · Community Piece · Nico Brenner

Activepieces doesn't have a built-in text classifier. If you want to route messages by intent, detect sentiment, or categorize support tickets, you're building it yourself with an LLM step. That means writing a prompt, parsing JSON output, handling the cases where the model wraps its answer in markdown fences or returns something unexpected

Jeffy is a different approach. Logistic regression on frozen embeddings. No LLM, no prompt, no parsing. Same input always gives the same output. The Jeffy piece brings 70 pretrained classifiers into Activepieces as a dropdown

You give it text. It tells you what category it belongs to. 70 pretrained classifiers cover common tasks: customer support routing (77 banking intents), sentiment analysis, topic classification, spam detection, emotion detection, and more

The piece has four actions:

| Action | What it does | 
|---|---|
| **Classify Text** | Classify a single text against a pretrained task. Returns label, confidence, probabilities | 
| **Batch Classify** | Classify multiple texts in one request. Same output per text, faster than individual calls | 
| **List Classifiers** | List all available classification tasks on the server | 
| **Health Check** | Check if the Jeffy server is running and how many classifiers are loaded | 

Customer message comes in via webhook. Jeffy classifies it against 77 banking intents. A Router step sends it to the right team: account closures go to retention, lost/stolen cards go to urgent support, everything else hits the general queue

```
Waiting for input...
```

  This calls the real Jeffy API. Type a message, it classifies against `banking77` (77 intent classes), then routes it the same way the workflow does

You can add a Code step or use the AI piece to classify text with an LLM. It works for prototyping. But in production, LLM-based classification has real downsides

|  | LLM step | Jeffy | 
|---|---|---|
| Reliability | Output format varies between runs | Deterministic, always valid JSON | 
| Latency | 500ms – 3s per item | ~15ms local, ~300ms remote | 
| Cost | LLM API credits per call | Free (self-hosted or playground) | 
| API key | Required (OpenAI, Anthropic, etc.) | Optional, public playground works | 
| Setup | Write a prompt, parse the response | Pick a task from the dropdown | 
| Privacy | Data sent to LLM provider | Self-hostable, data stays local | 

`activepieces-piece-jeffy`
`playground.jeffyclassify.com` (free, no key needed)
  The piece defaults to `playground.jeffyclassify.com`, a free public instance with all 70 classifiers loaded. No API key, no signup

For production, self-host Jeffy on any machine with a CPU:

``` bash
$ pip install jeffy-classify
$ jeffy serve --port 8400
```

  Then point the connection to `http://localhost:8400`. Your data never leaves your network

If you need a classifier that doesn't exist yet, you can train your own with a few labeled examples. Jeffy trains in seconds on CPU, and you can export the model and load it on any Jeffy server
