{"adoption": {"forks": 125, "observed_at": "2026-08-28T04:04:36.065102+00:00", "stars": 1392}, "canonical_url": "https://ross.abutalabs.com/products/phrase", "card": {"archived": false, "artifact_type": "library", "description": "Phrase is an Android string resource templating library", "domain": ["mobile-development", "android-tools"], "enriched": true, "function": ["templating", "internationalization"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["square/phrase"], "name": "square/phrase", "platform": ["jvm"], "pushed_at": "2023-03-18T23:29:21+00:00", "repo": "square/phrase", "stars": 1392, "tags": ["string-formatting", "android-strings", "text-templating", "list-formatting", "localization", "android"], "topics": [], "urls": [], "use_cases": ["format Android string resources with named placeholders", "replace String.format with readable template syntax", "insert formatted text directly into a TextView", "build comma-separated lists in Android", "format English sentence-style lists like 'a, b, and c'", "avoid lint warnings from positional format specifiers"], "what_it_is": "Phrase is an Android string resource templating library that lets developers format template strings with named placeholders like {first_name} and insert the result directly into TextViews. It also includes ListPhrase for joining items into comma-separated or sentence-style lists.", "when_to_avoid": ["you're not developing for Android or the JVM", "you need complex templating with conditionals or loops", "your project is in Kotlin and you prefer modern alternatives", "you need actively maintained software with recent releases"], "when_to_choose": ["you're building an Android app in Java and want readable string templating", "you need to format user-facing strings with named placeholders", "you want to join collections into human-readable lists"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/phrase", "repo": "square/phrase", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.065102+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:39:33.677136+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea5e998cbfa262489f783be465359db49262df4545f46360ce1652624429bb1b", "fetched_at": "2026-08-28T04:04:36.065102+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/phrase"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.065102+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:39:33.677136+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea5e998cbfa262489f783be465359db49262df4545f46360ce1652624429bb1b", "fetched_at": "2026-08-28T04:04:36.065102+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/phrase"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:39:33.677136+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea5e998cbfa262489f783be465359db49262df4545f46360ce1652624429bb1b", "fetched_at": "2026-08-28T04:04:36.065102+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/phrase"}], "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:04:36.065102+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.065102+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.065102+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:39:33.677136+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea5e998cbfa262489f783be465359db49262df4545f46360ce1652624429bb1b", "fetched_at": "2026-08-28T04:04:36.065102+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/phrase"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.065102+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.065102+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:39:33.677136+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea5e998cbfa262489f783be465359db49262df4545f46360ce1652624429bb1b", "fetched_at": "2026-08-28T04:04:36.065102+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/phrase"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.065102+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.065102+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.065102+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:39:33.677136+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea5e998cbfa262489f783be465359db49262df4545f46360ce1652624429bb1b", "fetched_at": "2026-08-28T04:04:36.065102+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/phrase"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.065102+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.065102+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:39:33.677136+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea5e998cbfa262489f783be465359db49262df4545f46360ce1652624429bb1b", "fetched_at": "2026-08-28T04:04:36.065102+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/phrase"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:39:33.677136+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea5e998cbfa262489f783be465359db49262df4545f46360ce1652624429bb1b", "fetched_at": "2026-08-28T04:04:36.065102+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/phrase"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:39:33.677136+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea5e998cbfa262489f783be465359db49262df4545f46360ce1652624429bb1b", "fetched_at": "2026-08-28T04:04:36.065102+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/phrase"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:39:33.677136+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ea5e998cbfa262489f783be465359db49262df4545f46360ce1652624429bb1b", "fetched_at": "2026-08-28T04:04:36.065102+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/phrase"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "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": 4607, "days_push": 1264, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}