У новому туторіалі на каналі Tech With Tim демонструється повноцінний проєкт: AI‑асистент, який живе виключно в електронній пошті. Користувачі не відкривають чат‑ботів, не заходять у веб‑інтерфейси й не встановлюють застосунки — достатньо надіслати листа на спеціальну адресу, і система автоматично відповідає, вітає нових контактів, розсилає заплановані повідомлення та масові розсилки. Під капотом — Next.js і TypeScript, інтегровані з email‑провайдером, AI‑моделлю та базою даних.
![]()
Цей матеріал розбирає саме можливості такого асистента з точки зору користувача та загальну архітектуру, яка пов’язує пошту, штучний інтелект і веб‑додаток у єдину систему.
Email як єдиний інтерфейс: що вміє асистент
Ключова ідея проєкту — зробити електронну пошту повноцінним інтерфейсом до AI‑асистента. Немає окремого чату чи мобільного застосунку: користувач просто пише листа на виділену адресу, а все інше відбувається автоматично.
З погляду людини, яка вперше стикається з асистентом, сценарій виглядає максимально звично. Є вхідна адреса, надана сервісом Postmark, який у цьому проєкті відповідає за надсилання, отримання та обробку листів. Користувач відкриває свій поштовий клієнт, вводить цю адресу як одержувача й формулює запит — наприклад, просить пояснити «сенс життя та щастя». Після натискання «Надіслати» вся взаємодія переходить на бік системи.
Перший лист до асистента запускає одразу дві автоматичні дії. По‑перше, система надсилає вітальний лист. Це окремий автоматичний сценарій: новий контакт отримує повідомлення на кшталт «Дякуємо, що спробували Email Assistant. Відповідайте на цей лист у будь‑який час — ми раді допомогти». Цей текст можна змінювати, але сама логіка — автоматичне привітання нових користувачів — є базовою частиною проєкту.
По‑друге, паралельно запускається генерація відповіді на сам запит. Через кілька секунд у скриньці з’являється ще один лист — уже з відповіддю AI. Важливий нюанс: лист приходить «від» тієї ж адреси, яку налаштовано як відправника в Postmark, тобто з погляду користувача це виглядає як звичайне листування з сервісом або навіть із власною адресою, якщо її використано як відправника.
Після першого контакту подальша взаємодія не потребує жодних додаткових дій: достатньо відповідати на листи цього ж ланцюжка, і асистент продовжує діалог, генеруючи нові відповіді. Усе це відбувається без ручного втручання розробника чи оператора.
Окрім миттєвих відповідей, система підтримує ще кілька важливих сценаріїв. Вона вміє надсилати листи не лише «тут і зараз», а й у запланований час. Це відкриває можливості для нагадувань, регулярних дайджестів або будь‑яких інших сценаріїв, де потрібні відкладені або періодичні повідомлення. Також передбачено можливість розсилати широкомовні листи всім контактам, які коли‑небудь взаємодіяли з асистентом. З погляду користувача це виглядає як звичайна email‑розсилка, але керується вона з єдиного дашборду, пов’язаного з AI‑логікою.
Таким чином, асистент поєднує в собі кілька ролей: це і чат‑бот у форматі листування, і автоматичний сервіс вітальних повідомлень, і інструмент для запланованих розсилок, і платформа для масових кампаній по зібраній базі контактів.
Дашборд як центр керування: контакти, активність і розсилки
Хоча для кінцевого користувача інтерфейсом є лише електронна пошта, для власника або розробника проєкту ключовим елементом стає веб‑дашборд. Саме він перетворює набір окремих листів на керовану систему з історією, аналітикою та інструментами розсилок.
У дашборді відображається список усіх контактів, які коли‑небудь писали асистенту. Для кожного контакту фіксується час першого листа, що дозволяє відстежувати, коли людина вперше взаємодіяла з системою. Це важливо не лише для статистики, а й для логіки вітальних листів: саме на основі цієї інформації система визначає, чи потрібно надсилати welcome‑повідомлення.
Окремий блок дашборду присвячений активності. Тут зібрана повна історія повідомлень: хто, коли і що надсилав, а також які відповіді формував асистент. Це фактично журнал усіх діалогів, який дозволяє бачити, як AI взаємодіє з користувачами, чи коректно працює логіка відповідей і чи немає збоїв у ланцюжку «вхідний лист — AI‑відповідь — вихідний лист».
На основі цієї ж бази контактів дашборд надає можливість запускати широкомовні розсилки. Після того як асистент зібрав певну кількість адрес — людей, які вже писали йому листи, — власник сервісу може надіслати їм спільне повідомлення. Це може бути знижковий промокод, інформаційне оновлення, просте «привіт» або будь‑який інший контент. Важливо, що все це робиться з одного місця, без необхідності експортувати контакти в окремі сервіси розсилок.
Таким чином, дашборд виконує одразу кілька функцій: це панель моніторингу, інструмент керування контактами та платформа для email‑кампаній. У поєднанні з автоматичними відповідями та вітальними листами він перетворює простий AI‑бот у повноцінний сервіс взаємодії з аудиторією через пошту.
Архітектура: як поєднані email‑провайдер, AI‑модель і веб‑додаток
За всією цією, на перший погляд, простою взаємодією стоїть досить чітко структурована архітектура. Вона складається з трьох основних компонентів: email‑провайдера, AI‑моделі та веб‑додатка з базою даних. Кожен із них виконує свою роль, а разом вони утворюють стійку систему, здатну працювати без постійного нагляду.
Перший елемент — це Postmark, який відповідає за всю роботу з електронною поштою. Саме він надає вхідну адресу, на яку користувачі надсилають листи, і саме через нього відправляються всі відповіді, вітальні повідомлення, заплановані та широкомовні листи. Postmark у цьому проєкті використовується не лише як SMTP‑шлюз, а й як точка входу для вхідних повідомлень.
Щоб отримувати ці вхідні листи в застосунок, використовується механізм inbound message stream і вебхук у бекенді Next.js. Коли на виділену адресу надходить лист, Postmark пересилає його вміст на спеціальний HTTP‑endpoint у застосунку. Цей endpoint працює як вхідні двері системи: він приймає дані листа, зберігає їх у базі, визначає, чи це перший контакт, і, за потреби, запускає логіку вітального повідомлення.
Другий елемент — AI‑модель, підключена через Anthropic Claude API. Саме вона генерує зміст відповідей на листи. Після того як бекенд отримав вхідний лист через вебхук, він формує запит до Claude, передаючи текст повідомлення й контекст діалогу, якщо такий уже існує. У відповідь модель повертає згенерований текст, який потім надсилається користувачеві як звичайний email через Postmark. Таким чином, AI‑модель вбудована в ланцюжок обробки листів, але для користувача це виглядає як звичайне листування.
Третій елемент — веб‑додаток на Next.js і TypeScript із базою даних, який забезпечує збереження стану й роботу дашборду. Саме тут зберігаються контакти, історія повідомлень, інформація про те, чи було надіслано вітальний лист, а також логіка запуску запланованих та широкомовних розсилок. Next.js у цьому проєкті виступає як універсальний фреймворк: він одночасно обслуговує UI‑дашборд і бекенд‑endpoint’и для вебхуків та інтеграцій.
У результаті виходить система, де кожен компонент виконує свою чітку роль: Postmark приймає та надсилає листи, Anthropic Claude генерує зміст відповідей, а Next.js‑додаток із базою даних координує всі процеси, зберігає історію й надає інтерфейс керування. Саме поєднання цих трьох частин робить можливим сценарій, коли AI‑асистент повністю живе в електронній пошті, але при цьому має стійкий бекенд і зручний інструмент адміністрування.
Технічний фундамент: Next.js, TypeScript і база даних для «пам’яті» асистента
Щоб така система працювала не як одноразовий скрипт, а як повноцінний сервіс, їй потрібна «пам’ять» — місце, де зберігаються контакти, листи й службова інформація. У цьому проєкті цю роль виконує база даних SQLite, до якої звертається Next.js‑додаток, написаний на TypeScript.
Проєкт створюється через стандартний генератор Next.js із підтримкою TypeScript, ESLint та Tailwind CSS. Код організовано без окремої src‑директорії, із використанням App Router, що відповідає сучасному підходу до побудови Next.js‑застосунків. Це дає змогу поєднати серверні маршрути (наприклад, для вебхуків) і клієнтський інтерфейс дашборду в єдиній структурі.
Для роботи з базою даних використовується зв’язка better‑sqlite3 і Drizzle ORM. Перша бібліотека забезпечує високопродуктивний доступ до SQLite із Node.js, друга — надає типізований ORM‑шар, який дозволяє описувати схеми таблиць на TypeScript без написання сирого SQL. Такий підхід особливо доречний у невеликих, але функціонально насичених проєктах, де важлива швидка розробка й передбачувана структура даних.
У коді визначено дві ключові таблиці. Таблиця messages зберігає всі повідомлення, що проходять через систему. Для кожного запису фіксується ідентифікатор треду, роль (користувач або асистент), вміст повідомлення та час створення. Це дозволяє відновлювати повний контекст діалогу для кожного контакту й передавати його AI‑моделі, а також відображати історію в дашборді.
Таблиця contacts містить інформацію про кожен email‑контакт: адресу, за бажанням — відображуване ім’я, час створення та оновлення запису, а також поле welcome_sent_at. Саме це поле використовується для визначення, чи було вже надіслано вітальний лист конкретному користувачеві. Якщо контакт з’являється вперше й це поле порожнє, система може автоматично відправити welcome‑повідомлення й оновити запис у базі.
Щоб підтримувати схему бази даних у актуальному стані, використовується Drizzle Kit. У конфігураційному файлі drizzle.config.ts вказано шлях до файлу зі схемою (lib/db.ts) і до самого файлу бази даних (emails.db). Додатково в package.json налаштовано скрипти, які автоматично запускають оновлення схеми перед стартом дев‑сервера та перед збиранням застосунку. Команда для розробки спочатку виконує db:push через drizzle‑kit, а вже потім запускає next dev; аналогічно build‑скрипт спершу синхронізує схему, а потім виконує next build. Це знімає з розробника необхідність вручну стежити за міграціями під час активної розробки.
Окремий файл env використовується для зберігання конфіденційних налаштувань: токена сервера Postmark, ключа Anthropic API, адреси відправника та alias шаблону вітального листа в Postmark (у прикладі — «welcome»). Така структура дозволяє легко розгортати проєкт у різних середовищах, змінюючи лише значення змінних оточення, а не код.
У сукупності цей технічний фундамент забезпечує те, що AI‑асистент не просто відповідає на окремі листи, а працює як стійкий сервіс із історією, контактами, автоматичними сценаріями та дашбордом для керування.
Від автоматичних відповідей до розсилок: як архітектура підтримує сценарії використання
Коли розглядати систему не з точки зору окремих технологій, а як цілісний продукт, стає помітно, як архітектура безпосередньо підтримує ключові сценарії використання.
Автоматичні відповіді на листи реалізуються через зв’язку вебхука Postmark, бекенда Next.js і Anthropic Claude. Вхідний лист потрапляє в застосунок через inbound message stream, зберігається в таблиці messages, після чого бекенд формує запит до AI‑моделі. Отримана відповідь також записується в базу як повідомлення з роллю «assistant» і надсилається користувачеві через Postmark. Завдяки збереженню всієї історії система може підтримувати контекст діалогу, а дашборд — відображати повну картину спілкування.
Автоматичні вітальні листи спираються на таблицю contacts і поле welcome_sent_at. Коли вебхук отримує лист від нової адреси, бекенд створює запис контакту, перевіряє, чи було вже відправлено welcome‑повідомлення, і, якщо ні, запускає надсилання шаблонного листа через Postmark. Після цього поле welcome_sent_at оновлюється, щоб уникнути повторних привітань. Такий механізм дозволяє масштабувати систему на велику кількість користувачів без ризику дублювання вітальних повідомлень.
Заплановані або відкладені листи логічно вписуються в цю ж архітектуру. Хоча деталі реалізації планувальника виходять за межі цього огляду, ключовим є те, що всі необхідні дані — контакти, історія листів, службова інформація — уже зберігаються в базі, а надсилання листів централізовано здійснюється через Postmark. Це означає, що будь‑який механізм планування (від простого cron‑завдання до більш складного шедулера) може використовувати ту ж інфраструктуру для запуску відкладених розсилок.
Широкомовні листи, своєю чергою, спираються на дашборд і таблицю contacts. Оскільки всі, хто коли‑небудь писав асистенту, автоматично потрапляють у базу контактів, власник сервісу може в будь‑який момент сформувати повідомлення й надіслати його всім або вибраній частині цієї аудиторії. Надсилання знову ж таки проходить через Postmark, а результати можна відстежувати в дашборді через історію повідомлень.
У підсумку архітектура, побудована навколо тріади «email‑провайдер — AI‑модель — веб‑додаток із базою даних», не лише забезпечує базову функцію «написав листа — отримав відповідь», а й створює платформу для складніших сценаріїв: автоматичних вітальних кампаній, запланованих повідомлень, масових розсилок і детального моніторингу всієї взаємодії.
Висновок: AI‑асистент, який природно вбудовується в робочі процеси
Проєкт AI‑email‑асистента демонструє, як можна використати вже звичний канал комунікації — електронну пошту — як повноцінний інтерфейс до штучного інтелекту. Користувачам не потрібно освоювати нові інструменти: вони просто надсилають листи, отримують автоматичні вітання, відповіді від AI, а за потреби — й заплановані або масові повідомлення.
З технічного боку система спирається на поєднання Next.js і TypeScript, Postmark як email‑інфраструктури, Anthropic Claude як AI‑ядра та SQLite з Drizzle як сховища даних. Така архітектура дозволяє створити стійкий, розширюваний сервіс, який зберігає історію взаємодій, керує контактами й надає зручний дашборд для адміністрування.
У результаті виходить не просто демонстрація можливостей AI, а практичний приклад того, як інтегрувати штучний інтелект у вже існуючі робочі процеси через наймасовіший канал цифрової комунікації — електронну пошту.


