Saudi Arabia $40B AI Ecosystem

Saudi AI
Opportunity Hunter

Автономная система мониторинга AI-экосистемы Саудовской Аравии 24/7 — вакансии, новости и LinkedIn-активность ключевых лиц, с оценкой релевантности и доставкой в Telegram.

Тим Зинин · Мульти-агентный архитектор Работает на RUVDS Март 2026 LEAP 2026 → 13-16 апреля
115
Вакансий собрано · Первый запуск
90/100
Максимальный балл релевантности
$40B
Инвестиции Saudi AI к 2030
6
Активных asyncio-циклов
Архитектура системы

Как это работает

Один Docker-контейнер на RUVDS запускает 6 параллельных asyncio-циклов, оркеструя 4 внешних API с персистентностью на SQLite и без тяжёлых зависимостей.

RUVDS 88.218.248.114 — Docker-контейнер: saudi-hunter
asyncio.run(main()) — main.py
jobs_loop
Каждые 6ч · Firecrawl + Groq
news_loop
Каждые 12ч · +30мин сдвиг
digest_loop
Ежедневно 09:03 МСК
linkedin_loop
Воскресенье 08:37 МСК
callback_loop
Непрерывно · Long-poll TG
cleanup_loop
Понедельник 03:22 · SQLite GC
SQLite DB: /app/data/hunter.db · 6 таблиц · 9 индексов
Firecrawl API v1 — поиск + скрейпинг
Groq — Llama 3.3 70B · основной LLM
MiniMax M2.5 — резервный LLM
Telegram Bot API · алерты + колбэки
3
Зависимости (httpx, aiosqlite, python-dotenv)
9
Python-файлов, плоская структура
~1 550
Строк Python-кода
6
Таблиц SQLite · 9 индексов
Сбор данных

Пайплайн сбора

Три вектора сбора работают параллельно — вакансии, новости и LinkedIn-разведка — используя Firecrawl как универсальный скрейпинговый движок.

🔍

Поиск вакансий · 12 запросов

Firecrawl /search · каждые 6ч

  • "AI architect" OR "AI engineer" Saudi Arabia
  • "multi-agent" OR "agentic AI" Saudi Arabia
  • "AI consultant" OR "AI advisor" remote
  • HUMAIN jobs OR careers OR hiring
  • SDAIA careers OR hiring OR jobs
  • NEOM AI jobs OR technology
  • "AI consulting" OR "AI strategy" Gulf
  • site:linkedin.com/jobs "AI" Saudi Arabia
📰

Мониторинг новостей · 10 запросов

Firecrawl /search · каждые 12ч

  • HUMAIN AI Saudi Arabia
  • SDAIA Saudi artificial intelligence
  • NEOM technology AI hiring
  • Saudi Aramco AI MetaBRAIN
  • STV fund AI investment MENA
  • "Vision 2030" AI new project
  • Saudi Arabia AI consulting RFP
  • Saudi Arabia multi-agent agentic
Категории
opportunity hiring_signal partnership funding noise
👤

LinkedIn-разведка · Еженедельно

Firecrawl + Google · Воскресенье 08:37

Список наблюдения (3 персоны)
Tareq Amin
CEO, HUMAIN · критичный
Dr. Abdullah Alghamdi
President, SDAIA · критичный
Dr. Yaser Al-Onaizan
Deputy CEO, HUMAIN · высокий
5 запросов для поиска новых контактов
  • site:linkedin.com/in HUMAIN hiring OR joined
  • site:linkedin.com/in "looking for" AI consultant

Авторизация не нужна — только публичные данные

LinkedIn-разведка работает исключительно через поиск Google + Firecrawl, устраняя риск блокировки аккаунта. Bayt.com и GulfTalent скрейпятся через встроенную схему JSON-извлечения Firecrawl. Никакой браузерной автоматизации, никакого управления сессиями.

LLM-скоринг

Движок скоринга

