{"adoption": {"forks": 87, "observed_at": "2026-08-28T04:05:39.807920+00:00", "stars": 1816}, "canonical_url": "https://ross.abutalabs.com/products/spamblocker", "card": {"archived": false, "artifact_type": "application", "description": "Android Call/SMS blocker.", "domain": ["android-tools", "privacy", "developer-tools"], "enriched": true, "function": ["security", "privacy"], "health_score": 100, "homepage": null, "language": "Kotlin", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["aj3423/SpamBlocker"], "name": "aj3423/SpamBlocker", "platform": [], "pushed_at": "2026-08-25T16:54:34+00:00", "repo": "aj3423/SpamBlocker", "stars": 1816, "tags": ["call-blocking", "sms-blocking", "spam-filter", "caller-id", "kotlin", "android"], "topics": [], "urls": [], "use_cases": ["block spam calls on android", "filter unwanted sms messages", "block robocalls without changing my dialer app", "stop spam text notifications", "caller id and spam detection offline", "block calls from hidden numbers", "replace truecaller with a privacy-friendly blocker"], "what_it_is": "SpamBlocker is an Android app that blocks spam calls and SMS messages without replacing your default call or messaging apps. It works as a Caller ID app for calls and takes over SMS notifications, running without needing to stay active in the background.", "when_to_avoid": ["you need an iOS or desktop solution", "you want automatic cloud-based spam number databases and community reporting", "you need SMS sending or full messaging functionality - it only handles notifications and received message logs"], "when_to_choose": ["you want call/SMS blocking without replacing your default phone or SMS app", "you prefer a privacy-focused, offline blocker with no data collection", "you want an app that doesn't need to run persistently in the background", "you want fine-grained regex-based filtering rules"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/spamblocker", "repo": "aj3423/SpamBlocker", "role": "main", "score": 92}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.807920+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:20:34.894313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48b9ef682a9cba6011ecea9c5118457ffdc3cb3f30a9c3d0be40b6d07f8a9684", "fetched_at": "2026-08-28T04:05:39.807920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aj3423/SpamBlocker"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.807920+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:20:34.894313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48b9ef682a9cba6011ecea9c5118457ffdc3cb3f30a9c3d0be40b6d07f8a9684", "fetched_at": "2026-08-28T04:05:39.807920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aj3423/SpamBlocker"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:20:34.894313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48b9ef682a9cba6011ecea9c5118457ffdc3cb3f30a9c3d0be40b6d07f8a9684", "fetched_at": "2026-08-28T04:05:39.807920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aj3423/SpamBlocker"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.807920+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.807920+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.807920+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:20:34.894313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48b9ef682a9cba6011ecea9c5118457ffdc3cb3f30a9c3d0be40b6d07f8a9684", "fetched_at": "2026-08-28T04:05:39.807920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aj3423/SpamBlocker"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.807920+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.807920+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:20:34.894313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48b9ef682a9cba6011ecea9c5118457ffdc3cb3f30a9c3d0be40b6d07f8a9684", "fetched_at": "2026-08-28T04:05:39.807920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aj3423/SpamBlocker"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.807920+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.807920+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.807920+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:20:34.894313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48b9ef682a9cba6011ecea9c5118457ffdc3cb3f30a9c3d0be40b6d07f8a9684", "fetched_at": "2026-08-28T04:05:39.807920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aj3423/SpamBlocker"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.807920+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:39.807920+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:20:34.894313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48b9ef682a9cba6011ecea9c5118457ffdc3cb3f30a9c3d0be40b6d07f8a9684", "fetched_at": "2026-08-28T04:05:39.807920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aj3423/SpamBlocker"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:20:34.894313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48b9ef682a9cba6011ecea9c5118457ffdc3cb3f30a9c3d0be40b6d07f8a9684", "fetched_at": "2026-08-28T04:05:39.807920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aj3423/SpamBlocker"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:20:34.894313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48b9ef682a9cba6011ecea9c5118457ffdc3cb3f30a9c3d0be40b6d07f8a9684", "fetched_at": "2026-08-28T04:05:39.807920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aj3423/SpamBlocker"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:20:34.894313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48b9ef682a9cba6011ecea9c5118457ffdc3cb3f30a9c3d0be40b6d07f8a9684", "fetched_at": "2026-08-28T04:05:39.807920+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aj3423/SpamBlocker"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 62, "rhythm": 99}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 877, "days_push": 8, "days_rel": 9, "gap_med": 13.0, "n_releases_24m": 47}, "score": 92, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}