{"adoption": {"forks": 267, "observed_at": "2026-08-28T04:04:58.634162+00:00", "stars": 1528}, "canonical_url": "https://ross.abutalabs.com/products/vanity", "card": {"archived": true, "artifact_type": "library", "description": "Experiment Driven Development for Ruby", "domain": ["web-development", "analytics", "backend"], "enriched": true, "function": ["testing", "analytics", "middleware"], "health_score": 10, "homepage": "http://vanity.labnotes.org", "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["assaf/vanity"], "name": "assaf/vanity", "platform": ["ruby", "self-hosted"], "pushed_at": "2023-03-16T10:12:48+00:00", "repo": "assaf/vanity", "stars": 1528, "tags": ["ab-testing", "split-testing", "rails", "experimentation", "conversion-tracking", "feature-experiments", "web-server"], "topics": [], "urls": [], "use_cases": ["run A/B tests on my Rails app", "test which button copy converts better", "measure conversion rates for different page variants", "split test features across user cohorts", "track experiment results in Redis or SQL", "show a dashboard of ongoing experiments"], "what_it_is": "Vanity is an A/B testing (split testing) framework for Ruby on Rails that lets developers define experiments, present variants to users, and measure conversion. It is datastore agnostic, supporting Redis, MongoDB, or SQL databases for storing experiment results.", "when_to_avoid": ["you need client-side or non-Ruby experimentation", "you want a hosted solution with advanced targeting and Bayesian stats", "your project is not Rails/Ruby based", "you need actively developed tooling with frequent releases"], "when_to_choose": ["you have a Rails application and want integrated A/B testing", "you want flexibility in choosing Redis, MongoDB, or SQL as the experiment datastore", "you prefer experiments defined in Ruby code rather than a third-party SaaS", "you want a built-in Rails dashboard for experiment reports"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/vanity", "repo": "assaf/vanity", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.634162+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:31:30.296045+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37780a7c97cba15242dfe2a5e4d85493018db2e91bcae1f450a2bebb913cca04", "fetched_at": "2026-08-28T04:04:58.634162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/assaf/vanity"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.634162+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:31:30.296045+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37780a7c97cba15242dfe2a5e4d85493018db2e91bcae1f450a2bebb913cca04", "fetched_at": "2026-08-28T04:04:58.634162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/assaf/vanity"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:31:30.296045+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37780a7c97cba15242dfe2a5e4d85493018db2e91bcae1f450a2bebb913cca04", "fetched_at": "2026-08-28T04:04:58.634162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/assaf/vanity"}], "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:58.634162+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.634162+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.634162+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:31:30.296045+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37780a7c97cba15242dfe2a5e4d85493018db2e91bcae1f450a2bebb913cca04", "fetched_at": "2026-08-28T04:04:58.634162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/assaf/vanity"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.634162+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.634162+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:31:30.296045+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37780a7c97cba15242dfe2a5e4d85493018db2e91bcae1f450a2bebb913cca04", "fetched_at": "2026-08-28T04:04:58.634162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/assaf/vanity"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.634162+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.634162+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.634162+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:31:30.296045+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37780a7c97cba15242dfe2a5e4d85493018db2e91bcae1f450a2bebb913cca04", "fetched_at": "2026-08-28T04:04:58.634162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/assaf/vanity"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.634162+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.634162+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:31:30.296045+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37780a7c97cba15242dfe2a5e4d85493018db2e91bcae1f450a2bebb913cca04", "fetched_at": "2026-08-28T04:04:58.634162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/assaf/vanity"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:31:30.296045+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37780a7c97cba15242dfe2a5e4d85493018db2e91bcae1f450a2bebb913cca04", "fetched_at": "2026-08-28T04:04:58.634162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/assaf/vanity"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:31:30.296045+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37780a7c97cba15242dfe2a5e4d85493018db2e91bcae1f450a2bebb913cca04", "fetched_at": "2026-08-28T04:04:58.634162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/assaf/vanity"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:31:30.296045+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37780a7c97cba15242dfe2a5e4d85493018db2e91bcae1f450a2bebb913cca04", "fetched_at": "2026-08-28T04:04:58.634162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/assaf/vanity"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 6146, "days_push": 1266, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}