Оценка релевантности на базе Groq с профилем Тима, вшитым в каждый промпт. 5 стратегий извлечения JSON гарантируют почти нулевой процент ошибок парсинга.

Groq — Llama 3.3 70B

Основной скорер
100K токенов/день бесплатно
~16K токенов/день использую (запас 6x)

OpenAI-compatible API · temperature 0.3

MiniMax M2.5

Резервный LLM
$20/мес фиксированно
Активируется после 5 сбоев Groq

Счётчик cooldown сбрасывается автоматически
90-100

Идеальное совпадение

Мульти-агентные системы · AI-архитектура · консалтинг · senior/director · удалёнка

70-89

Сильное совпадение → Мгновенный алерт в TG

Лид AI/ML-инженерии · AI-стратегия · роли в HUMAIN/SDAIA/NEOM

50-69

Умеренное совпадение → Ежедневный дайджест

Общая AI/ML-роль · интересная компания · стоит мониторить

30-49

Слабое совпадение → Пропускается

Косвенно связанная · неподходящий уровень

0-29

Не подходит → Отбрасывается

Не та область · junior-позиция · чистый ресёрч · требуется PhD

ИЗВЛЕЧЕНИЕ JSON — 5 СТРАТЕГИЙ (по порядку)

1

Удаление markdown-блоков ```json ... ```

2

Прямой json.loads() из текста ответа

3

Regex по ключам: "score", "category"

4

Жадный поиск {[\s\S]*} в любом месте

5

Исправление trailing commas + одинарные→двойные кавычки

👤

Профиль Тима — вшит в каждый скоринговый промпт

Имя: Тим Зинин · Мульти-агентный архитектор · База: Каш, Турция (3.5ч до Эр-Рияда) · Ставка: $250/ч · Языки: русский (родной), английский (свободно) · Основное: продакшн мульти-агентные AI-системы (7+ агентов), AI-автоматизация контента, Web3+AI, консалтинг, SaaS. НЕ подходит: чистый ML-ресёрч, junior-позиции, требуется PhD, только data engineering.

Данные в реальном времени · 9 марта 2026

Результаты первого запуска

Система запущена на RUVDS и собрала 115 вакансий за первый цикл. 20 оценено немедленно (лимит батча Groq), из них 12 прошли порог для мгновенных алертов в Telegram.

Распределение оценок (первый батч · 20 оценено)

90-100
1
1
70-89
12
12
50-69
4
4
<50
4
4
Ожидает
95
95
90/100
AI Transformation Consulting · Эр-Рияд
Максимальный балл · Первый запуск · Источник: поиск
5
Алертов в TG доставлено
Groq API работает
Контейнер запущен
Следующий цикл сбора

Известные проблемы и статус

  • Таймаут скрейпинга Bayt.com — сработала anti-bot защита. Ротация прокси Firecrawl может помочь. Резерв: режим только поиска активен. Статус: открыто
  • Завышенный скоринг страниц агрегаторов — заголовки типа "242 Machine Learning jobs" получают 70+ из-за плотности ключевых слов. Нужна фильтрация по паттерну заголовка. Статус: мониторинг
  • Отсутствует API-ключ MiniMax — Groq даёт запас 6x (16K/100K токенов/день), резерв пока не критичен. Статус: бэклог
  • Оригинальный ключ Groq на RUVDS недействителен — решено: используется ключ от Contabo tg-autoresponder. Статус: исправлено
Интерфейс Telegram

Система уведомлений

Четыре типа сообщений доставляются через long-polling. Inline-клавиатуры передают данные обратно в SQLite через callback_loop. Максимум 5 мгновенных алертов за цикл предотвращает усталость от уведомлений.

