Inspiration

Public procurement needs transparency, but showing every bid too early creates a different problem: suppliers expose pricing strategy, buyers can see leverage before decisions are due, and competition becomes less fair. We built Blind bid to prove that procurement can be auditable without making sensitive commercial information public at the wrong time.

What it does

Blind bid is a privacy-first sealed-bid tendering platform built for teams that need fairer sourcing. A tender creator publishes the scope, budget range, category, and reveal deadline. Suppliers submit a bid amount and proposal, but those values are sealed immediately.

Before the deadline, the creator can see only the bid count and lifecycle state; other bidders see no competitor information. After the deadline, the creator triggers the reveal, Blind bid validates the transition, and the platform deterministically selects the lowest valid bid. Each bidder sees one of four exact states: sealed, revealed, won, or lost.

The public explorer remains usable without sign-in, but it exposes only safe tender metadata: scope, category, budget band, deadline, and bid count. It never exposes a pre-reveal bid amount or proposal.

How we built it

Blind bid uses a React and TypeScript frontend with Vite and Tailwind CSS, backed by Express, tRPC, Drizzle ORM, MySQL-compatible persistence, Zod validation, and OAuth-based authentication. Bid amounts and proposals are encrypted server-side with AES-256-GCM and bound to a SHA-256 commitment. This keeps raw bid content out of pre-reveal application responses.

For Midnight, we created a BlindBid.compact contract artifact that models tender commitments, creator authority, deadline-gated reveal, and deterministic winner selection. The product includes a dedicated Midnight integration screen with the Compact source viewer, a live contract-address registry, and step-by-step Preview and Pre prod deployment guidance. Midnight's model is well suited to this use case because it supports zero-knowledge proof execution while keeping sensitive application inputs confidential.[1]

Challenges we ran into

The central challenge was treating privacy as a product rule rather than a visual promise. We had to prevent bid amounts and proposals from appearing in public tender responses, creator dashboards, bidder lists, loading states, and empty states before reveal. We also had to make the reveal lifecycle easy to understand without weakening the authorization and deadline checks behind it.

Another challenge was making a technically serious privacy product approachable. We designed the interface around a clear sequence—commit privately, verify without leaking, reveal with confidence—rather than forcing users to understand cryptography before creating or bidding on a tender.

Accomplishments that we are proud of

We delivered a polished end-to-end tendering MVP with a public explorer, authenticated tender creation, sealed encrypted submissions, controlled reveal, creator and bidder workspaces, and a Midnight contract integration page. Our validation suite contains 15 passing tests covering encryption, commitment integrity, public-response redaction, tender creation, sealed submission, deadline gating, creator authorization, duplicate reveal prevention, no-bid handling, and deterministic selection.

Most importantly, Blind bid does not use fake marketplace content or fake contract details. The explorer has an intentional empty state until real tenders exist, and the contract registry shows an address only after an administrator records a genuine Preview or Pre prod deployment.

What we learned

We learned that confidential workflows need explicit boundaries at every layer: database shape, API response, role-aware interface, and smart-contract transition. We also learned that zero-knowledge technology becomes easier to trust when the user experience clearly explains what is public, what remains sealed, and exactly when information is allowed to appear.

What's next for Blind bid

Next, we will complete a funded Midnight Preview or Pre prod deployment, register the resulting contract address in Blind bid, and run a live two-account walkthrough of the creator-to-bidder lifecycle. We will then connect wallet-backed proof generation to the production workflow, add configurable evaluation rules beyond lowest bid, and introduce procurement-team collaboration controls.

Built With

Share this project:

Updates

Submission history