Server-side email filters — the kind you configure in Gmail settings or through a Sieve script on your IMAP server — are useful. They run before the email reaches your client, and they can sort incoming mail into folders automatically. But they have a ceiling. They only see the email as it arrives. They can’t interact with local data, your application state, or the context you’ve built up in your Kanban board.
cji.email’s local mail filter rules work differently.
What “Local” Actually Means
Local filters execute inside cji.email, on your machine, after the email has been received. This positioning unlocks capabilities that server-side filters can’t touch:
- Access to local data: A local rule can compare a sender against a local blocklist or allowlist you maintain in cji.email, without that list ever leaving your machine.
- Application state awareness: Rules can reference your current Kanban workflow — for example, automatically moving an email to
Kanboard/ToDowhen it matches a project keyword, rather than just moving it to a folder. - Retroactive execution: When you create a new rule, you can apply it to your entire local archive, not just incoming messages.
- Offline operation: Because filters run locally, they work even when you’re not connected to the internet. Syncing happens when connectivity is restored.
Boolean Logic That Actually Matches How You Think
Basic email filters work with simple “if/then” conditions: if the sender matches X, move to folder Y. This is fine for basic routing. It breaks down when your real-world conditions are more nuanced.
cji.email’s filter rule editor supports full boolean logic:
- AND: All conditions must match (e.g., from a specific domain AND contains a specific keyword in the subject)
- OR: Any condition can match (e.g., from this sender OR that sender)
- NOT: Exclude matches (e.g., subject contains “invoice” but NOT “paid”)
- Nesting: Combine these freely — (A AND B) OR (C AND NOT D)
Rules also support regular expressions for pattern matching against headers, subjects, and body text. If you want to match every invoice email regardless of whether the subject says “Invoice,” “INV-,” or “Bill” followed by a number, one regex condition handles all of them.
Practical Automations
Here are a few examples of what local filter rules make possible in practice:
Automatic Kanban placement. A rule matching emails from your project management tool (Linear, Jira, GitHub) that contain the phrase “assigned to you” automatically moves those messages to Kanboard/ToDo. You open cji.email and the work is already waiting in the right column.
Sender-based prioritization. Emails from your team’s domains get moved to a high-priority column. Everything else starts in Kanboard/Open for triage.
Newsletter quarantine. Instead of unsubscribing from everything (though cji.email’s one-click unsubscribe makes that easy too), you can route newsletters to a Reading folder automatically, keeping them out of your action columns entirely.
Dynamic tagging. A rule can apply multiple IMAP labels to a single message, so an email about a client project gets both the client’s label and the project’s label simultaneously.
Where This Fits in the Larger Workflow
Server-side rules and local rules complement each other. Keep server-side rules for things that work well at that layer — basic spam filtering, routing from shared mailboxes, forwarding to distribution lists. Use cji.email’s local rules for everything that requires nuance, application context, or access to data you’d rather keep off the cloud.
The result is an inbox that does far more sorting for you. The Kanban board works best when the signal-to-noise ratio is high — when the cards in each column actually represent things that belong there. Local filter rules are one of the key tools for achieving that.
Setting Up Rules
Local filter rules are configured in Settings → Filter Rules. Each rule has a name, a trigger (matching conditions), and one or more actions. Actions include: move to IMAP folder, apply label, mark as read, star, delete, or a combination. Rules run in order and can be reordered by dragging.
After creating a rule, you can choose whether to apply it retroactively to your local message cache. This is useful when you’ve accumulated a backlog and want to reorganize without manually sorting through hundreds of messages.