Мгновенный алерт · fit_score ≥ 70
ВЫСОКОРЕЛЕВАНТНАЯ ВАКАНСИЯ (Оценка: 85/100) AI Solutions Architect Компания: HUMAIN Локация: Эр-Рияд (гибрид) Зарплата: $120 000 — $154 000 Ищем AI-архитектора для проектирования мульти-агентных систем оркестрации для государственных сервисов... Открыть вакансию ↗
Ежедневный дайджест · 09:03 МСК
Saudi AI Hunter — Ежедневный дайджест 9 мар 2026 ВАКАНСИИ (найдено 12, релевантных 3): ★ AI Solutions Architect — HUMAIN (85/100) · Senior ML Engineer — Aramco (62/100) · AI Product Manager — NEOM (71/100) НОВОСТИ (5 материалов): [!] HUMAIN объявляет о расширении AI-облака на $2B [H] SDAIA открывает новый центр AI-исследований [i] Достигнут AI-рубеж Vision 2030 Итого: 12 вакансий · 3 релевантных · 5 новостей · 2 контакта
Еженедельная LinkedIn-разведка · Воскресенье 08:37
LinkedIn Intelligence Неделя с 9 мар 2026 Tareq Amin (CEO, HUMAIN): Опубликовал о достижении HUMAIN ONE 200 агентов Предложенный комментарий: «Впечатляющий рубеж — наши продакшн- системы используют схожие паттерны оркестрации...» Найдено новых контактов (3): · Ahmed Al-Rashid @ STC → Только что назначен Head of AI · Dr. Fatima Al-Saud @ SDAIA → Senior AI Research Director
Алерт об ошибке · 3 последовательных сбоя
Saudi Hunter — Алерт Коллектор jobs упал 3 раза подряд. Последняя ошибка: Firecrawl API вернул 429 Требуется действие: проверить логи через: docker logs saudi-hunter --tail 50
Формат колбэка: interested:job:a1b2c3d4
Long-polling: getUpdates?timeout=30
Rate limit: макс. 5 алертов / цикл
Следующий этап — Outreach

Пайплайн аутрича

Фаза 1 обнаруживает. Фаза 2 конвертирует. Когда Тим нажимает «Интересно», система обогащает вакансию, генерирует персонализированный питч, направляет в правильный канал и отслеживает каждый ответ.

Проблема: Фаза 1 заканчивается тупиком

Firecrawl Скоринг TG Алерт Тим нажимает «Интересно» ??? Тупик

Оценённые вакансии лежат в SQLite со статусом=interested, но ничего не происходит. Нет питча, нет отклика, нет трекинга. Фаза 2 замыкает цикл.

Полный пайплайн — 14 шагов
01
Обнаружение
Фаза 1 ✓
02
Скоринг
Groq LLM ✓
03
Алерт
TG Inline ✓
04
Обогащение
Скрейп + Email
↓                                                  ↓
05
Черновик питча
Groq → JSON
06
Маршрутизация
Email / LinkedIn
07
Согласование
Превью в TG
08
Отправка
Gmail MCP
↓                                                  ↓
09
Метка
Gmail Filter
10
Календарь
+7д напоминание
11
Трекинг
Детект ответа
12
Follow-up
Авто +7 дней

Исследование рынка: инструменты автоматического отклика

Инструмент Тип Метод Объём Стоимость
AIHawk 29K звёзд OSS Selenium + LinkedIn Easy Apply 50/день (лимит LinkedIn) Бесплатно
LazyApply Коммерческий Chrome-расширение, мульти-борды 4 500/мес $99–299/мес
Sonara Коммерческий Фильтр по качеству (score >80%) ~20/день $99/мес
Expandi Коммерческий Облачный браузер, аутрич LinkedIn 80-100 коннектов/нед $99/мес
Unipile API REST API поверх сессии LinkedIn Программно €5/аккаунт/мес
🎯

Задача Тима отличается от инструментов массового отклика

Нужно 3-5 персонализированных питчей в неделю — не 50/день. Email рекрутерам и нанимающим менеджерам конвертирует лучше, чем заполнение форм. LinkedIn-запросы с персонализированными заметками работают лучше InMail на уровне senior. Качество > объём.

