{"adoption": {"forks": 72, "observed_at": "2026-08-28T04:04:49.822397+00:00", "stars": 1475}, "canonical_url": "https://ross.abutalabs.com/products/surfer-org-protocol", "card": {"archived": false, "artifact_type": "framework", "description": "Open-source framework for exporting your personal data.", "domain": ["privacy", "developer-tools"], "enriched": true, "function": ["web-scraping", "etl", "sdk", "gui", "data-science"], "health_score": 30, "homepage": "https://docs.surferprotocol.org/desktop/installation", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["Surfer-Org/Protocol"], "name": "Surfer-Org/Protocol", "platform": ["cross-platform", "python"], "pushed_at": "2024-12-25T00:21:31+00:00", "repo": "Surfer-Org/Protocol", "stars": 1475, "tags": ["data-portability", "personal-data-export", "data-ownership", "desktop-app", "python-sdk", "self-hosted", "data-engineering", "automation", "desktop", "typescript"], "topics": [], "urls": [], "use_cases": ["export my gmail messages to local files", "download my twitter bookmarks", "back up my chatgpt conversation history", "build an ai clone trained on my own messages", "reclaim my personal data from big tech platforms", "export imessage conversations", "leave a digital legacy of my online data"], "what_it_is": "Surfer Protocol is an open-source framework for exporting personal data from platforms like Gmail, iMessages, Twitter, Notion, and ChatGPT. It consists of a desktop app that scrapes and exports user data locally, plus a Python SDK for building applications on top of that exported data.", "when_to_avoid": ["you need a platform not yet supported by the exporters", "you need a fully supported, production-grade data pipeline with guarantees", "you want server-side or cloud-based export rather than local scraping"], "when_to_choose": ["you want to export personal data from supported platforms to local storage", "you want to build apps on top of your own data via the Python SDK", "you prefer a GUI-driven export process rather than manual API wrangling"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/surfer-org-protocol", "repo": "Surfer-Org/Protocol", "role": "main", "score": 13}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.822397+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:34:29.959919+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "786d6462ec64bac72f4cf81ff142b46264b49e16a10c0e720aef91b5c46092c7", "fetched_at": "2026-08-28T04:04:49.822397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Surfer-Org/Protocol"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.822397+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:34:29.959919+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "786d6462ec64bac72f4cf81ff142b46264b49e16a10c0e720aef91b5c46092c7", "fetched_at": "2026-08-28T04:04:49.822397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Surfer-Org/Protocol"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:34:29.959919+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "786d6462ec64bac72f4cf81ff142b46264b49e16a10c0e720aef91b5c46092c7", "fetched_at": "2026-08-28T04:04:49.822397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Surfer-Org/Protocol"}], "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:49.822397+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.822397+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.822397+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:34:29.959919+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "786d6462ec64bac72f4cf81ff142b46264b49e16a10c0e720aef91b5c46092c7", "fetched_at": "2026-08-28T04:04:49.822397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Surfer-Org/Protocol"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.822397+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.822397+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:34:29.959919+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "786d6462ec64bac72f4cf81ff142b46264b49e16a10c0e720aef91b5c46092c7", "fetched_at": "2026-08-28T04:04:49.822397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Surfer-Org/Protocol"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.822397+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.822397+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.822397+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:34:29.959919+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "786d6462ec64bac72f4cf81ff142b46264b49e16a10c0e720aef91b5c46092c7", "fetched_at": "2026-08-28T04:04:49.822397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Surfer-Org/Protocol"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.822397+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:49.822397+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:34:29.959919+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "786d6462ec64bac72f4cf81ff142b46264b49e16a10c0e720aef91b5c46092c7", "fetched_at": "2026-08-28T04:04:49.822397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Surfer-Org/Protocol"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:34:29.959919+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "786d6462ec64bac72f4cf81ff142b46264b49e16a10c0e720aef91b5c46092c7", "fetched_at": "2026-08-28T04:04:49.822397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Surfer-Org/Protocol"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:34:29.959919+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "786d6462ec64bac72f4cf81ff142b46264b49e16a10c0e720aef91b5c46092c7", "fetched_at": "2026-08-28T04:04:49.822397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Surfer-Org/Protocol"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:34:29.959919+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "786d6462ec64bac72f4cf81ff142b46264b49e16a10c0e720aef91b5c46092c7", "fetched_at": "2026-08-28T04:04:49.822397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Surfer-Org/Protocol"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 53, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 754, "days_push": 617, "days_rel": 638, "gap_med": null, "n_releases_24m": 1}, "score": 13, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}