{"adoption": {"forks": 103, "observed_at": "2026-08-28T04:04:14.694886+00:00", "stars": 1285}, "canonical_url": "https://ross.abutalabs.com/products/anystyle", "card": {"archived": false, "artifact_type": "library", "description": "Fast citation reference parsing", "domain": ["education", "developer-tools", "data-science"], "enriched": true, "function": ["parser", "machine-learning", "nlp", "cli"], "health_score": 33, "homepage": "https://anystyle.io", "language": "Ruby", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["inukshuk/anystyle"], "name": "inukshuk/anystyle", "platform": ["ruby", "cli", "cross-platform"], "pushed_at": "2025-05-11T12:32:49+00:00", "repo": "inukshuk/anystyle", "stars": 1285, "tags": ["bibliography", "citation-parsing", "conditional-random-fields", "references", "academic-writing", "trainable-models", "natural-language-processing", "web-server"], "topics": ["bibliography", "parser", "conditional-random-fields", "machine-learning", "ruby", "science", "citation-styles"], "urls": [], "use_cases": ["parse academic citations into structured fields", "convert a bibliography text file into JSON or other formats", "find references within a document", "train a custom citation parser model for my citation style or language", "correct and label parsed references in a web token editor", "self-host a citation parsing web service"], "what_it_is": "AnyStyle is a fast machine-learning-based parser that splits bibliographic references into structured segments like author, title, and publisher. It is available as a Ruby gem, a command-line tool, and a self-hostable web application, with support for training custom models.", "when_to_avoid": ["you need to format citations into specific styles like APA or MLA rather than parse them", "you are not in the Ruby ecosystem and cannot use the CLI or web app", "you need to parse full PDF documents rather than reference strings", "you require a license-friendly dependency for commercial redistribution, since the license is non-standard"], "when_to_choose": ["you need to segment raw bibliographic reference strings into author, title, date, and publisher fields", "you work in Ruby and want a programmable citation parser", "your citation style or language is poorly handled by rule-based parsers and you can train a custom model", "you want a self-hosted web tool for cleaning up reference lists"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/anystyle", "repo": "inukshuk/anystyle", "role": "main", "score": 42}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.694886+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.883025+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7dbeb5bae0a9aef529ffc06dc30bab53cec9be6af2577c71a12df25d9ddd9484", "fetched_at": "2026-08-28T04:04:14.694886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/inukshuk/anystyle"}, {"content_hash": "5ddbc1a0406ad0b70827f73d8a2aa79383a8e322f09668df9a842fde67c135ab", "fetched_at": "2026-08-29T12:12:28.960543+00:00", "kind": "homepage", "missing": false, "url": "https://anystyle.io"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.694886+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.883025+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7dbeb5bae0a9aef529ffc06dc30bab53cec9be6af2577c71a12df25d9ddd9484", "fetched_at": "2026-08-28T04:04:14.694886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/inukshuk/anystyle"}, {"content_hash": "5ddbc1a0406ad0b70827f73d8a2aa79383a8e322f09668df9a842fde67c135ab", "fetched_at": "2026-08-29T12:12:28.960543+00:00", "kind": "homepage", "missing": false, "url": "https://anystyle.io"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.883025+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7dbeb5bae0a9aef529ffc06dc30bab53cec9be6af2577c71a12df25d9ddd9484", "fetched_at": "2026-08-28T04:04:14.694886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/inukshuk/anystyle"}, {"content_hash": "5ddbc1a0406ad0b70827f73d8a2aa79383a8e322f09668df9a842fde67c135ab", "fetched_at": "2026-08-29T12:12:28.960543+00:00", "kind": "homepage", "missing": false, "url": "https://anystyle.io"}], "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:14.694886+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.694886+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.694886+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.883025+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7dbeb5bae0a9aef529ffc06dc30bab53cec9be6af2577c71a12df25d9ddd9484", "fetched_at": "2026-08-28T04:04:14.694886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/inukshuk/anystyle"}, {"content_hash": "5ddbc1a0406ad0b70827f73d8a2aa79383a8e322f09668df9a842fde67c135ab", "fetched_at": "2026-08-29T12:12:28.960543+00:00", "kind": "homepage", "missing": false, "url": "https://anystyle.io"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.694886+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.694886+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.883025+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7dbeb5bae0a9aef529ffc06dc30bab53cec9be6af2577c71a12df25d9ddd9484", "fetched_at": "2026-08-28T04:04:14.694886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/inukshuk/anystyle"}, {"content_hash": "5ddbc1a0406ad0b70827f73d8a2aa79383a8e322f09668df9a842fde67c135ab", "fetched_at": "2026-08-29T12:12:28.960543+00:00", "kind": "homepage", "missing": false, "url": "https://anystyle.io"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.694886+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.694886+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.694886+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.883025+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7dbeb5bae0a9aef529ffc06dc30bab53cec9be6af2577c71a12df25d9ddd9484", "fetched_at": "2026-08-28T04:04:14.694886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/inukshuk/anystyle"}, {"content_hash": "5ddbc1a0406ad0b70827f73d8a2aa79383a8e322f09668df9a842fde67c135ab", "fetched_at": "2026-08-29T12:12:28.960543+00:00", "kind": "homepage", "missing": false, "url": "https://anystyle.io"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.694886+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.694886+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.883025+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7dbeb5bae0a9aef529ffc06dc30bab53cec9be6af2577c71a12df25d9ddd9484", "fetched_at": "2026-08-28T04:04:14.694886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/inukshuk/anystyle"}, {"content_hash": "5ddbc1a0406ad0b70827f73d8a2aa79383a8e322f09668df9a842fde67c135ab", "fetched_at": "2026-08-29T12:12:28.960543+00:00", "kind": "homepage", "missing": false, "url": "https://anystyle.io"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.883025+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7dbeb5bae0a9aef529ffc06dc30bab53cec9be6af2577c71a12df25d9ddd9484", "fetched_at": "2026-08-28T04:04:14.694886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/inukshuk/anystyle"}, {"content_hash": "5ddbc1a0406ad0b70827f73d8a2aa79383a8e322f09668df9a842fde67c135ab", "fetched_at": "2026-08-29T12:12:28.960543+00:00", "kind": "homepage", "missing": false, "url": "https://anystyle.io"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.883025+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7dbeb5bae0a9aef529ffc06dc30bab53cec9be6af2577c71a12df25d9ddd9484", "fetched_at": "2026-08-28T04:04:14.694886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/inukshuk/anystyle"}, {"content_hash": "5ddbc1a0406ad0b70827f73d8a2aa79383a8e322f09668df9a842fde67c135ab", "fetched_at": "2026-08-29T12:12:28.960543+00:00", "kind": "homepage", "missing": false, "url": "https://anystyle.io"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.883025+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7dbeb5bae0a9aef529ffc06dc30bab53cec9be6af2577c71a12df25d9ddd9484", "fetched_at": "2026-08-28T04:04:14.694886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/inukshuk/anystyle"}, {"content_hash": "5ddbc1a0406ad0b70827f73d8a2aa79383a8e322f09668df9a842fde67c135ab", "fetched_at": "2026-08-29T12:12:28.960543+00:00", "kind": "homepage", "missing": false, "url": "https://anystyle.io"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 21, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5481, "days_push": 479, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 42, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}