{"adoption": {"forks": 740, "observed_at": "2026-08-28T04:08:41.764216+00:00", "stars": 4313}, "canonical_url": "https://ross.abutalabs.com/products/duckling", "card": {"archived": false, "artifact_type": "library", "description": "Language, engine, and tooling for expressing, testing, and evaluating composable language rules on input strings.", "domain": ["developer-tools"], "enriched": true, "function": ["nlp", "parser", "http-server"], "health_score": 63, "homepage": null, "language": "Haskell", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["facebook/duckling"], "name": "facebook/duckling", "platform": ["windows"], "pushed_at": "2026-03-15T21:59:35+00:00", "repo": "facebook/duckling", "stars": 4313, "tags": ["entity-extraction", "haskell", "text-parsing", "date-parsing", "wit-ai", "natural-language-processing", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["parse dates and times from user text like 'tomorrow at eight'", "extract amounts of money and durations from chat messages", "recognize credit card numbers and phone numbers in input strings", "build a chatbot that understands quantities and ordinals", "run an entity-extraction HTTP service for a non-Haskell backend"], "what_it_is": "Duckling is a Haskell library that parses natural language text into structured data, extracting entities like dates, times, amounts of money, numbers, and durations. It ships with an example HTTP server so non-Haskell backends can use it via a simple API.", "when_to_avoid": ["you need general-purpose NLP like sentiment analysis or named-entity recognition of people and places", "your stack can't run Haskell or host a separate parsing service", "you need ML-based extraction that adapts to novel phrasings"], "when_to_choose": ["you need deterministic, rule-based entity extraction without training data", "you're building a conversational assistant that must understand dates, times, money, and numbers", "you want a self-hosted alternative to wit.ai's built-in entities"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/duckling", "repo": "facebook/duckling", "role": "main", "score": 55}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.764216+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:21:47.049655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd9b747465d93f9ba1c9110e64505fb832c2845bf6bd883a5c656bec9bdb3254", "fetched_at": "2026-08-28T04:08:41.764216+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/duckling"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.764216+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:21:47.049655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd9b747465d93f9ba1c9110e64505fb832c2845bf6bd883a5c656bec9bdb3254", "fetched_at": "2026-08-28T04:08:41.764216+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/duckling"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:21:47.049655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd9b747465d93f9ba1c9110e64505fb832c2845bf6bd883a5c656bec9bdb3254", "fetched_at": "2026-08-28T04:08:41.764216+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/duckling"}], "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:08:41.764216+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.764216+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.764216+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:21:47.049655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd9b747465d93f9ba1c9110e64505fb832c2845bf6bd883a5c656bec9bdb3254", "fetched_at": "2026-08-28T04:08:41.764216+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/duckling"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.764216+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.764216+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:21:47.049655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd9b747465d93f9ba1c9110e64505fb832c2845bf6bd883a5c656bec9bdb3254", "fetched_at": "2026-08-28T04:08:41.764216+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/duckling"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.764216+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.764216+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.764216+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:21:47.049655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd9b747465d93f9ba1c9110e64505fb832c2845bf6bd883a5c656bec9bdb3254", "fetched_at": "2026-08-28T04:08:41.764216+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/duckling"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.764216+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:41.764216+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:21:47.049655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd9b747465d93f9ba1c9110e64505fb832c2845bf6bd883a5c656bec9bdb3254", "fetched_at": "2026-08-28T04:08:41.764216+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/duckling"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:21:47.049655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd9b747465d93f9ba1c9110e64505fb832c2845bf6bd883a5c656bec9bdb3254", "fetched_at": "2026-08-28T04:08:41.764216+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/duckling"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:21:47.049655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd9b747465d93f9ba1c9110e64505fb832c2845bf6bd883a5c656bec9bdb3254", "fetched_at": "2026-08-28T04:08:41.764216+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/duckling"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:21:47.049655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fd9b747465d93f9ba1c9110e64505fb832c2845bf6bd883a5c656bec9bdb3254", "fetched_at": "2026-08-28T04:08:41.764216+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebook/duckling"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 72, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3472, "days_push": 171, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 55, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}