{"adoption": {"forks": 3887, "observed_at": "2026-08-28T04:11:20.569572+00:00", "stars": 17945}, "canonical_url": "https://ross.abutalabs.com/products/face-apijs", "card": {"archived": false, "artifact_type": "library", "description": "JavaScript API for face detection and face recognition in the browser and nodejs with tensorflow.js", "domain": ["computer-vision", "machine-learning", "web-development", "artificial-intelligence"], "enriched": true, "function": ["machine-learning", "computer-vision", "image-processing"], "health_score": 20, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["justadudewhohacks/face-api.js"], "name": "justadudewhohacks/face-api.js", "platform": ["browser"], "pushed_at": "2024-01-24T09:25:35+00:00", "repo": "justadudewhohacks/face-api.js", "stars": 17945, "tags": ["face-detection", "face-recognition", "tensorflowjs", "face-landmarks", "age-estimation", "gender-recognition", "emotion-recognition", "webcam", "nodejs", "javascript"], "topics": ["face-recognition", "javascript", "tensorflow", "tfjs", "face-detection", "face-landmarks", "tensorflowjs", "js", "nodejs", "age-estimation", "gender-recognition", "emotion-recognition"], "urls": [], "use_cases": ["detect faces in images or webcam video in the browser", "recognize and identify faces from a reference set", "detect face landmarks like eyes, nose, and mouth", "estimate age and gender from a face photo", "recognize facial expressions and emotions in real time", "track faces in a live webcam stream"], "what_it_is": "A JavaScript face detection and face recognition library built on top of tensorflow.js, usable in the browser and Node.js. It provides models for face detection, landmark detection, recognition, expression recognition, and age/gender estimation.", "when_to_avoid": ["you need state-of-the-art accuracy or the latest model architectures", "you need server-side GPU-accelerated face recognition at scale", "you require active maintenance and frequent updates", "you need non-face object detection or general image classification"], "when_to_choose": ["you need client-side face detection or recognition without a backend", "you want a simple high-level JavaScript API on top of tensorflow.js", "you need landmarks, expressions, age, or gender estimation alongside detection", "you are building a webcam-based demo or interactive web app with face features"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/face-apijs", "repo": "justadudewhohacks/face-api.js", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:20.569572+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:02:12.862331+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48825980bf843aec4118034d14499ed10ca7520fa2e0211877a35e939c880219", "fetched_at": "2026-08-28T04:11:20.569572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/justadudewhohacks/face-api.js"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:20.569572+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:02:12.862331+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48825980bf843aec4118034d14499ed10ca7520fa2e0211877a35e939c880219", "fetched_at": "2026-08-28T04:11:20.569572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/justadudewhohacks/face-api.js"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:02:12.862331+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48825980bf843aec4118034d14499ed10ca7520fa2e0211877a35e939c880219", "fetched_at": "2026-08-28T04:11:20.569572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/justadudewhohacks/face-api.js"}], "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:11:20.569572+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:20.569572+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:20.569572+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:02:12.862331+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48825980bf843aec4118034d14499ed10ca7520fa2e0211877a35e939c880219", "fetched_at": "2026-08-28T04:11:20.569572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/justadudewhohacks/face-api.js"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:20.569572+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:20.569572+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:02:12.862331+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48825980bf843aec4118034d14499ed10ca7520fa2e0211877a35e939c880219", "fetched_at": "2026-08-28T04:11:20.569572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/justadudewhohacks/face-api.js"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:20.569572+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:20.569572+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:20.569572+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:02:12.862331+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48825980bf843aec4118034d14499ed10ca7520fa2e0211877a35e939c880219", "fetched_at": "2026-08-28T04:11:20.569572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/justadudewhohacks/face-api.js"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:20.569572+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:20.569572+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:02:12.862331+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48825980bf843aec4118034d14499ed10ca7520fa2e0211877a35e939c880219", "fetched_at": "2026-08-28T04:11:20.569572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/justadudewhohacks/face-api.js"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:02:12.862331+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48825980bf843aec4118034d14499ed10ca7520fa2e0211877a35e939c880219", "fetched_at": "2026-08-28T04:11:20.569572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/justadudewhohacks/face-api.js"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:02:12.862331+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48825980bf843aec4118034d14499ed10ca7520fa2e0211877a35e939c880219", "fetched_at": "2026-08-28T04:11:20.569572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/justadudewhohacks/face-api.js"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:02:12.862331+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48825980bf843aec4118034d14499ed10ca7520fa2e0211877a35e939c880219", "fetched_at": "2026-08-28T04:11:20.569572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/justadudewhohacks/face-api.js"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "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": 3028, "days_push": 952, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}