{"id":200,"date":"2026-05-13T14:49:04","date_gmt":"2026-05-13T14:49:04","guid":{"rendered":"https:\/\/thesidequestlab.com\/project\/deals-bot\/"},"modified":"2026-05-13T14:58:46","modified_gmt":"2026-05-13T14:58:46","slug":"deals-bot","status":"publish","type":"post","link":"https:\/\/thesidequestlab.com\/old\/project\/deals-bot\/","title":{"rendered":"Deals Bot"},"content":{"rendered":"<figure class=\"project-body-hero\"><img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1556742049-0cfed4f6a45d?auto=format&#038;fit=crop&#038;w=1400&#038;q=80\" alt=\"Online shopping and deal tracking concept\" loading=\"lazy\"><\/figure>\n<div class=\"privacy-callout\"><strong data-lang-block=\"en\">Privacy note.<\/strong><strong data-lang-block=\"nl\">Privacy-notitie.<\/strong> <span data-lang-block=\"en\">This write-up explains the architecture and purpose without publishing credentials, private routes that should stay private, personal data, or operational secrets.<\/span><span data-lang-block=\"nl\">Deze beschrijving legt de architectuur en het doel uit zonder credentials, private routes, persoonlijke gegevens of operationele geheimen te publiceren.<\/span><\/div>\n<div class=\"project-facts\">\n<div class=\"project-fact\"><strong>Type<\/strong><span>Automation bot<\/span><\/div>\n<div class=\"project-fact\"><strong>Stack<\/strong><span>Docker, scheduled checks, chat alerts<\/span><\/div>\n<div class=\"project-fact\"><strong>Purpose<\/strong><span>Filter noisy opportunities<\/span><\/div>\n<\/div>\n<div class=\"project-deep\" data-lang-block=\"en\">\n<h2>What it is<\/h2>\n<p>Deals Bot is a small automation layer for deal tracking. It is useful because deal feeds are noisy; the bot can apply filters and only surface things that are likely to matter.<\/p>\n<h2>Workflow<\/h2>\n<div class=\"workflow-steps\">\n<div class=\"workflow-step\">Sources are checked on a schedule or trigger.<\/div>\n<div class=\"workflow-step\">Candidates are normalized into a comparable format.<\/div>\n<div class=\"workflow-step\">Rules filter by relevance, price, category or known noise patterns.<\/div>\n<div class=\"workflow-step\">Only worthwhile matches are sent to chat.<\/div>\n<\/div>\n<h2>Why it is intentionally narrow<\/h2>\n<p>The goal is not to scrape everything. The goal is to reduce repeated manual checking while avoiding a notification firehose.<\/p>\n<ul class=\"tech-tags\">\n<li>Scheduled checks<\/li>\n<li>Filtering<\/li>\n<li>Chat alerts<\/li>\n<li>Automation<\/li>\n<\/ul>\n<\/div>\n<div class=\"project-deep\" data-lang-block=\"nl\">\n<h2>Wat het is<\/h2>\n<p>Deals Bot is een kleine automatiseringslaag voor dealtracking. Het is nuttig omdat dealfeeds veel ruis bevatten; de bot kan filters toepassen en alleen dingen tonen die waarschijnlijk relevant zijn.<\/p>\n<h2>Workflow<\/h2>\n<div class=\"workflow-steps\">\n<div class=\"workflow-step\">Bronnen worden periodiek of via trigger gecontroleerd.<\/div>\n<div class=\"workflow-step\">Kandidaten worden genormaliseerd naar een vergelijkbaar formaat.<\/div>\n<div class=\"workflow-step\">Regels filteren op relevantie, prijs, categorie of bekende ruispatronen.<\/div>\n<div class=\"workflow-step\">Alleen bruikbare matches worden naar chat gestuurd.<\/div>\n<\/div>\n<h2>Waarom het bewust smal is<\/h2>\n<p>Het doel is niet om alles te scrapen. Het doel is herhaald handmatig checken verminderen zonder een notificatiekanon te bouwen.<\/p>\n<ul class=\"tech-tags\">\n<li>Scheduled checks<\/li>\n<li>Filtering<\/li>\n<li>Chat alerts<\/li>\n<li>Automatisering<\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>A filtered-alert bot that watches for useful deals without turning bargain hunting into noise.<\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-200","post","type-post","status-publish","format-standard","hentry","category-projects"],"_links":{"self":[{"href":"https:\/\/thesidequestlab.com\/old\/wp-json\/wp\/v2\/posts\/200","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thesidequestlab.com\/old\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thesidequestlab.com\/old\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/thesidequestlab.com\/old\/wp-json\/wp\/v2\/comments?post=200"}],"version-history":[{"count":1,"href":"https:\/\/thesidequestlab.com\/old\/wp-json\/wp\/v2\/posts\/200\/revisions"}],"predecessor-version":[{"id":208,"href":"https:\/\/thesidequestlab.com\/old\/wp-json\/wp\/v2\/posts\/200\/revisions\/208"}],"wp:attachment":[{"href":"https:\/\/thesidequestlab.com\/old\/wp-json\/wp\/v2\/media?parent=200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thesidequestlab.com\/old\/wp-json\/wp\/v2\/categories?post=200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thesidequestlab.com\/old\/wp-json\/wp\/v2\/tags?post=200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}