{
    "ready": true,
    "site": {
        "id": 0,
        "domain": "openproject.org",
        "display_name": "OpenProject",
        "primary_country_code": "",
        "category_name": "Technology: SaaS & Productivity"
    },
    "metrics": {
        "global_rank": 1399,
        "country_rank": 737,
        "category_rank": 1,
        "daily_pageviews_per_visitor": 4.11,
        "daily_time_on_site_seconds": 393,
        "bounce_rate": 25.82,
        "search_visits_percent": 43.34,
        "total_sites_linking_in": 4,
        "monthly_unique_visitors": 312,
        "recorded_at": "2026-03-30 07:13:29"
    },
    "audit": {
        "score": 96
    },
    "traffic_sources": {
        "direct_percent": 27.01,
        "search_percent": 35.13,
        "social_percent": 10.78,
        "referral_percent": 13.61,
        "email_percent": 5.01,
        "paid_percent": 8.46
    },
    "seo_profile": {
        "backlinks_total": 4,
        "referring_domains": 4,
        "dofollow_backlinks_percent": 100,
        "organic_keywords": 101,
        "indexed_pages": 74,
        "page_speed_score": 100,
        "mobile_friendliness_score": 93,
        "authority_score": 52,
        "spam_risk_score": 0
    },
    "crawl_report": {
        "robots_status": 0,
        "sitemap_status": 0,
        "sitemap_total_urls": 0,
        "crawl_blocked": false,
        "crawl_blocked_by": "",
        "crawl_blocked_reason": "",
        "notes": [
            "robots.txt could not be confirmed.",
            "Sitemap could not be confirmed."
        ],
        "created_at": "2026-03-30 07:13:29"
    },
    "keywords": [
        {
            "keyword": "OpenProject",
            "position": 17,
            "search_engine": "Estimated",
            "checked_at": "2026-04-13 16:21:49",
            "is_estimated": true
        },
        {
            "keyword": "OpenProject technology: saas & productivity",
            "position": 19,
            "search_engine": "Estimated",
            "checked_at": "2026-04-13 16:21:49",
            "is_estimated": true
        },
        {
            "keyword": "OpenProject reviews",
            "position": 21,
            "search_engine": "Estimated",
            "checked_at": "2026-04-13 16:21:49",
            "is_estimated": true
        },
        {
            "keyword": "openproject",
            "position": 23,
            "search_engine": "Estimated",
            "checked_at": "2026-04-13 16:21:49",
            "is_estimated": true
        },
        {
            "keyword": "open",
            "position": 25,
            "search_engine": "Estimated",
            "checked_at": "2026-04-13 16:21:49",
            "is_estimated": true
        },
        {
            "keyword": "source",
            "position": 27,
            "search_engine": "Estimated",
            "checked_at": "2026-04-13 16:21:49",
            "is_estimated": true
        },
        {
            "keyword": "project",
            "position": 29,
            "search_engine": "Estimated",
            "checked_at": "2026-04-13 16:21:49",
            "is_estimated": true
        },
        {
            "keyword": "management",
            "position": 31,
            "search_engine": "Estimated",
            "checked_at": "2026-04-13 16:21:49",
            "is_estimated": true
        }
    ],
    "rating": {
        "overall": 64,
        "label": "Healthy",
        "breakdown": [
            {
                "label": "Technical foundation",
                "score": 12,
                "max": 18
            },
            {
                "label": "Authority & trust",
                "score": 16,
                "max": 30
            },
            {
                "label": "Reach & market presence",
                "score": 5,
                "max": 18
            },
            {
                "label": "Search visibility",
                "score": 3,
                "max": 12
            },
            {
                "label": "Engagement & retention",
                "score": 9,
                "max": 10
            },
            {
                "label": "Channels & diversification",
                "score": 5,
                "max": 6
            },
            {
                "label": "Registry stability",
                "score": 5,
                "max": 6
            },
            {
                "label": "Quality system",
                "score": 67,
                "max": 100
            },
            {
                "label": "Reputation system",
                "score": 52,
                "max": 100
            },
            {
                "label": "Safety system",
                "score": 100,
                "max": 100
            },
            {
                "label": "Evidence confidence",
                "score": 54,
                "max": 100
            },
            {
                "label": "External intelligence",
                "score": 50,
                "max": 100
            }
        ],
        "authority_score": 54,
        "quality_score": 67,
        "reputation_score": 52,
        "safety_score": 100,
        "confidence_score": 54,
        "fraud_score": 1,
        "authority_signals": {
            "backlinks": 4,
            "referring_domains": 4,
            "organic_keywords": 101,
            "indexed_pages": 74,
            "monthly_visitors": 312,
            "global_rank": 1399,
            "engagement_score": 84,
            "crawl_quality_score": 100,
            "brand_completeness_score": 86,
            "link_diversity_score": 94,
            "technical_reliability_score": 78,
            "whois_score": 88,
            "whois_age_years": 22.5,
            "whois_stability_score": 100,
            "spam_penalty": 0
        },
        "whois_signals": {
            "age_years": 22.5,
            "days_to_expiry": 193,
            "days_since_last_registry_update": 126,
            "stability_score": 100,
            "registrar_changes": 0,
            "ownership_changes": 0,
            "nameserver_changes": 0,
            "status_changes": 0,
            "history_entries": 1,
            "privacy_protected": false,
            "dnssec_enabled": false,
            "has_registrant_country": false,
            "registrant_country": "",
            "nameserver_count": 4,
            "status_count": 1
        }
    },
    "authority_score": 54,
    "trust_score": 80,
    "domain_tags": {
        "primary_tag": "T",
        "primary_tag_score": 86,
        "primary_candidate": "T",
        "primary_candidate_score": 86,
        "tag_codes": "T,Uncertain",
        "tags": [
            {
                "code": "T",
                "label": "Trusted",
                "tone": "good",
                "description": "Strong trust, stability, and low-risk signals were detected.",
                "reason": "Low spam indicators plus strong trust, quality, registry, and stability signals were detected. Showing the stored external intelligence snapshot. New search and review intelligence only runs after a visitor uses Refresh data manually.",
                "message": "The site shows a reasonably trustworthy and stable profile.",
                "priority": 86,
                "score": 86,
                "match_percent": 86,
                "threshold_band": "strong"
            },
            {
                "code": "Uncertain",
                "label": "Uncertain",
                "tone": "unknown",
                "description": "External checks stayed inconclusive, so the model avoided a harder verdict.",
                "reason": "External checks stayed inconclusive, so the system kept an uncertainty buffer.",
                "message": "The evidence is materially mixed or partially corroborated, so the model is avoiding a harder verdict.",
                "priority": 68,
                "score": 68,
                "match_percent": 68,
                "threshold_band": "strong"
            }
        ],
        "tag_breakdown": [
            {
                "code": "T",
                "label": "Trusted",
                "tone": "good",
                "description": "Strong trust, stability, and low-risk signals were detected.",
                "reason": "Low spam indicators plus strong trust, quality, registry, and stability signals were detected. Showing the stored external intelligence snapshot. New search and review intelligence only runs after a visitor uses Refresh data manually.",
                "message": "The site shows a reasonably trustworthy and stable profile.",
                "priority": 86,
                "score": 86,
                "match_percent": 86,
                "threshold_band": "strong"
            },
            {
                "code": "Uncertain",
                "label": "Uncertain",
                "tone": "unknown",
                "description": "External checks stayed inconclusive, so the model avoided a harder verdict.",
                "reason": "External checks stayed inconclusive, so the system kept an uncertainty buffer.",
                "message": "The evidence is materially mixed or partially corroborated, so the model is avoiding a harder verdict.",
                "priority": 68,
                "score": 68,
                "match_percent": 68,
                "threshold_band": "strong"
            },
            {
                "code": "Infra",
                "label": "Risky infrastructure",
                "tone": "caution",
                "description": "The hosting / registrar / nameserver neighbourhood looks unusually risky.",
                "reason": "The infrastructure neighbourhood looks riskier than normal.",
                "message": "Infrastructure risk does not currently stand out.",
                "priority": 3,
                "score": 3,
                "match_percent": 3,
                "threshold_band": "none"
            },
            {
                "code": "C",
                "label": "Caution",
                "tone": "caution",
                "description": "Signals are mixed or weak, so this domain should be treated carefully.",
                "reason": "Review carefully: mixed trust signals. Showing the stored external intelligence snapshot. New search and review intelligence only runs after a visitor uses Refresh data manually.",
                "message": "The current crawl does not show a meaningful caution match.",
                "priority": 0,
                "score": 0,
                "match_percent": 0,
                "threshold_band": "none"
            },
            {
                "code": "Crypto",
                "label": "Crypto drainer risk",
                "tone": "toxic",
                "description": "Wallet-connect or seed-phrase theft patterns were detected.",
                "reason": "Wallet-connect or seed-phrase theft patterns were detected.",
                "message": "No meaningful crypto-drainer signals were detected.",
                "priority": 0,
                "score": 0,
                "match_percent": 0,
                "threshold_band": "none"
            }
        ],
        "nsfw_score": 0,
        "trust_score": 81,
        "manual": {
            "has_changes": false,
            "verified_status": "",
            "tag_codes": "",
            "rating_delta": 0,
            "authority_delta": 0,
            "trust_delta": 0,
            "note": "",
            "adjusted_by": 0,
            "adjusted_at": "",
            "lock_scores": false,
            "lock_flags": false
        },
        "summary": "Trusted (86% match) because low spam indicators plus strong trust, quality, registry, and stability signals were detected. showing the stored external intelligence snapshot. new search and review intelligence only runs after a visitor uses refresh data manually.",
        "external_intel": {
            "domain": "openproject.org",
            "candidate_tag": "",
            "checked_at": "2026-03-18T21:14:28+00:00",
            "status": "fresh",
            "snapshot_version": 5,
            "summary": "Showing the stored external intelligence snapshot. New search and review intelligence only runs after a visitor uses Refresh data manually.",
            "search_intelligence": {
                "queries": [
                    "\"openproject.org\" -site:openproject.org -site:www.openproject.org",
                    "\"openproject.org\" official site -site:openproject.org -site:www.openproject.org",
                    "\"openproject.org\" wikipedia -site:openproject.org -site:www.openproject.org",
                    "\"openproject.org\" reviews OR complaints -site:openproject.org -site:www.openproject.org",
                    "\"openproject.org\" reputation OR scam OR legit OR safe -site:openproject.org -site:www.openproject.org",
                    "\"openproject.org\" BBB OR LinkedIn OR Crunchbase OR \"Companies House\" OR wikipedia -site:openproject.org -site:www.openproject.org",
                    "openproject website -site:openproject.org -site:www.openproject.org",
                    "openproject company -site:openproject.org -site:www.openproject.org",
                    "openproject wikipedia -site:openproject.org -site:www.openproject.org",
                    "openproject reviews -site:openproject.org -site:www.openproject.org",
                    "openproject complaints -site:openproject.org -site:www.openproject.org",
                    "openproject trustpilot -site:openproject.org -site:www.openproject.org"
                ],
                "providers": [
                    "duckduckgo"
                ],
                "provider_result_counts": {
                    "duckduckgo": 0
                },
                "results_found": 1,
                "external_results_found": 0,
                "used_direct_fallback": true,
                "results": [
                    {
                        "provider": "direct-domain-fallback",
                        "url": "https://openproject.org/",
                        "host": "openproject.org",
                        "title": "openproject.org",
                        "snippet": "First-party fallback captured directly from the domain when public search engines returned no usable results.",
                        "is_direct_fallback": true,
                        "source_meta": {
                            "host": "openproject.org",
                            "source_type": "official_site",
                            "label": "General web result",
                            "trust_weight": 55,
                            "evidence_weight": 26,
                            "noise_penalty": 0,
                            "requires_exact_domain_match": true,
                            "supports_positive_verdicts": false,
                            "supports_negative_verdicts": true,
                            "freshness_ttl_days": 21
                        },
                        "entity": {
                            "score": 100,
                            "exactness": "exact_domain",
                            "reasons": [
                                "The result host matches the exact domain.",
                                "The exact domain is mentioned in the page snippet or document text.",
                                "The result URL contains the exact domain string."
                            ]
                        },
                        "query": "direct-fallback",
                        "rank": 1
                    }
                ],
                "source_mix": {
                    "official_site": 1
                },
                "entity_coverage_score": 100,
                "high_trust_result_count": 0,
                "exact_match_result_count": 1,
                "high_entity_result_count": 1,
                "query_hit_count": 1,
                "query_count": 12,
                "deadline_hit": true
            },
            "review_intelligence": {
                "documents_fetched": 1,
                "external_documents_fetched": 0,
                "documents": [
                    {
                        "provider": "direct-domain-fallback",
                        "url": "https://openproject.org/",
                        "host": "openproject.org",
                        "title": "openproject.org",
                        "snippet": "First-party fallback captured directly from the domain when public search engines returned no usable results.",
                        "is_direct_fallback": true,
                        "source_meta": {
                            "host": "openproject.org",
                            "source_type": "official_site",
                            "label": "General web result",
                            "trust_weight": 55,
                            "evidence_weight": 26,
                            "noise_penalty": 0,
                            "requires_exact_domain_match": true,
                            "supports_positive_verdicts": false,
                            "supports_negative_verdicts": true,
                            "freshness_ttl_days": 21
                        },
                        "entity": {
                            "score": 100,
                            "exactness": "exact_domain",
                            "reasons": [
                                "The result host matches the exact domain.",
                                "The exact domain is mentioned in the page snippet or document text.",
                                "The result URL contains the exact domain string."
                            ]
                        },
                        "query": "direct-fallback",
                        "rank": 1,
                        "body": "OpenProject - Open Source Project Management Software Skip to main content Product Features Product tour Watch introduction Editions Community edition Enterprise edition Security & data privacy Download & installation Integrations Nextcloud OneDrive/SharePoint GitHub GitLab openDesk Standards PMflex PM² OKR PRINCE2 SAFe Solutions Industries Construction | BIM Universities, education & research IT & technology Public & governmental organizations Healthcare Automotive Engineering NGO & foundations Banking & insurance Aerospace Use cases Project Portfolio Management Project Planning & Scheduling Task management & issue tracking Agile, Kanban & Scrum Time tracking, cost reporting & budgeting Team collaboration Meeting management Product roadmap & release planning Workflows & customization Project management process Pricing Resources Support Documentation & help FAQs Glossary Training & consulting Contact Product resources Blog Videos Roadmap Release Notes Alternatives Webinars Company About us Customers CareersWe are hiring Press Newsletter ESG Legal Imprint Legal information Data privacy en English Deutsch Español Français Português Sign In Contact sales Install OpenProject Start free trial Open source project management software Powerful classic, agile or hybrid project management in a secure environment. Start free trial Watch introduction Your browser does not support the video tag. Successful companies trust OpenProject Data sovereignty Maintain control of your data and stay secure Keep your data ownership: OpenProject protects your privacy in a secure environment with highest standards in data security. Protect your data and privacy Keep system and network security Gain transparency with open source Trust our secure hosting Data protection OpenProject can be installed on-premises in your own organizations’s infrastructure, giving you complete control over your data and allowing you to manage it 100% yourself. You get insight into the storage and handling of your data, free from external influences. Learn more Security We offer the highest level of security and protection of your data with a variety of security features, such as https encryption of your data, password security, two-factor authentication, definition of session runtime and much more. Learn more Transparency Free and open source software (FOSS) gives you transparent insights into the source code and the freedom to operate, distribute, study and modify OpenProject without restrictions. We develop our product in public, accessible to everyone. OpenProject is proudly licensed under the GNU GPL v3. Learn more Peace-of-mind hosting With our Enterprise Cloud, your data is stored on secure servers within the EU or, if you wish, in Germany. Both the data center and the network architecture are designed to meet the needs of highly security-conscious companies. Learn more Project management Your base for classic, agile or hybrid project management Boost team productivity and satisfaction with OpenProject, your go-to solution for seamless collaboration in any project management approach. Streamline work, enhance goal clarity, and assign tasks efficiently - all in one centralized platform. Project planning and scheduling Deliver your projects on time Collaboratively create and visualize project plans using Gantt charts in OpenProject. Break down the activities and create a detailed schedule that shows how and when deliverables within the project scope will be accomplished. Agile, Scrum & Kanban Empower your teams Use OpenProject's agile boards for efficient team organization and a…",
                        "html": "<!DOCTYPE html> <html lang=\"en\" prefix=\"og: http://ogp.me/ns#\"> <head> <meta charset=\"utf-8\"> <meta http-equiv=\"x-ua-compatible\" content=\"ie=edge\"> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"> <title>OpenProject - Open Source Project Management Software</title> <meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\"> <link href=\"/assets/images/favicons/favicon.ico\" rel=\"shortcut icon\" type=\"image/ico\"> <link href=\"/assets/images/favicons/apple-touch-icon-120x120-e72a13fd.png\" rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"120x120\"> <link rel=\"alternate\" hreflang=\"en\" href=\"https://www.openproject.org/\"> <link rel=\"alternate\" hreflang=\"de\" href=\"https://www.openproject.org/de/\"> <link rel=\"alternate\" hreflang=\"es\" href=\"https://www.openproject.org/es/\"> <link rel=\"alternate\" hreflang=\"fr\" href=\"https://www.openproject.org/fr/\"> <link rel=\"alternate\" hreflang=\"pt\" href=\"https://www.openproject.org/pt/\"> <link rel=\"canonical\" href=\"https://www.openproject.org/\"> <meta property=\"og:locale\" content=\"en_US\"/> <meta property=\"og:type\" content=\"website\"/> <meta property=\"og:title\" content=\"OpenProject - Open Source Project Management Software\"/> <meta property=\"og:description\" content=\"Open source project management software for classic, agile or hybrid project management: task management✓ Gantt charts✓ boards✓ team collaboration✓ time and cost reporting✓ FREE trial!\"/> <meta property=\"og:image\" content=\"https://www.openproject.org/assets/images/cover/openproject-home-5ab8cc23.jpg\"/> <meta property=\"og:url\" content=\"/\"/> <meta property=\"og:site_name\" content=\"OpenProject.org\"/> <meta name=\"twitter:image\" content=\"https://www.openproject.org/assets/images/cover/openproject-home-5ab8cc23.jpg\"/> <meta name=\"twitter:card\" content=\"summary_large_image\"/> <meta name=\"title\" content=\"OpenProject - Open Source Project Management Software\"/> <meta name=\"description\" content=\"Open source project management software for classic, agile or hybrid project management: task management✓ Gantt charts✓ boards✓ team collaboration✓ time and cost reporting✓ FREE trial!\"/> <meta name=\"image\" content=\"https://www.openproject.org/assets/images/cover/openproject-home-5ab8cc23.jpg\"/> <meta name=\"matomo:site_id\" content=\"1\"> <meta name=\"matomo:site_lang\" content=\"en\"> <script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@context\":\"https://schema.org\",\"name\":\"OpenProject - Open Source Project Management Software\",\"@id\":\"https://www.openproject.org/#website\",\"url\":\"https://www.openproject.org/\",\"description\":\"Open source project management software for classic, agile or hybrid project management: task management✓ Gantt charts✓ boards✓ team collaboration✓ time and cost reporting✓ FREE trial!\",\"potentialAction\":{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https://www.openproject.org/search/?query={search_term_string}\"},\"query-input\":\"required name=search_term_string\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@context\":\"https://schema.org\",\"name\":\"OpenProject\",\"@id\":\"https://www.openproject.org#organization\",\"sameAs\":[\"https://github.com/opf\",\"https://github.com/opf/openproject\",\"https://fosstodon.org/@openproject\",\"https://www.linkedin.com/company/openproject\",\"https://bsky.app/profile/openproject.bsky.social\",\"https://www.youtube.com/c/OpenProjectCommunity\",\"https://community.openproject.org\"],\"url\":\"https://www.openproject.org\",\"image\":{\"@id\":\"https://www.openproject.org#logo\"},\"logo\":{\"@id\":\"https://www.openproject.org#logo\",\"@type\":\"ImageObject\",\"caption\":\"OpenProject\",\"url\":\"https://www.openproject.org/assets/images/favicons/apple-touch-icon-504f34a4.png\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.openproject.org/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"url\":\"https://www.openproject.org/\",\"@id\":\"https://www.openproject.org/#webpage\",\"name\":\"OpenProject\"}}]},{\"@type\":\"WebPage\",\"name\":\"OpenProject - Open Source Project Management Software\",\"@id\":\"https://www.openproject.org/#webpage\",\"url\":\"https://www.openproject.org/\",\"isPartOf\":{\"@id\":\"https://www.openproject.org/#website\"},\"breadcrumb\":{\"@id\":\"https://www.openproject.org/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":{\"@type\":\"ReadAction\",\"target\":[\"https://www.openproject.org/\"]}}]}</script> <link href=\"/assets/stylesheets/site-2aef71ce.css\" rel=\"stylesheet\"/> <style type=\"text/css\">.home{overflow-x:hidden}.home .home-hero{background-position:top;background-repeat:no-repeat;background-size:cover;margin-bottom:50px;min-height:100vh;padding-bottom:14%;padding-top:14%}.home .home-hero .home-hero-container{padding:0 10% 10% 20%}.home .home-hero .home-hero-container h1{color:#fff;margin:0 0 20px}.home .home-hero .home-hero-container h2{color:#fff;margin:0 0 2rem}.home .home-hero .home-hero-container .intro-link{color:#fff}.home .home-hero .home-hero-container .intro-link:hover{color:#a1d6f9}.home .home-hero .home-hero-container .intro-link{margin-left:16px}.home .home-hero .home-hero-container .intro-link i{margin-right:1px}.home .home-hero .video-container{background-color:transp…",
                        "status_code": 200,
                        "final_url": "https://www.openproject.org/"
                    }
                ],
                "facts": [],
                "ignored_candidates": [],
                "blocked_candidates": 0,
                "source_diversity": 0,
                "host_coverage": 1,
                "source_type_coverage": 1,
                "exact_match_documents": 1,
                "external_exact_match_documents": 0,
                "elapsed_ms": 366,
                "candidates_considered": 1,
                "fetch_success_rate": 100,
                "avg_source_trust": 55,
                "avg_entity_score": 100
            },
            "evidence": {
                "scores": {
                    "legit": 0,
                    "safe": 0,
                    "trusted": 0,
                    "caution": 0,
                    "scam": 0,
                    "dangerous": 0,
                    "spam": 0,
                    "nsfw": 0
                },
                "counts": {
                    "official_presence": 0,
                    "business_profiles": 0,
                    "positive_reviews": 0,
                    "negative_reviews": 0,
                    "scam_reports": 0,
                    "dangerous_reports": 0,
                    "spam_reports": 0,
                    "adult_reports": 0
                },
                "tag_support": [],
                "top_supporting_facts": [],
                "top_positive_facts": []
            },
            "quality": {
                "source_diversity_score": 0,
                "entity_coverage_score": 100,
                "freshness_score": 18,
                "confidence": 24,
                "documents_fetched": 1,
                "external_documents_fetched": 0,
                "fact_count": 0,
                "avg_source_trust": 55,
                "avg_entity_score": 100,
                "fetch_success_rate": 100,
                "exact_match_score": 0,
                "query_coverage_score": 100,
                "host_coverage_score": 20,
                "source_type_coverage_score": 25,
                "qualified_evidence_score": 0,
                "exact_match_documents": 0,
                "blocked_candidates": 0,
                "used_direct_fallback": true,
                "external_results_found": 0
            },
            "decision": {
                "state": "insufficient",
                "uncertainty": true,
                "candidate_support": 0,
                "candidate_contradiction": 0,
                "supports": {
                    "dangerous": false,
                    "scam": false,
                    "spam": false,
                    "nsfw": false,
                    "trusted": false
                },
                "evidence_quality": "low",
                "state_label": "Inconclusive",
                "state_reason": "Public search did not yield usable third-party matches, so the system fell back to first-party inspection only."
            },
            "signals": {
                "scores": {
                    "legit": 0,
                    "safe": 0,
                    "trusted": 0,
                    "caution": 0,
                    "scam": 0,
                    "dangerous": 0,
                    "spam": 0,
                    "nsfw": 0
                },
                "counts": {
                    "official_presence": 0,
                    "business_profiles": 0,
                    "positive_reviews": 0,
                    "negative_reviews": 0,
                    "scam_reports": 0,
                    "dangerous_reports": 0,
                    "spam_reports": 0,
                    "adult_reports": 0
                },
                "candidate_support": 0,
                "candidate_contradiction": 0,
                "highlights": [
                    "External evidence remained inconclusive because diversity, exact matching, or confidence was still too weak."
                ]
            },
            "citations": [],
            "debug": {
                "top_supporting_facts": [],
                "top_positive_facts": [],
                "ignored_candidates": [],
                "budget_ms": 3000,
                "search_budget_ms": 3000,
                "review_budget_ms": 1500,
                "search_mode": "post-processing",
                "query_cap": 12,
                "provider_cap": 2,
                "reason": "post-processing",
                "priority": 92
            },
            "last_good": {
                "checked_at": "2026-03-18T21:14:28+00:00",
                "summary": "External checks ran, but the verified result set was still too sparse to harden the verdict.",
                "decision": {
                    "state": "insufficient",
                    "uncertainty": true,
                    "candidate_support": 0,
                    "candidate_contradiction": 0,
                    "supports": {
                        "dangerous": false,
                        "scam": false,
                        "spam": false,
                        "nsfw": false,
                        "trusted": false
                    },
                    "evidence_quality": "low",
                    "state_label": "Inconclusive",
                    "state_reason": "Public search did not yield usable third-party matches, so the system fell back to first-party inspection only."
                },
                "signals": {
                    "scores": {
                        "legit": 0,
                        "safe": 0,
                        "trusted": 0,
                        "caution": 0,
                        "scam": 0,
                        "dangerous": 0,
                        "spam": 0,
                        "nsfw": 0
                    },
                    "counts": {
                        "official_presence": 0,
                        "business_profiles": 0,
                        "positive_reviews": 0,
                        "negative_reviews": 0,
                        "scam_reports": 0,
                        "dangerous_reports": 0,
                        "spam_reports": 0,
                        "adult_reports": 0
                    },
                    "candidate_support": 0,
                    "candidate_contradiction": 0,
                    "highlights": [
                        "External evidence remained inconclusive because diversity, exact matching, or confidence was still too weak."
                    ]
                },
                "citations": []
            }
        },
        "external_decision": {
            "state": "insufficient",
            "uncertainty": true,
            "candidate_support": 0,
            "candidate_contradiction": 0,
            "supports": {
                "dangerous": false,
                "scam": false,
                "spam": false,
                "nsfw": false,
                "trusted": false
            },
            "evidence_quality": "low",
            "state_label": "Inconclusive",
            "state_reason": "Public search did not yield usable third-party matches, so the system fell back to first-party inspection only."
        },
        "signal_scores": [
            {
                "label": "Strongest tag heuristic",
                "value": "T · 86%",
                "tone": "good",
                "detail": "The highest raw tag match from the heuristic engine before visibility thresholds and manual overrides."
            },
            {
                "label": "Trust score",
                "value": "81/100",
                "tone": "good",
                "detail": "Confidence derived from authority, crawl quality, stability, and risk signals."
            },
            {
                "label": "Authority score",
                "value": "54/100",
                "tone": "caution",
                "detail": "A higher authority score usually means broader reputation and backlink confidence."
            },
            {
                "label": "Spam risk",
                "value": "0/100",
                "tone": "good",
                "detail": "Lower is better. This blends spam indicators with false-positive protections for legitimate sites."
            },
            {
                "label": "Quality score",
                "value": "95/100",
                "tone": "good",
                "detail": "Based on crawl quality, content completeness, and technical evidence."
            },
            {
                "label": "Safety score",
                "value": "100/100",
                "tone": "good",
                "detail": "Higher is safer. Direct fraud signals can heavily cap this even when SEO signals look strong."
            },
            {
                "label": "Fraud score",
                "value": "1/100",
                "tone": "good",
                "detail": "Lower is better. This reflects phishing, drainer, fake-support, fake-shop, and malware signals."
            },
            {
                "label": "Infrastructure risk",
                "value": "3/100",
                "tone": "good",
                "detail": "Lower is better. This reflects the IP, registrar, and nameserver neighbourhood seen by the crawler."
            },
            {
                "label": "Evidence confidence",
                "value": "56/100",
                "tone": "caution",
                "detail": "Higher means the crawler had enough pages and registry evidence to make a stronger call."
            },
            {
                "label": "External evidence",
                "value": "Low",
                "tone": "unknown",
                "detail": "Quality of the structured search and review evidence cluster."
            },
            {
                "label": "External decision",
                "value": "Inconclusive",
                "tone": "unknown",
                "detail": "How third-party evidence compares with the current candidate tag."
            },
            {
                "label": "NSFW score",
                "value": "0/100",
                "tone": "good",
                "detail": "Context-aware adult-content detection with medical / educational false-positive reduction."
            },
            {
                "label": "Registry stability",
                "value": "100/100",
                "tone": "good",
                "detail": "Based on age, expiry runway, and the amount of ownership / registrar churn."
            }
        ],
        "signal_sections": [
            {
                "title": "Registry & ownership",
                "items": [
                    {
                        "label": "Domain age",
                        "value": "22.5 years",
                        "tone": "good",
                        "detail": "Older domains generally carry more historical trust than very new ones."
                    },
                    {
                        "label": "Stability score",
                        "value": "100/100",
                        "tone": "good",
                        "detail": "Penalised by registrar, ownership, and nameserver churn."
                    },
                    {
                        "label": "Days to expiry",
                        "value": "193",
                        "tone": "good",
                        "detail": "Very short renewal windows can be a weak trust signal."
                    },
                    {
                        "label": "Registrar / ownership changes",
                        "value": "0 / 0",
                        "tone": "good",
                        "detail": "Frequent ownership churn can weaken trust."
                    },
                    {
                        "label": "Nameserver changes",
                        "value": "0",
                        "tone": "good",
                        "detail": "Repeated infrastructure changes can indicate instability."
                    },
                    {
                        "label": "DNSSEC / privacy",
                        "value": "DNSSEC off · privacy off",
                        "tone": "caution",
                        "detail": "DNSSEC strengthens DNS trust; privacy is neutral on its own."
                    }
                ]
            },
            {
                "title": "Reputation & search evidence",
                "items": [
                    {
                        "label": "Backlinks",
                        "value": "4",
                        "tone": "unknown",
                        "detail": "Broader backlink evidence usually improves confidence."
                    },
                    {
                        "label": "Referring domains",
                        "value": "4",
                        "tone": "unknown",
                        "detail": "Unique linking domains are more useful than raw link volume."
                    },
                    {
                        "label": "Organic keywords",
                        "value": "101",
                        "tone": "caution",
                        "detail": "Search footprint helps distinguish real sites from thin shells."
                    },
                    {
                        "label": "Indexed pages",
                        "value": "74",
                        "tone": "caution",
                        "detail": "Larger index coverage usually means more evidence to classify from."
                    },
                    {
                        "label": "Brand strength",
                        "value": "86/100",
                        "tone": "good",
                        "detail": "Stronger brand signals reduce false positives for legitimate sites."
                    },
                    {
                        "label": "Risk label",
                        "value": "GOOD",
                        "tone": "unknown",
                        "detail": "This is the raw crawl / heuristic risk label feeding the tag model."
                    }
                ]
            },
            {
                "title": "Crawl, content & technicals",
                "items": [
                    {
                        "label": "HTTP status",
                        "value": "200",
                        "tone": "good",
                        "detail": "Healthy responses make classification more reliable."
                    },
                    {
                        "label": "HTTPS / speed",
                        "value": "HTTPS OK · 157 ms",
                        "tone": "good",
                        "detail": "Slow or broken technical signals weaken confidence."
                    },
                    {
                        "label": "Content words",
                        "value": "2,880",
                        "tone": "good",
                        "detail": "Thin pages are harder to trust and easier to manipulate."
                    },
                    {
                        "label": "Schema / structure",
                        "value": "1 schema · meta · H1",
                        "tone": "caution",
                        "detail": "Structured markup and basic on-page hygiene improve quality confidence."
                    },
                    {
                        "label": "Links on page",
                        "value": "92 internal · 8 external",
                        "tone": "good",
                        "detail": "Link patterns help detect thin directories and promo pages."
                    },
                    {
                        "label": "Page speed / mobile",
                        "value": "100/100 · 93/100",
                        "tone": "good",
                        "detail": "Better technical quality generally reduces low-effort site patterns."
                    },
                    {
                        "label": "Crawl access",
                        "value": "Open",
                        "tone": "good",
                        "detail": "The crawler reached the site without an anti-bot challenge."
                    }
                ]
            },
            {
                "title": "External evidence & explainability",
                "items": [
                    {
                        "label": "Decision state",
                        "value": "Inconclusive",
                        "tone": "unknown",
                        "detail": "Public search did not yield usable third-party matches, so the system fell back to first-party inspection only."
                    },
                    {
                        "label": "Evidence quality",
                        "value": "Low",
                        "tone": "unknown",
                        "detail": "Blends source trust, domain matching, evidence diversity, and freshness."
                    },
                    {
                        "label": "Support vs contradiction",
                        "value": "0 / 0",
                        "tone": "unknown",
                        "detail": "Compares how much structured external evidence supports the candidate tag against evidence that contradicts it."
                    },
                    {
                        "label": "Qualified risk sources",
                        "value": "No",
                        "tone": "good",
                        "detail": "Risk tags only promote from external evidence when source diversity or source trust thresholds are met."
                    },
                    {
                        "label": "Uncertainty buffer",
                        "value": "Active",
                        "tone": "caution",
                        "detail": "Prevents thin or mixed external evidence from forcing a stronger tag than the evidence can justify."
                    }
                ]
            }
        ],
        "positives": [
            "Established domain age: 22.5 years.",
            "Low registrar / ownership churn with solid registry stability.",
            "Healthy crawl quality and on-page completeness."
        ],
        "risks": [
            "External evidence was mixed or sparse, so the tag model keeps an uncertainty buffer instead of overcommitting."
        ]
    },
    "traffic_confidence": 70,
    "whois": {
        "current": {
            "id": 21789,
            "domain": "openproject.org",
            "source_type": "rdap",
            "rdap_url": "https://rdap.publicinterestregistry.org/rdap/domain/openproject.org",
            "registrar_name": "InterNetX GmbH",
            "registrar_handle": "151",
            "registrant_name": "",
            "registrant_org": "",
            "registrant_country": "",
            "registrant_email": "",
            "abuse_email": "domain-abuse@internetx.com",
            "created_date": "2003-10-24 15:48:57",
            "updated_date": "2025-12-08 15:49:21",
            "expires_date": "2026-10-24 15:48:57",
            "nameservers_json": "[\"ns-1298.awsdns-34.org\",\"ns-1615.awsdns-09.co.uk\",\"ns-507.awsdns-63.com\",\"ns-673.awsdns-20.net\"]",
            "status_json": "[\"client transfer prohibited\"]",
            "dnssec": "unsigned",
            "privacy_protected": 0,
            "content_hash": "2930d35c33c8ee9011f1916b66127881b6a5116a7bf04d560880dd488ce79684",
            "history_count": 1,
            "last_checked_at": "2026-03-18 19:53:00",
            "last_changed_at": "2026-03-18 19:53:00",
            "created_at": "2026-03-18 19:53:00",
            "updated_at": "2026-03-18 19:53:00"
        },
        "history": [
            {
                "id": 22180,
                "domain": "openproject.org",
                "source_type": "rdap",
                "registrar_name": "InterNetX GmbH",
                "registrar_handle": "151",
                "registrant_name": "",
                "registrant_org": "",
                "registrant_country": "",
                "registrant_email": "",
                "abuse_email": "domain-abuse@internetx.com",
                "created_date": "2003-10-24 15:48:57",
                "updated_date": "2025-12-08 15:49:21",
                "expires_date": "2026-10-24 15:48:57",
                "nameservers_json": "[\"ns-1298.awsdns-34.org\",\"ns-1615.awsdns-09.co.uk\",\"ns-507.awsdns-63.com\",\"ns-673.awsdns-20.net\"]",
                "status_json": "[\"client transfer prohibited\"]",
                "dnssec": "unsigned",
                "privacy_protected": 0,
                "content_hash": "2930d35c33c8ee9011f1916b66127881b6a5116a7bf04d560880dd488ce79684",
                "checked_at": "2026-03-18 19:53:00",
                "change_summary": "Initial WHOIS snapshot captured.",
                "created_at": "2026-03-18 19:53:00"
            }
        ],
        "signals": {
            "age_years": 22.5,
            "days_to_expiry": 193,
            "days_since_last_registry_update": 126,
            "stability_score": 100,
            "registrar_changes": 0,
            "ownership_changes": 0,
            "nameserver_changes": 0,
            "status_changes": 0,
            "history_entries": 1,
            "privacy_protected": false,
            "dnssec_enabled": false,
            "has_registrant_country": false,
            "registrant_country": "",
            "nameserver_count": 4,
            "status_count": 1
        }
    },
    "discovered_domain": {
        "id": 62025,
        "domain": "openproject.org",
        "first_seen_at": "2026-03-15 18:22:47",
        "last_crawled_at": "2026-03-30 07:13:29",
        "last_title": "OpenProject - Open Source Project Management Software",
        "last_http_status": 200,
        "discovered_from_domain": "arawa.fr",
        "depth": 0,
        "backlinks_count": 4,
        "rating_cache": 42,
        "spam_score": 0,
        "risk_label": "good",
        "category_name": "Technology: SaaS & Productivity",
        "primary_country_code": "",
        "internal_links_count": 92,
        "external_links_count": 8,
        "social_profiles_count": 4,
        "content_word_count": 2880,
        "title_quality_score": 93,
        "has_meta_description": 1,
        "has_h1": 1,
        "language_code": "en",
        "response_time_ms": 157,
        "robots_status": 0,
        "sitemap_status": 0,
        "sitemap_total_urls": 0,
        "quality_score": 95,
        "site_name": "OpenProject.org",
        "canonical_domain": "",
        "favicon_present": 1,
        "schema_org_count": 1,
        "noindex_detected": 0,
        "feed_links_count": 0,
        "https_working": 1,
        "estimated_authority_score": 41,
        "trust_score": 86,
        "nsfw_score": 0,
        "overall_rank_estimate": 1565612,
        "primary_tag": "C",
        "tag_codes": "C,Uncertain",
        "manual_verified_status": "",
        "manual_tag_codes": "",
        "manual_rating_delta": 0,
        "manual_authority_delta": 0,
        "manual_trust_delta": 0,
        "manual_note": null,
        "manual_adjusted_by": null,
        "manual_adjusted_at": null,
        "manual_lock_scores": 0,
        "manual_lock_flags": 0,
        "crawl_blocked": 0,
        "crawl_blocked_by": "",
        "crawl_blocked_reason": null,
        "safety_score": 100,
        "fraud_score": 1,
        "legitimacy_score": 68,
        "infrastructure_risk_score": 3,
        "score_confidence": 54,
        "tag_confidence": 28,
        "category_confidence": 99,
        "deep_crawl_pages": 0,
        "resolved_ip": "3.78.177.140",
        "category_candidates_json": "[{\"category\":\"Technology: SaaS & Productivity\",\"score\":83},{\"category\":\"Business: Corporate & Professional Services\",\"score\":22},{\"category\":\"Technology\",\"score\":17}]",
        "page_signals_json": "[]",
        "score_reasons_json": "[\"Trusted status now requires clean crawl access and stronger confidence, so this result was downgraded to caution.\",\"Overall rating is now capped by evidence confidence to prevent inflated scores from thin signals.\"]",
        "route_domain": "openproject.org",
        "display_domain": "openproject.org"
    },
    "explainability": {
        "summary": "openproject.org currently scores 64/100. The score is being shaped by a mixed signal profile rather than one dominant factor. Evidence confidence is moderate, so the score should settle further after more crawl depth or registry checks. This is an estimated profile rather than a manually tracked one. Crawler access looks clean.",
        "badges": [
            {
                "label": "Profile",
                "value": "Estimated profile",
                "tone": "unknown",
                "detail": null
            },
            {
                "label": "Evidence confidence",
                "value": "Moderate confidence",
                "tone": "caution",
                "detail": "54/100"
            },
            {
                "label": "Traffic confidence",
                "value": "Solid confidence",
                "tone": "good",
                "detail": "70/100"
            },
            {
                "label": "Crawler access",
                "value": "Clean visibility",
                "tone": "good",
                "detail": null
            }
        ],
        "weighted_contributions": [
            {
                "label": "Quality system",
                "points": "+22.8",
                "tone": "caution",
                "detail": "Technical quality, crawl depth, page structure, and implementation hygiene. Current subsystem score: 67/100."
            },
            {
                "label": "Reputation system",
                "points": "+17.7",
                "tone": "caution",
                "detail": "Authority, search visibility, reach, engagement, and registry stability. Current subsystem score: 52/100."
            },
            {
                "label": "Safety system",
                "points": "+32.0",
                "tone": "good",
                "detail": "Fraud, spam, and trust signals from infrastructure, crawl, and registry evidence. Current subsystem score: 100/100."
            },
            {
                "label": "Risk clamp",
                "points": "-8.0",
                "tone": "risk",
                "detail": "Safety thresholds capped the final score until the risk profile improves."
            }
        ],
        "evidence_cards": [
            {
                "label": "Authority and trust",
                "value": "54/100 · trust 80/100",
                "tone": "caution",
                "detail": "312 monthly visitors, 101 organic keywords, brand completeness 86/100, engagement 84/100."
            },
            {
                "label": "Backlink and search evidence",
                "value": "4 referring domains",
                "tone": "good",
                "detail": "4 backlinks across 4 referring domains. Diversity 94/100; spam penalty 0."
            },
            {
                "label": "Registry and domain stability",
                "value": "22.5 years old",
                "tone": "good",
                "detail": "Stability 100/100 · age 22.5 years · registrar InterNetX GmbH · expires in 193 days."
            },
            {
                "label": "Safety and fraud posture",
                "value": "Safety 100/100 · fraud 1/100",
                "tone": "good",
                "detail": "Primary tag T · safety 100/100 · fraud 1/100."
            }
        ],
        "positives": [
            "Established domain age: 22.5 years.",
            "Low registrar / ownership churn with solid registry stability.",
            "Healthy crawl quality and on-page completeness.",
            "Registry history looks stable, which supports legitimacy and trust.",
            "The domain has been registered for years, which usually improves trust confidence.",
            "HTTPS is working, so the site clears a basic transport-security check."
        ],
        "risks": [
            "External evidence was mixed or sparse, so the tag model keeps an uncertainty buffer instead of overcommitting."
        ],
        "freshness": [
            {
                "label": "Crawl evidence",
                "value": "2026-03-30 07:13:29",
                "tone": "risk",
                "detail": "Crawl and page content sample. Age: 14d ago."
            },
            {
                "label": "WHOIS snapshot",
                "value": "2026-03-18 19:53:00",
                "tone": "risk",
                "detail": "Registry profile and stability signals. Age: 25d ago."
            },
            {
                "label": "Keyword view",
                "value": "2026-04-13 16:21:49",
                "tone": "good",
                "detail": "Estimated visibility until tracked keyword snapshots exist. Age: 0s ago."
            },
            {
                "label": "Rank history",
                "value": "2026-04-13 16:21:49",
                "tone": "good",
                "detail": "Estimated trend derived from current profile and crawl signals. Age: 0s ago."
            },
            {
                "label": "Audience geography",
                "value": "Not captured yet",
                "tone": "unknown",
                "detail": "Audience mix is estimated from available signals rather than first-party audience logs."
            }
        ],
        "section_notes": {
            "audience": "Audience geography is estimated from category, country, traffic mix, and brand signals until first-party audience data is collected.",
            "keywords": "Top keywords are estimated from crawl language, brand, category, and visibility signals until tracked keyword snapshots are stored.",
            "history": "Rank history is estimated from the current profile because no stored history exists for this domain yet."
        },
        "base_weighted_score": 72,
        "fraud_clamp_penalty": 8,
        "final_score": 64
    },
    "insight_snapshot": {
        "version": 1,
        "generated_at": "2026-04-13T16:21:49+00:00",
        "domain": "openproject.org",
        "display_name": "OpenProject",
        "is_tracked": false,
        "is_estimated": true,
        "overall_score": 64,
        "authority_score": 54,
        "trust_score": 80,
        "safety_score": 100,
        "fraud_score": 1,
        "confidence_score": 54,
        "traffic_confidence": 70,
        "last_crawled_at": "2026-03-30 07:13:29",
        "crawl_blocked": false,
        "summary": "openproject.org currently scores 64/100. The score is being shaped by a mixed signal profile rather than one dominant factor. Evidence confidence is moderate, so the score should settle further after more crawl depth or registry checks. This is an estimated profile rather than a manually tracked one. Crawler access looks clean.",
        "badges": [
            {
                "label": "Profile",
                "value": "Estimated profile",
                "tone": "unknown",
                "detail": null
            },
            {
                "label": "Evidence confidence",
                "value": "Moderate confidence",
                "tone": "caution",
                "detail": "54/100"
            },
            {
                "label": "Traffic confidence",
                "value": "Solid confidence",
                "tone": "good",
                "detail": "70/100"
            },
            {
                "label": "Crawler access",
                "value": "Clean visibility",
                "tone": "good",
                "detail": null
            }
        ],
        "top_positive_signals": [
            "Established domain age: 22.5 years.",
            "Low registrar / ownership churn with solid registry stability.",
            "Healthy crawl quality and on-page completeness.",
            "Registry history looks stable, which supports legitimacy and trust.",
            "The domain has been registered for years, which usually improves trust confidence."
        ],
        "top_risk_signals": [
            "External evidence was mixed or sparse, so the tag model keeps an uncertainty buffer instead of overcommitting."
        ],
        "freshness": [
            {
                "label": "Crawl evidence",
                "value": "2026-03-30 07:13:29",
                "tone": "risk",
                "detail": "Crawl and page content sample. Age: 14d ago."
            },
            {
                "label": "WHOIS snapshot",
                "value": "2026-03-18 19:53:00",
                "tone": "risk",
                "detail": "Registry profile and stability signals. Age: 25d ago."
            },
            {
                "label": "Keyword view",
                "value": "2026-04-13 16:21:49",
                "tone": "good",
                "detail": "Estimated visibility until tracked keyword snapshots exist. Age: 0s ago."
            },
            {
                "label": "Rank history",
                "value": "2026-04-13 16:21:49",
                "tone": "good",
                "detail": "Estimated trend derived from current profile and crawl signals. Age: 0s ago."
            },
            {
                "label": "Audience geography",
                "value": "Not captured yet",
                "tone": "unknown",
                "detail": "Audience mix is estimated from available signals rather than first-party audience logs."
            }
        ],
        "top_tags": [
            {
                "code": "T",
                "label": "Trusted",
                "tone": "good"
            },
            {
                "code": "Uncertain",
                "label": "Uncertain",
                "tone": "unknown"
            }
        ]
    },
    "is_tracked": false,
    "is_estimated": true,
    "live_state": {
        "status": "processing",
        "status_label": "Cache build running",
        "message": "The refreshed page cache is still being built for this domain.",
        "updated_at": "2026-04-13T17:50:00+00:00"
    },
    "refresh_state": {
        "canRequest": false,
        "queued": true,
        "processing": true,
        "stageKey": "cache-queued",
        "stageLabel": "Cache build running",
        "cooldownUntil": null,
        "message": "The refreshed page cache is still being built for this domain.",
        "action": "/domain/openproject.org/refresh",
        "isGuestCooldown": false,
        "cooldownSeconds": 0
    },
    "urlscan_report": {
        "domain": "openproject.org",
        "status": "error",
        "submitted_at": "2026-03-19T22:38:35+00:00",
        "completed_at": null,
        "last_checked_at": "2026-03-19T22:38:35+00:00",
        "last_error": "Rate limit for 'public' exceeded. Limit is 5000 per day. Reset in 4883 seconds.",
        "submitted_url": "https://openproject.org/",
        "uuid": "",
        "result_url": "",
        "api_result_url": "",
        "visibility": "public",
        "summary": "urlscan.io scan submission failed.",
        "report": [],
        "report_summary": [],
        "is_fresh": false,
        "can_retry": true,
        "poll_after_seconds": 20
    }
}