<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>spamex blog</title><description>Notes on contact-form spam, cheap classification, and running a small API honestly.</description><link>https://spamex.dev/</link><item><title>Contact-form spam is not email spam, and your filter should know the difference</title><link>https://spamex.dev/blog/why-contact-form-spam-is-different/</link><guid isPermaLink="true">https://spamex.dev/blog/why-contact-form-spam-is-different/</guid><description>Email filters were trained on twenty years of inbox junk. The junk that arrives through a website form looks different, behaves differently, and has different tells.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Honeypot fields still work in 2026</title><link>https://spamex.dev/blog/honeypots-still-work/</link><guid isPermaLink="true">https://spamex.dev/blog/honeypots-still-work/</guid><description>The oldest trick in form protection catches more bots than any model we run, for free. Here is how to do it properly and where it fails.</description><pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Reason codes beat spam scores</title><link>https://spamex.dev/blog/reason-codes-not-scores/</link><guid isPermaLink="true">https://spamex.dev/blog/reason-codes-not-scores/</guid><description>A number between 0 and 1 tells you how sure a model is. It does not tell you what to do. Codes do.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Sender reputation without a blacklist</title><link>https://spamex.dev/blog/sender-reputation-without-a-blacklist/</link><guid isPermaLink="true">https://spamex.dev/blog/sender-reputation-without-a-blacklist/</guid><description>Sharing what one site learns with every other site is the strongest signal in spam filtering, and the easiest to abuse. How spamex does it with decay, hashing and a two-site rule.</description><pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate></item><item><title>What to do with a spam verdict</title><link>https://spamex.dev/blog/what-to-do-with-a-spam-verdict/</link><guid isPermaLink="true">https://spamex.dev/blog/what-to-do-with-a-spam-verdict/</guid><description>The API tells you spam or ham and why. The part that decides whether your customers notice is what your code does next. A policy that has held up across many forms.</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate></item><item><title>A false positive costs a customer. Tune for that.</title><link>https://spamex.dev/blog/false-positives-cost-customers/</link><guid isPermaLink="true">https://spamex.dev/blog/false-positives-cost-customers/</guid><description>Spam filters are usually judged by how much junk they catch. For a contact form the metric that matters is the opposite one.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Adding spam filtering to a form service in an afternoon</title><link>https://spamex.dev/blog/adding-spam-filtering-to-a-form-service/</link><guid isPermaLink="true">https://spamex.dev/blog/adding-spam-filtering-to-a-form-service/</guid><description>A walkthrough for form backends and builders: one platform key, a key per customer form, one call before delivery, and a button your customers will thank you for.</description><pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate></item><item><title>A field guide to contact-form spam</title><link>https://spamex.dev/blog/a-field-guide-to-form-spam/</link><guid isPermaLink="true">https://spamex.dev/blog/a-field-guide-to-form-spam/</guid><description>The thirty-odd genres of junk that arrive through a website form, from the obvious to the ones that fool people.</description><pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The CAPTCHA tax</title><link>https://spamex.dev/blog/the-captcha-tax/</link><guid isPermaLink="true">https://spamex.dev/blog/the-captcha-tax/</guid><description>Every puzzle you put in front of a visitor costs you some of them. Here is what it costs, who pays it, and what to do instead.</description><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate></item><item><title>What spamex stores, and why hashes are enough</title><link>https://spamex.dev/blog/what-we-store-and-why/</link><guid isPermaLink="true">https://spamex.dev/blog/what-we-store-and-why/</guid><description>A spam filter needs memory to work. It does not need your visitors&apos; messages. How the storage is designed so the default is privacy.</description><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate></item></channel></rss>