Hermes Promo Search turns scattered online promotions into structured, validated summaries that are easier to discover through Telegram.
Built as a personal project in Dart, the tool searches for food, drinks, snacks, and lifestyle deals across Indonesia. It combines AI-assisted extraction with search-provider integrations and automated checks to make the results more useful than a raw list of search links.
Making search results structured
Instead of relying on fixed search results alone, the application exposes search capabilities as a Genkit tool that Gemini can call while gathering information. The extracted promotions are validated against a defined schema, giving each result a more consistent structure.
Keeping results relevant
The pipeline removes expired promotions, filters unreachable source links, and deduplicates offers collected from multiple sources. It also prioritizes well-known merchants and groups multiple promotions from the same merchant to keep the weekly summary organized.
A hybrid deduplication approach combines normalized merchant-name matching with optional AI-assisted checks for less obvious duplicates. Caching helps avoid repeating work across runs and reduces unnecessary search and enrichment calls.
Adding a social signal
Beyond the promotion itself, the application checks social platforms including Instagram, TikTok, Facebook, YouTube, X, and Threads to provide a signal of how much a merchant is being discussed. Results are cached per merchant to avoid repeating these checks too frequently.
Designed for lightweight automation
The project supports two workflows: a scheduled weekly summary and an on-demand Telegram bot that can search by location or category. These run as separate processes, allowing manual requests without interfering with the scheduled job.
To accommodate a low-resource environment, the application can be compiled into native Dart executables for an ARM64-based Armbian device. The result is a practical exploration of combining search, structured AI extraction, validation, caching, and messaging in a lightweight automation workflow.