Сравнительная матрица LinkedIn MCP

MCP-сервер
Чтение профилей
Поиск людей
Отправка сообщений
Запрос коннекта
Риск
stickerdaniel/linkedin-mcp-server 1K stars
Средний
bhaktatejas922/unipile-linkedin-mcp
Низкий (платный API)
felipfr/linkedin-mcpserver
Средний
adhikasp/mcp-linkedin
Высокий (Voyager)

Логика маршрутизации — выбор канала

If contact_email found Email (прямой) Наибольшая конверсия
Elif hiring_manager on LinkedIn LinkedIn Connection Персональная заметка
Elif linkedin.com/jobs in URL LinkedIn Easy Apply Playwright (рискованно)
Elif application_url exists Заполнение веб-формы Playwright
Else default Общий Email careers@company.com

MCP-серверы — уже подключены

MCPДоступные инструментыПрименение в аутричеСтатус
mcp__claude_ai_Gmail create_draft, search_messages, read_message, list_labels Черновики сопроводительных писем, отправка, трекинг ответов Подключён
mcp__claude_ai_Google_Calendar create_event, list_events, find_free_time Планирование интервью, напоминания о follow-up Подключён
mcp__playwright navigate, fill_form, click, snapshot Заполнение форм на карьерных страницах Подключён
mcp__firecrawl scrape, search Извлечение деталей вакансий, поиск email рекрутеров Подключён
mcp__tg-communicator notify_user, ask_user Рабочий процесс согласования с Тимом Подключён
unipile-linkedin-mcp send_message, send_connection_request LinkedIn-аутрич Рекомендуется (€5/мес)
Роадмап

Варианты реализации

Три пути от нажатия «Интересно» до закрытой сделки. Вариант B — правильная отправная точка: полный email-пайплайн без сложностей LinkedIn.

A
Вариант A: Минимальный — Gmail Draft
2-3 дня на реализацию
  • Обогащение вакансии при нажатии «Интересно»
  • LLM генерирует персонализированный питч
  • Gmail-черновик создаётся автоматически
  • Тим вручную проверяет и отправляет
Нет трекинга · Нет follow-up · Нет автоотправки
C
Вариант C: Полный пайплайн — + LinkedIn
10-14 дней на реализацию
  • Всё из варианта B
  • LinkedIn-коннект через Unipile MCP
  • Исследование профиля LinkedIn (stickerdaniel)
  • Авто follow-up (без согласования)
  • Извлечение дат интервью → Календарь
  • Еженедельный отчёт по аутричу в TG
Unipile €5/мес · Риск бана LinkedIn · Больше обслуживания

Вариант B — план по неделям

Н1

Обогащение + Питч + Gmail Draft + Согласование в TG

Расширение callback-обработчика, добавление таблицы outreach в схему, интеграция Gmail MCP create_draft

Н2

Автоотправка + Метка + Фильтр + Детект ответов

Gmail send_message, create_label, create_filter, новый asyncio-цикл reply_checker (интервал 2ч)

Н3

Автоматизация Follow-up + События в Календаре

Ежедневный followup_sender в 10:00 МСК, создание событий в Google Calendar, LLM-извлечение дат интервью

Н4

(Опционально) Интеграция LinkedIn MCP

Добавить stickerdaniel + Unipile после того, как email-пайплайн докажет ценность. Мульти-канальный аутрич.

Техническая архитектура

Детальный разбор архитектуры

9 Python-файлов, плоская структура, минимальная площадь атаки. Каждое архитектурное решение обменивает полноту функций на операционную простоту.

