Портфолио и кейсы фрилансеров по интеграции сервисов по API

Анвар Нигъматянов
Анвар Нигъматянов 1 месяц назад
Сканы счетов в таблицу: реквизиты, суммы, проверка ИНН и НДС
Пример из практики. Экраны пересобраны заново, данные на них заменены — рабочие проекты закрыты NDA. Для кого. Для тех, кто вбивает в таблицу счета и акты руками — с фотографий, присланных в мессенджер, и со сканов разного качества. Что на макете. Слева скан счёта, справа готовая строка таблицы с полями: номер, дата, ИНН, количество, сумма, НДС. На что смотреть. Главное здесь не точность распознавания, а честность. Сумма и НДС пересчитываются между собой, ИНН проверяется по контрольной цифре. То, что распозналось плохо, помечается на ручную проверку, а не подставляется наугад. Распознавание всегда ошибается на плохих сканах. Разница между рабочим инструментом и игрушкой в том, признаёт ли он свою ошибку или молча пишет неверную сумму в отчёт. Стек: Python, OCR, проверки по контрольным суммам и форматам. Выгрузка в Excel или напрямую в учётную систему.
Анвар Нигъматянов
Анвар Нигъматянов 1 месяц назад
Сверка двух выгрузок: 4 200 строк, расхождения списком
Пример из практики. Экраны пересобраны заново, данные на них заменены — рабочие проекты закрыты NDA. Для кого. Для тех, кто сводит вручную два файла из разных систем: выгрузку из учёта и отчёт поставщика, план и факт, остатки на двух складах. Что на макете. Слева два файла с одинаковыми на вид строками, справа таблица расхождений с причиной по каждой позиции. На что смотреть. Скрипт ловит три разных случая, а не один. Расхождение в числах: у позиции сходится количество, но не сумма. Односторонний пропуск: строка есть только в одном файле. Дубль: позиция встречается дважды и портит итог. Почему это не ВПР. Формула находит только отсутствующие строки и молчит про остальное, а в ответ отдаёт «#Н/Д». Здесь по каждой строке написано словами, что именно не так — с этим уже можно идти к поставщику. Стек: Python, pandas, openpyxl. Работает на файлах до ста тысяч строк, исходные файлы не изменяются.
Анвар Нигъматянов
Анвар Нигъматянов 1 месяц назад
ИИ-агент разбирает заявку из почты в поля таблицы
Пример из практики. Экраны пересобраны заново, данные на них заменены — рабочие проекты закрыты NDA. Для кого. Для тех, к кому заявки приходят свободным текстом: письмом, сообщением, файлом. Каждое написано по-своему, и обычный скрипт с таким не справляется. Что на макете. Слева письмо клиента, справа поля, которые агент из него достал: услуга, объём, город, срок. Ниже — журнал действий. На что смотреть. Телефона в письме нет — и агент не придумывает его, а ставит пометку «не указан» и передаёт задачу менеджеру. Каждое поле со ссылкой на источник — видно, откуда взято значение. Это главное требование к таким агентам. Модель, которая догадывается о недостающих данных, вреднее ручного ввода: ошибку не видно, пока кто-то не позвонит по несуществующему номеру. Стек: Python, языковая модель через API или локально на сервере заказчика, Google Sheets или CRM, журнал в базе.
Анвар Нигъматянов
Анвар Нигъматянов 1 месяц назад
Сценарий в n8n: заявка с сайта попадает в таблицу и в чат
Пример из практики. Экраны пересобраны заново, данные на них заменены — рабочие проекты закрыты NDA. Для кого. Для компаний, где заявку с сайта человек руками переносит в таблицу, а потом отдельно пишет ответственному. Что на макете. Сценарий из четырёх шагов: форма сайта, проверка на дубль и корректный телефон, строка в таблице, уведомление в Telegram. Ниже — журнал запусков за сутки. На что смотреть. Главное здесь не схема, а журнал. Видно, что заявка №1043 не потерялась при сбое мессенджера: отправка повторилась через 30 секунд и прошла, а повторный запуск не создал вторую строку в таблице. Именно эти две вещи в связках ломаются чаще всего: тихая потеря заявки и дубли после перезапуска. Поэтому журнал и защита от повторов закладываются сразу, а не после первой пропавшей заявки. Стек: n8n, официальные API сервисов, Google Sheets, Telegram Bot API. Разворачиваю на сервере заказчика в Docker.
Анвар Нигъматянов
Анвар Нигъматянов 1 месяц назад
Сайт площадки для мероприятий с приёмом заявок
Пример из практики. Экраны пересобраны заново, данные на них заменены — рабочие проекты закрыты NDA. Зачем такое нужно: у площадки заявки падают в личку, мессенджер и на почту сразу, даты держат в голове или в блокноте, и раз в месяц два мероприятия ставят на один вечер. Что здесь сделано: — форма заявки с выбором формата и даты, без свободного текста там, где можно ошибиться; — занятые даты не предлагаются вообще — двойной брони просто не возникает; — каждая заявка ложится строкой в таблицу и дублируется уведомлением в Telegram; — клиент сразу получает подтверждение с тем, что он выбрал; — повторная отправка и потеря связи не создают дублей. Стек: Python и FastAPI, PostgreSQL, Telegram Bot API, запись в Google Таблицы. Тот же механизм ставлю на любой приём заявок со слотами: запись на услугу, аренда, выезд специалиста.
Анвар Нигъматянов
Анвар Нигъматянов 1 месяц назад
Личный кабинет с уроками, тестом и прогрессом
Пример из практики. Экраны пересобраны заново, данные на них заменены — рабочие проекты закрыты NDA. Зачем такое нужно: внутреннее обучение часто живёт в папке с видео и таблице «кто смотрел», которую ведут руками. Проверить, дошёл ли человек до конца и что усвоил, практически невозможно. Что здесь сделано: — уроки с видео и материалами, прогресс отмечается автоматически; — тест с проверкой ответов и повторной попыткой; — сводка по группе: кто на каком шаге застрял и где чаще всего ошибаются; — роли: участник видит свой курс, куратор — всю группу; — выгрузка результатов в Excel для отчётности. Стек: Python и FastAPI, PostgreSQL, веб-интерфейс без тяжёлого фронтенд-фреймворка, авторизация по ссылке-приглашению. Тот же каркас годится под любой внутренний сервис с ролями и учётом: регламенты, допуски, инструктажи.
Анвар Нигъматянов
Анвар Нигъматянов 1 месяц назад
Дашборд по проектам с выгрузкой отчётов
Пример из практики. Экраны пересобраны заново, данные на них заменены — рабочие проекты закрыты NDA. Задача, которую закрывает такой дашборд: расходы и заявки лежат в разных кабинетах, раз в месяц их сводят руками в таблицу, а клиент всё равно звонит и спрашивает, сколько стоила заявка. Что здесь сделано: — выгрузки из трёх источников собираются в одну таблицу с общим справочником кампаний; — считаются расходы, число заявок и стоимость заявки по каждому источнику и за период целиком; — виден статус синхронизации по каждому источнику отдельно — чтобы молчаливый сбой не выдавал заниженные цифры за правду; — отдельный кабинет клиента с ограниченным доступом: он видит только свой проект и скачивает отчёт сам. Стек: Python, requests и pandas для сбора и сведения, PostgreSQL, веб-интерфейс на FastAPI, выгрузка в Excel и PDF. Такой же контур собираю под другие источники — от 1С и CRM до маркетплейсов.
АХ
Отчёты рекламного кабинета в Google-таблицу
Таблица сама забирает статистику из рекламного кабинета: заказывает выгрузки, дожидается готовности и склеивает их в один лист. У кабинета есть потолок на число кампаний в одном отчёте — скрипт разбивает запрос на части и собирает результат обратно, поэтому данные не теряются на больших аккаунтах. Запускается по расписанию: утром в таблице уже свежие цифры, без ручных выгрузок и копирования.
АХ
Управление ставками рекламы по расписанию
Скрипт раз в сутки пересчитывает ставки по каждому товару: смотрит расход, заказы и позицию, поднимает там, где реклама окупается, и снижает там, где нет. Каждое решение пишется в журнал — видно, почему ставка изменилась именно так. Есть ручной режим и стоп-кран: если данные выглядят подозрительно, скрипт не трогает ставки и сообщает об этом, а не действует вслепую. Работает по расписанию на стороне заказчика, без сервера и без ручных запусков.
Андрей Финаев
Андрей Финаев 1 месяц назад
Telegram-бот для согласования переводов сотрудников
Разработал Telegram-бота для автоматизации процесса согласования переводов сотрудников через HR-отдел. Процесс начинается с Google Form: руководитель отправляет заявку на перевод, данные автоматически попадают в Google Sheets, а заявке присваивается статус «В работе». Бот уведомляет инициатора и определяет сценарий согласования. Для переводов между отделами добавлен отдельный этап согласования руководителем прямо в Telegram с кнопками «Согласовать» и «Отклонить». При отказе бот запрашивает причину и сохраняет её в таблицу. После предварительного согласования заявка передаётся HR-руководителю на финальную проверку. После изменения статуса бот автоматически уведомляет инициатора о результате — согласовании либо отказе с комментарием. Контакты руководителей используются из отдельного справочника. Стек: Telegram Bot, Google Forms, Google Sheets, Google Apps Script, автоматизация бизнес-процессов.