Launches
Sell to State
TrendingStructured government procurement data across 194 countries — tenders, suppliers and agencies. Browse the entity graph free; one subscription unlocks...
Structured government procurement data across 194 countries — tenders, suppliers and agencies. Browse the entity graph free; one subscription unlocks the full dataset, REST API, CLI and MCP. Search ⌘K ESC ↑↓ navigate ↵ open esc close (function(){const APP_URL = "https://app.selltostate.com"; (() => { const dlg = document.querySelector("[data-gsearch-dialog]"); const input = document.querySelector("[data-gsearch-input]"); const list = document.querySelector("[data-gsearch-results]"); const statusEl = document.querySelector("[data-gsearch-status]"); // NOTE: the dialog + its parts live in this component, so they are already // in the DOM when this inline script runs. The visible open triggers, by // contrast, live in the header (search pill + mobile icon) and the hero, // which are rendered AFTER this script in . So we must NOT snapshot // [data-gsearch-open] here — bind opening via event delegation on document // instead (see below), or only the in-component fallback trigger would work. if (!dlg || !input || !list) return; // ── category metadata: icon (inline SVG path markup) + display label ── // One entry per Typesense `kind`. Icons are stroked Mondrian line-art. const ICON = (paths) => ` ${paths} `; const CATEGORY = { // Buyer (government agency) — bank/institution columns. agency: { label: "Buyer", color: "text-mondrian-blue", icon: ICON(' ') }, // Tender (contract award) — document with lines. tender: { label: "Tender", color: "text-mondrian-red", icon: ICON(' ') }, // Supplier (winning company) — box/package. supplier: { label: "Supplier", color: "text-mondrian-black