{
    "ready": true,
    "site": {
        "id": 0,
        "domain": "fauxtrots.com",
        "display_name": "Home",
        "primary_country_code": "",
        "category_name": "Personal: Portfolios & CVs"
    },
    "metrics": {
        "global_rank": 36197,
        "country_rank": 19219,
        "category_rank": 62,
        "daily_pageviews_per_visitor": 3.73,
        "daily_time_on_site_seconds": 317,
        "bounce_rate": 34.36,
        "search_visits_percent": 37.72,
        "total_sites_linking_in": 1,
        "monthly_unique_visitors": 84,
        "recorded_at": "2026-03-19 21:40:45"
    },
    "audit": {
        "score": 80
    },
    "traffic_sources": {
        "direct_percent": 29.77,
        "search_percent": 35.29,
        "social_percent": 5.18,
        "referral_percent": 13.46,
        "email_percent": 6.67,
        "paid_percent": 9.63
    },
    "seo_profile": {
        "backlinks_total": 1,
        "referring_domains": 1,
        "dofollow_backlinks_percent": 100,
        "organic_keywords": 21,
        "indexed_pages": 8,
        "page_speed_score": 92,
        "mobile_friendliness_score": 82,
        "authority_score": 22,
        "spam_risk_score": 15
    },
    "crawl_report": {
        "robots_status": 200,
        "sitemap_status": 404,
        "sitemap_total_urls": 0,
        "crawl_blocked": false,
        "crawl_blocked_by": "",
        "crawl_blocked_reason": "",
        "notes": [
            "Sitemap could not be confirmed."
        ],
        "created_at": "2026-03-19 21:40:45"
    },
    "keywords": [
        {
            "keyword": "Home",
            "position": 27,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:43:11",
            "is_estimated": true
        },
        {
            "keyword": "Home personal: portfolios & cvs",
            "position": 29,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:43:11",
            "is_estimated": true
        },
        {
            "keyword": "Home reviews",
            "position": 31,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:43:11",
            "is_estimated": true
        },
        {
            "keyword": "fauxtrots",
            "position": 33,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:43:11",
            "is_estimated": true
        },
        {
            "keyword": "about",
            "position": 35,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:43:11",
            "is_estimated": true
        },
        {
            "keyword": "about me",
            "position": 37,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:43:11",
            "is_estimated": true
        },
        {
            "keyword": "blog",
            "position": 39,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:43:11",
            "is_estimated": true
        },
        {
            "keyword": "links",
            "position": 41,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:43:11",
            "is_estimated": true
        }
    ],
    "rating": {
        "overall": 64,
        "label": "Healthy",
        "breakdown": [
            {
                "label": "Technical foundation",
                "score": 12,
                "max": 18
            },
            {
                "label": "Authority & trust",
                "score": 7,
                "max": 30
            },
            {
                "label": "Reach & market presence",
                "score": 3,
                "max": 18
            },
            {
                "label": "Search visibility",
                "score": 2,
                "max": 12
            },
            {
                "label": "Engagement & retention",
                "score": 9,
                "max": 10
            },
            {
                "label": "Channels & diversification",
                "score": 4,
                "max": 6
            },
            {
                "label": "Registry stability",
                "score": 4,
                "max": 6
            },
            {
                "label": "Quality system",
                "score": 67,
                "max": 100
            },
            {
                "label": "Reputation system",
                "score": 35,
                "max": 100
            },
            {
                "label": "Safety system",
                "score": 100,
                "max": 100
            },
            {
                "label": "Evidence confidence",
                "score": 100,
                "max": 100
            },
            {
                "label": "External intelligence",
                "score": 52,
                "max": 100
            },
            {
                "label": "API intelligence",
                "score": 54,
                "max": 100
            }
        ],
        "authority_score": 22,
        "quality_score": 67,
        "reputation_score": 35,
        "safety_score": 100,
        "confidence_score": 100,
        "fraud_score": 1,
        "authority_signals": {
            "backlinks": 1,
            "referring_domains": 1,
            "organic_keywords": 21,
            "indexed_pages": 8,
            "monthly_visitors": 84,
            "global_rank": 36197,
            "engagement_score": 78,
            "crawl_quality_score": 87,
            "brand_completeness_score": 57,
            "link_diversity_score": 92,
            "technical_reliability_score": 82,
            "whois_score": 59,
            "whois_age_years": 1.6,
            "whois_stability_score": 100,
            "spam_penalty": 0
        },
        "whois_signals": {
            "age_years": 1.6,
            "days_to_expiry": 159,
            "days_since_last_registry_update": 207,
            "stability_score": 100,
            "registrar_changes": 0,
            "ownership_changes": 0,
            "nameserver_changes": 0,
            "status_changes": 0,
            "history_entries": 1,
            "privacy_protected": false,
            "dnssec_enabled": true,
            "has_registrant_country": false,
            "registrant_country": "",
            "nameserver_count": 4,
            "status_count": 2
        }
    },
    "authority_score": 22,
    "trust_score": 64,
    "domain_tags": {
        "primary_tag": "T",
        "primary_tag_score": 76,
        "primary_candidate": "T",
        "primary_candidate_score": 76,
        "tag_codes": "T",
        "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.",
                "message": "The site shows a reasonably trustworthy and stable profile.",
                "priority": 76,
                "score": 76,
                "match_percent": 76,
                "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.",
                "message": "The site shows a reasonably trustworthy and stable profile.",
                "priority": 76,
                "score": 76,
                "match_percent": 76,
                "threshold_band": "strong"
            },
            {
                "code": "Uncertain",
                "label": "Uncertain",
                "tone": "unknown",
                "description": "External checks stayed inconclusive, so the model avoided a harder verdict.",
                "reason": "",
                "message": "The evidence does not currently look notably uncertain.",
                "priority": 18,
                "score": 18,
                "match_percent": 18,
                "threshold_band": "none"
            },
            {
                "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": 7,
                "score": 7,
                "match_percent": 7,
                "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.",
                "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": 68,
        "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 (76% match) because low spam indicators plus strong trust, quality, registry, and stability signals were detected.",
        "external_intel": [],
        "external_decision": [],
        "signal_scores": [
            {
                "label": "Strongest tag heuristic",
                "value": "T · 76%",
                "tone": "good",
                "detail": "The highest raw tag match from the heuristic engine before visibility thresholds and manual overrides."
            },
            {
                "label": "Trust score",
                "value": "68/100",
                "tone": "caution",
                "detail": "Confidence derived from authority, crawl quality, stability, and risk signals."
            },
            {
                "label": "Authority score",
                "value": "24/100",
                "tone": "spam",
                "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": "73/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": "7/100",
                "tone": "good",
                "detail": "Lower is better. This reflects the IP, registrar, and nameserver neighbourhood seen by the crawler."
            },
            {
                "label": "Evidence confidence",
                "value": "99/100",
                "tone": "good",
                "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": "1.6 years",
                        "tone": "caution",
                        "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": "159",
                        "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 on · privacy off",
                        "tone": "good",
                        "detail": "DNSSEC strengthens DNS trust; privacy is neutral on its own."
                    }
                ]
            },
            {
                "title": "Reputation & search evidence",
                "items": [
                    {
                        "label": "Backlinks",
                        "value": "1",
                        "tone": "unknown",
                        "detail": "Broader backlink evidence usually improves confidence."
                    },
                    {
                        "label": "Referring domains",
                        "value": "1",
                        "tone": "unknown",
                        "detail": "Unique linking domains are more useful than raw link volume."
                    },
                    {
                        "label": "Organic keywords",
                        "value": "21",
                        "tone": "unknown",
                        "detail": "Search footprint helps distinguish real sites from thin shells."
                    },
                    {
                        "label": "Indexed pages",
                        "value": "8",
                        "tone": "unknown",
                        "detail": "Larger index coverage usually means more evidence to classify from."
                    },
                    {
                        "label": "Brand strength",
                        "value": "57/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 · 692 ms",
                        "tone": "good",
                        "detail": "Slow or broken technical signals weaken confidence."
                    },
                    {
                        "label": "Content words",
                        "value": "333",
                        "tone": "caution",
                        "detail": "Thin pages are harder to trust and easier to manipulate."
                    },
                    {
                        "label": "Schema / structure",
                        "value": "0 schema · meta · H1",
                        "tone": "caution",
                        "detail": "Structured markup and basic on-page hygiene improve quality confidence."
                    },
                    {
                        "label": "Links on page",
                        "value": "10 internal · 5 external",
                        "tone": "good",
                        "detail": "Link patterns help detect thin directories and promo pages."
                    },
                    {
                        "label": "Page speed / mobile",
                        "value": "92/100 · 82/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": "Structured third-party evidence is still too thin, mixed, or unqualified to force a harder verdict."
                    },
                    {
                        "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": "Clear",
                        "tone": "good",
                        "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.",
            "Healthy crawl quality and on-page completeness.",
            "DNSSEC is enabled."
        ],
        "risks": []
    },
    "traffic_confidence": 34,
    "whois": {
        "current": {
            "id": 41611,
            "domain": "fauxtrots.com",
            "source_type": "rdap",
            "rdap_url": "https://rdap.verisign.com/com/v1/domain/FAUXTROTS.COM",
            "registrar_name": "Porkbun LLC",
            "registrar_handle": "1861",
            "registrant_name": "",
            "registrant_org": "",
            "registrant_country": "",
            "registrant_email": "",
            "abuse_email": "abuse@porkbun.com",
            "created_date": "2024-09-25 13:45:33",
            "updated_date": "2025-09-24 03:04:46",
            "expires_date": "2026-09-25 13:45:33",
            "nameservers_json": "[\"curitiba.ns.porkbun.com\",\"fortaleza.ns.porkbun.com\",\"maceio.ns.porkbun.com\",\"salvador.ns.porkbun.com\"]",
            "status_json": "[\"client delete prohibited\",\"client transfer prohibited\"]",
            "dnssec": "signed",
            "privacy_protected": 0,
            "content_hash": "53c799f68863fb60c026c113a09e8a61bbb345d63040096d88f7467c9bb329e6",
            "history_count": 1,
            "last_checked_at": "2026-03-19 21:40:43",
            "last_changed_at": "2026-03-19 21:40:43",
            "created_at": "2026-03-19 21:40:43",
            "updated_at": "2026-03-19 21:40:43"
        },
        "history": [
            {
                "id": 42495,
                "domain": "fauxtrots.com",
                "source_type": "rdap",
                "registrar_name": "Porkbun LLC",
                "registrar_handle": "1861",
                "registrant_name": "",
                "registrant_org": "",
                "registrant_country": "",
                "registrant_email": "",
                "abuse_email": "abuse@porkbun.com",
                "created_date": "2024-09-25 13:45:33",
                "updated_date": "2025-09-24 03:04:46",
                "expires_date": "2026-09-25 13:45:33",
                "nameservers_json": "[\"curitiba.ns.porkbun.com\",\"fortaleza.ns.porkbun.com\",\"maceio.ns.porkbun.com\",\"salvador.ns.porkbun.com\"]",
                "status_json": "[\"client delete prohibited\",\"client transfer prohibited\"]",
                "dnssec": "signed",
                "privacy_protected": 0,
                "content_hash": "53c799f68863fb60c026c113a09e8a61bbb345d63040096d88f7467c9bb329e6",
                "checked_at": "2026-03-19 21:40:43",
                "change_summary": "Initial WHOIS snapshot captured.",
                "created_at": "2026-03-19 21:40:43"
            }
        ],
        "signals": {
            "age_years": 1.6,
            "days_to_expiry": 159,
            "days_since_last_registry_update": 207,
            "stability_score": 100,
            "registrar_changes": 0,
            "ownership_changes": 0,
            "nameserver_changes": 0,
            "status_changes": 0,
            "history_entries": 1,
            "privacy_protected": false,
            "dnssec_enabled": true,
            "has_registrant_country": false,
            "registrant_country": "",
            "nameserver_count": 4,
            "status_count": 2
        }
    },
    "discovered_domain": {
        "id": 80947,
        "domain": "fauxtrots.com",
        "first_seen_at": "2026-03-15 20:24:51",
        "last_crawled_at": "2026-03-19 21:40:45",
        "last_title": "Home | fauxtrots",
        "last_http_status": 200,
        "discovered_from_domain": "personalsit.es",
        "depth": 0,
        "backlinks_count": 1,
        "rating_cache": 54,
        "spam_score": 24,
        "risk_label": "good",
        "category_name": "Personal: Portfolios & CVs",
        "primary_country_code": "",
        "internal_links_count": 10,
        "external_links_count": 5,
        "social_profiles_count": 0,
        "content_word_count": 333,
        "title_quality_score": 67,
        "has_meta_description": 1,
        "has_h1": 1,
        "language_code": "en",
        "response_time_ms": 692,
        "robots_status": 200,
        "sitemap_status": 404,
        "sitemap_total_urls": 0,
        "quality_score": 73,
        "site_name": "",
        "canonical_domain": "",
        "favicon_present": 1,
        "schema_org_count": 0,
        "noindex_detected": 0,
        "feed_links_count": 0,
        "https_working": 1,
        "estimated_authority_score": 19,
        "trust_score": 87,
        "nsfw_score": 0,
        "overall_rank_estimate": 22663,
        "primary_tag": "T",
        "tag_codes": "T",
        "manual_verified_status": "",
        "manual_tag_codes": "",
        "manual_rating_delta": 0,
        "manual_authority_delta": 0,
        "manual_trust_delta": 0,
        "manual_note": null,
        "manual_adjusted_by": null,
        "manual_adjusted_at": null,
        "manual_lock_scores": 0,
        "manual_lock_flags": 0,
        "crawl_blocked": 0,
        "crawl_blocked_by": "",
        "crawl_blocked_reason": null,
        "safety_score": 100,
        "fraud_score": 1,
        "legitimacy_score": 62,
        "infrastructure_risk_score": 7,
        "score_confidence": 99,
        "tag_confidence": 71,
        "category_confidence": 88,
        "deep_crawl_pages": 15,
        "resolved_ip": "35.157.26.135",
        "category_candidates_json": "[{\"category\":\"Personal: Portfolios & CVs\",\"score\":88}]",
        "page_signals_json": "[{\"path\":\"/about\",\"status\":200,\"title\":\"About | fauxtrots\",\"word_count\":145,\"summary_text\":\"About | fauxtrots About | fauxtrots fauxtrots homeaboutprojectsbloglinksnowfriends About Me My name is Emily, aka fauxtrots. I’m: gay trans furry tech-y lesbian autistic communist did I mention gay I really like animation, illustration, sci-fi, and games (video, board, card, tabletop, you name it). If there are women kissing and/or swordfights that’s a plus. I’m strongly anti generative AI and don’t use it for any purpose. I try to avoid things made with it as well. If you didn’t care enough about something to create it yourself (or at least hire someone to do so), why should I care about it? Values Diversity Equality Urbanism Cleverness Freedom Socials Letterboxd StoryGraph Bluesky Ko-fi { __sveltekit_wb2bpu = { base: new URL(\\\".\\\", location).pathname.slice(0, -1) }; const element = document.currentScript.pa\",\"classification_terms\":[\"about\",\"about me\",\"blog\",\"links\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/projects\",\"status\":200,\"title\":\"Projects | fauxtrots\",\"word_count\":332,\"summary_text\":\"Projects | fauxtrots Projects | fauxtrots fauxtrots homeaboutprojectsbloglinksnowfriends Projects Outside of work I like making little games and websites! Here's most of what I've made over the past few years. Toys Perspective A toy for generating squares in 3D space. Rainbow A toy for generating color ranges based on HSL values. Box Generator A toy for generating spinning boxes of points. Orbits A toy that uses CSS animations to control the orbits of balls on a track. Adjective Noun A single page app that randomly generates combinations of adjectives and nouns. flibberty gibbets An asynchronous, database-driven messaging system, similar to Twitter.Art Points An art piece that generates chaos out of an ordered grid of points Tiling A hypnotic art piece made using CSS transitions.Games ColorGuesser A game that\",\"classification_terms\":[\"projects\",\"about\",\"blog\",\"links\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/blog\",\"status\":200,\"title\":\"Blog | fauxtrots\",\"word_count\":158,\"summary_text\":\"Blog | fauxtrots Blog | fauxtrots fauxtrots homeaboutprojectsbloglinksnowfriends Blog Alienation and lethargy What do you do when you can't do anything? 2/1/2026 #politics #mental health Meshtastic! Learning LoRa Networking at Iffy Books 11/17/2025 #philly #electronics Automating link timestamps: Part 2 How hard could it be to parse YAML? 8/16/2025 #meta #coding Our actions today create the world tomorrow So why do we make it so shitty? 7/27/2025 #so-called-ai #rant Automating blog post timestamps A regex journey 5/28/2025 #meta #coding Response to Basement Fiction email 5/24/2025 #dorley #response The Tipping Point What comes next? 4/12/2025 #politics #trans Sisters of Dorley and the Rise of Basement Fiction There is the you that remains that remains and remains. 3/4/2025 #dorley #severance #1000xresist S\",\"classification_terms\":[\"blog\",\"about\",\"links\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/links\",\"status\":200,\"title\":\"Links | fauxtrots\",\"word_count\":175,\"summary_text\":\"Links | fauxtrots Links | fauxtrots fauxtrots homeaboutprojectsbloglinksnowfriends Links Technically Radical: On the Unrecognized Potential of Tech Workers and Hackers 11/12/2025 \\\"...the crux of the conflict today is, contra Karl Marx, not over wage relations. Rather it’s a conflict over what technology is developed and how it is deployed...\\\"Ranked Competitive Breast Growth 8/16/2025 A hilarious and brutal satire of trans women's ability to twist our brains into knots trying to survive in systems created by others.the politics of humiliation 7/29/2025 This is itself a collection of links, mostly about the rise of fascism, but all interesting.Punch Punch Forever! 6/6/2025 Pilot for a super funny original animation series that blends the best of Newgrounds and 90's anime.Type Help 3/11/2025 Creepy mystery ded\",\"classification_terms\":[\"links\",\"about\",\"help\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/now\",\"status\":200,\"title\":\"Now | fauxtrots\",\"word_count\":221,\"summary_text\":\"Now | fauxtrots Now | fauxtrots fauxtrots homeaboutprojectsbloglinksnowfriends Now? 3/12/2026 I&#39;m taking a trans self-defense class! It&#39;s nice to be able to learn and move my body in a space surrounded by other trans people, where I (presumably) won&#39;t be judged for gender-related reasons, and in the current political climate it feels all too necessary to know how to defend myself. 12/8/2025 I&#39;m at the Homebrew Website Club hosted at Iffy Books here in Philly! It&#39;s a ton of fun, like a dozen people are here and talking about websites. 11/7/2025 I&#39;ve been (very slowly) working my way through the list of themes for Weird Web October. Don&#39;t pay attention to what month it is. 9/2/2025 I&#39;m researching moving to Canada due to the current transphobic political situation in the US.\",\"classification_terms\":[\"now\",\"about\",\"blog\",\"links\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/friends\",\"status\":200,\"title\":\"Friends | fauxtrots\",\"word_count\":85,\"summary_text\":\"Friends | fauxtrots Friends | fauxtrots fauxtrots homeaboutprojectsbloglinksnowfriends Friends These are friendly people on the internet! Check 'em out, they've got cool stuff. Buttons If you'd like to add my button on your site, here you go! &lt;a href=\\\"https://www.fauxtrots.com\\\">&lt;img alt=\\\"fauxtrots\\\" src=\\\"https://www.fauxtrots.com/images/fauxtrots-88x31.gif\\\"/>&lt;/a> Webrings ← Recurse Webring 🎲→ Socials Letterboxd StoryGraph Bluesky Ko-fi { __sveltekit_wb2bpu = { base: new URL(\\\".\\\", location).pathname.slice(0, -1) }; const element = document.currentScript.parentElement; Promise.all([ import(\\\"./_app/immutable/entry/start.BpEklGW2.js\\\"), import(\\\"./_app/immutable/entry/app.Bt1vWMWj.js\\\") ]).then(([kit, app]) => { kit.start(app, element, { node_ids: [0, 2, 9], data: [null,null,null], form: null, error: null });\",\"classification_terms\":[\"friends\",\"about\",\"blog\",\"webring\",\"webrings\",\"links\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[\"githack.com\"],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/blog/alienation\",\"status\":200,\"title\":\"Alienation and lethargy | fauxtrots\",\"word_count\":48459,\"summary_text\":\"Alienation and lethargy | fauxtrots Alienation and lethargy | fauxtrots fauxtrots homeaboutprojectsbloglinksnowfriends Alienation and lethargy What do you do when you can't do anything? I haven&#39;t been doing great lately. I&#39;ve been thinking about writing a 2025 year-in-review post, but here we are in February, already 1/12 of the way through 2026. Time is both crawling past and blisteringly fast. In short, 2025 was good in some ways, devestating in others. At the end of the year I went on a beautiful trip to Vermont with family. Around the same time, my house developed two major leaks, one of which requires replacing our roof to the tune of $20k.1Did you know you can donate to my KoFi? I&#39;ve been unemployed for over a year now, outside of some minor gig work.2Feel free to also reach out with job opportunities! Desp\",\"classification_terms\":[\"blog/alienation\",\"about\",\"blog\",\"links\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":178,\"depth\":1},{\"path\":\"/blog/meshtastic\",\"status\":200,\"title\":\"Meshtastic! | fauxtrots\",\"word_count\":48385,\"summary_text\":\"Meshtastic! | fauxtrots Meshtastic! | fauxtrots fauxtrots homeaboutprojectsbloglinksnowfriends Meshtastic! Learning LoRa Networking at Iffy Books I went to a mesh networking workshop over the weekend at Iffy Books1They&#39;re an awesome leftist hacker bookstore here in Philly, definitely worth checking out if you&#39;re in the area, or supporting financially so they can stick around. and had a great time! We all had/bought these LoRa2Short for Long Range. LoRa is a (proprietary) mesh networking radio communication technology. devices that we needed to set up. We flashed them with Meshtastic firmware and went through the process of setting it all up. It was my first real experience with non-web networking and it&#39;s already helping me imagine what else is possible. A Heltec LoRa V3. My wife says it looks like a\",\"classification_terms\":[\"blog/meshtastic\",\"about\",\"support\",\"help\",\"blog\",\"store\",\"shop\",\"links\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":178,\"depth\":1},{\"path\":\"/blog/link-timestamps\",\"status\":200,\"title\":\"Automating link timestamps: Part 2 | fauxtrots\",\"word_count\":48973,\"summary_text\":\"Automating link timestamps: Part 2 | fauxtrots Automating link timestamps: Part 2 | fauxtrots fauxtrots homeaboutprojectsbloglinksnowfriends Automating link timestamps: Part 2 How hard could it be to parse YAML? This is a followup to my previous post about Automating Blog Timestamps and will make much more sense if you read it first. Last time I wrote a Perl script to add timestamps to new blog posts as they&#39;re committed to the git repo for this site. But I also have a links page1Check it out, there&#39;s some cool stuff! that&#39;s set up differently, so the previous method of adding timestamps wouldn&#39;t work. Instead of each entry having its own file, links are stored as an array in a YAML file2Technically before this they were stored in an array in a JavaScript file, but don&#39;t nitpick., so we can&#39;t just add the timest\",\"classification_terms\":[\"blog/link-timestamps\",\"about\",\"blog\",\"store\",\"links\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":178,\"depth\":1},{\"path\":\"/blog/against-ai\",\"status\":200,\"title\":\"Our actions today create the world tomorrow | fauxtrots\",\"word_count\":51688,\"summary_text\":\"Our actions today create the world tomorrow | fauxtrots Our actions today create the world tomorrow | fauxtrots fauxtrots homeaboutprojectsbloglinksnowfriends Our actions today create the world tomorrow So why do we make it so shitty? I&#39;ve been working on this post for months and it keeps getting longer and longer; it might not be done but I need to publish it eventually. I&#39;ve got a Google Nest Mini1Could&#39;ve sworn it was called a Google Home but apparently not. in my bedroom. It doesn&#39;t get a ton of use, but it&#39;s nice to be able to check the weather forecast in the morning, or play music at night, without having to get out of bed and fiddle with anything. But over the past year I&#39;ve noticed a significant decline in its usability (and it&#39;s not just me). Commands that once worked flawlessly (&quot;Google, stop timer.&q\",\"classification_terms\":[\"blog/against-ai\",\"about\",\"blog\",\"links\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":178,\"depth\":2},{\"path\":\"/blog/automated-timestamps\",\"status\":200,\"title\":\"Automating blog post timestamps | fauxtrots\",\"word_count\":49221,\"summary_text\":\"Automating blog post timestamps | fauxtrots Automating blog post timestamps | fauxtrots fauxtrots homeaboutprojectsbloglinksnowfriends Automating blog post timestamps A regex journey I&#39;ve been laying down the tracks on this blog as it&#39;s rolling along, so I thought I&#39;d write up a little improvement I made recently. This will also serve as it&#39;s first real test, so fingers crossed that it actually works and doesn&#39;t produce an embarrassing mistake. Like pretty much any blog, my posts are dated. However, previously those dates were hand entered by me as I wrote the markdown files. That left the annoyingly likely possibility that a typo or forgetting to update the frontmatter would leave me with posts time traveling from the past or future. It was also highly imprecise - only recording the date. While it&#39;s unlikely\",\"classification_terms\":[\"blog/automated-timestamps\",\"about\",\"blog\",\"links\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":178,\"depth\":2},{\"path\":\"/blog/basement-response\",\"status\":200,\"title\":\"Response to Basement Fiction email | fauxtrots\",\"word_count\":48437,\"summary_text\":\"Response to Basement Fiction email | fauxtrots Response to Basement Fiction email | fauxtrots fauxtrots homeaboutprojectsbloglinksnowfriends Response to Basement Fiction email hnkstf Hi Emily, imagine me making many air quotes and speaking too fast: Thanks for sharing the the „Dorley Sisters“. Another argument for the origin of „basement fiction“ or „basement literature“ as genre is the „Fritzl case“¹ where a father held his daughter captive for 24 years. The „Dorley basement“ turns things „upside down“, men are „held below and kept in the dark“. In „Silo“ the basement is a shelter, same with „A quiet place“². The scary is leaving the shelter (like Christine³ avoiding going out, leaving Dorley Hall, during the first chapters). One of my favourite terms is „chthonic“ as in „below ground“. Like in „The Descent (2004)“⁴. Also, „undergroun\",\"classification_terms\":[\"blog/basement-response\",\"about\",\"terms\",\"blog\",\"links\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":178,\"depth\":2},{\"path\":\"/blog/tipping-point\",\"status\":200,\"title\":\"The Tipping Point | fauxtrots\",\"word_count\":48534,\"summary_text\":\"The Tipping Point | fauxtrots The Tipping Point | fauxtrots fauxtrots homeaboutprojectsbloglinksnowfriends The Tipping Point What comes next? We all feel it. The United States (and therefore the world, like it or not) is at a tipping point. A crossroads. A fork in the river. Whatever metaphor you prefer, it&#39;s clear that this is A Moment where change is possible. There are years, centuries, in which nothing happens, and there are days [...] into which a whole lifetime is compressed. - Adriaan Schade van Westrum I dont know what&#39;s going to happen next; I dont think anyone does.1If you think that you do, congratulations on your upcoming illustrious career as a stock trader. No spoilers! All I do know is that things are going to get worse before they might get better, especially for vulnerable populations like immi\",\"classification_terms\":[\"blog/tipping-point\",\"about\",\"blog\",\"links\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":178,\"depth\":2},{\"path\":\"/blog/basement-fiction\",\"status\":200,\"title\":\"Sisters of Dorley and the Rise of Basement Fiction | fauxtrots\",\"word_count\":49025,\"summary_text\":\"Sisters of Dorley and the Rise of Basement Fiction | fauxtrots Sisters of Dorley and the Rise of Basement Fiction | fauxtrots fauxtrots homeaboutprojectsbloglinksnowfriends Sisters of Dorley and the Rise of Basement Fiction There is the you that remains that remains and remains. Spoilers for Welcome to Dorley Hall1The Sisters of Dorley is also serially published online: https://archiveofourown.org/works/35394595/chapters/88223581, Severance season 1, and up to chapter 5 of 1000xRESIST There is a star and a star and a dangerous gravity. There&#39;s a seductive appeal to masculinity. It promises power, respect, love - all you have to do is follow the rules. Enforce the structure of the patriarchy both within and without. However, like many seductive forces, it seeks to corrupt the user. When it is allowed to, masculinity will curdle. Rot. Eat away at th\",\"classification_terms\":[\"blog/basement-fiction\",\"about\",\"blog\",\"links\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":178,\"depth\":2},{\"path\":\"/wwo25\",\"status\":200,\"title\":\"Wwo25 | fauxtrots\",\"word_count\":68,\"summary_text\":\"Wwo25 | fauxtrots Wwo25 | fauxtrots fauxtrots homeaboutprojectsbloglinksnowfriends Weird Web October Check out what I made based off the list of themes from Weird Web October 2025! Themes TransparencyMapsScrambleFiltersRemixSolidsSub-optimalContainersBlinkWarningCameraBattleUpside-downDoublesUnicodeTransitionIlluminationTradingBounceHiddenLanguageMemoryStyleCounterEmptyTextureSpellTablesSurpriseDeprecatedSpooky Socials Letterboxd StoryGraph Bluesky Ko-fi { __sveltekit_wb2bpu = { base: new URL(\\\".\\\", location).pathname.slice(0, -1) }; const element = document.currentScript.parentElement; Promise.all([ import(\\\"./_app/immutable/entry/start.BpEklGW2.js\\\"), import(\\\"./_app/immutable/entry/app.Bt1vWMWj.js\\\") ]).then(([kit, app]) => { kit.start(app, element, { node_ids: [0, 2, 13], data: [null,null,null], form: null, e\",\"classification_terms\":[\"wwo25\",\"about\",\"blog\",\"links\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":2}]",
        "score_reasons_json": "[]",
        "route_domain": "fauxtrots.com",
        "display_domain": "fauxtrots.com"
    },
    "explainability": {
        "summary": "fauxtrots.com currently scores 64/100. The score is being shaped by a mixed signal profile rather than one dominant factor. Evidence confidence is strong enough for a relatively stable read. 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": "High confidence",
                "tone": "good",
                "detail": "100/100"
            },
            {
                "label": "Traffic confidence",
                "value": "Low confidence",
                "tone": "risk",
                "detail": "34/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": "+11.9",
                "tone": "risk",
                "detail": "Authority, search visibility, reach, engagement, and registry stability. Current subsystem score: 35/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": "-3.0",
                "tone": "risk",
                "detail": "Safety thresholds capped the final score until the risk profile improves."
            }
        ],
        "evidence_cards": [
            {
                "label": "Authority and trust",
                "value": "22/100 · trust 64/100",
                "tone": "risk",
                "detail": "84 monthly visitors, 21 organic keywords, brand completeness 57/100, engagement 78/100."
            },
            {
                "label": "Backlink and search evidence",
                "value": "1 referring domains",
                "tone": "good",
                "detail": "1 backlinks across 1 referring domains. Diversity 92/100; spam penalty 0."
            },
            {
                "label": "Registry and domain stability",
                "value": "1.6 years old",
                "tone": "good",
                "detail": "Stability 100/100 · age 1.6 years · registrar Porkbun LLC · expires in 159 days."
            },
            {
                "label": "Safety and fraud posture",
                "value": "Safety 100/100 · fraud 1/100",
                "tone": "good",
                "detail": "Primary tag T · safety 100/100 · fraud 1/100."
            }
        ],
        "positives": [
            "Low registrar / ownership churn with solid registry stability.",
            "Healthy crawl quality and on-page completeness.",
            "DNSSEC is enabled.",
            "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": [
            "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-19 21:40:45",
                "tone": "risk",
                "detail": "Crawl and page content sample. Age: 1mo ago."
            },
            {
                "label": "WHOIS snapshot",
                "value": "2026-03-19 21:40:43",
                "tone": "risk",
                "detail": "Registry profile and stability signals. Age: 1mo ago."
            },
            {
                "label": "Keyword view",
                "value": "2026-04-19 10:43:11",
                "tone": "good",
                "detail": "Estimated visibility until tracked keyword snapshots exist. Age: 0s ago."
            },
            {
                "label": "Rank history",
                "value": "2026-04-19 10:43:11",
                "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": 67,
        "fraud_clamp_penalty": 3,
        "final_score": 64
    },
    "insight_snapshot": {
        "version": 1,
        "generated_at": "2026-04-19T10:43:11+00:00",
        "domain": "fauxtrots.com",
        "display_name": "Home",
        "is_tracked": false,
        "is_estimated": true,
        "overall_score": 64,
        "authority_score": 22,
        "trust_score": 64,
        "safety_score": 100,
        "fraud_score": 1,
        "confidence_score": 100,
        "traffic_confidence": 34,
        "last_crawled_at": "2026-03-19 21:40:45",
        "crawl_blocked": false,
        "summary": "fauxtrots.com currently scores 64/100. The score is being shaped by a mixed signal profile rather than one dominant factor. Evidence confidence is strong enough for a relatively stable read. 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": "High confidence",
                "tone": "good",
                "detail": "100/100"
            },
            {
                "label": "Traffic confidence",
                "value": "Low confidence",
                "tone": "risk",
                "detail": "34/100"
            },
            {
                "label": "Crawler access",
                "value": "Clean visibility",
                "tone": "good",
                "detail": null
            }
        ],
        "top_positive_signals": [
            "Low registrar / ownership churn with solid registry stability.",
            "Healthy crawl quality and on-page completeness.",
            "DNSSEC is enabled.",
            "Registry history looks stable, which supports legitimacy and trust.",
            "HTTPS is working, so the site clears a basic transport-security check."
        ],
        "top_risk_signals": [
            "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-19 21:40:45",
                "tone": "risk",
                "detail": "Crawl and page content sample. Age: 1mo ago."
            },
            {
                "label": "WHOIS snapshot",
                "value": "2026-03-19 21:40:43",
                "tone": "risk",
                "detail": "Registry profile and stability signals. Age: 1mo ago."
            },
            {
                "label": "Keyword view",
                "value": "2026-04-19 10:43:11",
                "tone": "good",
                "detail": "Estimated visibility until tracked keyword snapshots exist. Age: 0s ago."
            },
            {
                "label": "Rank history",
                "value": "2026-04-19 10:43:11",
                "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"
            }
        ]
    },
    "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-19T15:14:54+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/fauxtrots.com/refresh",
        "isGuestCooldown": false,
        "cooldownSeconds": 0
    },
    "urlscan_report": {
        "domain": "fauxtrots.com",
        "status": "error",
        "submitted_at": "2026-03-19T21:40:42+00:00",
        "completed_at": null,
        "last_checked_at": "2026-03-19T21:40:42+00:00",
        "last_error": "Rate limit for 'public' exceeded. Limit is 5000 per day. Reset in 8357 seconds.",
        "submitted_url": "https://fauxtrots.com/",
        "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
    }
}