Tender Tracker: Local Public Procurement Monitoring Tool

Tender Tracker — Local Procurement Tracking and Classification Interface

An open-source, local-first desktop tool that collects, deduplicates, and classifies public procurement tenders across multiple sources.

Tender Tracker is an open-source desktop application designed to collect public tender announcements from multiple portals, filter out duplicate records, classify opportunities using rule-based criteria, and deliver updates via a local dashboard, email, or Telegram. Operating entirely on the user’s workstation without requiring external server infrastructure or recurring subscriptions, it eliminates manual searching workflows for technical sales, presales, and business development teams.


Project Overview

Property Value
Role Design, architecture, development
Status Open Source (Public PoC)
Scope Procurement data collection, filtering, and notification
Technologies Python 3.12, FastAPI, SQLite, SQLAlchemy, PyInstaller
License MIT
Distribution GitHub Release (Portable Windows EXE) + Source Code

Motivation and Background

Tracking public procurement notices across various state portals is traditionally a manual, repetitive chore. Every morning, sales and capture teams navigate multiple portals, filter out irrelevant listings, and manually log matching opportunities into tracking sheets. This workflow consumes valuable engineering hours and frequently results in missed deadlines.

Tender Tracker was created to automate this repetitive operational overhead within a private, local environment:

  • Centralize multiple tender portals into a unified pipeline,
  • Automatically drop generic categories such as catering or cleaning services,
  • Route relevant technical tenders to specific sector queues using keyword rules,
  • Notify users through a local browser dashboard, email digests, or Telegram alerts,
  • Keep all tender history and configuration data entirely on the user’s computer.

Architecture and Pipeline

The application functions through an isolated, deterministic pipeline without relying on hosted cloud backends. A core design decision is placing rule-based filters first, ensuring fast, transparent, and cost-free execution.

Procurement Sources(State Portals, Bulletins)Source Adapters(Normalization)Deduplication andGlobal ExclusionsSector Rule Filters(Deterministic)Local Storage(SQLite)Notification Channels(Web UI, Telegram, Email)

Processing Stages

  1. Ingestion: Dedicated adapters fetch listings from public endpoints and normalize them into a uniform schema.
  2. Deduplication: Listings published across multiple portals or recurring over multiple days are deduplicated.
  3. Exclusions: Global negative keywords weed out non-target industries immediately.
  4. Classification: Surviving announcements are mapped to defined sectors based on positive keyword heuristics. Optional language model filters can be enabled for secondary semantic evaluation.
  5. Storage and Alerting: Matched records are stored in a local SQLite database, displayed in the dashboard, and dispatched through configured notification channels.

Key Capabilities

Supported Sources

Tender Tracker ingests public records across four primary outlets:

  • EKAPv2: Initial scans and incremental synchronization of public tender notices.
  • DMO: Active procurement and catalog listings from the State Supply Office.
  • ilan.gov.tr: Paginated JSON querying of official public announcements.
  • Yatırımlar Dergisi: Structured parsing of sector investment and tender reports.

Note: The tool strictly consumes public announcements and does not bypass credentials, e-signatures, or closed sessions.

Local Management Dashboard and CLI

The application offers two distinct operating modes:

  • Local Web Interface: Powered by FastAPI, providing an intuitive local dashboard for managing listings, sector keywords, and notification rules.
  • Command-Line Interface (CLI): Features --once mode for one-shot scanning and --daemon mode for continuous background polling. This allows simple scheduling via Windows Task Scheduler at daily shift startup.

Portable, Serverless Deployment

Tender Tracker is built as a self-contained desktop tool rather than a managed SaaS platform:

  • Distributed as a portable Windows executable compiled with PyInstaller.
  • Local SQLite database stored as a single file, making backups as simple as copying a directory.
  • Direct outbound SMTP and Telegram API calls executed locally from the host machine.

Project Status and Availability

Tender Tracker is developed openly under the permissive MIT license. Source code, release binaries, and setup documentation are maintained on GitHub.


📋 Related Links

📂 GitHub Repository: github.com/muisik/tender-tracker
🔗 Related Architecture: ContextRail: Minimum Effective Project Memory
🛠️ Systems Governance: The Rule of Dancing with LLMs: Governing the System


Last updated: July 2026 | Version: 1.0