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)
activepieces-piece-jeffy or upload the tarball directly through the Activepieces API
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:
$ 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