saudi-hunter/ ├── main.py(278 строк)// точка входа, 6 задач, graceful shutdown ├── config.py(32 строки)// env vars → класс Config ├── llm.py(130 строк)// Groq + MiniMax + 5 JSON-стратегий ├── firecrawl.py(72 строки)// search() + scrape() через httpx ├── collectors.py(280 строк)// коллекторы вакансий, новостей, linkedin ├── scorer.py(170 строк)// 3 промпта + калибровка ├── notifier.py(230 строк)// TG-алерты, дайджесты, клавиатуры ├── db/ │ ├── __init__.py │ ├── schema.sql(82 строки)// 6 таблиц, 9 индексов │ └── store.py(280 строк)// все DB-операции + seed вотчлиста ├── requirements.txt// 3 зависимости ├── Dockerfile ├── docker-compose.yml └── data/// Docker volume, SQLite DB
КомпонентТехнологияПримечания
RuntimePython 3.12-slimDocker-контейнер
Планировщикasyncio.sleepНулевая зависимость от APScheduler
СкрейпингFirecrawl API v1search() + scrape()
LLM основнойGroq Llama 3.3 70BБесплатно 100K токен/день
LLM резервныйMiniMax M2.5$20/мес фиксированно
База данныхaiosqliteОдин файл, async
Уведомленияhttpx → TG Bot APIБез SDK
HTTP-клиентhttpx (async)Connection pooling
КонтейнерDocker Composerestart: unless-stopped

Деплой

# Обновить и пересобрать
ssh root@88.218.248.114 \
  'cd /opt/saudi-hunter && git pull && docker compose up -d --build'

# Проверить запуск
docker ps | grep saudi-hunter
docker logs saudi-hunter --tail 20

# Статистика БД
docker exec saudi-hunter python -c "
import sqlite3; db = sqlite3.connect('/app/data/hunter.db')
print('Jobs:', db.execute('SELECT COUNT(*) FROM jobs').fetchone()[0])
print('Scored:', db.execute('SELECT COUNT(*) FROM jobs WHERE fit_score > 0').fetchone()[0])
print('High-fit:', db.execute('SELECT COUNT(*) FROM jobs WHERE fit_score >= 70').fetchone()[0])"
<5%
CPU в среднем
<128MB
Использование RAM
<50MB
Диск (SQLite + образ)
~15MB/день
Сетевой трафик
Операции

Риски и метрики

Известные сценарии сбоев и их митигация. KPI для отслеживания эффективности пайплайна после запуска Фазы 2.

3-5
Откликов / неделя (цель Фазы 2)
>20%
Целевой процент ответов
>10%
Целевой процент интервью
<5д
Среднее время до ответа
<6ч
Скорость обнаружения возможности
5-15
Релевантных алертов / нед (оценка >60)
РискВероятностьМитигация
Истечение токена Gmail MCP Средний Авто-обновление OAuth, алерт при истечении через tg-communicator
Бан аккаунта LinkedIn Средний Платный API Unipile снижает риск. Объём <20 коннектов/неделю
Рекрутер воспринимает как спам Низкий Фильтрация по качеству (только score >70), персональные питчи, макс. 5/неделю
Rate limit Groq при генерации питча Низкий Резерв MiniMax, запас 6x в день, батч в нагрузочные часы
Follow-up отправлен после отказа Средний LLM классифицирует ответ как отказ до запуска follow-up
Rate limiting джоб-бордов Средний Jitter, интервалы 6-12ч, встроенная ротация прокси Firecrawl
SQLite-инъекция Низкий Параметризованные запросы везде в store.py
Безопасность контейнера Низкий Нет открытых портов. Только исходящий трафик. .env никогда не коммитится в git

Месячный бюджет API

APIОперацияЗапросов/месЛимитЗапас
Firecrawl search Запросы вакансий (12 × 4/день) 480/мес 5 000 10x
Firecrawl search Новостные запросы (10 × 2/день) 600/мес включено
Firecrawl scrape Страницы джоб-бордов 300/мес 100 000 333x
Groq токены Скоринг + анализ ~16K/день 100K/день 6x
Итого Firecrawl Все операции ~1 460/мес 5 000 3.4x