{
    "ready": true,
    "site": {
        "id": 0,
        "domain": "rfi.fr",
        "display_name": "RFI",
        "primary_country_code": "FR",
        "category_name": "Business"
    },
    "metrics": {
        "global_rank": 555,
        "country_rank": 17,
        "category_rank": 359,
        "daily_pageviews_per_visitor": 4.09,
        "daily_time_on_site_seconds": 387,
        "bounce_rate": 29.06,
        "search_visits_percent": 42.34,
        "total_sites_linking_in": 15,
        "monthly_unique_visitors": 459,
        "recorded_at": "2026-03-30 17:48:48"
    },
    "audit": {
        "score": 96
    },
    "traffic_sources": {
        "direct_percent": 27.66,
        "search_percent": 35.61,
        "social_percent": 6.34,
        "referral_percent": 14.03,
        "email_percent": 6.34,
        "paid_percent": 10.02
    },
    "seo_profile": {
        "backlinks_total": 15,
        "referring_domains": 15,
        "dofollow_backlinks_percent": 100,
        "organic_keywords": 101,
        "indexed_pages": 115,
        "page_speed_score": 100,
        "mobile_friendliness_score": 95,
        "authority_score": 53,
        "spam_risk_score": 12
    },
    "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 17:48:48"
    },
    "keywords": [
        {
            "keyword": "RFI",
            "position": 17,
            "search_engine": "Estimated",
            "checked_at": "2026-04-18 12:56:38",
            "is_estimated": true
        },
        {
            "keyword": "RFI business",
            "position": 19,
            "search_engine": "Estimated",
            "checked_at": "2026-04-18 12:56:38",
            "is_estimated": true
        },
        {
            "keyword": "RFI reviews",
            "position": 21,
            "search_engine": "Estimated",
            "checked_at": "2026-04-18 12:56:38",
            "is_estimated": true
        },
        {
            "keyword": "rfi",
            "position": 23,
            "search_engine": "Estimated",
            "checked_at": "2026-04-18 12:56:38",
            "is_estimated": true
        },
        {
            "keyword": "all",
            "position": 25,
            "search_engine": "Estimated",
            "checked_at": "2026-04-18 12:56:38",
            "is_estimated": true
        },
        {
            "keyword": "the",
            "position": 27,
            "search_engine": "Estimated",
            "checked_at": "2026-04-18 12:56:38",
            "is_estimated": true
        },
        {
            "keyword": "news",
            "position": 29,
            "search_engine": "Estimated",
            "checked_at": "2026-04-18 12:56:38",
            "is_estimated": true
        },
        {
            "keyword": "from",
            "position": 31,
            "search_engine": "Estimated",
            "checked_at": "2026-04-18 12:56:38",
            "is_estimated": true
        }
    ],
    "rating": {
        "overall": 68,
        "label": "Healthy",
        "breakdown": [
            {
                "label": "Technical foundation",
                "score": 12,
                "max": 18
            },
            {
                "label": "Authority & trust",
                "score": 17,
                "max": 30
            },
            {
                "label": "Reach & market presence",
                "score": 3,
                "max": 18
            },
            {
                "label": "Search visibility",
                "score": 4,
                "max": 12
            },
            {
                "label": "Engagement & retention",
                "score": 9,
                "max": 10
            },
            {
                "label": "Channels & diversification",
                "score": 4,
                "max": 6
            },
            {
                "label": "Registry stability",
                "score": 5,
                "max": 6
            },
            {
                "label": "Quality system",
                "score": 67,
                "max": 100
            },
            {
                "label": "Reputation system",
                "score": 50,
                "max": 100
            },
            {
                "label": "Safety system",
                "score": 95,
                "max": 100
            },
            {
                "label": "Evidence confidence",
                "score": 54,
                "max": 100
            },
            {
                "label": "External intelligence",
                "score": 24,
                "max": 100
            }
        ],
        "authority_score": 57,
        "quality_score": 67,
        "reputation_score": 50,
        "safety_score": 95,
        "confidence_score": 54,
        "fraud_score": 0,
        "authority_signals": {
            "backlinks": 15,
            "referring_domains": 15,
            "organic_keywords": 101,
            "indexed_pages": 115,
            "monthly_visitors": 459,
            "global_rank": 555,
            "engagement_score": 83,
            "crawl_quality_score": 100,
            "brand_completeness_score": 83,
            "link_diversity_score": 97,
            "technical_reliability_score": 78,
            "whois_score": 87,
            "whois_age_years": 31.3,
            "whois_stability_score": 100,
            "spam_penalty": 0
        },
        "whois_signals": {
            "age_years": 31.3,
            "days_to_expiry": 131,
            "days_since_last_registry_update": 259,
            "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": 6,
            "status_count": 1
        }
    },
    "authority_score": 57,
    "trust_score": 84,
    "domain_tags": {
        "primary_tag": "T",
        "primary_tag_score": 88,
        "primary_candidate": "T",
        "primary_candidate_score": 88,
        "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": 88,
                "score": 88,
                "match_percent": 88,
                "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": 88,
                "score": 88,
                "match_percent": 88,
                "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": 2,
                "score": 2,
                "match_percent": 2,
                "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": 85,
        "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 (88% 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": "rfi.fr",
            "candidate_tag": "",
            "checked_at": "2026-03-18T23:18:48+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": [
                    "\"rfi.fr\" -site:rfi.fr -site:www.rfi.fr",
                    "\"rfi.fr\" official site -site:rfi.fr -site:www.rfi.fr",
                    "\"rfi.fr\" wikipedia -site:rfi.fr -site:www.rfi.fr",
                    "\"rfi.fr\" reviews OR complaints -site:rfi.fr -site:www.rfi.fr",
                    "\"rfi.fr\" reputation OR scam OR legit OR safe -site:rfi.fr -site:www.rfi.fr",
                    "\"rfi.fr\" BBB OR LinkedIn OR Crunchbase OR \"Companies House\" OR wikipedia -site:rfi.fr -site:www.rfi.fr",
                    "rfi website -site:rfi.fr -site:www.rfi.fr",
                    "rfi company -site:rfi.fr -site:www.rfi.fr",
                    "rfi wikipedia -site:rfi.fr -site:www.rfi.fr",
                    "rfi reviews -site:rfi.fr -site:www.rfi.fr",
                    "rfi complaints -site:rfi.fr -site:www.rfi.fr",
                    "rfi trustpilot -site:rfi.fr -site:www.rfi.fr"
                ],
                "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://rfi.fr/",
                        "host": "rfi.fr",
                        "title": "rfi.fr",
                        "snippet": "First-party fallback captured directly from the domain when public search engines returned no usable results.",
                        "is_direct_fallback": true,
                        "source_meta": {
                            "host": "rfi.fr",
                            "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://rfi.fr/",
                        "host": "rfi.fr",
                        "title": "rfi.fr",
                        "snippet": "First-party fallback captured directly from the domain when public search engines returned no usable results.",
                        "is_direct_fallback": true,
                        "source_meta": {
                            "host": "rfi.fr",
                            "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": "RFI - All the news from France, Europe, Africa and the rest of the world. Skip to main content Homepage News News Science & Technology Business Culture Sports Environment Podcasts en Français English Español Português Português do Brasil Hausa Kiswahili Mandenkan Fulfulde România Русский Українською Tiếng Việt 华语 華語 ភាសាខ្មែរ فارسی Settings Manage my privacy settings Menu Menu Homepage News News Science & Technology Business Culture Sports Environment Podcasts Menu Menu Close French local elections 2026 Podcasts Paris Live Videos Sections Science & Technology Business Culture Sports Environment Sponsored contents Learn French By region France Africa International Previous Next France Africa International Culture Sports Science & technology Environment Previous Next French local elections 2026 Macron unveils 'France Libre' as France’s next aircraft carrier French defense What to watch in the deciding round of France's local elections French local elections 2026 Macron warns extremes pose danger to France ahead of final mayoral vote French Local Elections 2026 Ukraine accepts EU help to repair Druzhba pipeline War in Ukraine Iran acknowledges death of security chief Ali Larijani in Israeli strike Middle East War Senegal's football bosses say they will appeal to keep 2025 Cup of Nations title Africa Cup of Nations 2025 British Royals receive Nigeria's President Bola Tinubu in Windsor Nigeria-UK relations Live news 21:24AFP Costa Rica cuts ties with Cuba, closes embassy in Havana 21:14AFP NY's New Museum returns contemporary to heart of Manhattan 21:10AFP Eight killed during Rio police operation, including drug kingpin 21:00AFP Cesar Chavez, icon of US labor movement, accused of serial sex abuse: report 20:54AFP Barcelona demolish Newcastle 7-2 to reach Champions League quarters Advertising Our videos Women in France's local elections France France's balancing act in the Middle East war Solidarity with displaced people in Beirut Features Under the same sky, climate change brings drought to Somalia and floods to Kenya CLIMATE CHANGE Kharg Island, the fragile oil lifeline behind Iran’s war economy MIDDLE EAST WAR ‘We are all foreigners’: Japanese director casts dandelion seeds in migration tale CINEMA Behind the success of Shen Yun show, former Falun Gong followers allege abuse RFI investigation Benin singer OPA wins 2026 RFI African music prize Music What are the consequences of war in the Middle East for African countries? INTERVIEW Suspended sentences for French riot police who beat 'yellow vest' protesters Justice Artemis II: humanity's return to the Moon reaches the launch pad Space exploration UN raises concerns of 'ethnic cleansing' amid record displacement in West Bank Human rights 'Continuing the war serves no purpose at the moment': former Israeli minister INTERVIEW 'War is not a video game': France gauges response to the Middle East conflict Audio content International report Former French president Sarkozy back in court over Libyan funding scandal Justice PSG outclass Chelsea to reach Champions League last eight 2026 Champions League 'It will be another ordeal': crash victim families prepare for Sarkozy appeal trial Justice France’s parity law boosts female candidates, but most mayors are still men FRENCH LOCAL ELECTIONS 2026 Flurry of new stars join Michelin Guide's gastronomic constellation Gastronomy Ex-Belgian diplomat to stand trial over 1961 assassination of Patrice Lumumba JUSTICE France holds back warships as Trump urges allies to secure Strait of Hormuz Middle East War Iranian football bosses 'in talks' over moving Wor…",
                        "html": "<!DOCTYPE html> <html dir=\"ltr\" lang=\"en\" class=\"\"> <head> <meta charset=\"UTF-8\"> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, viewport-fit=cover\"> <link rel=\"preconnect\" href=\"https://tms.fmm.io\" crossorigin> <link rel=\"preload\" as=\"style\" href=\"/build/css/root.3a13d645e41cf008ec17.css\"> <link rel=\"preload\" href=\"/build/fonts/inter_latin.640b10a7966d94927c2ec64a71918e48.woff2\" as=\"font\" type=\"font/woff2\" crossorigin=\"anonymous\"> <link rel=\"preload\" as=\"style\" href=\"/build/css/page-builder.ee3d4cf98598c27c16e3.css\"> <style>body [v-cloak]{display:none}body,html{scroll-behavior:smooth}p a{color:#e2001a}@media (hover:hover){p a:hover{text-decoration:underline}}p a:visited{color:#e2001a}p strong{font-weight:700}p em{font-style:italic}.tms-ad[data-tms-ad-type=inread]{margin:0 auto;max-width:530px}.t-td-und{text-decoration:underline}body,html{background-color:#fff;color:#313131}a:focus-visible,button:focus-visible{outline:2px solid #313131;outline-color:#313131}a:focus-visible:active,a:focus-visible:visited,button:focus-visible:active,button:focus-visible:visited{outline:none;outline-color:#313131}@media (hover:hover){a:focus-visible:hover,button:focus-visible:hover{outline:none}}a:focus-visible{outline-offset:4px}button:focus-visible{outline-offset:-2px}.o-aside-content .o-aside-content__row.m-section-title:has(a:focus-visible){overflow:visible}.o-aside-content .o-aside-content__row.o-aside-content__row--flex-end:has(a:focus-visible){overflow:visible}.o-footer .a-footer-credits .a-svg--logo-acpm:focus-visible,.o-footer details summary{outline-color:#fff}.o-footer .m-footer-logos a:focus-visible{border-radius:3px;outline-color:#fff}.o-footer .m-footer-logos a:focus-visible .a-svg.a-svg--logo-fmm{-webkit-margin-start:0;margin-inline-start:0}.o-footer .m-nav-list .m-nav-list__list .m-nav-list__list__item a.a-hot-tag:focus-visible{outline:revert}.m-carousel-item .m-carousel-item__title:has(a:focus-visible){margin:6px;overflow:visible}.m-item-list-article .article__infos .article__title:has(a:focus-visible){margin:6px;overflow:visible}.m-item-list-article .article__infos .article__title:has(a:focus-visible) h2{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex}.m-item-list-article.m-item-list-article--card .article__infos .article__title:has(a:focus-visible){overflow:visible}.m-em-video__type-youtube .a-unmute-btn:focus-visible{outline-color:#fff}@media screen and (min-width:640px){.m-details[open][data-disabled-tablet=true] summary:focus-visible{outline:none}}.o-layout-list.grid-1-1-1{-webkit-column-gap:16px;-moz-column-gap:16px;column-gap:16px;display:grid;grid-template-columns:repeat(1,1fr)}@media screen and (min-width:640px){.o-layout-list.grid-1-1-1{-webkit-column-gap:16px;-moz-column-gap:16px;column-gap:16px;grid-template-columns:repeat(1,1fr)}}@media screen and (min-width:1024px){.o-layout-list.grid-1-1-1{-webkit-column-gap:24px;-moz-column-gap:24px;column-gap:24px;grid-template-columns:repeat(1,1fr)}}.o-layout-list.grid-1-2-1{-webkit-column-gap:16px;-moz-column-gap:16px;column-gap:16px;display:grid;grid-template-columns:repeat(1,1fr)}@media screen and (min-width:640px){.o-layout-list.grid-1-2-1{-webkit-column-gap:16px;-moz-column-gap:16px;column-gap:16px;grid-template-columns:repeat(2,1fr)}}@media screen and (min-width:1024px){.o-layout-list.grid-1-2-1{-webkit-column-gap:24px;-moz-column-gap:24px;column-gap:24px;grid-template-columns:repeat(1,1fr)}}.o-layout-list.grid-1-2-2{-webkit-column-gap:16px;-moz-column-gap:16px;column-gap:16px;display:grid;grid-template-columns:repeat(1,1fr)}@media screen and (min-width:640px){.o-layout-list.grid-1-2-2{-webkit-column-gap:16px;-moz-column-gap:16px;column-gap:16px;grid-template-columns:repeat(2,1fr)}}@media screen and (min-width:1024px){.o-layout-list.grid-1-2-2{-webkit-column-gap:24px;-moz-column-gap:24px;column-gap:24px;grid-template-columns:repeat(2,1fr)}}.o-layout-list.grid-1-2-2-main-1-1-1{-webkit-column-gap:16px;-moz-column-gap:16px;column-gap:16px;display:grid;grid-template-columns:repeat(1,1fr)}@media screen and (min-width:640px){.o-layout-list.grid-1-2-2-main-1-1-1{-webkit-column-gap:16px;-moz-column-gap:16px;column-gap:16px;grid-template-columns:repeat(2,1fr)}}@media screen and (min-width:1024px){.o-layout-list.grid-1-2-2-main-1-1-1{-webkit-column-gap:24px;-moz-column-gap:24px;column-gap:24px;grid-template-columns:repeat(2,1fr)}}@media screen and (min-width:640px){.o-layout-list.grid-1-2-2-main-1-1-1 [class$=\"--main-item\"]{grid-column:1/span 2}}.o-layout-list.grid-1-2-3{-webkit-column-gap:16px;-moz-column-gap:16px;column-gap:16px;display:grid;grid-template-columns:repeat(1,1fr)}@media screen and (min-width:640px){.o-layout-list.grid-1-2-3{-webkit-column-gap:16px;-moz-column-gap:16px;column-gap:16px;grid-template-columns:repeat(2,1fr)}}@media screen and (min-width:1024px){.o-layout-list.grid-1-2-3{-webkit-column-gap:24px;-moz-column-gap:24px;column-gap:24px;grid-template-columns:repeat(3,1fr)}}.o-layout-list.grid-1-2-4{-webkit-column-gap:16px;-moz-column-gap:16px;column-gap:16px;display:grid;grid-template-columns:repeat(1,1fr)}@media screen and (min-width:640px){.o-layout-list.grid-…",
                        "status_code": 200,
                        "final_url": "https://www.rfi.fr/en/"
                    }
                ],
                "facts": [
                    {
                        "evidence_type": "spam_report",
                        "direction": "negative",
                        "bucket": "spam",
                        "strength": "medium",
                        "detail": "This source references spam or abuse behaviour.",
                        "source_host": "rfi.fr",
                        "source_title": "rfi.fr",
                        "source_url": "https://rfi.fr/",
                        "source_type": "official_site",
                        "source_trust": 55,
                        "entity_exactness": "exact_domain",
                        "entity_score": 100,
                        "freshness_ttl_days": 21,
                        "captured_at": "2026-03-18T23:18:48+00:00"
                    }
                ],
                "ignored_candidates": [],
                "blocked_candidates": 0,
                "source_diversity": 1,
                "host_coverage": 1,
                "source_type_coverage": 1,
                "exact_match_documents": 1,
                "external_exact_match_documents": 0,
                "elapsed_ms": 173,
                "candidates_considered": 1,
                "fetch_success_rate": 100,
                "avg_source_trust": 55,
                "avg_entity_score": 100
            },
            "evidence": {
                "scores": {
                    "legit": 0,
                    "safe": 0,
                    "trusted": 0,
                    "caution": 9,
                    "scam": 0,
                    "dangerous": 0,
                    "spam": 34,
                    "nsfw": 0
                },
                "counts": {
                    "official_presence": 0,
                    "business_profiles": 0,
                    "positive_reviews": 0,
                    "negative_reviews": 0,
                    "scam_reports": 0,
                    "dangerous_reports": 0,
                    "spam_reports": 1,
                    "adult_reports": 0
                },
                "tag_support": {
                    "spam": {
                        "hosts": {
                            "rfi.fr": true
                        },
                        "high_trust": 0,
                        "weight": 33.660000000000004,
                        "facts": [
                            {
                                "evidence_type": "spam_report",
                                "direction": "negative",
                                "bucket": "spam",
                                "strength": "medium",
                                "detail": "This source references spam or abuse behaviour.",
                                "source_host": "rfi.fr",
                                "source_title": "rfi.fr",
                                "source_url": "https://rfi.fr/",
                                "source_type": "official_site",
                                "source_trust": 55,
                                "entity_exactness": "exact_domain",
                                "entity_score": 100,
                                "freshness_ttl_days": 21,
                                "captured_at": "2026-03-18T23:18:48+00:00",
                                "effective_weight": 33.660000000000004
                            }
                        ],
                        "host_count": 1,
                        "qualified": false
                    }
                },
                "top_supporting_facts": [
                    {
                        "evidence_type": "spam_report",
                        "direction": "negative",
                        "bucket": "spam",
                        "strength": "medium",
                        "detail": "This source references spam or abuse behaviour.",
                        "source_host": "rfi.fr",
                        "source_title": "rfi.fr",
                        "source_url": "https://rfi.fr/",
                        "source_type": "official_site",
                        "source_trust": 55,
                        "entity_exactness": "exact_domain",
                        "entity_score": 100,
                        "freshness_ttl_days": 21,
                        "captured_at": "2026-03-18T23:18:48+00:00",
                        "effective_weight": 33.660000000000004
                    }
                ],
                "top_positive_facts": []
            },
            "quality": {
                "source_diversity_score": 25,
                "entity_coverage_score": 100,
                "freshness_score": 86,
                "confidence": 30,
                "documents_fetched": 1,
                "external_documents_fetched": 0,
                "fact_count": 1,
                "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": 9,
                "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": 9,
                    "scam": 0,
                    "dangerous": 0,
                    "spam": 34,
                    "nsfw": 0
                },
                "counts": {
                    "official_presence": 0,
                    "business_profiles": 0,
                    "positive_reviews": 0,
                    "negative_reviews": 0,
                    "scam_reports": 0,
                    "dangerous_reports": 0,
                    "spam_reports": 1,
                    "adult_reports": 0
                },
                "candidate_support": 9,
                "candidate_contradiction": 0,
                "highlights": [
                    "This source references spam or abuse behaviour.",
                    "External evidence remained inconclusive because diversity, exact matching, or confidence was still too weak."
                ]
            },
            "citations": [
                {
                    "url": "https://rfi.fr/",
                    "host": "rfi.fr",
                    "title": "rfi.fr",
                    "snippet": "This source references spam or abuse behaviour.",
                    "source_type": "official_site"
                }
            ],
            "debug": {
                "top_supporting_facts": [
                    {
                        "evidence_type": "spam_report",
                        "direction": "negative",
                        "bucket": "spam",
                        "strength": "medium",
                        "detail": "This source references spam or abuse behaviour.",
                        "source_host": "rfi.fr",
                        "source_title": "rfi.fr",
                        "source_url": "https://rfi.fr/",
                        "source_type": "official_site",
                        "source_trust": 55,
                        "entity_exactness": "exact_domain",
                        "entity_score": 100,
                        "freshness_ttl_days": 21,
                        "captured_at": "2026-03-18T23:18:48+00:00",
                        "effective_weight": 33.660000000000004
                    }
                ],
                "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-18T23:18:48+00:00",
                "summary": "External checks found some warning signals, but not enough qualified corroboration to let them dominate the verdict.",
                "decision": {
                    "state": "insufficient",
                    "uncertainty": true,
                    "candidate_support": 9,
                    "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": 9,
                        "scam": 0,
                        "dangerous": 0,
                        "spam": 34,
                        "nsfw": 0
                    },
                    "counts": {
                        "official_presence": 0,
                        "business_profiles": 0,
                        "positive_reviews": 0,
                        "negative_reviews": 0,
                        "scam_reports": 0,
                        "dangerous_reports": 0,
                        "spam_reports": 1,
                        "adult_reports": 0
                    },
                    "candidate_support": 9,
                    "candidate_contradiction": 0,
                    "highlights": [
                        "This source references spam or abuse behaviour.",
                        "External evidence remained inconclusive because diversity, exact matching, or confidence was still too weak."
                    ]
                },
                "citations": [
                    {
                        "url": "https://rfi.fr/",
                        "host": "rfi.fr",
                        "title": "rfi.fr",
                        "snippet": "This source references spam or abuse behaviour.",
                        "source_type": "official_site"
                    }
                ]
            }
        },
        "external_decision": {
            "state": "insufficient",
            "uncertainty": true,
            "candidate_support": 9,
            "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 · 88%",
                "tone": "good",
                "detail": "The highest raw tag match from the heuristic engine before visibility thresholds and manual overrides."
            },
            {
                "label": "Trust score",
                "value": "85/100",
                "tone": "good",
                "detail": "Confidence derived from authority, crawl quality, stability, and risk signals."
            },
            {
                "label": "Authority score",
                "value": "57/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": "0/100",
                "tone": "good",
                "detail": "Lower is better. This reflects phishing, drainer, fake-support, fake-shop, and malware signals."
            },
            {
                "label": "Infrastructure risk",
                "value": "2/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": "31.3 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": "131",
                        "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": "15",
                        "tone": "caution",
                        "detail": "Broader backlink evidence usually improves confidence."
                    },
                    {
                        "label": "Referring domains",
                        "value": "15",
                        "tone": "caution",
                        "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": "115",
                        "tone": "good",
                        "detail": "Larger index coverage usually means more evidence to classify from."
                    },
                    {
                        "label": "Brand strength",
                        "value": "83/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 · 147 ms",
                        "tone": "good",
                        "detail": "Slow or broken technical signals weaken confidence."
                    },
                    {
                        "label": "Content words",
                        "value": "9,051",
                        "tone": "good",
                        "detail": "Thin pages are harder to trust and easier to manipulate."
                    },
                    {
                        "label": "Schema / structure",
                        "value": "2 schema · meta · H1",
                        "tone": "good",
                        "detail": "Structured markup and basic on-page hygiene improve quality confidence."
                    },
                    {
                        "label": "Links on page",
                        "value": "105 internal · 13 external",
                        "tone": "good",
                        "detail": "Link patterns help detect thin directories and promo pages."
                    },
                    {
                        "label": "Page speed / mobile",
                        "value": "100/100 · 95/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": "9 / 0",
                        "tone": "good",
                        "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: 31.3 years.",
            "Low registrar / ownership churn with solid registry stability.",
            "Healthy crawl quality and on-page completeness.",
            "Structured data / schema markup detected.",
            "Search evidence is broad enough to classify with better confidence."
        ],
        "risks": [
            "Search and review intelligence surfaced third-party results mentioning complaints, safety concerns, or abuse signals.",
            "External evidence was mixed or sparse, so the tag model keeps an uncertainty buffer instead of overcommitting."
        ]
    },
    "traffic_confidence": 71,
    "whois": {
        "current": {
            "id": 3619,
            "domain": "rfi.fr",
            "source_type": "rdap",
            "rdap_url": "https://rdap.nic.fr/domain/rfi.fr",
            "registrar_name": "GANDI",
            "registrar_handle": "RAR524-FRNIC",
            "registrant_name": "FRANCE MEDIAS MONDE",
            "registrant_org": "FRANCE MEDIAS MONDE",
            "registrant_country": "",
            "registrant_email": "991a2cc6405541a6c8bbef0205001090-3220800@contact.gandi.net",
            "abuse_email": "",
            "created_date": "1994-12-31 23:00:00",
            "updated_date": "2025-08-02 07:21:50",
            "expires_date": "2026-08-28 10:07:03",
            "nameservers_json": "[\"a1-147.akam.net\",\"a10-66.akam.net\",\"a26-67.akam.net\",\"a6-64.akam.net\",\"a7-65.akam.net\",\"a9-66.akam.net\"]",
            "status_json": "[\"client transfer prohibited\"]",
            "dnssec": "unsigned",
            "privacy_protected": 0,
            "content_hash": "b3f72a5072f7bfb936f4adf978113e2c66822489133bd138c7ea18cab85380a5",
            "history_count": 1,
            "last_checked_at": "2026-03-30 17:48:43",
            "last_changed_at": "2026-03-16 01:48:09",
            "created_at": "2026-03-16 01:48:09",
            "updated_at": "2026-03-30 17:48:43"
        },
        "history": [
            {
                "id": 3932,
                "domain": "rfi.fr",
                "source_type": "rdap",
                "registrar_name": "GANDI",
                "registrar_handle": "RAR524-FRNIC",
                "registrant_name": "FRANCE MEDIAS MONDE",
                "registrant_org": "FRANCE MEDIAS MONDE",
                "registrant_country": "",
                "registrant_email": "991a2cc6405541a6c8bbef0205001090-3220800@contact.gandi.net",
                "abuse_email": "",
                "created_date": "1994-12-31 23:00:00",
                "updated_date": "2025-08-02 07:21:50",
                "expires_date": "2026-08-28 10:07:03",
                "nameservers_json": "[\"a1-147.akam.net\",\"a10-66.akam.net\",\"a26-67.akam.net\",\"a6-64.akam.net\",\"a7-65.akam.net\",\"a9-66.akam.net\"]",
                "status_json": "[\"client transfer prohibited\"]",
                "dnssec": "unsigned",
                "privacy_protected": 0,
                "content_hash": "b3f72a5072f7bfb936f4adf978113e2c66822489133bd138c7ea18cab85380a5",
                "checked_at": "2026-03-16 01:48:09",
                "change_summary": "Initial WHOIS snapshot captured.",
                "created_at": "2026-03-16 01:48:09"
            }
        ],
        "signals": {
            "age_years": 31.3,
            "days_to_expiry": 131,
            "days_since_last_registry_update": 259,
            "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": 6,
            "status_count": 1
        }
    },
    "discovered_domain": {
        "id": 8634,
        "domain": "rfi.fr",
        "first_seen_at": "2026-03-15 11:03:16",
        "last_crawled_at": "2026-03-30 17:48:48",
        "last_title": "RFI - All the news from France, Europe, Africa and the rest of the world.",
        "last_http_status": 200,
        "discovered_from_domain": "france24.com",
        "depth": 0,
        "backlinks_count": 14,
        "rating_cache": 42,
        "spam_score": 0,
        "risk_label": "good",
        "category_name": "Business",
        "primary_country_code": "FR",
        "internal_links_count": 105,
        "external_links_count": 13,
        "social_profiles_count": 1,
        "content_word_count": 9051,
        "title_quality_score": 79,
        "has_meta_description": 1,
        "has_h1": 1,
        "language_code": "en",
        "response_time_ms": 147,
        "robots_status": 0,
        "sitemap_status": 0,
        "sitemap_total_urls": 0,
        "quality_score": 95,
        "site_name": "RFI",
        "canonical_domain": "",
        "favicon_present": 1,
        "schema_org_count": 2,
        "noindex_detected": 0,
        "feed_links_count": 1,
        "https_working": 1,
        "estimated_authority_score": 43,
        "trust_score": 87,
        "nsfw_score": 0,
        "overall_rank_estimate": 1306091,
        "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": 0,
        "legitimacy_score": 58,
        "infrastructure_risk_score": 2,
        "score_confidence": 54,
        "tag_confidence": 28,
        "category_confidence": 22,
        "deep_crawl_pages": 0,
        "resolved_ip": "104.82.117.85",
        "category_candidates_json": "[{\"category\":\"Business\",\"score\":22},{\"category\":\"Social Media\",\"score\":22},{\"category\":\"News & Media\",\"score\":17},{\"category\":\"News & Media\",\"score\":17}]",
        "page_signals_json": "[]",
        "score_reasons_json": "[\"Category confidence was reduced, so the classifier fell back to the broader parent category.\",\"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": "rfi.fr",
        "display_domain": "rfi.fr"
    },
    "explainability": {
        "summary": "rfi.fr currently scores 68/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": "71/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.0",
                "tone": "caution",
                "detail": "Authority, search visibility, reach, engagement, and registry stability. Current subsystem score: 50/100."
            },
            {
                "label": "Safety system",
                "points": "+30.4",
                "tone": "good",
                "detail": "Fraud, spam, and trust signals from infrastructure, crawl, and registry evidence. Current subsystem score: 95/100."
            },
            {
                "label": "Risk clamp",
                "points": "-2.0",
                "tone": "risk",
                "detail": "Safety thresholds capped the final score until the risk profile improves."
            }
        ],
        "evidence_cards": [
            {
                "label": "Authority and trust",
                "value": "57/100 · trust 84/100",
                "tone": "caution",
                "detail": "459 monthly visitors, 101 organic keywords, brand completeness 83/100, engagement 83/100."
            },
            {
                "label": "Backlink and search evidence",
                "value": "15 referring domains",
                "tone": "good",
                "detail": "15 backlinks across 15 referring domains. Diversity 97/100; spam penalty 0."
            },
            {
                "label": "Registry and domain stability",
                "value": "31.3 years old",
                "tone": "good",
                "detail": "Stability 100/100 · age 31.3 years · registrar GANDI · expires in 131 days."
            },
            {
                "label": "Safety and fraud posture",
                "value": "Safety 95/100 · fraud 0/100",
                "tone": "good",
                "detail": "Primary tag T · safety 95/100 · fraud 0/100."
            }
        ],
        "positives": [
            "Established domain age: 31.3 years.",
            "Low registrar / ownership churn with solid registry stability.",
            "Healthy crawl quality and on-page completeness.",
            "Structured data / schema markup detected.",
            "Search evidence is broad enough to classify with better confidence.",
            "Registry history looks stable, which supports legitimacy and trust."
        ],
        "risks": [
            "Search and review intelligence surfaced third-party results mentioning complaints, safety concerns, or abuse 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 17:48:48",
                "tone": "risk",
                "detail": "Crawl and page content sample. Age: 18d ago."
            },
            {
                "label": "WHOIS snapshot",
                "value": "2026-03-30 17:48:43",
                "tone": "risk",
                "detail": "Registry profile and stability signals. Age: 18d ago."
            },
            {
                "label": "Keyword view",
                "value": "2026-04-18 12:56:38",
                "tone": "good",
                "detail": "Estimated visibility until tracked keyword snapshots exist. Age: 0s ago."
            },
            {
                "label": "Rank history",
                "value": "2026-04-18 12:56:38",
                "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": 70,
        "fraud_clamp_penalty": 2,
        "final_score": 68
    },
    "insight_snapshot": {
        "version": 1,
        "generated_at": "2026-04-18T12:56:38+00:00",
        "domain": "rfi.fr",
        "display_name": "RFI",
        "is_tracked": false,
        "is_estimated": true,
        "overall_score": 68,
        "authority_score": 57,
        "trust_score": 84,
        "safety_score": 95,
        "fraud_score": 0,
        "confidence_score": 54,
        "traffic_confidence": 71,
        "last_crawled_at": "2026-03-30 17:48:48",
        "crawl_blocked": false,
        "summary": "rfi.fr currently scores 68/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": "71/100"
            },
            {
                "label": "Crawler access",
                "value": "Clean visibility",
                "tone": "good",
                "detail": null
            }
        ],
        "top_positive_signals": [
            "Established domain age: 31.3 years.",
            "Low registrar / ownership churn with solid registry stability.",
            "Healthy crawl quality and on-page completeness.",
            "Structured data / schema markup detected.",
            "Search evidence is broad enough to classify with better confidence."
        ],
        "top_risk_signals": [
            "Search and review intelligence surfaced third-party results mentioning complaints, safety concerns, or abuse 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 17:48:48",
                "tone": "risk",
                "detail": "Crawl and page content sample. Age: 18d ago."
            },
            {
                "label": "WHOIS snapshot",
                "value": "2026-03-30 17:48:43",
                "tone": "risk",
                "detail": "Registry profile and stability signals. Age: 18d ago."
            },
            {
                "label": "Keyword view",
                "value": "2026-04-18 12:56:38",
                "tone": "good",
                "detail": "Estimated visibility until tracked keyword snapshots exist. Age: 0s ago."
            },
            {
                "label": "Rank history",
                "value": "2026-04-18 12:56:38",
                "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-19T10:43:49+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/rfi.fr/refresh",
        "isGuestCooldown": false,
        "cooldownSeconds": 0
    },
    "urlscan_report": {
        "domain": "rfi.fr",
        "status": "error",
        "submitted_at": "2026-03-19T07:27:41+00:00",
        "completed_at": null,
        "last_checked_at": "2026-03-19T07:27:41+00:00",
        "last_error": "Rate limit for 'public' exceeded. Limit is 500 per hour. Reset in 1938 seconds.",
        "submitted_url": "https://rfi.fr/",
        "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
    }
}