Client Sales CRM Platform (NDA)
Role Freelance Full-Stack Engineer / AI Integration
Period Mar — Jun 2026
Stack
React TypeScript Vite Tailwind CSS Supabase TanStack Query React Router Google Gemini OpenRouter n8n
Платформа продажного CRM — CRM на основі розмов з AI-звітністю та білінгом рішень preview

Платформа продажного CRM — CRM на основі розмов з AI-звітністю та білінгом рішень

Огляд

Модульна CRM-платформа для продажів, побудована навколо розмов, а не статичних записів. Розмовний робочий простір (chat-first, дворівнева система статусів) — у центрі; модулі AI-звітності, збагачення лідів та організаційної аналітики надбудовуються над ним, усе під контролем детермінованого, незмінного білінг-леджера для ШІ-дій.

Роль: Freelance full-stack інженер / AI-інтеграція Термін: 3 місяці Домен: Sales CRM / управління лідами SaaS

Долучився до переписування в процесі й став основним контриб’ютором за час контракту — 1 366 з 2 888 комітів репозиторію, охоплюючи фронтенд, бекенд та шар AI-інтеграції.


Рішення

Платформа організована в незалежно версіоновані модулі, що ділять одну модель даних:

  • Talk — розмовний CRM-простір з дворівневою системою статусів та кількома режимами AI-асистенції
  • See — AI-згенеровані візуальні звіти та моделювання фінансових ризиків (“живі звіти”, що оновлюються разом із даними)
  • Decide — відстеження впливу рішень і токен-based білінг-леджер для ШІ-дій
  • Identity — організаційна структура: ролі, позиції, обчислена командна аналітика
  • Tenancy — автентифікація, ізоляція даних, контроль доступу на основі привілеїв
  • Steam Sync — прийом лідів із зовнішньої телефонії/CRM-системи, включно з транскрипцією дзвінків та призначенням агентів
  • Lead Intelligence — автоматизоване збагачення та скоринг лідів через зовнішній шар workflow-автоматизації

Ключові технічні рішення

AI gateway з provider fallback замість хардкоджених викликів

Кожен ШІ-код-шлях проходить через єдину gateway-функцію, а не викликає SDK провайдера напряму. Системні промпти живуть у таблиці БД (5-хвилинний TTL-кеш), тож зміна промпту не потребує деплою. Gateway викликає основного провайдера й автоматично перемикається на резервного при rate-limiting чи помилках на боці провайдера — ШІ-залежні функції (аналіз, переклад, підсумовування, скоринг) продовжують працювати під час збою провайдера замість того, щоб зламати весь пайплайн.

Детермінований, незмінний білінг-леджер

ШІ-дії споживають токен-based валюту, і кожна подія споживання записується в append-only леджер — жодна дія ніколи не змінює й не перезаписує попередній запис. Стан білінгу завжди відновлюваний повторним прогоном леджера — це важливо і для аудиту, і для дебагінгу “чому цей акаунт показує такий баланс” через кілька днів після факту.

Фонова обробка через cron замість роботи в request-time

23 продакшн cron-джоби обробляють синхронізацію, моніторинг та email поза циклом запит/відповідь — синхронізація лідів, авто-синхронізація result-code, планове оновлення довідкових даних, чергова доставка email. Винесення цієї роботи з request-шляху тримає розмовний робочий простір швидким незалежно від обсягу фонової синхронізації.

Trunk-based деплой у двох середовищах

Staging і production деплояться з однієї гілки (trunk-based з середини контракту) замість підтримки довгоживучої staging-гілки, яка розходиться з тим, що реально в продакшні. Це прибрало клас багів, які проявляються лише тому, що staging і production тихо виконували різний код.


Результати

Метрика Значення
Розмір кодової бази ~123K рядків (фронтенд + edge functions)
Коміти (цей контракт) 1 366 з 2 888 загальних
Test-файли 201
Продакшн cron-джоби 23
Незалежно версіоновані модулі 7
AI-провайдери (gateway fallback) 2 (основний + резервний), плюс окремий стек збагачення/скорингу

Стек

Шар Технологія
Фронтенд React 19, TypeScript, Vite, Tailwind CSS
Стан / дані TanStack React Query v5, React Router v7
Бекенд Supabase (PostgreSQL, RLS, Edge Functions)
AI / LLM Google Gemini (основний), OpenRouter (резервний), окремі провайдери збагачення/скорингу
Автоматизація n8n (workflow збагачення лідів)
Інфраструктура VPS + Nginx + Let’s Encrypt, trunk-based деплой у staging + production