{
  "sources": [
    {
      "source": "affcatalog",
      "label": "AFFCatalog",
      "base_url": "https://affcatalog.com",
      "records_count": 7521,
      "imported_at": "2026-05-27T07:32:33.188195+00:00",
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "affcatalog",
      "trust_tier": "high",
      "priority": "P1",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 7521,
      "entities_count": 2980,
      "first_fetched_at": "2026-05-07T03:37:01+07:00",
      "last_fetched_at": "2026-05-27T06:32:09+00:00",
      "last_content_at": "2026-05-27T06:32:09+00:00",
      "errors_count": 0,
      "types_count": 24,
      "records_today": 0,
      "records_7d": 7488,
      "with_site": 4522,
      "with_email": 4581,
      "with_telegram": 2618,
      "ready_estimate": 4522,
      "site_no_contact": 0,
      "contact_no_site": 2677,
      "raw_only_estimate": 322,
      "state": "ok",
      "last_run_day": "2026-05-27",
      "last_run_new_count": 7488,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "affcatalog",
          "source_record_type": "person",
          "count": 2263
        },
        {
          "source": "affcatalog",
          "source_record_type": "brands",
          "count": 1554
        },
        {
          "source": "affcatalog",
          "source_record_type": "aff-program",
          "count": 1457
        },
        {
          "source": "affcatalog",
          "source_record_type": "events",
          "count": 664
        },
        {
          "source": "affcatalog",
          "source_record_type": "aff-network",
          "count": 349
        },
        {
          "source": "affcatalog",
          "source_record_type": "aff-team",
          "count": 277
        },
        {
          "source": "affcatalog",
          "source_record_type": "country",
          "count": 215
        },
        {
          "source": "affcatalog",
          "source_record_type": "hr-agencies",
          "count": 102
        }
      ],
      "recent_url": "/recent?source=affcatalog&since=2026-05-27",
      "raw_url": "/db/raw?source=affcatalog",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "actualtraffic",
      "label": "ActualTraffic",
      "base_url": "https://actualtraffic.ru",
      "records_count": 357,
      "imported_at": "2026-05-09T10:51:34.890755+00:00",
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "media",
      "trust_tier": "medium",
      "priority": "P2",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 357,
      "entities_count": 358,
      "first_fetched_at": "2026-05-08T20:46:58.509896+00:00",
      "last_fetched_at": "2026-05-27T15:37:04Z",
      "last_content_at": "2026-05-27T15:37:04Z",
      "errors_count": 0,
      "types_count": 2,
      "records_today": 0,
      "records_7d": 20,
      "with_site": 357,
      "with_email": 192,
      "with_telegram": 84,
      "ready_estimate": 276,
      "site_no_contact": 81,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-27",
      "last_run_new_count": 20,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "actualtraffic",
          "source_record_type": "site",
          "count": 337
        },
        {
          "source": "actualtraffic",
          "source_record_type": "source_page_verified_evidence",
          "count": 20
        }
      ],
      "recent_url": "/recent?source=actualtraffic&since=2026-05-27",
      "raw_url": "/db/raw?source=actualtraffic",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "afftrends",
      "label": "AffTrends",
      "base_url": "https://afftrends.com",
      "records_count": 120,
      "imported_at": "2026-05-24T05:08:30.043143+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 120,
      "entities_count": 3,
      "first_fetched_at": "2026-05-24T05:05:59.276445+00:00",
      "last_fetched_at": "2026-05-24T05:08:29.863785+00:00",
      "last_content_at": "2026-05-24T05:08:29.863785+00:00",
      "errors_count": 0,
      "types_count": 4,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 120,
      "with_email": 120,
      "with_telegram": 120,
      "ready_estimate": 120,
      "site_no_contact": 0,
      "contact_no_site": 120,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-24",
      "last_run_new_count": 120,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "afftrends",
          "source_record_type": "catalog_card",
          "count": 45
        },
        {
          "source": "afftrends",
          "source_record_type": "affiliate_program",
          "count": 44
        },
        {
          "source": "afftrends",
          "source_record_type": "service",
          "count": 30
        },
        {
          "source": "afftrends",
          "source_record_type": "payment-systems",
          "count": 1
        }
      ],
      "recent_url": "/recent?source=afftrends&since=2026-05-24",
      "raw_url": "/db/raw?source=afftrends",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "affmoment",
      "label": "AffMoment",
      "base_url": "https://affmoment.com",
      "records_count": 119,
      "imported_at": "2026-05-24T04:56:04.791843+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 119,
      "entities_count": 2,
      "first_fetched_at": "2026-05-24T04:55:25.510685+00:00",
      "last_fetched_at": "2026-05-24T04:56:04.587444+00:00",
      "last_content_at": "2026-05-24T04:56:04.587444+00:00",
      "errors_count": 0,
      "types_count": 6,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 119,
      "with_email": 119,
      "with_telegram": 119,
      "ready_estimate": 119,
      "site_no_contact": 0,
      "contact_no_site": 119,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-24",
      "last_run_new_count": 119,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "affmoment",
          "source_record_type": "catalog_card",
          "count": 50
        },
        {
          "source": "affmoment",
          "source_record_type": "service",
          "count": 31
        },
        {
          "source": "affmoment",
          "source_record_type": "affiliate_program",
          "count": 20
        },
        {
          "source": "affmoment",
          "source_record_type": "person",
          "count": 14
        },
        {
          "source": "affmoment",
          "source_record_type": "ad-network",
          "count": 2
        },
        {
          "source": "affmoment",
          "source_record_type": "payment-systems",
          "count": 2
        }
      ],
      "recent_url": "/recent?source=affmoment&since=2026-05-24",
      "raw_url": "/db/raw?source=affmoment",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "ggate",
      "label": "G Gate Media",
      "base_url": "https://ggate.media",
      "records_count": 113,
      "imported_at": "2026-05-24T05:04:20.467234+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 113,
      "entities_count": 1,
      "first_fetched_at": "2026-05-24T05:01:05.717611+00:00",
      "last_fetched_at": "2026-05-24T05:04:20.237550+00:00",
      "last_content_at": "2026-05-24T05:04:20.237550+00:00",
      "errors_count": 0,
      "types_count": 6,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 113,
      "with_email": 113,
      "with_telegram": 113,
      "ready_estimate": 113,
      "site_no_contact": 0,
      "contact_no_site": 113,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-24",
      "last_run_new_count": 113,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "ggate",
          "source_record_type": "catalog_card",
          "count": 52
        },
        {
          "source": "ggate",
          "source_record_type": "affiliate_program",
          "count": 21
        },
        {
          "source": "ggate",
          "source_record_type": "person",
          "count": 17
        },
        {
          "source": "ggate",
          "source_record_type": "service",
          "count": 13
        },
        {
          "source": "ggate",
          "source_record_type": "agency_or_team",
          "count": 6
        },
        {
          "source": "ggate",
          "source_record_type": "payment-systems",
          "count": 4
        }
      ],
      "recent_url": "/recent?source=ggate&since=2026-05-24",
      "raw_url": "/db/raw?source=ggate",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "fb_killa",
      "label": "FB-killa",
      "base_url": "https://fb-killa.pro",
      "records_count": 98,
      "imported_at": "2026-05-24T05:05:38.514327+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 98,
      "entities_count": 4,
      "first_fetched_at": "2026-05-24T05:04:24.362485+00:00",
      "last_fetched_at": "2026-05-24T05:05:38.368011+00:00",
      "last_content_at": "2026-05-24T05:05:38.368011+00:00",
      "errors_count": 0,
      "types_count": 5,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 98,
      "with_email": 20,
      "with_telegram": 98,
      "ready_estimate": 98,
      "site_no_contact": 0,
      "contact_no_site": 20,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-24",
      "last_run_new_count": 98,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "fb_killa",
          "source_record_type": "service",
          "count": 64
        },
        {
          "source": "fb_killa",
          "source_record_type": "catalog_card",
          "count": 28
        },
        {
          "source": "fb_killa",
          "source_record_type": "payment-systems",
          "count": 3
        },
        {
          "source": "fb_killa",
          "source_record_type": "affiliate_program",
          "count": 2
        },
        {
          "source": "fb_killa",
          "source_record_type": "ad-network",
          "count": 1
        }
      ],
      "recent_url": "/recent?source=fb_killa&since=2026-05-24",
      "raw_url": "/db/raw?source=fb_killa",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "cpalenta",
      "label": "CPALENTA",
      "base_url": "https://cpalenta.ru",
      "records_count": 93,
      "imported_at": "2026-05-24T05:09:22.393768+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 93,
      "entities_count": 53,
      "first_fetched_at": "2026-05-24T05:08:42.110034+00:00",
      "last_fetched_at": "2026-05-24T05:09:22.217593+00:00",
      "last_content_at": "2026-05-24T05:09:22.217593+00:00",
      "errors_count": 0,
      "types_count": 2,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 91,
      "with_email": 0,
      "with_telegram": 93,
      "ready_estimate": 91,
      "site_no_contact": 0,
      "contact_no_site": 2,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-24",
      "last_run_new_count": 93,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "cpalenta",
          "source_record_type": "affiliate_program",
          "count": 78
        },
        {
          "source": "cpalenta",
          "source_record_type": "person",
          "count": 15
        }
      ],
      "recent_url": "/recent?source=cpalenta&since=2026-05-24",
      "raw_url": "/db/raw?source=cpalenta",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "otzyvmarketing",
      "label": "OtzyvMarketing",
      "base_url": "https://otzyvmarketing.ru",
      "records_count": 90,
      "imported_at": "2026-05-24T04:54:49.687902+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 90,
      "entities_count": 2,
      "first_fetched_at": "2026-05-24T04:53:29.846673+00:00",
      "last_fetched_at": "2026-05-24T04:54:49.535844+00:00",
      "last_content_at": "2026-05-24T04:54:49.535844+00:00",
      "errors_count": 0,
      "types_count": 5,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 89,
      "with_email": 5,
      "with_telegram": 90,
      "ready_estimate": 89,
      "site_no_contact": 0,
      "contact_no_site": 6,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-24",
      "last_run_new_count": 90,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "otzyvmarketing",
          "source_record_type": "catalog_card",
          "count": 62
        },
        {
          "source": "otzyvmarketing",
          "source_record_type": "service",
          "count": 21
        },
        {
          "source": "otzyvmarketing",
          "source_record_type": "affiliate_program",
          "count": 4
        },
        {
          "source": "otzyvmarketing",
          "source_record_type": "payment-systems",
          "count": 2
        },
        {
          "source": "otzyvmarketing",
          "source_record_type": "ad-network",
          "count": 1
        }
      ],
      "recent_url": "/recent?source=otzyvmarketing&since=2026-05-24",
      "raw_url": "/db/raw?source=otzyvmarketing",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "diasp",
      "label": "Diasp",
      "base_url": "https://diasp.pro",
      "records_count": 80,
      "imported_at": "2026-05-24T04:57:10.147355+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 80,
      "entities_count": 3,
      "first_fetched_at": "2026-05-24T04:56:07.240184+00:00",
      "last_fetched_at": "2026-05-24T04:57:10.001075+00:00",
      "last_content_at": "2026-05-24T04:57:10.001075+00:00",
      "errors_count": 0,
      "types_count": 5,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 80,
      "with_email": 2,
      "with_telegram": 80,
      "ready_estimate": 80,
      "site_no_contact": 0,
      "contact_no_site": 2,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-24",
      "last_run_new_count": 80,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "diasp",
          "source_record_type": "service",
          "count": 50
        },
        {
          "source": "diasp",
          "source_record_type": "catalog_card",
          "count": 26
        },
        {
          "source": "diasp",
          "source_record_type": "payment-systems",
          "count": 2
        },
        {
          "source": "diasp",
          "source_record_type": "ad-network",
          "count": 1
        },
        {
          "source": "diasp",
          "source_record_type": "affiliate_program",
          "count": 1
        }
      ],
      "recent_url": "/recent?source=diasp&since=2026-05-24",
      "raw_url": "/db/raw?source=diasp",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "affgate",
      "label": "Affgate",
      "base_url": "https://affgate.com",
      "records_count": 11002,
      "imported_at": "2026-05-09T10:51:28.664529+00:00",
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "directory",
      "trust_tier": "medium",
      "priority": "P1",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 11002,
      "entities_count": 4318,
      "first_fetched_at": "2026-05-08T10:46:11.259656+00:00",
      "last_fetched_at": "2026-05-22T05:49:46+00:00",
      "last_content_at": "2026-05-22T05:49:46+00:00",
      "errors_count": 0,
      "types_count": 9,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 4721,
      "with_email": 2912,
      "with_telegram": 914,
      "ready_estimate": 3826,
      "site_no_contact": 895,
      "contact_no_site": 0,
      "raw_only_estimate": 6281,
      "state": "ok",
      "last_run_day": "2026-05-22",
      "last_run_new_count": 291,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "affgate",
          "source_record_type": "brand",
          "count": 5521
        },
        {
          "source": "affgate",
          "source_record_type": "affiliate_program",
          "count": 1987
        },
        {
          "source": "affgate",
          "source_record_type": "affiliate_network",
          "count": 1515
        },
        {
          "source": "affgate",
          "source_record_type": "vacancy",
          "count": 513
        },
        {
          "source": "affgate",
          "source_record_type": "service",
          "count": 389
        },
        {
          "source": "affgate",
          "source_record_type": "company_candidate",
          "count": 386
        },
        {
          "source": "affgate",
          "source_record_type": "raw_review_only",
          "count": 291
        },
        {
          "source": "affgate",
          "source_record_type": "agency_or_team",
          "count": 276
        }
      ],
      "recent_url": "/recent?source=affgate&since=2026-05-22",
      "raw_url": "/db/raw?source=affgate",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "actualtraffic.ru",
      "label": "actualtraffic.ru",
      "base_url": "",
      "records_count": 871,
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 871,
      "entities_count": 878,
      "first_fetched_at": "2026-05-18T12:20:52.273757Z",
      "last_fetched_at": "2026-05-18T12:21:43.453061Z",
      "last_content_at": "2026-05-18T12:21:43.453061Z",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 871,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 871,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-18",
      "last_run_new_count": 871,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "actualtraffic.ru",
          "source_record_type": "company_candidate",
          "count": 871
        }
      ],
      "recent_url": "/recent?source=actualtraffic.ru&since=2026-05-18",
      "raw_url": "/db/raw?source=actualtraffic.ru",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "trafficcardinal",
      "label": "trafficcardinal",
      "base_url": "",
      "records_count": 565,
      "imported_at": "2026-05-13T17:41:08.952166+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 565,
      "entities_count": 29,
      "first_fetched_at": "2026-05-13T11:44:29.870294+00:00",
      "last_fetched_at": "2026-05-18T12:24:35.573368Z",
      "last_content_at": "2026-05-18T12:24:35.573368Z",
      "errors_count": 0,
      "types_count": 3,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 151,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 151,
      "contact_no_site": 0,
      "raw_only_estimate": 414,
      "state": "ok",
      "last_run_day": "2026-05-18",
      "last_run_new_count": 22,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "trafficcardinal",
          "source_record_type": "affiliate_program",
          "count": 318
        },
        {
          "source": "trafficcardinal",
          "source_record_type": "tool_service",
          "count": 225
        },
        {
          "source": "trafficcardinal",
          "source_record_type": "company_candidate",
          "count": 22
        }
      ],
      "recent_url": "/recent?source=trafficcardinal&since=2026-05-18",
      "raw_url": "/db/raw?source=trafficcardinal",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "gdetraffic.com",
      "label": "gdetraffic.com",
      "base_url": "",
      "records_count": 405,
      "imported_at": "2026-05-13T03:51:37.967167+00:00",
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "media",
      "trust_tier": "medium",
      "priority": "P2",
      "include_prefixes": [
        "/Partnerki/",
        "/Obzory/",
        "/Intervyu/"
      ],
      "exclude_prefixes": [
        "/Novosti/",
        "/Daydzhesty/"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 405,
      "entities_count": 13,
      "first_fetched_at": "2026-05-13T04:26:59.500703+00:00",
      "last_fetched_at": "2026-05-18T12:24:21.879971Z",
      "last_content_at": "2026-05-18T12:24:21.879971Z",
      "errors_count": 0,
      "types_count": 2,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 126,
      "with_email": 0,
      "with_telegram": 2,
      "ready_estimate": 2,
      "site_no_contact": 124,
      "contact_no_site": 0,
      "raw_only_estimate": 279,
      "state": "ok",
      "last_run_day": "2026-05-18",
      "last_run_new_count": 12,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "gdetraffic.com",
          "source_record_type": "affiliate_program",
          "count": 393
        },
        {
          "source": "gdetraffic.com",
          "source_record_type": "company_candidate",
          "count": 12
        }
      ],
      "recent_url": "/recent?source=gdetraffic.com&since=2026-05-18",
      "raw_url": "/db/raw?source=gdetraffic.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "affmoment.com",
      "label": "affmoment.com",
      "base_url": "",
      "records_count": 302,
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 302,
      "entities_count": 33,
      "first_fetched_at": "2026-05-14T13:22:27.436057+00:00",
      "last_fetched_at": "2026-05-18T12:24:20.388696Z",
      "last_content_at": "2026-05-18T12:24:20.388696Z",
      "errors_count": 0,
      "types_count": 6,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 235,
      "with_email": 132,
      "with_telegram": 143,
      "ready_estimate": 235,
      "site_no_contact": 0,
      "contact_no_site": 40,
      "raw_only_estimate": 27,
      "state": "ok",
      "last_run_day": "2026-05-18",
      "last_run_new_count": 29,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "affmoment.com",
          "source_record_type": "affiliate_program",
          "count": 130
        },
        {
          "source": "affmoment.com",
          "source_record_type": "tool_service",
          "count": 98
        },
        {
          "source": "affmoment.com",
          "source_record_type": "company_candidate",
          "count": 29
        },
        {
          "source": "affmoment.com",
          "source_record_type": "advertising_network",
          "count": 26
        },
        {
          "source": "affmoment.com",
          "source_record_type": "person",
          "count": 18
        },
        {
          "source": "affmoment.com",
          "source_record_type": "company_profile",
          "count": 1
        }
      ],
      "recent_url": "/recent?source=affmoment.com&since=2026-05-18",
      "raw_url": "/db/raw?source=affmoment.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "affbank",
      "label": "affbank",
      "base_url": "",
      "records_count": 246,
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 246,
      "entities_count": 246,
      "first_fetched_at": "2026-05-18T12:21:43.513440Z",
      "last_fetched_at": "2026-05-18T12:21:59.092065Z",
      "last_content_at": "2026-05-18T12:21:59.092065Z",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 246,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 246,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-18",
      "last_run_new_count": 246,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "affbank",
          "source_record_type": "company_candidate",
          "count": 246
        }
      ],
      "recent_url": "/recent?source=affbank&since=2026-05-18",
      "raw_url": "/db/raw?source=affbank",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "affiversemedia",
      "label": "affiversemedia",
      "base_url": "",
      "records_count": 67,
      "imported_at": "2026-05-13T17:41:08.952166+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 67,
      "entities_count": 13,
      "first_fetched_at": "2026-05-13T17:39:08.112267+00:00",
      "last_fetched_at": "2026-05-18T12:24:18.038276Z",
      "last_content_at": "2026-05-18T12:24:18.038276Z",
      "errors_count": 0,
      "types_count": 4,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 67,
      "with_email": 48,
      "with_telegram": 2,
      "ready_estimate": 50,
      "site_no_contact": 17,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-18",
      "last_run_new_count": 11,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "affiversemedia",
          "source_record_type": "affiliate_network",
          "count": 43
        },
        {
          "source": "affiversemedia",
          "source_record_type": "company_candidate",
          "count": 11
        },
        {
          "source": "affiversemedia",
          "source_record_type": "tool_service",
          "count": 8
        },
        {
          "source": "affiversemedia",
          "source_record_type": "affiliate_program",
          "count": 5
        }
      ],
      "recent_url": "/recent?source=affiversemedia&since=2026-05-18",
      "raw_url": "/db/raw?source=affiversemedia",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "partneroff",
      "label": "partneroff",
      "base_url": "",
      "records_count": 67,
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 67,
      "entities_count": 67,
      "first_fetched_at": "2026-05-18T12:24:27.369769Z",
      "last_fetched_at": "2026-05-18T12:24:33.628453Z",
      "last_content_at": "2026-05-18T12:24:33.628453Z",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 67,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 67,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-18",
      "last_run_new_count": 67,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "partneroff",
          "source_record_type": "company_candidate",
          "count": 67
        }
      ],
      "recent_url": "/recent?source=partneroff&since=2026-05-18",
      "raw_url": "/db/raw?source=partneroff",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "igamingtoday",
      "label": "igamingtoday",
      "base_url": "",
      "records_count": 43,
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 43,
      "entities_count": 43,
      "first_fetched_at": "2026-05-18T12:24:22.314320Z",
      "last_fetched_at": "2026-05-18T12:24:25.528724Z",
      "last_content_at": "2026-05-18T12:24:25.528724Z",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 43,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 43,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-18",
      "last_run_new_count": 43,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "igamingtoday",
          "source_record_type": "company_candidate",
          "count": 43
        }
      ],
      "recent_url": "/recent?source=igamingtoday&since=2026-05-18",
      "raw_url": "/db/raw?source=igamingtoday",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "igbaffiliate",
      "label": "igbaffiliate",
      "base_url": "",
      "records_count": 20,
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 20,
      "entities_count": 20,
      "first_fetched_at": "2026-05-18T12:24:25.604146Z",
      "last_fetched_at": "2026-05-18T12:24:27.226661Z",
      "last_content_at": "2026-05-18T12:24:27.226661Z",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 20,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 20,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-18",
      "last_run_new_count": 20,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "igbaffiliate",
          "source_record_type": "company_candidate",
          "count": 20
        }
      ],
      "recent_url": "/recent?source=igbaffiliate&since=2026-05-18",
      "raw_url": "/db/raw?source=igbaffiliate",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "affinsight.com",
      "label": "affinsight.com",
      "base_url": "",
      "records_count": 8524,
      "imported_at": "2026-05-14T11:42:46.406914+00:00",
      "source_language": "en",
      "market": "EN_GLOBAL",
      "source_type": "enrichment",
      "trust_tier": "high",
      "priority": "P1",
      "include_prefixes": [
        "/network/",
        "/affiliate-networks",
        "/advertising-networks",
        "/affiliate-programs"
      ],
      "exclude_prefixes": [
        "/api/",
        "/_next/",
        "/offers",
        "/auth/",
        "/admin/"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 8524,
      "entities_count": 8237,
      "first_fetched_at": "2026-05-14T03:06:32.794178+00:00",
      "last_fetched_at": "2026-05-14T10:39:56.131396+00:00",
      "last_content_at": "2026-05-14T10:39:56.131396+00:00",
      "errors_count": 15,
      "types_count": 4,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 8460,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 8460,
      "contact_no_site": 0,
      "raw_only_estimate": 64,
      "state": "errors",
      "last_run_day": "2026-05-14",
      "last_run_new_count": 8524,
      "last_run_errors": 15,
      "type_breakdown": [
        {
          "source": "affinsight.com",
          "source_record_type": "affiliate_program",
          "count": 4941
        },
        {
          "source": "affinsight.com",
          "source_record_type": "affiliate_network",
          "count": 3304
        },
        {
          "source": "affinsight.com",
          "source_record_type": "ad_network",
          "count": 199
        },
        {
          "source": "affinsight.com",
          "source_record_type": "resource",
          "count": 80
        }
      ],
      "recent_url": "/recent?source=affinsight.com&since=2026-05-14",
      "raw_url": "/db/raw?source=affinsight.com",
      "llm_suggestion": "Сначала смотреть ошибки и sample HTML; LLM подключать после исправления парсера для классификации мусора.",
      "human_status": "blocked",
      "quality_tags": [
        "blocked"
      ]
    },
    {
      "source": "aff_top",
      "label": "aff_top",
      "base_url": "",
      "records_count": 2176,
      "imported_at": "2026-05-14T05:47:33.078315+00:00",
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "people_directory",
      "trust_tier": "high",
      "priority": "P1",
      "include_prefixes": [
        "/faces/"
      ],
      "exclude_prefixes": [
        "/programs/",
        "/chats/",
        "/channels/",
        "/geo/",
        "/account/"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 2176,
      "entities_count": 839,
      "first_fetched_at": "2026-05-14T05:45:33.077094+00:00",
      "last_fetched_at": "2026-05-14T05:45:48.573038+00:00",
      "last_content_at": "2026-05-14T05:45:48.573038+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 0,
      "with_email": 0,
      "with_telegram": 1001,
      "ready_estimate": 0,
      "site_no_contact": 0,
      "contact_no_site": 1001,
      "raw_only_estimate": 1175,
      "state": "ok",
      "last_run_day": "2026-05-14",
      "last_run_new_count": 2176,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "aff_top",
          "source_record_type": "person",
          "count": 2176
        }
      ],
      "recent_url": "/recent?source=aff_top&since=2026-05-14",
      "raw_url": "/db/raw?source=aff_top",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "advertiserreview.com",
      "label": "advertiserreview.com",
      "base_url": "",
      "records_count": 977,
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 977,
      "entities_count": 37,
      "first_fetched_at": "2026-05-14T08:27:33.688559+00:00",
      "last_fetched_at": "2026-05-14T08:27:48.306330+00:00",
      "last_content_at": "2026-05-14T08:27:48.306330+00:00",
      "errors_count": 0,
      "types_count": 2,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 0,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 0,
      "contact_no_site": 0,
      "raw_only_estimate": 977,
      "state": "ok",
      "last_run_day": "2026-05-14",
      "last_run_new_count": 977,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "advertiserreview.com",
          "source_record_type": "affiliate_network",
          "count": 599
        },
        {
          "source": "advertiserreview.com",
          "source_record_type": "advertising_network",
          "count": 378
        }
      ],
      "recent_url": "/recent?source=advertiserreview.com&since=2026-05-14",
      "raw_url": "/db/raw?source=advertiserreview.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "cpa.club",
      "label": "CPA Club",
      "base_url": "https://cpa.club",
      "records_count": 651,
      "imported_at": "2026-05-12 11:06:13",
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "media",
      "trust_tier": "medium",
      "priority": "P2",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 651,
      "entities_count": 242,
      "first_fetched_at": "2026-05-09T01:31:34.281471+00:00",
      "last_fetched_at": "2026-05-14T07:25:24.322988+00:00",
      "last_content_at": "2026-05-14T07:25:24.322988+00:00",
      "errors_count": 0,
      "types_count": 3,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 569,
      "with_email": 383,
      "with_telegram": 594,
      "ready_estimate": 569,
      "site_no_contact": 0,
      "contact_no_site": 408,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-14",
      "last_run_new_count": 71,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "cpa.club",
          "source_record_type": "company",
          "count": 460
        },
        {
          "source": "cpa.club",
          "source_record_type": "affiliate_program",
          "count": 120
        },
        {
          "source": "cpa.club",
          "source_record_type": "person",
          "count": 71
        }
      ],
      "recent_url": "/recent?source=cpa.club&since=2026-05-14",
      "raw_url": "/db/raw?source=cpa.club",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "affwebsite.com",
      "label": "affwebsite.com",
      "base_url": "",
      "records_count": 515,
      "imported_at": "2026-05-13T03:51:37.967167+00:00",
      "source_language": "en",
      "market": "EN_GLOBAL",
      "source_type": "enrichment",
      "trust_tier": "low",
      "priority": "P3",
      "include_prefixes": [
        "/"
      ],
      "exclude_prefixes": [
        "/list-of-affiliate-offers",
        "/xmlrpc.php"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 515,
      "entities_count": 5,
      "first_fetched_at": "2026-05-13T03:48:43.441707+00:00",
      "last_fetched_at": "2026-05-14T13:00:14.134371Z",
      "last_content_at": "2026-05-14T13:00:14.134371Z",
      "errors_count": 0,
      "types_count": 3,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 55,
      "with_email": 481,
      "with_telegram": 7,
      "ready_estimate": 55,
      "site_no_contact": 0,
      "contact_no_site": 433,
      "raw_only_estimate": 27,
      "state": "ok",
      "last_run_day": "2026-05-14",
      "last_run_new_count": 453,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "affwebsite.com",
          "source_record_type": "affiliate_network",
          "count": 482
        },
        {
          "source": "affwebsite.com",
          "source_record_type": "tool_service",
          "count": 32
        },
        {
          "source": "affwebsite.com",
          "source_record_type": "noise_category_page",
          "count": 1
        }
      ],
      "recent_url": "/recent?source=affwebsite.com&since=2026-05-14",
      "raw_url": "/db/raw?source=affwebsite.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "trafficultras.com",
      "label": "trafficultras.com",
      "base_url": "",
      "records_count": 72,
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 72,
      "entities_count": 58,
      "first_fetched_at": "2026-05-14T06:24:08.240364+00:00",
      "last_fetched_at": "2026-05-14T06:24:16.914647+00:00",
      "last_content_at": "2026-05-14T06:24:16.914647+00:00",
      "errors_count": 0,
      "types_count": 2,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 55,
      "with_email": 0,
      "with_telegram": 46,
      "ready_estimate": 46,
      "site_no_contact": 9,
      "contact_no_site": 0,
      "raw_only_estimate": 17,
      "state": "ok",
      "last_run_day": "2026-05-14",
      "last_run_new_count": 72,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "trafficultras.com",
          "source_record_type": "tool_service",
          "count": 50
        },
        {
          "source": "trafficultras.com",
          "source_record_type": "ad_network",
          "count": 22
        }
      ],
      "recent_url": "/recent?source=trafficultras.com&since=2026-05-14",
      "raw_url": "/db/raw?source=trafficultras.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "traffhub.media",
      "label": "traffhub.media",
      "base_url": "",
      "records_count": 69,
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 69,
      "entities_count": 28,
      "first_fetched_at": "2026-05-14T06:29:28.876317+00:00",
      "last_fetched_at": "2026-05-14T06:29:31.442460+00:00",
      "last_content_at": "2026-05-14T06:29:31.442460+00:00",
      "errors_count": 0,
      "types_count": 3,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 30,
      "with_email": 0,
      "with_telegram": 38,
      "ready_estimate": 30,
      "site_no_contact": 0,
      "contact_no_site": 8,
      "raw_only_estimate": 31,
      "state": "ok",
      "last_run_day": "2026-05-14",
      "last_run_new_count": 69,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "traffhub.media",
          "source_record_type": "affiliate_network",
          "count": 30
        },
        {
          "source": "traffhub.media",
          "source_record_type": "tool_service",
          "count": 27
        },
        {
          "source": "traffhub.media",
          "source_record_type": "ad_network",
          "count": 12
        }
      ],
      "recent_url": "/recent?source=traffhub.media&since=2026-05-14",
      "raw_url": "/db/raw?source=traffhub.media",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "cpa.ru",
      "label": "cpa.ru",
      "base_url": "",
      "records_count": 38,
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 38,
      "entities_count": 1,
      "first_fetched_at": "2026-05-14T11:33:52+00:00",
      "last_fetched_at": "2026-05-14T11:33:52+00:00",
      "last_content_at": "2026-05-14T11:33:52+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 0,
      "with_email": 0,
      "with_telegram": 14,
      "ready_estimate": 0,
      "site_no_contact": 0,
      "contact_no_site": 14,
      "raw_only_estimate": 24,
      "state": "ok",
      "last_run_day": "2026-05-14",
      "last_run_new_count": 38,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "cpa.ru",
          "source_record_type": "author_profile",
          "count": 38
        }
      ],
      "recent_url": "/recent?source=cpa.ru&since=2026-05-14",
      "raw_url": "/db/raw?source=cpa.ru",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "afftank.com",
      "label": "afftank.com",
      "base_url": "",
      "records_count": 3,
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 3,
      "entities_count": 1,
      "first_fetched_at": "2026-05-14T14:47:44.419879+00:00",
      "last_fetched_at": "2026-05-14T14:47:44.419879+00:00",
      "last_content_at": "2026-05-14T14:47:44.419879+00:00",
      "errors_count": 0,
      "types_count": 2,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 3,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 3,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-14",
      "last_run_new_count": 3,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "afftank.com",
          "source_record_type": "affiliate_network",
          "count": 2
        },
        {
          "source": "afftank.com",
          "source_record_type": "advertising_network",
          "count": 1
        }
      ],
      "recent_url": "/recent?source=afftank.com&since=2026-05-14",
      "raw_url": "/db/raw?source=afftank.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "offervault",
      "label": "offervault",
      "base_url": "",
      "records_count": 635,
      "imported_at": "2026-05-13T17:41:08.952166+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 635,
      "entities_count": 3,
      "first_fetched_at": "2026-05-13T17:39:16.377444+00:00",
      "last_fetched_at": "2026-05-13T17:39:16.377444+00:00",
      "last_content_at": "2026-05-13T17:39:16.377444+00:00",
      "errors_count": 0,
      "types_count": 2,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 9,
      "with_email": 125,
      "with_telegram": 0,
      "ready_estimate": 9,
      "site_no_contact": 0,
      "contact_no_site": 116,
      "raw_only_estimate": 510,
      "state": "ok",
      "last_run_day": "2026-05-13",
      "last_run_new_count": 549,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "offervault",
          "source_record_type": "affiliate_network",
          "count": 625
        },
        {
          "source": "offervault",
          "source_record_type": "advertising_network",
          "count": 10
        }
      ],
      "recent_url": "/recent?source=offervault&since=2026-05-13",
      "raw_url": "/db/raw?source=offervault",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "trafopedia",
      "label": "trafopedia",
      "base_url": "",
      "records_count": 329,
      "imported_at": "2026-05-13T17:41:08.952166+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 329,
      "entities_count": 331,
      "first_fetched_at": "2026-05-13T17:39:04.859482+00:00",
      "last_fetched_at": "2026-05-13T17:39:04.859482+00:00",
      "last_content_at": "2026-05-13T17:39:04.859482+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 329,
      "with_email": 1,
      "with_telegram": 0,
      "ready_estimate": 1,
      "site_no_contact": 328,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-13",
      "last_run_new_count": 329,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "trafopedia",
          "source_record_type": "affiliate_network",
          "count": 329
        }
      ],
      "recent_url": "/recent?source=trafopedia&since=2026-05-13",
      "raw_url": "/db/raw?source=trafopedia",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "cpainform",
      "label": "cpainform",
      "base_url": "",
      "records_count": 218,
      "imported_at": "2026-05-13T17:41:08.952166+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 218,
      "entities_count": 216,
      "first_fetched_at": "2026-05-13T16:47:46.765923+00:00",
      "last_fetched_at": "2026-05-13T16:47:46.765923+00:00",
      "last_content_at": "2026-05-13T16:47:46.765923+00:00",
      "errors_count": 0,
      "types_count": 2,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 217,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 217,
      "contact_no_site": 0,
      "raw_only_estimate": 1,
      "state": "ok",
      "last_run_day": "2026-05-13",
      "last_run_new_count": 218,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "cpainform",
          "source_record_type": "affiliate_network",
          "count": 142
        },
        {
          "source": "cpainform",
          "source_record_type": "tool_service",
          "count": 76
        }
      ],
      "recent_url": "/recent?source=cpainform&since=2026-05-13",
      "raw_url": "/db/raw?source=cpainform",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "piratecpa",
      "label": "piratecpa",
      "base_url": "",
      "records_count": 187,
      "imported_at": "2026-05-13T17:41:08.952166+00:00",
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "media",
      "trust_tier": "medium",
      "priority": "P2",
      "include_prefixes": [
        "/coupon/"
      ],
      "exclude_prefixes": [
        "/jobs/",
        "/members/",
        "/activity/"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 187,
      "entities_count": 161,
      "first_fetched_at": "2026-05-13T11:48:38.008026+00:00",
      "last_fetched_at": "2026-05-13T11:48:38.008026+00:00",
      "last_content_at": "2026-05-13T11:48:38.008026+00:00",
      "errors_count": 0,
      "types_count": 2,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 172,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 172,
      "contact_no_site": 0,
      "raw_only_estimate": 15,
      "state": "ok",
      "last_run_day": "2026-05-13",
      "last_run_new_count": 187,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "piratecpa",
          "source_record_type": "tool_service",
          "count": 139
        },
        {
          "source": "piratecpa",
          "source_record_type": "affiliate_program",
          "count": 48
        }
      ],
      "recent_url": "/recent?source=piratecpa&since=2026-05-13",
      "raw_url": "/db/raw?source=piratecpa",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "cpainform.ru",
      "label": "cpainform.ru",
      "base_url": "",
      "records_count": 142,
      "imported_at": "2026-05-13T03:51:37.967167+00:00",
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "catalog",
      "trust_tier": "medium",
      "priority": "P2",
      "include_prefixes": [
        "/networks",
        "/sources",
        "/tools/"
      ],
      "exclude_prefixes": [
        "/programs",
        "/out"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 142,
      "entities_count": 141,
      "first_fetched_at": "2026-05-13T04:21:30.786889+00:00",
      "last_fetched_at": "2026-05-13T04:25:49.684003+00:00",
      "last_content_at": "2026-05-13T04:25:49.684003+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 142,
      "with_email": 5,
      "with_telegram": 2,
      "ready_estimate": 7,
      "site_no_contact": 135,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-13",
      "last_run_new_count": 142,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "cpainform.ru",
          "source_record_type": "affiliate_program_or_service",
          "count": 142
        }
      ],
      "recent_url": "/recent?source=cpainform.ru&since=2026-05-13",
      "raw_url": "/db/raw?source=cpainform.ru",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "affpapa.com",
      "label": "AffPapa",
      "base_url": "",
      "records_count": 75,
      "source_language": "en",
      "market": "EN_GLOBAL",
      "source_type": "enrichment",
      "trust_tier": "medium",
      "priority": "P2",
      "include_prefixes": [
        "/igamingaffiliate/",
        "/compliant/",
        "/complaints/"
      ],
      "exclude_prefixes": [
        "/events/",
        "/igaming-news/",
        "/best-igaming-offers/"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 75,
      "entities_count": 1,
      "first_fetched_at": "2026-05-13T06:19:06.670118+00:00",
      "last_fetched_at": "2026-05-13T06:20:00.445006+00:00",
      "last_content_at": "2026-05-13T06:20:00.445006+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 0,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 0,
      "contact_no_site": 0,
      "raw_only_estimate": 75,
      "state": "ok",
      "last_run_day": "2026-05-13",
      "last_run_new_count": 75,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "affpapa.com",
          "source_record_type": "compliance_brand",
          "count": 75
        }
      ],
      "recent_url": "/recent?source=affpapa.com&since=2026-05-13",
      "raw_url": "/db/raw?source=affpapa.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "affpapa",
      "label": "affpapa",
      "base_url": "",
      "records_count": 75,
      "imported_at": "2026-05-13T17:41:08.952166+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 75,
      "entities_count": 73,
      "first_fetched_at": "2026-05-13T17:39:18.169590+00:00",
      "last_fetched_at": "2026-05-13T17:39:18.169590+00:00",
      "last_content_at": "2026-05-13T17:39:18.169590+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 75,
      "with_email": 75,
      "with_telegram": 0,
      "ready_estimate": 75,
      "site_no_contact": 0,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-13",
      "last_run_new_count": 75,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "affpapa",
          "source_record_type": "compliance_brand",
          "count": 75
        }
      ],
      "recent_url": "/recent?source=affpapa&since=2026-05-13",
      "raw_url": "/db/raw?source=affpapa",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "trafopedia.ru",
      "label": "Trafopedia",
      "base_url": "",
      "records_count": 44,
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "legacy_catalog",
      "trust_tier": "low",
      "priority": "P3",
      "include_prefixes": [
        "/partnerki/",
        "/tools/"
      ],
      "exclude_prefixes": [
        "/reviews",
        "/abuse",
        "/journal"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 44,
      "entities_count": 2,
      "first_fetched_at": "2026-05-13T05:29:00.220346+00:00",
      "last_fetched_at": "2026-05-13T05:29:44.022171+00:00",
      "last_content_at": "2026-05-13T05:29:44.022171+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 43,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 43,
      "contact_no_site": 0,
      "raw_only_estimate": 1,
      "state": "ok",
      "last_run_day": "2026-05-13",
      "last_run_new_count": 44,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "trafopedia.ru",
          "source_record_type": "affiliate_program_or_service",
          "count": 44
        }
      ],
      "recent_url": "/recent?source=trafopedia.ru&since=2026-05-13",
      "raw_url": "/db/raw?source=trafopedia.ru",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "affiversemedia.com",
      "label": "Affiverse",
      "base_url": "",
      "records_count": 23,
      "source_language": "en",
      "market": "EN_GLOBAL",
      "source_type": "enrichment",
      "trust_tier": "medium",
      "priority": "P2",
      "include_prefixes": [
        "/affiliate_directory/"
      ],
      "exclude_prefixes": [
        "/events/",
        "/go/",
        "/search/"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 23,
      "entities_count": 1,
      "first_fetched_at": "2026-05-13T04:34:45.317424+00:00",
      "last_fetched_at": "2026-05-13T04:35:10.170723+00:00",
      "last_content_at": "2026-05-13T04:35:10.170723+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 23,
      "with_email": 0,
      "with_telegram": 2,
      "ready_estimate": 2,
      "site_no_contact": 21,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-13",
      "last_run_new_count": 23,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "affiversemedia.com",
          "source_record_type": "affiliate_program_or_service",
          "count": 23
        }
      ],
      "recent_url": "/recent?source=affiversemedia.com&since=2026-05-13",
      "raw_url": "/db/raw?source=affiversemedia.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "gooodbro.com",
      "label": "Gooodbro",
      "base_url": "",
      "records_count": 19,
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "media",
      "trust_tier": "low",
      "priority": "P3",
      "include_prefixes": [
        "/affiliate_program/",
        "/cpa_tools/",
        "/interview/"
      ],
      "exclude_prefixes": [
        "/cpa_news/"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 19,
      "entities_count": 1,
      "first_fetched_at": "2026-05-13T07:05:52.988221+00:00",
      "last_fetched_at": "2026-05-13T07:07:08.326211+00:00",
      "last_content_at": "2026-05-13T07:07:08.326211+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 0,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 0,
      "contact_no_site": 0,
      "raw_only_estimate": 19,
      "state": "ok",
      "last_run_day": "2026-05-13",
      "last_run_new_count": 19,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "gooodbro.com",
          "source_record_type": "affiliate_program_snapshot",
          "count": 19
        }
      ],
      "recent_url": "/recent?source=gooodbro.com&since=2026-05-13",
      "raw_url": "/db/raw?source=gooodbro.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "offervault.com",
      "label": "OfferVault",
      "base_url": "",
      "records_count": 16,
      "source_language": "en",
      "market": "EN_GLOBAL",
      "source_type": "enrichment",
      "trust_tier": "medium",
      "priority": "P2",
      "include_prefixes": [
        "/network/",
        "/networks",
        "/traffic-sources"
      ],
      "exclude_prefixes": [
        "/offer/",
        "/pay-per-call-offers",
        "/login",
        "/register"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 16,
      "entities_count": 0,
      "first_fetched_at": "2026-05-13T05:29:45.185040+00:00",
      "last_fetched_at": "2026-05-13T05:29:54.325757+00:00",
      "last_content_at": "2026-05-13T05:29:54.325757+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 0,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 0,
      "contact_no_site": 0,
      "raw_only_estimate": 16,
      "state": "ok",
      "last_run_day": "2026-05-13",
      "last_run_new_count": 16,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "offervault.com",
          "source_record_type": "affiliate_program_or_service",
          "count": 16
        }
      ],
      "recent_url": "/recent?source=offervault.com&since=2026-05-13",
      "raw_url": "/db/raw?source=offervault.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "trafficcardinal.com",
      "label": "Traffic Cardinal",
      "base_url": "",
      "records_count": 12,
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "media",
      "trust_tier": "medium",
      "priority": "P2",
      "include_prefixes": [
        "/company/",
        "/services/"
      ],
      "exclude_prefixes": [
        "/post/",
        "/events/",
        "/vacancies/",
        "/offers/"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 12,
      "entities_count": 0,
      "first_fetched_at": "2026-05-13T04:36:39.094597+00:00",
      "last_fetched_at": "2026-05-13T04:37:05.036693+00:00",
      "last_content_at": "2026-05-13T04:37:05.036693+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 12,
      "with_email": 1,
      "with_telegram": 1,
      "ready_estimate": 2,
      "site_no_contact": 10,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-13",
      "last_run_new_count": 12,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "trafficcardinal.com",
          "source_record_type": "service",
          "count": 12
        }
      ],
      "recent_url": "/recent?source=trafficcardinal.com&since=2026-05-13",
      "raw_url": "/db/raw?source=trafficcardinal.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "ggate.media",
      "label": "G Gate",
      "base_url": "https://ggate.media",
      "records_count": 2509,
      "imported_at": "2026-05-12 11:06:13",
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "discovery",
      "trust_tier": "medium",
      "priority": "P2",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 2509,
      "entities_count": 127,
      "first_fetched_at": "2026-05-09T10:43:02.489925+00:00",
      "last_fetched_at": "2026-05-12T05:05:14.009367+00:00",
      "last_content_at": "2026-05-12T05:05:14.009367+00:00",
      "errors_count": 0,
      "types_count": 9,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 112,
      "with_email": 111,
      "with_telegram": 112,
      "ready_estimate": 112,
      "site_no_contact": 0,
      "contact_no_site": 111,
      "raw_only_estimate": 2286,
      "state": "ok",
      "last_run_day": "2026-05-12",
      "last_run_new_count": 110,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "ggate.media",
          "source_record_type": "affiliate_program",
          "count": 1990
        },
        {
          "source": "ggate.media",
          "source_record_type": "game_provider",
          "count": 360
        },
        {
          "source": "ggate.media",
          "source_record_type": "event",
          "count": 71
        },
        {
          "source": "ggate.media",
          "source_record_type": "catalog_card",
          "count": 47
        },
        {
          "source": "ggate.media",
          "source_record_type": "person",
          "count": 20
        },
        {
          "source": "ggate.media",
          "source_record_type": "service",
          "count": 15
        },
        {
          "source": "ggate.media",
          "source_record_type": "payment-systems",
          "count": 3
        },
        {
          "source": "ggate.media",
          "source_record_type": "agency_static_list",
          "count": 2
        }
      ],
      "recent_url": "/recent?source=ggate.media&since=2026-05-12",
      "raw_url": "/db/raw?source=ggate.media",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "partnerkin.com",
      "label": "partnerkin.com",
      "base_url": "https://partnerkin.com/c",
      "records_count": 1683,
      "imported_at": "2026-05-12T10:25:01.691635+00:00",
      "source_language": "mixed",
      "market": "RU_CIS",
      "source_type": "catalog",
      "trust_tier": "medium",
      "priority": "P1",
      "include_prefixes": [
        "/c/"
      ],
      "exclude_prefixes": [
        "/ajax/",
        "/api/",
        "/ref/",
        "/offer/",
        "/offers/",
        "/forum/",
        "/blog/"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 1683,
      "entities_count": 1380,
      "first_fetched_at": "2026-05-12T10:22:02.551141+00:00",
      "last_fetched_at": "2026-05-12T10:22:24.904554+00:00",
      "last_content_at": "2026-05-12T10:22:24.904554+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 1371,
      "with_email": 1,
      "with_telegram": 0,
      "ready_estimate": 1,
      "site_no_contact": 1370,
      "contact_no_site": 0,
      "raw_only_estimate": 312,
      "state": "ok",
      "last_run_day": "2026-05-12",
      "last_run_new_count": 1683,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "partnerkin.com",
          "source_record_type": "affiliate_program_or_company",
          "count": 1683
        }
      ],
      "recent_url": "/recent?source=partnerkin.com&since=2026-05-12",
      "raw_url": "/db/raw?source=partnerkin.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "affiliatefix.com",
      "label": "affiliatefix.com",
      "base_url": "https://www.affiliatefix.com/resources",
      "records_count": 1365,
      "imported_at": "2026-05-12T07:20:19.309998+00:00",
      "source_language": "en",
      "market": "EN_GLOBAL",
      "source_type": "enrichment",
      "trust_tier": "medium",
      "priority": "P1",
      "include_prefixes": [
        "/resources/"
      ],
      "exclude_prefixes": [
        "/forums/",
        "/members/",
        "/threads/",
        "/posts/"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 1365,
      "entities_count": 1040,
      "first_fetched_at": "2026-05-12T05:34:59.431894+00:00",
      "last_fetched_at": "2026-05-12T05:56:41.804504+00:00",
      "last_content_at": "2026-05-12T05:56:41.804504+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 1090,
      "with_email": 1,
      "with_telegram": 78,
      "ready_estimate": 79,
      "site_no_contact": 1011,
      "contact_no_site": 0,
      "raw_only_estimate": 275,
      "state": "ok",
      "last_run_day": "2026-05-12",
      "last_run_new_count": 1365,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "affiliatefix.com",
          "source_record_type": "resource",
          "count": 1365
        }
      ],
      "recent_url": "/recent?source=affiliatefix.com&since=2026-05-12",
      "raw_url": "/db/raw?source=affiliatefix.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "igamingbusiness.com",
      "label": "igamingbusiness.com",
      "base_url": "https://igamingbusiness.com/directory",
      "records_count": 965,
      "imported_at": "2026-05-12T07:20:19.621503+00:00",
      "source_language": "en",
      "market": "EN_GLOBAL",
      "source_type": "enrichment",
      "trust_tier": "medium",
      "priority": "P1",
      "include_prefixes": [
        "/directory/companies/",
        "/directory/suppliers/"
      ],
      "exclude_prefixes": [
        "/news/",
        "/events/",
        "/awards/",
        "/webinars/",
        "/magazine/",
        "/jobs/"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 965,
      "entities_count": 850,
      "first_fetched_at": "2026-05-12T05:35:34.221791+00:00",
      "last_fetched_at": "2026-05-12T06:12:00.814913+00:00",
      "last_content_at": "2026-05-12T06:12:00.814913+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 879,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 879,
      "contact_no_site": 0,
      "raw_only_estimate": 86,
      "state": "ok",
      "last_run_day": "2026-05-12",
      "last_run_new_count": 965,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "igamingbusiness.com",
          "source_record_type": "b2b_supplier",
          "count": 965
        }
      ],
      "recent_url": "/recent?source=igamingbusiness.com&since=2026-05-12",
      "raw_url": "/db/raw?source=igamingbusiness.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "cpa.rip",
      "label": "CPA Rip",
      "base_url": "https://cpa.rip",
      "records_count": 609,
      "imported_at": "2026-05-12 11:06:13",
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "directory",
      "trust_tier": "medium",
      "priority": "P2",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 609,
      "entities_count": 217,
      "first_fetched_at": "2026-05-09T01:34:23.991923+00:00",
      "last_fetched_at": "2026-05-12T05:02:41.129976+00:00",
      "last_content_at": "2026-05-12T05:02:41.129976+00:00",
      "errors_count": 0,
      "types_count": 2,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 510,
      "with_email": 180,
      "with_telegram": 479,
      "ready_estimate": 510,
      "site_no_contact": 0,
      "contact_no_site": 149,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-12",
      "last_run_new_count": 120,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "cpa.rip",
          "source_record_type": "affiliate_program",
          "count": 547
        },
        {
          "source": "cpa.rip",
          "source_record_type": "ad_network",
          "count": 62
        }
      ],
      "recent_url": "/recent?source=cpa.rip&since=2026-05-12",
      "raw_url": "/db/raw?source=cpa.rip",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "afftrends.com",
      "label": "AffTrends",
      "base_url": "https://afftrends.com",
      "records_count": 275,
      "imported_at": "2026-05-12 11:06:13",
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "media",
      "trust_tier": "medium",
      "priority": "P2",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 275,
      "entities_count": 169,
      "first_fetched_at": "2026-05-09T01:32:44.843502+00:00",
      "last_fetched_at": "2026-05-12T05:10:14.533698+00:00",
      "last_content_at": "2026-05-12T05:10:14.533698+00:00",
      "errors_count": 0,
      "types_count": 5,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 120,
      "with_email": 88,
      "with_telegram": 106,
      "ready_estimate": 120,
      "site_no_contact": 0,
      "contact_no_site": 74,
      "raw_only_estimate": 81,
      "state": "ok",
      "last_run_day": "2026-05-12",
      "last_run_new_count": 110,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "afftrends.com",
          "source_record_type": "affiliate_program",
          "count": 112
        },
        {
          "source": "afftrends.com",
          "source_record_type": "tool_service",
          "count": 102
        },
        {
          "source": "afftrends.com",
          "source_record_type": "catalog_card",
          "count": 34
        },
        {
          "source": "afftrends.com",
          "source_record_type": "service",
          "count": 26
        },
        {
          "source": "afftrends.com",
          "source_record_type": "payment-systems",
          "count": 1
        }
      ],
      "recent_url": "/recent?source=afftrends.com&since=2026-05-12",
      "raw_url": "/db/raw?source=afftrends.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "gpwa.org",
      "label": "gpwa.org",
      "base_url": "",
      "records_count": 37,
      "imported_at": "2026-05-12T11:31:15.560597+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 37,
      "entities_count": 1,
      "first_fetched_at": "2026-05-12T11:29:25.384819+00:00",
      "last_fetched_at": "2026-05-12T11:30:18.543688+00:00",
      "last_content_at": "2026-05-12T11:30:18.543688+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 37,
      "with_email": 36,
      "with_telegram": 0,
      "ready_estimate": 36,
      "site_no_contact": 1,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-12",
      "last_run_new_count": 37,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "gpwa.org",
          "source_record_type": "affiliate_program",
          "count": 37
        }
      ],
      "recent_url": "/recent?source=gpwa.org&since=2026-05-12",
      "raw_url": "/db/raw?source=gpwa.org",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "cpa_rip_teams",
      "label": "cpa_rip_teams",
      "base_url": "",
      "records_count": 14,
      "imported_at": "2026-05-12T02:17:35.500268+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 14,
      "entities_count": 0,
      "first_fetched_at": "2026-05-12T02:07:39.347966+00:00",
      "last_fetched_at": "2026-05-12T02:07:39.348021+00:00",
      "last_content_at": "2026-05-12T02:07:39.348021+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 11,
      "with_email": 0,
      "with_telegram": 11,
      "ready_estimate": 11,
      "site_no_contact": 0,
      "contact_no_site": 0,
      "raw_only_estimate": 3,
      "state": "ok",
      "last_run_day": "2026-05-12",
      "last_run_new_count": 14,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "cpa_rip_teams",
          "source_record_type": "agency_or_team",
          "count": 14
        }
      ],
      "recent_url": "/recent?source=cpa_rip_teams&since=2026-05-12",
      "raw_url": "/db/raw?source=cpa_rip_teams",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "partnerkin_teams_article",
      "label": "partnerkin_teams_article",
      "base_url": "",
      "records_count": 10,
      "imported_at": "2026-05-12T02:17:35.500268+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 10,
      "entities_count": 1,
      "first_fetched_at": "2026-05-12T02:07:39.347873+00:00",
      "last_fetched_at": "2026-05-12T02:07:39.347961+00:00",
      "last_content_at": "2026-05-12T02:07:39.347961+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 1,
      "with_email": 0,
      "with_telegram": 5,
      "ready_estimate": 1,
      "site_no_contact": 0,
      "contact_no_site": 4,
      "raw_only_estimate": 5,
      "state": "ok",
      "last_run_day": "2026-05-12",
      "last_run_new_count": 10,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "partnerkin_teams_article",
          "source_record_type": "agency_or_team",
          "count": 10
        }
      ],
      "recent_url": "/recent?source=partnerkin_teams_article&since=2026-05-12",
      "raw_url": "/db/raw?source=partnerkin_teams_article",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "mthink.com",
      "label": "mthink.com",
      "base_url": "https://mthink.com",
      "records_count": 343,
      "imported_at": "2026-05-10T00:03:09.966242+00:00",
      "source_language": "en",
      "market": "EN_GLOBAL",
      "source_type": "enrichment",
      "trust_tier": "high",
      "priority": "P1",
      "include_prefixes": [
        "/network/",
        "/all-networks/"
      ],
      "exclude_prefixes": [
        "/offers/",
        "/author/"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 343,
      "entities_count": 340,
      "first_fetched_at": "2026-05-09T20:17:22.653779+00:00",
      "last_fetched_at": "2026-05-10T00:03:08.115467+00:00",
      "last_content_at": "2026-04-29T23:26:52",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 342,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 342,
      "contact_no_site": 0,
      "raw_only_estimate": 1,
      "state": "ok",
      "last_run_day": "2026-05-10",
      "last_run_new_count": 223,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "mthink.com",
          "source_record_type": "affiliate_network",
          "count": 343
        }
      ],
      "recent_url": "/recent?source=mthink.com&since=2026-05-10",
      "raw_url": "/db/raw?source=mthink.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "affpaying.com",
      "label": "affpaying.com",
      "base_url": "https://www.affpaying.com",
      "records_count": 9174,
      "imported_at": "2026-05-10T00:03:09.966242+00:00",
      "source_language": "en",
      "market": "EN_GLOBAL",
      "source_type": "enrichment",
      "trust_tier": "high",
      "priority": "P1",
      "include_prefixes": [
        "/affiliate-networks",
        "/affiliate-programs",
        "/advertising-networks",
        "/"
      ],
      "exclude_prefixes": [
        "/offers",
        "/blog/",
        "/reviews/raw"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 9174,
      "entities_count": 8737,
      "first_fetched_at": "2026-05-09T20:17:21.073719+00:00",
      "last_fetched_at": "2026-05-09T23:58:22.440314+00:00",
      "last_content_at": "2026-05-09T23:58:22.440314+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 8956,
      "with_email": 8323,
      "with_telegram": 2,
      "ready_estimate": 8325,
      "site_no_contact": 631,
      "contact_no_site": 0,
      "raw_only_estimate": 218,
      "state": "ok",
      "last_run_day": "2026-05-09",
      "last_run_new_count": 9174,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "affpaying.com",
          "source_record_type": "affiliate_network",
          "count": 9174
        }
      ],
      "recent_url": "/recent?source=affpaying.com&since=2026-05-09",
      "raw_url": "/db/raw?source=affpaying.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "protraffic.com",
      "label": "ProTraffic",
      "base_url": "https://protraffic.com",
      "records_count": 1015,
      "imported_at": "2026-05-09T10:51:39.841693+00:00",
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "discovery",
      "trust_tier": "medium",
      "priority": "P2",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 1015,
      "entities_count": 5,
      "first_fetched_at": "2026-05-09T10:48:41.732978+00:00",
      "last_fetched_at": "2026-05-09T10:48:41.742105+00:00",
      "last_content_at": "2026-05-09T10:48:41.742105+00:00",
      "errors_count": 0,
      "types_count": 4,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 0,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 0,
      "contact_no_site": 0,
      "raw_only_estimate": 1015,
      "state": "ok",
      "last_run_day": "2026-05-09",
      "last_run_new_count": 1015,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "protraffic.com",
          "source_record_type": "event",
          "count": 428
        },
        {
          "source": "protraffic.com",
          "source_record_type": "affiliate_program",
          "count": 275
        },
        {
          "source": "protraffic.com",
          "source_record_type": "tool_service",
          "count": 274
        },
        {
          "source": "protraffic.com",
          "source_record_type": "ad_network",
          "count": 38
        }
      ],
      "recent_url": "/recent?source=protraffic.com&since=2026-05-09",
      "raw_url": "/db/raw?source=protraffic.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "affbank.com",
      "label": "affbank.com",
      "base_url": "https://affbank.com",
      "records_count": 484,
      "imported_at": "2026-05-09T22:12:02.363320+00:00",
      "source_language": "en",
      "market": "EN_GLOBAL",
      "source_type": "enrichment",
      "trust_tier": "high",
      "priority": "P1",
      "include_prefixes": [
        "/cpa-networks/",
        "/advertising-networks/",
        "/affiliate-services/"
      ],
      "exclude_prefixes": [
        "/offers",
        "/offer/",
        "/affiliate-event/",
        "/out/"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 484,
      "entities_count": 468,
      "first_fetched_at": "2026-05-09T20:03:45.149136+00:00",
      "last_fetched_at": "2026-05-09T22:11:05.910755+00:00",
      "last_content_at": "2026-05-09T22:11:05.910755+00:00",
      "errors_count": 7,
      "types_count": 3,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 471,
      "with_email": 415,
      "with_telegram": 49,
      "ready_estimate": 464,
      "site_no_contact": 7,
      "contact_no_site": 0,
      "raw_only_estimate": 13,
      "state": "errors",
      "last_run_day": "2026-05-09",
      "last_run_new_count": 484,
      "last_run_errors": 7,
      "type_breakdown": [
        {
          "source": "affbank.com",
          "source_record_type": "ad_network",
          "count": 319
        },
        {
          "source": "affbank.com",
          "source_record_type": "cpa_network",
          "count": 127
        },
        {
          "source": "affbank.com",
          "source_record_type": "tool_service",
          "count": 38
        }
      ],
      "recent_url": "/recent?source=affbank.com&since=2026-05-09",
      "raw_url": "/db/raw?source=affbank.com",
      "llm_suggestion": "Сначала смотреть ошибки и sample HTML; LLM подключать после исправления парсера для классификации мусора.",
      "human_status": "blocked",
      "quality_tags": [
        "blocked"
      ]
    },
    {
      "source": "affcommunity.org",
      "label": "AffCommunity",
      "base_url": "https://affcommunity.org",
      "records_count": 345,
      "imported_at": "2026-05-09T10:51:37.566039+00:00",
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "community",
      "trust_tier": "medium",
      "priority": "P2",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 345,
      "entities_count": 171,
      "first_fetched_at": "2026-05-09T01:33:11.991744+00:00",
      "last_fetched_at": "2026-05-09T01:33:44.397933+00:00",
      "last_content_at": "2026-05-09T01:33:44.397933+00:00",
      "errors_count": 0,
      "types_count": 3,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 333,
      "with_email": 111,
      "with_telegram": 247,
      "ready_estimate": 333,
      "site_no_contact": 0,
      "contact_no_site": 25,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-09",
      "last_run_new_count": 345,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "affcommunity.org",
          "source_record_type": "service",
          "count": 151
        },
        {
          "source": "affcommunity.org",
          "source_record_type": "affiliate_program",
          "count": 149
        },
        {
          "source": "affcommunity.org",
          "source_record_type": "ad_network",
          "count": 45
        }
      ],
      "recent_url": "/recent?source=affcommunity.org&since=2026-05-09",
      "raw_url": "/db/raw?source=affcommunity.org",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "cpalenta.ru",
      "label": "CPA Lenta",
      "base_url": "https://cpalenta.ru",
      "records_count": 285,
      "imported_at": "2026-05-09T10:51:39.841693+00:00",
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "media",
      "trust_tier": "medium",
      "priority": "P2",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 285,
      "entities_count": 207,
      "first_fetched_at": "2026-05-09T03:03:12.145684+00:00",
      "last_fetched_at": "2026-05-09T03:03:19.429762+00:00",
      "last_content_at": "2026-05-09T03:03:19.429762+00:00",
      "errors_count": 0,
      "types_count": 3,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 224,
      "with_email": 0,
      "with_telegram": 17,
      "ready_estimate": 17,
      "site_no_contact": 207,
      "contact_no_site": 0,
      "raw_only_estimate": 61,
      "state": "ok",
      "last_run_day": "2026-05-09",
      "last_run_new_count": 285,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "cpalenta.ru",
          "source_record_type": "affiliate_network",
          "count": 138
        },
        {
          "source": "cpalenta.ru",
          "source_record_type": "tool_service",
          "count": 118
        },
        {
          "source": "cpalenta.ru",
          "source_record_type": "ad_network",
          "count": 29
        }
      ],
      "recent_url": "/recent?source=cpalenta.ru&since=2026-05-09",
      "raw_url": "/db/raw?source=cpalenta.ru",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "fb-killa.pro",
      "label": "FB-killa",
      "base_url": "https://fb-killa.pro",
      "records_count": 229,
      "imported_at": "2026-05-09T10:51:39.841693+00:00",
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "catalog",
      "trust_tier": "medium",
      "priority": "P2",
      "include_prefixes": [
        "/cpa/",
        "/tools/"
      ],
      "exclude_prefixes": [
        "/offers/",
        "/threads/",
        "/blog/",
        "/forum/"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 229,
      "entities_count": 228,
      "first_fetched_at": "2026-05-09T03:03:22.982720+00:00",
      "last_fetched_at": "2026-05-09T03:05:59.624518+00:00",
      "last_content_at": "2026-05-09T03:05:59.624518+00:00",
      "errors_count": 1,
      "types_count": 2,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 209,
      "with_email": 34,
      "with_telegram": 210,
      "ready_estimate": 209,
      "site_no_contact": 0,
      "contact_no_site": 35,
      "raw_only_estimate": 0,
      "state": "errors",
      "last_run_day": "2026-05-09",
      "last_run_new_count": 229,
      "last_run_errors": 1,
      "type_breakdown": [
        {
          "source": "fb-killa.pro",
          "source_record_type": "affiliate_program",
          "count": 129
        },
        {
          "source": "fb-killa.pro",
          "source_record_type": "tool_service",
          "count": 100
        }
      ],
      "recent_url": "/recent?source=fb-killa.pro&since=2026-05-09",
      "raw_url": "/db/raw?source=fb-killa.pro",
      "llm_suggestion": "Сначала смотреть ошибки и sample HTML; LLM подключать после исправления парсера для классификации мусора.",
      "human_status": "blocked",
      "quality_tags": [
        "blocked"
      ]
    },
    {
      "source": "uaff.media",
      "label": "uaff.media",
      "base_url": "https://uaff.media",
      "records_count": 200,
      "imported_at": "2026-05-09T22:12:02.363320+00:00",
      "source_language": "uk",
      "market": "UA",
      "source_type": "catalog",
      "trust_tier": "high",
      "priority": "P1",
      "include_prefixes": [
        "/partners/",
        "/services/",
        "/ad_networks/"
      ],
      "exclude_prefixes": [
        "/vacancies/",
        "/conf/",
        "/blog/",
        "/cases/",
        "/_next/",
        "/r/"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 200,
      "entities_count": 47,
      "first_fetched_at": "2026-05-09T20:17:20.643972+00:00",
      "last_fetched_at": "2026-05-09T21:59:58.599901+00:00",
      "last_content_at": "2026-05-09T21:59:58.599901+00:00",
      "errors_count": 0,
      "types_count": 3,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 47,
      "with_email": 0,
      "with_telegram": 77,
      "ready_estimate": 47,
      "site_no_contact": 0,
      "contact_no_site": 30,
      "raw_only_estimate": 123,
      "state": "ok",
      "last_run_day": "2026-05-09",
      "last_run_new_count": 200,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "uaff.media",
          "source_record_type": "affiliate_program",
          "count": 111
        },
        {
          "source": "uaff.media",
          "source_record_type": "tool_service",
          "count": 59
        },
        {
          "source": "uaff.media",
          "source_record_type": "ad_network",
          "count": 30
        }
      ],
      "recent_url": "/recent?source=uaff.media&since=2026-05-09",
      "raw_url": "/db/raw?source=uaff.media",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "pressaff.com",
      "label": "pressaff.com",
      "base_url": "https://pressaff.com",
      "records_count": 172,
      "imported_at": "2026-05-09T22:12:02.363320+00:00",
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "catalog",
      "trust_tier": "high",
      "priority": "P1",
      "include_prefixes": [
        "/catalog/",
        "/services-tools/",
        "/personality/"
      ],
      "exclude_prefixes": [
        "/vacancies/",
        "/calendar/",
        "/articles/",
        "/news/",
        "/events/"
      ],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 172,
      "entities_count": 112,
      "first_fetched_at": "2026-05-09T20:17:20.214462+00:00",
      "last_fetched_at": "2026-05-09T21:55:03.279583+00:00",
      "last_content_at": "2026-05-09T21:55:03.279583+00:00",
      "errors_count": 0,
      "types_count": 2,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 145,
      "with_email": 0,
      "with_telegram": 52,
      "ready_estimate": 52,
      "site_no_contact": 93,
      "contact_no_site": 0,
      "raw_only_estimate": 27,
      "state": "ok",
      "last_run_day": "2026-05-09",
      "last_run_new_count": 172,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "pressaff.com",
          "source_record_type": "tool_service",
          "count": 128
        },
        {
          "source": "pressaff.com",
          "source_record_type": "person",
          "count": 44
        }
      ],
      "recent_url": "/recent?source=pressaff.com&since=2026-05-09",
      "raw_url": "/db/raw?source=pressaff.com",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "gembla",
      "label": "Gembla",
      "base_url": "https://gembla.net",
      "records_count": 2205,
      "imported_at": "2026-05-09T10:51:34.113853+00:00",
      "source_language": "ru",
      "market": "RU_CIS",
      "source_type": "directory",
      "trust_tier": "medium",
      "priority": "P1",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "imported",
      "source_state": "imported",
      "raw_count": 2205,
      "entities_count": 2192,
      "first_fetched_at": "2026-05-08T20:29:04.512874+00:00",
      "last_fetched_at": "2026-05-08T20:43:44.545775+00:00",
      "last_content_at": "2026-05-08T20:43:44.545775+00:00",
      "errors_count": 0,
      "types_count": 1,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 2198,
      "with_email": 2197,
      "with_telegram": 13,
      "ready_estimate": 2198,
      "site_no_contact": 0,
      "contact_no_site": 12,
      "raw_only_estimate": 0,
      "state": "ok",
      "last_run_day": "2026-05-08",
      "last_run_new_count": 2205,
      "last_run_errors": 0,
      "type_breakdown": [
        {
          "source": "gembla",
          "source_record_type": "catalog_card",
          "count": 2205
        }
      ],
      "recent_url": "/recent?source=gembla&since=2026-05-08",
      "raw_url": "/db/raw?source=gembla",
      "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
      "human_status": "imported",
      "quality_tags": [
        "imported"
      ]
    },
    {
      "source": "lcb.org",
      "label": "LCB Affiliate Programs",
      "base_url": "",
      "records_count": 0,
      "source_language": "en",
      "market": "EN_GLOBAL",
      "source_type": "enrichment",
      "trust_tier": "medium",
      "priority": "P1",
      "include_prefixes": [
        "/affiliate-programs/"
      ],
      "exclude_prefixes": [
        "/forum/",
        "/news/",
        "/casino/",
        "/bonuses/",
        "/users/",
        "/search/"
      ],
      "is_equal_source": true,
      "parser_stage": "planned",
      "source_state": "planned",
      "raw_count": 0,
      "entities_count": 0,
      "first_fetched_at": null,
      "last_fetched_at": null,
      "last_content_at": null,
      "errors_count": 0,
      "types_count": 0,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 0,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 0,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "planned",
      "last_run_day": "",
      "last_run_new_count": 0,
      "last_run_errors": 0,
      "type_breakdown": [],
      "recent_url": "/recent?source=lcb.org",
      "raw_url": "/db/raw?source=lcb.org",
      "llm_suggestion": "Источник есть в плане, но в production raw ещё нет записей: нужен discovery/sample → dry-run → импорт.",
      "human_status": "planned",
      "quality_tags": [
        "planned"
      ]
    },
    {
      "source": "g2.com",
      "label": "G2 manual/API",
      "base_url": "",
      "records_count": 0,
      "source_language": "en",
      "market": "EN_GLOBAL",
      "source_type": "manual_official",
      "trust_tier": "medium",
      "priority": "P3",
      "include_prefixes": [],
      "exclude_prefixes": [
        "protected:official_api_or_manual_only"
      ],
      "is_equal_source": true,
      "parser_stage": "blocked",
      "source_state": "blocked",
      "raw_count": 0,
      "entities_count": 0,
      "first_fetched_at": null,
      "last_fetched_at": null,
      "last_content_at": null,
      "errors_count": 0,
      "types_count": 0,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 0,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 0,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "planned",
      "last_run_day": "",
      "last_run_new_count": 0,
      "last_run_errors": 0,
      "type_breakdown": [],
      "recent_url": "/recent?source=g2.com",
      "raw_url": "/db/raw?source=g2.com",
      "llm_suggestion": "Источник есть в плане, но в production raw ещё нет записей: нужен discovery/sample → dry-run → импорт.",
      "human_status": "planned",
      "quality_tags": [
        "planned"
      ]
    },
    {
      "source": "capterra.com",
      "label": "Capterra manual/export",
      "base_url": "",
      "records_count": 0,
      "source_language": "en",
      "market": "EN_GLOBAL",
      "source_type": "manual_official",
      "trust_tier": "medium",
      "priority": "P3",
      "include_prefixes": [],
      "exclude_prefixes": [
        "protected:manual_export_or_official_only"
      ],
      "is_equal_source": true,
      "parser_stage": "blocked",
      "source_state": "blocked",
      "raw_count": 0,
      "entities_count": 0,
      "first_fetched_at": null,
      "last_fetched_at": null,
      "last_content_at": null,
      "errors_count": 0,
      "types_count": 0,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 0,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 0,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "planned",
      "last_run_day": "",
      "last_run_new_count": 0,
      "last_run_errors": 0,
      "type_breakdown": [],
      "recent_url": "/recent?source=capterra.com",
      "raw_url": "/db/raw?source=capterra.com",
      "llm_suggestion": "Источник есть в плане, но в production raw ещё нет записей: нужен discovery/sample → dry-run → импорт.",
      "human_status": "planned",
      "quality_tags": [
        "planned"
      ]
    },
    {
      "source": "sigma.world",
      "label": "SiGMA manual/export",
      "base_url": "",
      "records_count": 0,
      "source_language": "en",
      "market": "EN_GLOBAL",
      "source_type": "manual_official",
      "trust_tier": "medium",
      "priority": "P3",
      "include_prefixes": [],
      "exclude_prefixes": [
        "protected:manual_export_or_official_only"
      ],
      "is_equal_source": true,
      "parser_stage": "blocked",
      "source_state": "blocked",
      "raw_count": 0,
      "entities_count": 0,
      "first_fetched_at": null,
      "last_fetched_at": null,
      "last_content_at": null,
      "errors_count": 0,
      "types_count": 0,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 0,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 0,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "planned",
      "last_run_day": "",
      "last_run_new_count": 0,
      "last_run_errors": 0,
      "type_breakdown": [],
      "recent_url": "/recent?source=sigma.world",
      "raw_url": "/db/raw?source=sigma.world",
      "llm_suggestion": "Источник есть в плане, но в production raw ещё нет записей: нужен discovery/sample → dry-run → импорт.",
      "human_status": "planned",
      "quality_tags": [
        "planned"
      ]
    },
    {
      "source": "askgamblers.com",
      "label": "AskGamblers manual",
      "base_url": "",
      "records_count": 0,
      "source_language": "en",
      "market": "EN_GLOBAL",
      "source_type": "manual_official",
      "trust_tier": "medium",
      "priority": "P3",
      "include_prefixes": [],
      "exclude_prefixes": [
        "protected:manual_or_official_only"
      ],
      "is_equal_source": true,
      "parser_stage": "blocked",
      "source_state": "blocked",
      "raw_count": 0,
      "entities_count": 0,
      "first_fetched_at": null,
      "last_fetched_at": null,
      "last_content_at": null,
      "errors_count": 0,
      "types_count": 0,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 0,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 0,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "planned",
      "last_run_day": "",
      "last_run_new_count": 0,
      "last_run_errors": 0,
      "type_breakdown": [],
      "recent_url": "/recent?source=askgamblers.com",
      "raw_url": "/db/raw?source=askgamblers.com",
      "llm_suggestion": "Источник есть в плане, но в production raw ещё нет записей: нужен discovery/sample → dry-run → импорт.",
      "human_status": "planned",
      "quality_tags": [
        "planned"
      ]
    },
    {
      "source": "cpa_club",
      "label": "CPA.Club",
      "base_url": "https://cpa.club",
      "records_count": 0,
      "imported_at": "2026-05-24T05:00:28.264648+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "attempted_empty",
      "source_state": "empty",
      "raw_count": 0,
      "entities_count": 0,
      "first_fetched_at": null,
      "last_fetched_at": null,
      "last_content_at": null,
      "errors_count": 0,
      "types_count": 0,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 0,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 0,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "empty",
      "last_run_day": "",
      "last_run_new_count": 0,
      "last_run_errors": 0,
      "type_breakdown": [],
      "recent_url": "/recent?source=cpa_club",
      "raw_url": "/db/raw?source=cpa_club",
      "llm_suggestion": "Парсер/импорт уже пробовали, но исходных записей нет: проверить blocker, sitemap/listing и сохранённые артефакты.",
      "human_status": "empty",
      "quality_tags": [
        "empty"
      ]
    },
    {
      "source": "cpa_rip",
      "label": "CPA.RIP",
      "base_url": "https://cpa.rip",
      "records_count": 0,
      "imported_at": "2026-05-24T05:00:31.905917+00:00",
      "source_language": "unknown",
      "market": "unknown",
      "source_type": "unknown",
      "trust_tier": "unknown",
      "priority": "",
      "include_prefixes": [],
      "exclude_prefixes": [],
      "is_equal_source": true,
      "parser_stage": "attempted_empty",
      "source_state": "empty",
      "raw_count": 0,
      "entities_count": 0,
      "first_fetched_at": null,
      "last_fetched_at": null,
      "last_content_at": null,
      "errors_count": 0,
      "types_count": 0,
      "records_today": 0,
      "records_7d": 0,
      "with_site": 0,
      "with_email": 0,
      "with_telegram": 0,
      "ready_estimate": 0,
      "site_no_contact": 0,
      "contact_no_site": 0,
      "raw_only_estimate": 0,
      "state": "empty",
      "last_run_day": "",
      "last_run_new_count": 0,
      "last_run_errors": 0,
      "type_breakdown": [],
      "recent_url": "/recent?source=cpa_rip",
      "raw_url": "/db/raw?source=cpa_rip",
      "llm_suggestion": "Парсер/импорт уже пробовали, но исходных записей нет: проверить blocker, sitemap/listing и сохранённые артефакты.",
      "human_status": "empty",
      "quality_tags": [
        "empty"
      ]
    }
  ],
  "all_sources_count": 66,
  "active": {
    "source": "affcatalog",
    "label": "AFFCatalog",
    "base_url": "https://affcatalog.com",
    "records_count": 7521,
    "imported_at": "2026-05-27T07:32:33.188195+00:00",
    "source_language": "ru",
    "market": "RU_CIS",
    "source_type": "affcatalog",
    "trust_tier": "high",
    "priority": "P1",
    "include_prefixes": [],
    "exclude_prefixes": [],
    "is_equal_source": true,
    "parser_stage": "imported",
    "source_state": "imported",
    "raw_count": 7521,
    "entities_count": 2980,
    "first_fetched_at": "2026-05-07T03:37:01+07:00",
    "last_fetched_at": "2026-05-27T06:32:09+00:00",
    "last_content_at": "2026-05-27T06:32:09+00:00",
    "errors_count": 0,
    "types_count": 24,
    "records_today": 0,
    "records_7d": 7488,
    "with_site": 4522,
    "with_email": 4581,
    "with_telegram": 2618,
    "ready_estimate": 4522,
    "site_no_contact": 0,
    "contact_no_site": 2677,
    "raw_only_estimate": 322,
    "state": "ok",
    "last_run_day": "2026-05-27",
    "last_run_new_count": 7488,
    "last_run_errors": 0,
    "type_breakdown": [
      {
        "source": "affcatalog",
        "source_record_type": "person",
        "count": 2263
      },
      {
        "source": "affcatalog",
        "source_record_type": "brands",
        "count": 1554
      },
      {
        "source": "affcatalog",
        "source_record_type": "aff-program",
        "count": 1457
      },
      {
        "source": "affcatalog",
        "source_record_type": "events",
        "count": 664
      },
      {
        "source": "affcatalog",
        "source_record_type": "aff-network",
        "count": 349
      },
      {
        "source": "affcatalog",
        "source_record_type": "aff-team",
        "count": 277
      },
      {
        "source": "affcatalog",
        "source_record_type": "country",
        "count": 215
      },
      {
        "source": "affcatalog",
        "source_record_type": "hr-agencies",
        "count": 102
      }
    ],
    "recent_url": "/recent?source=affcatalog&since=2026-05-27",
    "raw_url": "/db/raw?source=affcatalog",
    "llm_suggestion": "OK: показываем diff новых записей; Nekocode полезен для классификации типа, контактов, дублей и source-noise.",
    "human_status": "imported",
    "quality_tags": [
      "imported"
    ]
  },
  "totals": {
    "sources_total": 66,
    "sources_active": 59,
    "new_last_runs_total": 42651,
    "sources_with_errors": 3,
    "filtered_total": 66
  },
  "counts_by_state": {
    "all": 66,
    "ok": 56,
    "errors": 3,
    "empty": 2,
    "planned": 5,
    "unknown": 0
  },
  "status_buckets": [
    {
      "key": "imported",
      "label": "Импортировано",
      "count": 56
    },
    {
      "key": "planned",
      "label": "Запланировано",
      "count": 5
    },
    {
      "key": "blocked",
      "label": "Блокер/ошибка",
      "count": 3
    },
    {
      "key": "empty",
      "label": "Пусто",
      "count": 2
    }
  ],
  "filters": {
    "q": "",
    "state": "all",
    "sort": "last"
  }
}