Как я придумал программу, которая за 2 минуы отправляет 100 счетов клиентам. Вот как она работает и почему она бесплатная.

Всем привет. Меня зовут Игорь, я разработчик и немного бухгалтер небольшой IT-компании. Каждый месяц я тратил почти целый рабочий день на одну и ту же дурацкую задачу: вручную выгружать счета из 1С, создавать под каждый email и отправлять клиентам.
Однажды, после того как я по ошибке отправил счет на 300 тысяч рублей не тому заказчику (все обошлось, но впечатлений было много), я сел и написал скрипт, который автоматизировал этот процесс. Этот скрипт постепенно вырос в полноценную программу — AK Mini Office.
Расскажу, как она работает изнутри.
Боль, которую я автоматизировал
Представьте себе алгоритм действий, который я ненавидел:
Счет №1: Сохранить PDF -> Открыть почту -> Создать письмо -> Ввести email -> Вставить тему -> Прикрепить файл -> Отправить.
Счет №2: Сохранить PDF -> Открыть почту -> Создать письмо -> Ввести email -> Вставить тему -> Прикрепить файл -> Отправить.
...Счет №30: ...уже ненавижу всех и вся.
Миссия программы: разорвать этот порочный круг. Свести задачу к трем действиям:
Скинуть все PDF в одну папку.
Указать эту папку в программе.
Нажать кнопку «Выполнить».
выбрать подготовленные письма и нажать отправить.
Магия под капотом: как это технически устроено
Я не использовал нейросети или что-то сложное. Всё работает на простых, но надежных технологиях:
Парсинг PDF. Программа читает каждый PDF-файл в указанной папке. Она ищет внутри текст, вычленяет ИНН и название контрагента. Для этого используется библиотека Apache PDFBox — надежный и проверенный инструмент.
// Псевдокод для наглядности
PDFDocument pdf = load("schet_123.pdf");
String text = pdf.extractText();
String inn = findINN(text); // Ищем по шаблону "ИНН 7712345678"
String companyName = findCompanyName(text); // Ищем по контекстуРабота с базой данных. Дальше программа обращается к локальной SQLite базе (это просто файл database.db на вашем компьютере).
Если контрагент с таким ИНН уже есть — она берет его id и все связанные с ним контакты.
Если это новый контрагент — создает новую запись в таблице counterparties. В следующий раз программа его уже узнает.
Формирование письма. Для каждого найденного контакта с email программа создает черновик письма.
Тема и текст берутся из шаблона. Можно использовать плейсхолдеры для замены и подсталения значений {name} - имя из контакта, {mes-1} - предыдущий меcяц, {mes} - текущий месяц, {mes+1} - следующий месяц .
К письму прикрепляется именно тот PDF-файл, откуда были взяты данные и отчет о рааботе, если он требуется. Отчет о работе должен быть в формате документа Word.
Интеграция с почтой (финальный шаг). В интерфейсе программы формируются письма-черновики.
Вам остается только их проверить и отправить.
Почему я выложил это как standalone-программу, а не как скрипт?
Удобство. Я упаковал всё в .exe-установщик, который работает по принципу «скачал -> установил -> пользуешься».
Локальность. Все данные — ваши PDF, база контрагентов — хранятся только на вашем жестком диске. Никаких внешних серверов и синхронизаций.
Интерфейс. Кнопки и поля понятны даже не-технарям.
Почему это бесплатно?
Потому что я написал эту программу чтобы решить свою проблему, и решил, что она может помочь таким же как я — бухгалтерам, предпринимателям, фрилансерам. Мне не хочется брать деньги за решение, которое избавляет людей от боли, которую я сам ненавидел.
Я считаю, что такие простые и полезные инструменты должны быть доступны всем. Если программа сэкономит вам несколько часов в месяц — я уже буду считать, что цель достигнута.
Стек технологий для любопытных: Go (backend), SQLite (база данных), Apache PDFBox (парсинг PDF), Wails (для создания desktop-приложения).
Программа бесплатная, и такой останется. Скачать можно по ссылке на моем профиле в Boosty. Если у вас есть идеи для улучшения — пишите, с радостью посмотрю.
Если заинтересовало, пишите в личку, я направлю ссылку на программу или ищите ссылку на программу в моём профиле.
Информации об авторе
Этот пост написан блогером Трибуны. Вы тоже можете начать писать: сделать это можно .

Комментарии
2Игорь, добрый день! Во-первых, ссылка ведет на Клерк. Во-вторых, ссылки такие у нас не приветствуются. Можно дать ссылку на Ваш тг-канал. Можно вот тут почитать правила.
Ссылку удалил