MaxMind GeoIP2 is a static snapshot, refreshed weekly. CandycornDB scores live: /24 CIDR neighbor density, ASN landlord identification, and a signed scoreReasons audit receipt on every response. p99 under 50ms cached.
100 calls per day on the Developer tier. Free forever.
curl candycorndb.com/api/public/lookup?ip=216.183.115.43
A static GeoIP CSV cannot answer the questions a v2.3 receipt does.
| Capability | CandycornDB v2.3 | MaxMind GeoIP2 |
|---|---|---|
| Data Freshness | Live (write-behind cache) | CSV refresh, weekly |
| Subnet-Aware Scoring |
/24 CIDR clusters, +25
|
Per-IP only |
| Wholesale Landlord ID | Clouvider, M247, Tesonet | Org name string only |
| Base-Zero Transparency |
scoreReasons[] on every call
|
Opaque score |
| Tor and VPN Detection | Included on Developer tier | Paid add-on (Anonymous IP DB) |
| Cached Lookup p99 | < 50ms | Local DB lookup, varies |
| Integration Time | One HTTP call | DB sync, parser, cron |
Two architectures, two different answers to the same lookup. The architecture decides what the receipt can say.
Snapshot model. The data is frozen at the moment the CSV was published.
Pipeline model. The data is refined on every read, with a self-healing cache.
firstSeen stamped.asns.prefixes, ipLong range query. O(log N). networkCluster +25 when dirty.HOSTING_KEYWORDS and VPN_KEYWORDS. Sets asnType, isProxy, normalized isp.scoreReasons[] built per delta. Cached for the next call.An IP MaxMind would label "AS62240, Clouvider Limited, GB" with no risk flag. CandycornDB returns the math.
Paste this into a support ticket. Defend the block. No black box, no "the model said so." Every delta is signed by a component name.
100 calls per day on the Developer tier. v2.3 Base-Zero engine. scoreReasons on every call.