{"adoption": {"forks": 492, "observed_at": "2026-08-28T04:06:57.193987+00:00", "stars": 2508}, "canonical_url": "https://ross.abutalabs.com/products/openscale", "card": {"archived": false, "artifact_type": "application", "description": "Open-source weight and body metrics tracker, with support for Bluetooth scales", "domain": ["healthcare", "android-tools", "privacy", "developer-tools"], "enriched": true, "function": ["gui", "data-visualization"], "health_score": 99, "homepage": null, "language": "Kotlin", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["oliexdev/openScale"], "name": "oliexdev/openScale", "platform": [], "pushed_at": "2026-08-23T08:51:38+00:00", "repo": "oliexdev/openScale", "stars": 2508, "tags": ["health-tracker", "bluetooth-scales", "body-metrics", "weight-tracking", "open-source", "no-account", "bluetooth", "android", "mobile"], "topics": [], "urls": [], "use_cases": ["track my weight and body fat on android without an account", "read measurements from my xiaomi mi scale without the vendor app", "log body metrics from a beurer bluetooth scale", "view graphs of my weight history offline", "replace a proprietary smart scale app for privacy reasons", "manually enter weight measurements when my scale has no bluetooth"], "what_it_is": "openScale is an open-source Android app for tracking weight and body composition metrics like BMI, body fat, water, and muscle. It reads measurements directly from many Bluetooth smart scales or accepts manual entry, with no account required.", "when_to_avoid": ["you need iOS support - it is Android only", "your scale is not Bluetooth and you want automatic syncing from wearables", "you need cloud sync across devices out of the box"], "when_to_choose": ["you own a supported Bluetooth scale and want to avoid the manufacturer's cloud app", "you want private, offline body metric tracking with graphs on Android", "you prefer F-Droid/open-source health apps"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/openscale", "repo": "oliexdev/openScale", "role": "main", "score": 94}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.193987+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:26:32.538311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9cb334469a4f7fd768f3a37721ffa794e306494bc5e0ce9354d5d688a9787517", "fetched_at": "2026-08-28T04:06:57.193987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/oliexdev/openScale"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.193987+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:26:32.538311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9cb334469a4f7fd768f3a37721ffa794e306494bc5e0ce9354d5d688a9787517", "fetched_at": "2026-08-28T04:06:57.193987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/oliexdev/openScale"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:26:32.538311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9cb334469a4f7fd768f3a37721ffa794e306494bc5e0ce9354d5d688a9787517", "fetched_at": "2026-08-28T04:06:57.193987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/oliexdev/openScale"}], "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:57.193987+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.193987+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.193987+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:26:32.538311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9cb334469a4f7fd768f3a37721ffa794e306494bc5e0ce9354d5d688a9787517", "fetched_at": "2026-08-28T04:06:57.193987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/oliexdev/openScale"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.193987+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.193987+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:26:32.538311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9cb334469a4f7fd768f3a37721ffa794e306494bc5e0ce9354d5d688a9787517", "fetched_at": "2026-08-28T04:06:57.193987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/oliexdev/openScale"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.193987+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.193987+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.193987+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:26:32.538311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9cb334469a4f7fd768f3a37721ffa794e306494bc5e0ce9354d5d688a9787517", "fetched_at": "2026-08-28T04:06:57.193987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/oliexdev/openScale"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.193987+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.193987+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:26:32.538311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9cb334469a4f7fd768f3a37721ffa794e306494bc5e0ce9354d5d688a9787517", "fetched_at": "2026-08-28T04:06:57.193987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/oliexdev/openScale"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:26:32.538311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9cb334469a4f7fd768f3a37721ffa794e306494bc5e0ce9354d5d688a9787517", "fetched_at": "2026-08-28T04:06:57.193987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/oliexdev/openScale"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:26:32.538311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9cb334469a4f7fd768f3a37721ffa794e306494bc5e0ce9354d5d688a9787517", "fetched_at": "2026-08-28T04:06:57.193987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/oliexdev/openScale"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:26:32.538311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9cb334469a4f7fd768f3a37721ffa794e306494bc5e0ce9354d5d688a9787517", "fetched_at": "2026-08-28T04:06:57.193987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/oliexdev/openScale"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 84}, "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": 4281, "days_push": 10, "days_rel": 24, "gap_med": 51.0, "n_releases_24m": 9}, "score": 94, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}