{"adoption": {"forks": 142, "observed_at": "2026-08-28T04:03:49.696553+00:00", "stars": 1163}, "canonical_url": "https://ross.abutalabs.com/products/phonelib", "card": {"archived": false, "artifact_type": "library", "description": "Ruby gem for phone validation and formatting using google libphonenumber library data", "domain": ["web-development"], "enriched": true, "function": ["parser", "form-handling", "serialization"], "health_score": 100, "homepage": null, "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["daddyz/phonelib"], "name": "daddyz/phonelib", "platform": ["ruby"], "pushed_at": "2026-08-26T07:27:33+00:00", "repo": "daddyz/phonelib", "stars": 1163, "tags": ["phone-number", "libphonenumber", "e164", "phone-formatting", "rails-integration", "telephony", "ruby", "internationalization"], "topics": ["ruby", "google-libphonenumber", "phone-validation", "phone-parse", "phone-number", "parsing"], "urls": [], "use_cases": ["validate phone numbers in a Rails app", "parse phone numbers to E164 format", "format phone numbers with national prefix", "handle international phone input from users", "convert vanity phone numbers to digits", "validate phone numbers with a default country fallback"], "what_it_is": "Phonelib is a Ruby gem for validating and formatting phone numbers based on Google's libphonenumber data. It supports parsing into E164 and national formats, default country configuration, special number parsing, and vanity number conversion.", "when_to_avoid": ["you need the full feature set of Google libphonenumber, as Phonelib implements only a subset", "you are not working in Ruby or a Ruby web framework"], "when_to_choose": ["you need reliable phone validation in Ruby backed by Google libphonenumber data", "you want ActiveRecord model integration for phone validation", "you need E164 or national formatting for stored phone numbers"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/phonelib", "repo": "daddyz/phonelib", "role": "main", "score": 99}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.696553+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:31:33.641605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e71f28af4de505242a6e0dfa0043186e5025ffaaa443a4c242876807318212be", "fetched_at": "2026-08-28T04:03:49.696553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/daddyz/phonelib"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.696553+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:31:33.641605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e71f28af4de505242a6e0dfa0043186e5025ffaaa443a4c242876807318212be", "fetched_at": "2026-08-28T04:03:49.696553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/daddyz/phonelib"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:31:33.641605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e71f28af4de505242a6e0dfa0043186e5025ffaaa443a4c242876807318212be", "fetched_at": "2026-08-28T04:03:49.696553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/daddyz/phonelib"}], "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:03:49.696553+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.696553+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.696553+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:31:33.641605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e71f28af4de505242a6e0dfa0043186e5025ffaaa443a4c242876807318212be", "fetched_at": "2026-08-28T04:03:49.696553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/daddyz/phonelib"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.696553+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.696553+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:31:33.641605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e71f28af4de505242a6e0dfa0043186e5025ffaaa443a4c242876807318212be", "fetched_at": "2026-08-28T04:03:49.696553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/daddyz/phonelib"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.696553+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.696553+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.696553+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:31:33.641605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e71f28af4de505242a6e0dfa0043186e5025ffaaa443a4c242876807318212be", "fetched_at": "2026-08-28T04:03:49.696553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/daddyz/phonelib"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.696553+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.696553+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:31:33.641605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e71f28af4de505242a6e0dfa0043186e5025ffaaa443a4c242876807318212be", "fetched_at": "2026-08-28T04:03:49.696553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/daddyz/phonelib"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:31:33.641605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e71f28af4de505242a6e0dfa0043186e5025ffaaa443a4c242876807318212be", "fetched_at": "2026-08-28T04:03:49.696553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/daddyz/phonelib"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:31:33.641605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e71f28af4de505242a6e0dfa0043186e5025ffaaa443a4c242876807318212be", "fetched_at": "2026-08-28T04:03:49.696553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/daddyz/phonelib"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:31:33.641605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e71f28af4de505242a6e0dfa0043186e5025ffaaa443a4c242876807318212be", "fetched_at": "2026-08-28T04:03:49.696553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/daddyz/phonelib"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 99}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5077, "days_push": 7, "days_rel": 7, "gap_med": 24, "n_releases_24m": 28}, "score": 99, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}