{
    "ready": true,
    "site": {
        "id": 0,
        "domain": "complaintsbook.co.za",
        "display_name": "complaintsbook.co.za",
        "primary_country_code": "ZA",
        "category_name": "Business: Corporate & Professional Services"
    },
    "metrics": {
        "global_rank": 43082,
        "country_rank": 69,
        "category_rank": 14192,
        "daily_pageviews_per_visitor": 3,
        "daily_time_on_site_seconds": 192,
        "bounce_rate": 45.28,
        "search_visits_percent": 29.3,
        "total_sites_linking_in": 4,
        "monthly_unique_visitors": 48,
        "recorded_at": "2026-03-20 06:33:37"
    },
    "audit": {
        "score": 39
    },
    "traffic_sources": {
        "direct_percent": 28.44,
        "search_percent": 28.46,
        "social_percent": 5.89,
        "referral_percent": 16.6,
        "email_percent": 7.57,
        "paid_percent": 13.04
    },
    "seo_profile": {
        "backlinks_total": 4,
        "referring_domains": 4,
        "dofollow_backlinks_percent": 50,
        "organic_keywords": 11,
        "indexed_pages": 1,
        "page_speed_score": 91,
        "mobile_friendliness_score": 45,
        "authority_score": 28,
        "spam_risk_score": 21
    },
    "crawl_report": {
        "robots_status": 0,
        "sitemap_status": 0,
        "sitemap_total_urls": 0,
        "crawl_blocked": true,
        "crawl_blocked_by": "Cloudflare",
        "crawl_blocked_reason": "Cloudflare challenge or bot protection blocked the crawler.",
        "notes": [
            "Homepage title has not been captured yet.",
            "Meta description is missing.",
            "No H1 heading was detected.",
            "robots.txt could not be confirmed.",
            "Sitemap could not be confirmed.",
            "Cloudflare limited the homepage crawl: Cloudflare challenge or bot protection blocked the crawler."
        ],
        "created_at": "2026-03-20 06:33:37"
    },
    "keywords": [
        {
            "keyword": "complaintsbook.co.za",
            "position": 27,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:44:41",
            "is_estimated": true
        },
        {
            "keyword": "complaintsbook.co.za business: corporate & professional services",
            "position": 29,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:44:41",
            "is_estimated": true
        },
        {
            "keyword": "complaintsbook.co.za reviews",
            "position": 31,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:44:41",
            "is_estimated": true
        },
        {
            "keyword": "complaintsbook",
            "position": 33,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:44:41",
            "is_estimated": true
        }
    ],
    "rating": {
        "overall": 42,
        "label": "Average",
        "breakdown": [
            {
                "label": "Technical foundation",
                "score": 5,
                "max": 18
            },
            {
                "label": "Authority & trust",
                "score": 8,
                "max": 30
            },
            {
                "label": "Reach & market presence",
                "score": 3,
                "max": 18
            },
            {
                "label": "Search visibility",
                "score": 2,
                "max": 12
            },
            {
                "label": "Engagement & retention",
                "score": 7,
                "max": 10
            },
            {
                "label": "Channels & diversification",
                "score": 4,
                "max": 6
            },
            {
                "label": "Registry stability",
                "score": 3,
                "max": 6
            },
            {
                "label": "Quality system",
                "score": 28,
                "max": 100
            },
            {
                "label": "Reputation system",
                "score": 33,
                "max": 100
            },
            {
                "label": "Safety system",
                "score": 100,
                "max": 100
            },
            {
                "label": "Evidence confidence",
                "score": 24,
                "max": 100
            },
            {
                "label": "External intelligence",
                "score": 52,
                "max": 100
            },
            {
                "label": "API intelligence",
                "score": 54,
                "max": 100
            }
        ],
        "authority_score": 28,
        "quality_score": 28,
        "reputation_score": 33,
        "safety_score": 100,
        "confidence_score": 24,
        "fraud_score": 0,
        "authority_signals": {
            "backlinks": 4,
            "referring_domains": 4,
            "organic_keywords": 11,
            "indexed_pages": 1,
            "monthly_visitors": 48,
            "global_rank": 43082,
            "engagement_score": 66,
            "crawl_quality_score": 33,
            "brand_completeness_score": 8,
            "link_diversity_score": 94,
            "technical_reliability_score": 54,
            "whois_score": 45,
            "whois_age_years": 0,
            "whois_stability_score": 100,
            "spam_penalty": 0
        },
        "whois_signals": {
            "age_years": 0,
            "days_to_expiry": null,
            "days_since_last_registry_update": null,
            "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": 0,
            "status_count": 0
        }
    },
    "authority_score": 28,
    "trust_score": 33,
    "domain_tags": {
        "primary_tag": "Uncertain",
        "primary_tag_score": 68,
        "primary_candidate": "Uncertain",
        "primary_candidate_score": 68,
        "tag_codes": "Uncertain,C,T",
        "tags": [
            {
                "code": "Uncertain",
                "label": "Uncertain",
                "tone": "unknown",
                "description": "External checks stayed inconclusive, so the model avoided a harder verdict.",
                "reason": "The evidence is mixed and external checks stayed inconclusive, so the system kept an uncertainty buffer instead of a harder automated verdict.",
                "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": "C",
                "label": "Caution",
                "tone": "caution",
                "description": "Signals are mixed or weak, so this domain should be treated carefully.",
                "reason": "Review carefully: low trust score. Showing the stored external intelligence snapshot. New search and review intelligence only runs after a visitor uses Refresh data manually.",
                "message": "The signal mix leans cautious and the site should be treated carefully until more evidence arrives.",
                "priority": 62,
                "score": 62,
                "match_percent": 62,
                "threshold_band": "strong"
            },
            {
                "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": 58,
                "score": 58,
                "match_percent": 58,
                "threshold_band": "strong"
            }
        ],
        "tag_breakdown": [
            {
                "code": "Uncertain",
                "label": "Uncertain",
                "tone": "unknown",
                "description": "External checks stayed inconclusive, so the model avoided a harder verdict.",
                "reason": "The evidence is mixed and external checks stayed inconclusive, so the system kept an uncertainty buffer instead of a harder automated verdict.",
                "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": "C",
                "label": "Caution",
                "tone": "caution",
                "description": "Signals are mixed or weak, so this domain should be treated carefully.",
                "reason": "Review carefully: low trust score. Showing the stored external intelligence snapshot. New search and review intelligence only runs after a visitor uses Refresh data manually.",
                "message": "The signal mix leans cautious and the site should be treated carefully until more evidence arrives.",
                "priority": 62,
                "score": 62,
                "match_percent": 62,
                "threshold_band": "strong"
            },
            {
                "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": 58,
                "score": 58,
                "match_percent": 58,
                "threshold_band": "strong"
            },
            {
                "code": "Blocked",
                "label": "Partial evidence",
                "tone": "unknown",
                "description": "The crawler was blocked, so some conclusions are lower confidence.",
                "reason": "The crawler had partial visibility, so some conclusions are lower confidence.",
                "message": "",
                "priority": 6,
                "score": 6,
                "match_percent": 6,
                "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": 34,
        "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": "Uncertain (68% match) because the evidence is mixed and external checks stayed inconclusive, so the system kept an uncertainty buffer instead of a harder automated verdict.",
        "external_intel": {
            "domain": "complaintsbook.co.za",
            "candidate_tag": "",
            "checked_at": "2026-03-19T06:46:13+00:00",
            "status": "fresh",
            "snapshot_version": 9,
            "summary": "Showing the stored external intelligence snapshot. New search and review intelligence only runs after a visitor uses Refresh data manually.",
            "search_intelligence": {
                "queries": [
                    "site:trustpilot.com \"complaintsbook.co.za\" -site:complaintsbook.co.za -site:www.complaintsbook.co.za",
                    "site:bbb.org \"complaintsbook.co.za\" -site:complaintsbook.co.za -site:www.complaintsbook.co.za"
                ],
                "focused_queries": [
                    "site:trustpilot.com \"complaintsbook.co.za\" -site:complaintsbook.co.za -site:www.complaintsbook.co.za",
                    "site:bbb.org \"complaintsbook.co.za\" -site:complaintsbook.co.za -site:www.complaintsbook.co.za"
                ],
                "relaxed_queries": [
                    "site:wikipedia.org \"complaintsbook.co.za\"",
                    "site:en.wikipedia.org \"complaintsbook.co.za\"",
                    "site:wikipedia.org \"complaintsbook\"",
                    "site:en.wikipedia.org \"complaintsbook\"",
                    "complaintsbook company profile",
                    "complaintsbook reviews",
                    "complaintsbook wikipedia",
                    "complaintsbook linkedin",
                    "complaintsbook crunchbase"
                ],
                "providers": [
                    "brave"
                ],
                "provider_result_counts": {
                    "brave": 0
                },
                "provider_query_attempts": {
                    "brave": 2
                },
                "provider_error_counts": {
                    "brave": 2
                },
                "provider_failure_reasons": {
                    "brave": "Brave hourly hard cap reached."
                },
                "provider_block_signals": [],
                "results_found": 1,
                "external_results_found": 0,
                "used_direct_fallback": true,
                "results": [
                    {
                        "provider": "direct-domain-fallback",
                        "url": "https://complaintsbook.co.za/",
                        "host": "complaintsbook.co.za",
                        "title": "complaintsbook.co.za",
                        "snippet": "First-party fallback captured directly from the domain when public search engines returned no usable results.",
                        "is_direct_fallback": true,
                        "source_meta": {
                            "host": "complaintsbook.co.za",
                            "source_type": "official_site",
                            "label": "Official site",
                            "trust_weight": 55,
                            "evidence_weight": 26,
                            "noise_penalty": 0,
                            "requires_exact_domain_match": true,
                            "supports_positive_verdicts": false,
                            "supports_negative_verdicts": false,
                            "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": 0,
                "query_count": 2,
                "used_failover_provider": false,
                "inferred_candidate_tag": "",
                "used_relaxed_queries": false,
                "search_passes": [
                    {
                        "name": "focused-primary",
                        "queries": 2,
                        "providers": [
                            "brave"
                        ],
                        "results_added": 0,
                        "external_results_added": 0,
                        "deadline_hit": false
                    }
                ],
                "deadline_hit": false
            },
            "review_intelligence": {
                "documents_fetched": 1,
                "external_documents_fetched": 0,
                "documents": [
                    {
                        "provider": "direct-domain-fallback",
                        "url": "https://complaintsbook.co.za/",
                        "host": "complaintsbook.co.za",
                        "title": "complaintsbook.co.za",
                        "snippet": "First-party fallback captured directly from the domain when public search engines returned no usable results.",
                        "is_direct_fallback": true,
                        "source_meta": {
                            "host": "complaintsbook.co.za",
                            "source_type": "official_site",
                            "label": "Official site",
                            "trust_weight": 55,
                            "evidence_weight": 26,
                            "noise_penalty": 0,
                            "requires_exact_domain_match": true,
                            "supports_positive_verdicts": false,
                            "supports_negative_verdicts": false,
                            "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": "Complaints Book - From the problem to the solution! Make a complaint Make a complaint Home Complaints Ranking TOPs News Sign in Be part of the largest consumer social network Sign up for free Main menu Home Complaints Ranking TOPs News Sign in Search before Buying. Complaints Book by Consumers Trust is a reputation marketplace that allows you to search, complain and compare any brand for free. Search Brands Top searched brands HollywoodbetsRegulated Online Casinos and Bookmakers (10%) view profile compare complain 1LifeLife and Personal Insurance Companies (N/A) view profile compare complain CheckersSupermarkets - Large Retail (29.6%) view profile compare complain MakroSupermarkets - Large Retail (11.3%) view profile compare complain Chicken LickenRestaurants - Fast Food (10%) view profile compare complain FishawaysRestaurants - Fast Food (5.7%) view profile compare complain KFCRestaurants - Fast Food (1.5%) view profile compare complain SupabetsRegulated Online Casinos and Bookmakers (N/A) view profile compare complain Astom Courier ServicesDistribution and courier (N/A) view profile compare complain Auto CityCar Dealers (N/A) view profile compare complain View all results for \"\" Complain Ranking Compare Brands TOP Brands News articles Complaints 1.º Make a complaint Register for free and make your complaint 2º Publishing and Sending The complaint is published and sent to the brand 3.º Treatment and Resolution Find the solution together with the brand and leave your feedback Compare and Choose. Search for free before you buy. Compare all relevant metrics that help you decide. Compare Brands NEW Latest Complaints Comment and share your experience with other consumers. View all Janecke 18 March 2026 Vodacom - Vodacom effecting my credit I made a complaint on the 15th of March 2026 and still had no feedback, so now i… Awaiting reply Veshan 17 March 2026 TymeBank - Debit hold Tymebank put my account on debit hold. Today. I called them. Not helpful. My brother… Awaiting reply Xolisa 16 March 2026 Bolt - Lost items Bolt driver don't drink during rides.Last week , my Bolt driver took 2 of of my… Awaiting reply Sphakahle 16 March 2026 Sasol - Wrong amount of fuel I gave the attendance 400 to fill, but he filled 300,claiming i gave him that amount,… Awaiting reply View all Subscribe our Newsletter More solutions. In every email. Every week in your email news, tips and alerts that will help you find more solutions. Subscribe Ranking Discover the Top Brands Ranking, Consumers Complaints and Reviews by category. For the past 12 months. View Full Ranking TV, Net and Phone Operators 1 Herotel 10 2 OnAir TV 3 3 Openserve N/A News articles Find articles, tips and alerts in the consumption sector. View all Complaints Book Online Sports Betting. Harmless or Dangerous? 18 July 2023 Complaints Book Buy Now, Pay Later? Find out before using it! Read more 23 March 2022 Complaints Book What Impact Does an \"Unresolved\" Complaint Have? Read more 16 February 2022 View all Opinions Find out what other consumers think about your complaint treatment. Jayde Monique Truworths - Angry as hell I'm so frustrated.. It's been weeks since I made various of email to truworths and… Resolved 10/10 Christina seabela EY South Africa - Overtime not paid since exited the firm EY SANDTON HAS BEEN DECLINING TO PAY OVER THE OVERTIME I HAVE WORKED AND HAVE BEEN… Resolved 10/10 Bianca Lubbe Capitec - Very bad customer service I registered a Funeral claim for my fathers passing. The policy was 5 months old… Resolved 9/10 Mrs Mkhize Rain mobile - Internet speed super slow From yeste…",
                        "html": "<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no\"><meta name=\"description\" content=\"Complaints Book is an online social network for consumers. Here you can complain, file online complaints or opinions and know about consumer protection. It's an electronic complaint book. Complain here!\"><meta name=\"author\" content=\"Complaints Book\"><meta name=\"theme-color\" content=\"#007BFF\"> <meta property=\"og:url\" content=\"https://complaintsbook.co.za/\" /> <meta property=\"og:type\" content=\"website\" /> <meta property=\"og:title\" content=\"Complaints Book - From the problem to the solution!\" /> <meta property=\"og:site_name\" content=\"Complaints Book - From the problem to the solution!\" /> <meta property=\"og:description\" content=\"Complaints Book is an online social network for consumers. Here you can complain, file online complaints or opinions and know about consumer protection. It's an electronic complaint book. Complain here!\" /> <meta property=\"og:image\" content=\"https://static.complaintsbook.co.za/img/cbza/site/facebook_post.png\" /> <meta property=\"twitter:image\" content=\"https://static.complaintsbook.co.za/img/cbza/site/facebook_post.png\" /> <meta property=\"twitter:card\" content=\"summary_large_image\" /> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M8QXG39');</script><title>Complaints Book - From the problem to the solution!</title><meta property=\"fb:app_id\" content=\"394735687883665\" /><link href=\"https://static.complaintsbook.co.za/site/css/bootstrap.min.css\" rel=\"stylesheet\"> <link href=\"https://static.complaintsbook.co.za/site/css/pq.min.css?v=ceb1e8d4f8cfba911e4f9d1d71d0a45b\" rel=\"stylesheet\"> <script type=\"text/javascript\"></script><script src=\"https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js\"></script> <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.1/css/all.min.css\" integrity=\"sha512-2SwdPD6INVrV/lHTZbO2nodKhrnDdJK9/kg2XD1r9uGqPo1cUbujc+IYdlYdEErWNu69gVcYgdxlmVmzTWnetw==\" crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\" /> <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\"> <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin> <link href=\"https://fonts.googleapis.com/css2?family=Inter:wght@300;600;800&family=Poppins:wght@300;400;500;600;700;800&display=swap\" rel=\"stylesheet\"> <link rel=\"apple-touch-icon\" href=\"https://static.complaintsbook.co.za/site/img/apple-touch-icon.png\" /> <meta name=\"msvalidate.01\" content=\"54E7022B464706E41E810A58D3C4BF41\" /> <link rel=\"manifest\" href=\"/manifest.json\"> <link rel=\"shortcut icon\" type=\"image/ico\" href=\"https://static.complaintsbook.co.za/site/img/favicon.ico\" /> <link rel=\"apple-touch-icon\" sizes=\"120x120\" href=\"https://static.complaintsbook.co.za/site/img/apple-touch-icon-120x120.png\"> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script> <script src=\"https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js\"></script> <![endif]--> <script type=\"text/javascript\">var PQ_BASE_URL = 'https://complaintsbook.co.za/';</script> </head><body id=\"page-top\" class=\"index \"> <noscript><iframe src=\"https://www.googletagmanager.com/ns.html?id=GTM-M8QXG39\" height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\"></iframe></noscript><script>window.fbAsyncInit = function() {FB.init({appId: '394735687883665',cookie:true,xfbml: true,version: 'v8.0'});FB.AppEvents.logPageView();};(function(d, s, id){var js, fjs = d.getElementsByTagName(s)[0];if (d.getElementById(id)) {return;}js = d.createElement(s); js.id = id;js.src = \"https://connect.facebook.net/en_US/sdk.js\";fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));</script> <section class=\"home-header\" style=\"background-image: url('https://static.complaintsbook.co.za/img/cbza/site/home_background.jpg');\"> <header class=\"header\"> <nav class=\"navbar navbar-expand-lg\"> <div class=\"container\"> <div class=\"navbar-mobile mr-2 d-flex d-lg-none\"> <button class=\"navbar-toggler collapsed\" data-toggle=\"collapse\" data-target=\"#navbar-mobile-menu\" aria-controls=\"navbar-main-menu\" aria-expanded=\"false\" aria-label=\"Open menu\"> <span class=\"navbar-toggler__line navbar-toggler__line--top\"></span> <span class=\"navbar-toggler__line navbar-toggler__line--middle\"></span> <span class=\"navbar-toggler__line navbar-toggler__line--bottom\"></span> </button> </div> <a class=\"navbar-brand\" href=\"https://complaintsbook.co.za/\"> <svg class=\"header-logo\" width=\"50\" height=\"50\" viewBox=\"0 0 125 138\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M56.6384 62.3399C56.6384 54.7008 50.42 48.4824 42.7808 48.47…",
                        "status_code": 200,
                        "final_url": "https://complaintsbook.co.za/"
                    }
                ],
                "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": 576,
                "candidates_considered": 1,
                "fetch_success_rate": 100,
                "avg_source_trust": 55,
                "avg_entity_score": 100
            },
            "provider_enrichment": {
                "providers": {
                    "safebrowsing": {
                        "status": "disabled"
                    },
                    "abuseipdb": {
                        "status": "ok",
                        "confidence": 58,
                        "ip": "104.21.38.162",
                        "abuse_confidence_score": 0,
                        "total_reports": 0,
                        "last_reported_at": "",
                        "country_code": "US",
                        "usage_type": "Content Delivery Network",
                        "isp": "Cloudflare, Inc.",
                        "domain": "cloudflare.com",
                        "budget": {
                            "provider": "abuseipdb",
                            "window_key": "2026-03-19",
                            "used": 847,
                            "limit": 850,
                            "remaining": 3,
                            "updated_at": "2026-03-19T06:46:12+00:00"
                        },
                        "facts": [],
                        "highlights": [],
                        "citations": [
                            {
                                "title": "AbuseIPDB IP reputation check",
                                "url": "https://docs.abuseipdb.com/",
                                "host": "docs.abuseipdb.com",
                                "snippet": "Primary IP 104.21.38.162 scored 0/100 with 0 report(s).",
                                "source_type": "api_reputation"
                            }
                        ]
                    },
                    "ipinfo": {
                        "status": "ok",
                        "confidence": 54,
                        "ip": "104.21.38.162",
                        "asn": "AS13335",
                        "as_name": "Cloudflare, Inc.",
                        "as_domain": "cloudflare.com",
                        "country_code": "US",
                        "country": "United States",
                        "region": "",
                        "city": "",
                        "flags": [],
                        "highlights": [
                            "IPinfo resolved the primary IP to US on AS13335."
                        ],
                        "citations": [
                            {
                                "title": "IPinfo IP enrichment",
                                "url": "https://ipinfo.io/developers",
                                "host": "ipinfo.io",
                                "snippet": "Primary IP 104.21.38.162 geolocates to US.",
                                "source_type": "ip_enrichment"
                            }
                        ]
                    },
                    "censys": {
                        "status": "error",
                        "error": "HTTP 401: {\"code\": 401, \"status\": \"Unauthorized\", \"error\": \"You must authenticate with a valid API ID and secret.\"}"
                    },
                    "sslmate": {
                        "status": "error",
                        "error": "HTTP 429: {\"code\":\"rate_limited\",\"message\":\"You have exceeded the domain search rate limit for the SSLMate CT Search API. Please try again later, or upgrade your Cert Spotter plan by visiting .\"}"
                    }
                },
                "facts": [],
                "citations": [
                    {
                        "title": "AbuseIPDB IP reputation check",
                        "url": "https://docs.abuseipdb.com/",
                        "host": "docs.abuseipdb.com",
                        "snippet": "Primary IP 104.21.38.162 scored 0/100 with 0 report(s).",
                        "source_type": "api_reputation"
                    },
                    {
                        "title": "IPinfo IP enrichment",
                        "url": "https://ipinfo.io/developers",
                        "host": "ipinfo.io",
                        "snippet": "Primary IP 104.21.38.162 geolocates to US.",
                        "source_type": "ip_enrichment"
                    }
                ],
                "highlights": [
                    "IPinfo resolved the primary IP to US on AS13335."
                ],
                "resolved_ips": [
                    "104.21.38.162",
                    "172.67.136.20"
                ],
                "primary_ip": "104.21.38.162",
                "quality": {
                    "provider_diversity_score": 50,
                    "provider_confidence_score": 56,
                    "provider_fact_count": 0
                }
            },
            "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": 25,
                "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": 20,
                "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,
                "provider_diversity_score": 50,
                "provider_confidence_score": 56,
                "provider_fact_count": 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": [
                    "IPinfo resolved the primary IP to US on AS13335.",
                    "External evidence remained inconclusive because diversity, exact matching, or confidence was still too weak."
                ]
            },
            "citations": [
                {
                    "title": "AbuseIPDB IP reputation check",
                    "url": "https://docs.abuseipdb.com/",
                    "host": "docs.abuseipdb.com",
                    "snippet": "Primary IP 104.21.38.162 scored 0/100 with 0 report(s).",
                    "source_type": "api_reputation"
                },
                {
                    "title": "IPinfo IP enrichment",
                    "url": "https://ipinfo.io/developers",
                    "host": "ipinfo.io",
                    "snippet": "Primary IP 104.21.38.162 geolocates to US.",
                    "source_type": "ip_enrichment"
                }
            ],
            "urlscan": {
                "domain": "complaintsbook.co.za",
                "status": "error",
                "submitted_at": "2026-03-19T06:46:10+00:00",
                "completed_at": null,
                "last_checked_at": "2026-03-19T06:46:10+00:00",
                "last_error": "Rate limit for 'public' exceeded. Limit is 500 per hour. Reset in 827 seconds.",
                "submitted_url": "https://complaintsbook.co.za/",
                "uuid": "",
                "result_url": "",
                "api_result_url": "",
                "visibility": "public",
                "summary": "urlscan.io scan submission failed.",
                "report": [],
                "report_summary": [],
                "is_fresh": false,
                "can_retry": false,
                "poll_after_seconds": 20
            },
            "eligibility": {
                "budget_ms": 4200,
                "search_budget_ms": 1600,
                "review_budget_ms": 2600,
                "query_cap": 2,
                "provider_cap": 1,
                "result_cap": 6,
                "review_document_cap": 4,
                "search_connect_timeout": 2,
                "search_timeout": 3,
                "review_connect_timeout": 2,
                "review_timeout": 3,
                "allowed": true,
                "mode": "normal",
                "decision_code": "run_normal",
                "reason": "page-request",
                "summary": "Running a standard intelligence pass because the current signals need third-party corroboration.",
                "cooldown": {
                    "active": false,
                    "empty_attempts": 0,
                    "next_allowed_at": "",
                    "reason": "",
                    "provider_retry_at": ""
                },
                "suffix": {
                    "tld": "za",
                    "registered_suffix": "za",
                    "class": "country_code",
                    "reserved": false
                },
                "signals": {
                    "trust_score": 0,
                    "quality_score": 0,
                    "safety_score": 0,
                    "fraud_score": 0,
                    "spam_score": 0,
                    "nsfw_score": 0,
                    "score_confidence": 0,
                    "risk_label": "good",
                    "crawl_blocked": false,
                    "last_http_status": 0,
                    "content_word_count": 0,
                    "internal_links_count": 0,
                    "site_name": "",
                    "title": "",
                    "is_tracked": false
                }
            },
            "cooldown": {
                "empty_attempts": 1,
                "next_allowed_at": "2026-03-26T06:46:13+00:00",
                "reason": "Recent intelligence runs produced no qualified third-party evidence, so retries are cooled down to save budget.",
                "provider_retry_at": "",
                "last_reason": "page-request"
            },
            "debug": {
                "top_supporting_facts": [],
                "top_positive_facts": [],
                "ignored_candidates": [],
                "budget_ms": 4200,
                "search_budget_ms": 1600,
                "review_budget_ms": 2600,
                "search_mode": "page-request",
                "query_cap": 2,
                "provider_cap": 1,
                "result_cap": 6,
                "review_document_cap": 4,
                "reason": "page-request",
                "priority": 80,
                "eligibility_decision": "run_normal",
                "provider_statuses": {
                    "safebrowsing": "disabled",
                    "abuseipdb": "ok",
                    "ipinfo": "ok",
                    "censys": "error",
                    "sslmate": "error"
                }
            },
            "last_good": {
                "checked_at": "2026-03-19T06:46:13+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": [
                        "IPinfo resolved the primary IP to US on AS13335.",
                        "External evidence remained inconclusive because diversity, exact matching, or confidence was still too weak."
                    ]
                },
                "citations": [
                    {
                        "title": "AbuseIPDB IP reputation check",
                        "url": "https://docs.abuseipdb.com/",
                        "host": "docs.abuseipdb.com",
                        "snippet": "Primary IP 104.21.38.162 scored 0/100 with 0 report(s).",
                        "source_type": "api_reputation"
                    },
                    {
                        "title": "IPinfo IP enrichment",
                        "url": "https://ipinfo.io/developers",
                        "host": "ipinfo.io",
                        "snippet": "Primary IP 104.21.38.162 geolocates to US.",
                        "source_type": "ip_enrichment"
                    }
                ]
            }
        },
        "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": "Uncertain · 68%",
                "tone": "unknown",
                "detail": "The highest raw tag match from the heuristic engine before visibility thresholds and manual overrides."
            },
            {
                "label": "Trust score",
                "value": "34/100",
                "tone": "spam",
                "detail": "Confidence derived from authority, crawl quality, stability, and risk signals."
            },
            {
                "label": "Authority score",
                "value": "28/100",
                "tone": "spam",
                "detail": "A higher authority score usually means broader reputation and backlink confidence."
            },
            {
                "label": "Spam risk",
                "value": "25/100",
                "tone": "caution",
                "detail": "Lower is better. This blends spam indicators with false-positive protections for legitimate sites."
            },
            {
                "label": "Quality score",
                "value": "27/100",
                "tone": "spam",
                "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": "0/100",
                "tone": "good",
                "detail": "Lower is better. This reflects the IP, registrar, and nameserver neighbourhood seen by the crawler."
            },
            {
                "label": "Evidence confidence",
                "value": "23/100",
                "tone": "spam",
                "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": "—",
                        "tone": "unknown",
                        "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": "—",
                        "tone": "unknown",
                        "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": "11",
                        "tone": "unknown",
                        "detail": "Search footprint helps distinguish real sites from thin shells."
                    },
                    {
                        "label": "Indexed pages",
                        "value": "1",
                        "tone": "unknown",
                        "detail": "Larger index coverage usually means more evidence to classify from."
                    },
                    {
                        "label": "Brand strength",
                        "value": "8/100",
                        "tone": "spam",
                        "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 · 565 ms",
                        "tone": "good",
                        "detail": "Slow or broken technical signals weaken confidence."
                    },
                    {
                        "label": "Content words",
                        "value": "0",
                        "tone": "unknown",
                        "detail": "Thin pages are harder to trust and easier to manipulate."
                    },
                    {
                        "label": "Schema / structure",
                        "value": "0 schema · no meta · no H1",
                        "tone": "unknown",
                        "detail": "Structured markup and basic on-page hygiene improve quality confidence."
                    },
                    {
                        "label": "Links on page",
                        "value": "0 internal · 0 external",
                        "tone": "caution",
                        "detail": "Link patterns help detect thin directories and promo pages."
                    },
                    {
                        "label": "Page speed / mobile",
                        "value": "91/100 · 45/100",
                        "tone": "caution",
                        "detail": "Better technical quality generally reduces low-effort site patterns."
                    },
                    {
                        "label": "Crawl access",
                        "value": "Cloudflare challenge",
                        "tone": "caution",
                        "detail": "Cloudflare challenge or bot protection blocked the crawler. Scores may be based on partial evidence."
                    }
                ]
            },
            {
                "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": [
            "Low registrar / ownership churn with solid registry stability."
        ],
        "risks": [
            "Cloudflare limited the crawl: Cloudflare challenge or bot protection blocked the crawler.",
            "Trust score is currently very low.",
            "External evidence was mixed or sparse, so the tag model keeps an uncertainty buffer instead of overcommitting."
        ]
    },
    "traffic_confidence": 12,
    "whois": {
        "current": {
            "id": 35349,
            "domain": "complaintsbook.co.za",
            "source_type": "whois_text",
            "rdap_url": "",
            "registrar_name": "",
            "registrar_handle": "",
            "registrant_name": "",
            "registrant_org": "",
            "registrant_country": "",
            "registrant_email": "",
            "abuse_email": "",
            "created_date": null,
            "updated_date": null,
            "expires_date": null,
            "nameservers_json": "[]",
            "status_json": "[]",
            "dnssec": "unknown",
            "privacy_protected": 0,
            "content_hash": "f7e17c57c5fdd24df1793ece6bff99716369356b90b29c4725ac3ba12a76b72c",
            "history_count": 1,
            "last_checked_at": "2026-03-20 06:33:36",
            "last_changed_at": "2026-03-19 13:28:38",
            "created_at": "2026-03-19 13:28:38",
            "updated_at": "2026-03-20 06:33:36"
        },
        "history": [
            {
                "id": 36162,
                "domain": "complaintsbook.co.za",
                "source_type": "whois_text",
                "registrar_name": "",
                "registrar_handle": "",
                "registrant_name": "",
                "registrant_org": "",
                "registrant_country": "",
                "registrant_email": "",
                "abuse_email": "",
                "created_date": null,
                "updated_date": null,
                "expires_date": null,
                "nameservers_json": "[]",
                "status_json": "[]",
                "dnssec": "unknown",
                "privacy_protected": 0,
                "content_hash": "f7e17c57c5fdd24df1793ece6bff99716369356b90b29c4725ac3ba12a76b72c",
                "checked_at": "2026-03-19 13:28:38",
                "change_summary": "Initial WHOIS snapshot captured.",
                "created_at": "2026-03-19 13:28:38"
            }
        ],
        "signals": {
            "age_years": 0,
            "days_to_expiry": null,
            "days_since_last_registry_update": null,
            "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": 0,
            "status_count": 0
        }
    },
    "discovered_domain": {
        "id": 144243,
        "domain": "complaintsbook.co.za",
        "first_seen_at": "2026-03-16 06:10:03",
        "last_crawled_at": "2026-03-20 06:33:37",
        "last_title": null,
        "last_http_status": 200,
        "discovered_from_domain": "portaldaqueixa.com",
        "depth": 0,
        "backlinks_count": 4,
        "rating_cache": 34,
        "spam_score": 10,
        "risk_label": "good",
        "category_name": "Business: Corporate & Professional Services",
        "primary_country_code": "ZA",
        "internal_links_count": 0,
        "external_links_count": 0,
        "social_profiles_count": 0,
        "content_word_count": 0,
        "title_quality_score": 0,
        "has_meta_description": 0,
        "has_h1": 0,
        "language_code": "",
        "response_time_ms": 565,
        "robots_status": 0,
        "sitemap_status": 0,
        "sitemap_total_urls": 0,
        "quality_score": 27,
        "site_name": "",
        "canonical_domain": "",
        "favicon_present": 0,
        "schema_org_count": 0,
        "noindex_detected": 0,
        "feed_links_count": 0,
        "https_working": 1,
        "estimated_authority_score": 23,
        "trust_score": 64,
        "nsfw_score": 0,
        "overall_rank_estimate": 32787,
        "primary_tag": "C",
        "tag_codes": "C,Uncertain,Blocked",
        "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": 1,
        "crawl_blocked_by": "Cloudflare",
        "crawl_blocked_reason": "Cloudflare challenge or bot protection blocked the crawler.",
        "safety_score": 100,
        "fraud_score": 0,
        "legitimacy_score": 23,
        "infrastructure_risk_score": 0,
        "score_confidence": 23,
        "tag_confidence": 21,
        "category_confidence": 32,
        "deep_crawl_pages": 0,
        "resolved_ip": "172.67.136.20",
        "category_candidates_json": "[{\"category\":\"Business: Corporate & Professional Services\",\"score\":22}]",
        "page_signals_json": "[]",
        "score_reasons_json": "[\"The crawler was partially blocked, so the verdict is based on weaker evidence than usual.\"]",
        "route_domain": "complaintsbook.co.za",
        "display_domain": "complaintsbook.co.za"
    },
    "explainability": {
        "summary": "complaintsbook.co.za currently scores 42/100. The score is being shaped by a mixed signal profile rather than one dominant factor. Evidence confidence is still limited, so the score can move materially after more evidence is collected. This is an estimated profile rather than a manually tracked one. Crawler access was partially blocked, which lowers confidence in some sections.",
        "badges": [
            {
                "label": "Profile",
                "value": "Estimated profile",
                "tone": "unknown",
                "detail": null
            },
            {
                "label": "Evidence confidence",
                "value": "Low confidence",
                "tone": "risk",
                "detail": "24/100"
            },
            {
                "label": "Traffic confidence",
                "value": "Low confidence",
                "tone": "risk",
                "detail": "12/100"
            },
            {
                "label": "Crawler access",
                "value": "Partially blocked",
                "tone": "caution",
                "detail": null
            }
        ],
        "weighted_contributions": [
            {
                "label": "Quality system",
                "points": "+9.5",
                "tone": "risk",
                "detail": "Technical quality, crawl depth, page structure, and implementation hygiene. Current subsystem score: 28/100."
            },
            {
                "label": "Reputation system",
                "points": "+11.2",
                "tone": "risk",
                "detail": "Authority, search visibility, reach, engagement, and registry stability. Current subsystem score: 33/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": "-11.0",
                "tone": "risk",
                "detail": "Safety thresholds capped the final score until the risk profile improves."
            }
        ],
        "evidence_cards": [
            {
                "label": "Authority and trust",
                "value": "28/100 · trust 33/100",
                "tone": "risk",
                "detail": "48 monthly visitors, 11 organic keywords, brand completeness 8/100, engagement 66/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": "0.0 years old",
                "tone": "good",
                "detail": "Stability 100/100 · age 0.0 years."
            },
            {
                "label": "Safety and fraud posture",
                "value": "Safety 100/100 · fraud 0/100",
                "tone": "good",
                "detail": "Primary tag Uncertain · safety 100/100 · fraud 0/100 · crawler visibility limited."
            }
        ],
        "positives": [
            "Low registrar / ownership churn with solid registry stability.",
            "Registry history looks stable, which supports legitimacy and trust.",
            "HTTPS is working, so the site clears a basic transport-security check.",
            "Backlink diversity looks broad enough to strengthen authority confidence."
        ],
        "risks": [
            "Cloudflare limited the crawl: Cloudflare challenge or bot protection blocked the crawler.",
            "Trust score is currently very low.",
            "External evidence was mixed or sparse, so the tag model keeps an uncertainty buffer instead of overcommitting.",
            "The crawler was blocked or rate-limited, so multiple conclusions are based on partial evidence.",
            "Traffic and reach estimates are still low confidence, so commercial scale signals may move after more evidence is collected."
        ],
        "freshness": [
            {
                "label": "Crawl evidence",
                "value": "2026-03-20 06:33:37",
                "tone": "risk",
                "detail": "Crawl and page content sample. Age: 1mo ago."
            },
            {
                "label": "WHOIS snapshot",
                "value": "2026-03-20 06:33:36",
                "tone": "risk",
                "detail": "Registry profile and stability signals. Age: 1mo ago."
            },
            {
                "label": "Keyword view",
                "value": "2026-04-19 10:44:41",
                "tone": "good",
                "detail": "Estimated visibility until tracked keyword snapshots exist. Age: 0s ago."
            },
            {
                "label": "Rank history",
                "value": "2026-04-19 10:44:41",
                "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. Crawl access was limited, so this section is lower confidence.",
            "keywords": "Top keywords are estimated from crawl language, brand, category, and visibility signals until tracked keyword snapshots are stored. Crawl access was limited, so this section is lower confidence.",
            "history": "Rank history is estimated from the current profile because no stored history exists for this domain yet. Crawl access was limited, so projected trends should be treated cautiously."
        },
        "base_weighted_score": 53,
        "fraud_clamp_penalty": 11,
        "final_score": 42
    },
    "insight_snapshot": {
        "version": 1,
        "generated_at": "2026-04-19T10:44:41+00:00",
        "domain": "complaintsbook.co.za",
        "display_name": "complaintsbook.co.za",
        "is_tracked": false,
        "is_estimated": true,
        "overall_score": 42,
        "authority_score": 28,
        "trust_score": 33,
        "safety_score": 100,
        "fraud_score": 0,
        "confidence_score": 24,
        "traffic_confidence": 12,
        "last_crawled_at": "2026-03-20 06:33:37",
        "crawl_blocked": true,
        "summary": "complaintsbook.co.za currently scores 42/100. The score is being shaped by a mixed signal profile rather than one dominant factor. Evidence confidence is still limited, so the score can move materially after more evidence is collected. This is an estimated profile rather than a manually tracked one. Crawler access was partially blocked, which lowers confidence in some sections.",
        "badges": [
            {
                "label": "Profile",
                "value": "Estimated profile",
                "tone": "unknown",
                "detail": null
            },
            {
                "label": "Evidence confidence",
                "value": "Low confidence",
                "tone": "risk",
                "detail": "24/100"
            },
            {
                "label": "Traffic confidence",
                "value": "Low confidence",
                "tone": "risk",
                "detail": "12/100"
            },
            {
                "label": "Crawler access",
                "value": "Partially blocked",
                "tone": "caution",
                "detail": null
            }
        ],
        "top_positive_signals": [
            "Low registrar / ownership churn with solid registry stability.",
            "Registry history looks stable, which supports legitimacy and trust.",
            "HTTPS is working, so the site clears a basic transport-security check.",
            "Backlink diversity looks broad enough to strengthen authority confidence."
        ],
        "top_risk_signals": [
            "Cloudflare limited the crawl: Cloudflare challenge or bot protection blocked the crawler.",
            "Trust score is currently very low.",
            "External evidence was mixed or sparse, so the tag model keeps an uncertainty buffer instead of overcommitting.",
            "The crawler was blocked or rate-limited, so multiple conclusions are based on partial evidence.",
            "Traffic and reach estimates are still low confidence, so commercial scale signals may move after more evidence is collected."
        ],
        "freshness": [
            {
                "label": "Crawl evidence",
                "value": "2026-03-20 06:33:37",
                "tone": "risk",
                "detail": "Crawl and page content sample. Age: 1mo ago."
            },
            {
                "label": "WHOIS snapshot",
                "value": "2026-03-20 06:33:36",
                "tone": "risk",
                "detail": "Registry profile and stability signals. Age: 1mo ago."
            },
            {
                "label": "Keyword view",
                "value": "2026-04-19 10:44:41",
                "tone": "good",
                "detail": "Estimated visibility until tracked keyword snapshots exist. Age: 0s ago."
            },
            {
                "label": "Rank history",
                "value": "2026-04-19 10:44:41",
                "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": "Uncertain",
                "label": "Uncertain",
                "tone": "unknown"
            },
            {
                "code": "C",
                "label": "Caution",
                "tone": "caution"
            },
            {
                "code": "T",
                "label": "Trusted",
                "tone": "good"
            }
        ]
    },
    "is_tracked": false,
    "is_estimated": true,
    "live_state": {
        "status": "processed",
        "status_label": "Snapshot available",
        "message": "The latest crawl snapshot is ready. Background enrichment queues are clear.",
        "updated_at": "2026-03-19 13:28:37"
    },
    "refresh_state": {
        "canRequest": true,
        "queued": false,
        "processing": false,
        "stageKey": "idle",
        "stageLabel": "Ready",
        "cooldownUntil": null,
        "message": "The latest crawl has finished and all refresh queues are clear.",
        "action": "/domain/complaintsbook.co.za/refresh",
        "isGuestCooldown": false,
        "cooldownSeconds": 0
    },
    "urlscan_report": {
        "domain": "complaintsbook.co.za",
        "status": "error",
        "submitted_at": "2026-03-19T06:46:10+00:00",
        "completed_at": null,
        "last_checked_at": "2026-03-19T06:46:10+00:00",
        "last_error": "Rate limit for 'public' exceeded. Limit is 500 per hour. Reset in 827 seconds.",
        "submitted_url": "https://complaintsbook.co.za/",
        "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
    }
}