{"adoption": {"forks": 365, "observed_at": "2026-08-28T04:06:56.884543+00:00", "stars": 2499}, "canonical_url": "https://ross.abutalabs.com/products/fnando-browser", "card": {"archived": false, "artifact_type": "library", "description": "Do some browser detection with Ruby. Includes ActionController integration.", "domain": ["web-development", "backend"], "enriched": true, "function": ["parser", "developer-tools"], "health_score": 36, "homepage": null, "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["fnando/browser"], "name": "fnando/browser", "platform": ["ruby"], "pushed_at": "2025-06-10T23:37:39+00:00", "repo": "fnando/browser", "stars": 2499, "tags": ["user-agent", "browser-detection", "rails", "actioncontroller"], "topics": ["ruby", "rails", "user-agent", "browser-detection"], "urls": [], "use_cases": ["detect browser type and version from user agent in Ruby", "identify bots and search engine crawlers in a Rails app", "detect mobile devices and tablets from request headers", "serve different content based on browser or platform", "detect iOS or Android version from user agent", "block or flag bot traffic in a web application"], "what_it_is": "A Ruby gem for detecting browsers, bots, devices, and platforms from user agent strings. It includes ActionController integration for Rails applications.", "when_to_avoid": ["you need client-side feature detection rather than user agent sniffing", "your project is not in Ruby", "you need high-throughput log analysis of user agents at scale"], "when_to_choose": ["you need user agent parsing in Ruby or Rails", "you want device, platform, and bot detection in one gem", "you need ActionController integration for request-based detection"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/fnando-browser", "repo": "fnando/browser", "role": "main", "score": 44}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.884543+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:27:00.107949+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "61b5cc1f9000369d1871e9b12147fafa11a40a45a6531211ee67d635f1f69e7a", "fetched_at": "2026-08-28T04:06:56.884543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fnando/browser"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.884543+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:27:00.107949+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "61b5cc1f9000369d1871e9b12147fafa11a40a45a6531211ee67d635f1f69e7a", "fetched_at": "2026-08-28T04:06:56.884543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fnando/browser"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:27:00.107949+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "61b5cc1f9000369d1871e9b12147fafa11a40a45a6531211ee67d635f1f69e7a", "fetched_at": "2026-08-28T04:06:56.884543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fnando/browser"}], "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:06:56.884543+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.884543+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.884543+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:27:00.107949+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "61b5cc1f9000369d1871e9b12147fafa11a40a45a6531211ee67d635f1f69e7a", "fetched_at": "2026-08-28T04:06:56.884543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fnando/browser"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.884543+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.884543+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:27:00.107949+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "61b5cc1f9000369d1871e9b12147fafa11a40a45a6531211ee67d635f1f69e7a", "fetched_at": "2026-08-28T04:06:56.884543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fnando/browser"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.884543+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.884543+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.884543+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:27:00.107949+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "61b5cc1f9000369d1871e9b12147fafa11a40a45a6531211ee67d635f1f69e7a", "fetched_at": "2026-08-28T04:06:56.884543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fnando/browser"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.884543+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.884543+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:27:00.107949+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "61b5cc1f9000369d1871e9b12147fafa11a40a45a6531211ee67d635f1f69e7a", "fetched_at": "2026-08-28T04:06:56.884543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fnando/browser"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:27:00.107949+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "61b5cc1f9000369d1871e9b12147fafa11a40a45a6531211ee67d635f1f69e7a", "fetched_at": "2026-08-28T04:06:56.884543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fnando/browser"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:27:00.107949+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "61b5cc1f9000369d1871e9b12147fafa11a40a45a6531211ee67d635f1f69e7a", "fetched_at": "2026-08-28T04:06:56.884543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fnando/browser"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:27:00.107949+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "61b5cc1f9000369d1871e9b12147fafa11a40a45a6531211ee67d635f1f69e7a", "fetched_at": "2026-08-28T04:06:56.884543+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fnando/browser"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 26, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5892, "days_push": 449, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 44, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}