Where Every
Millisecond Counts
Where Every
Millisecond Counts
Lava, a joint venture of BelOrta, Coöperatie Hoogstraten and REO, needed new auction software when renewing the bench computers in their auction halls. Unlock'd provided development expertise to build the real-time bidding client.
Every morning from 6:00 to 10:00, buyers across multiple auction halls and remote locations bid on fresh produce. The client runs on integrated Windows computers at each buyer's bench and as a web application for remote bidders. It displays live descending-price clocks with auctioneer audio, where hundreds of buyers bid simultaneously.
Building auction software where the displayed price must exactly match reality requires solving rendering performance and bid accuracy across different hardware. A visual lag of even 100ms can result in a buyer bidding at the wrong price.
Using our six-step framework, we guided the development from initial validation through a load-tested platform serving three auction cooperatives. The client was built with Flutter, targeting Windows desktop and web from a single codebase.
1. IDENTIFY & VALIDATE
We visited auction halls at BelOrta, Coöperatie Hoogstraten and REO to observe the existing process and document the as-is situation. We then ran Event Storming sessions with stakeholders from all three cooperatives to map the complete auction domain - identifying actors, domain events, commands, and business rules. This produced a shared model of the entire bidding flow that informed all subsequent design and development decisions.
1. IDENTIFY & VALIDATE
We visited auction halls at BelOrta, Coöperatie Hoogstraten and REO to observe the existing process and document the as-is situation. We then ran Event Storming sessions with stakeholders from all three cooperatives to map the complete auction domain - identifying actors, domain events, commands, and business rules. This produced a shared model of the entire bidding flow that informed all subsequent design and development decisions.
2. IMPACT MAPPING
The Event Storming output identified over 25 domain events and multiple processes, from clock start through arbitrage to transaction registration. We mapped features to auction outcomes: smooth clock animation supports bidding confidence, live audio keeps buyers in sync with the auctioneer, and remote web access extends participation beyond the auction hall. Each feature was prioritised by its impact on auction integrity.
3. TECHNICAL AUDIT
We assessed Flutter's rendering capabilities for real-time clock animation. The audit identified that separating expensive operations (redrawing 100 price dots) from lightweight ones (animating the active price indicator) would allow smooth performance across all target hardware. This informed the architecture.
4. RAPID PROTOTYPING
The Event Storming sessions fed directly into story mapping and wireframe design. We built a standalone clock prototype to validate the rendering approach before integration. Testing across hardware tiers confirmed the approach delivered consistent performance. The prototype helped stakeholders evaluate the bidding experience directly.
5. DEVELOPMENT & LAUNCH
We developed the platform with live WebSocket connections to the auction server, real-time audio streaming, and a bid capture mechanism that records the exact price displayed at the moment a buyer clicks. The client launched on bench computers across three auction cooperatives.
6. ITERATE & OPTIMIZE
Post-launch, we built a load-testing tool that simulates 500 concurrent buyers through the complete auction flow. This validated platform capacity before peak season and identified performance characteristics under realistic load conditions.
Using our six-step framework, we went from Event Storming sessions with all three cooperatives to a load-tested auction platform. The domain model built during discovery informed every technical decision, from API design to the bid capture mechanism.
Facing a similar multi-stakeholder challenge?
Every morning from 6:00 to 10:00, buyers across auction halls in Roeselare, Sint-Katelijne-Waver, and Hoogstraten compete for fresh produce.
The auctioneer selects a product from the day's offering, announces it over audio, and starts the clock. The price begins high and descends. Buyers follow the clock on their bench screen or browser and click to bid when the price is right.
The first bid stops the clock for everyone. The winner's microphone opens for two-way audio with the auctioneer to discuss volumes, lot preferences, and transport. Transaction details appear on the buyer's screen in real time for verification. Once confirmed, the clock restarts for the remaining volume.
From the auctioneer's console to the buyer's screen, built for three cooperatives on shared infrastructure
The platform receives auction events from the administrative module via WebSocket and renders them on the buyer's screen. Each clock operates independently, and the bidding system ensures accurate price capture across all connected buyers.

Everything a Buyer Needs on Auction Day
The platform gives buyers across three cooperatives a consistent experience, whether they're sitting at a bench in the auction hall or bidding remotely from their office.
Buyers follow the descending price on a smooth clock that updates at 60 frames per second. The price indicator moves continuously, giving buyers the confidence to bid at exactly the right moment.
When a buyer clicks to bid, the platform guarantees that the submitted price matches what was on screen. Buyers see exactly what they're bidding on, even on slower bench hardware.
Buyers hear the auctioneer's live commentary through real-time audio streaming. After winning a bid, two-way audio opens so the buyer and auctioneer can communicate about volumes, lot preferences, and transport instructions.
Buyers can follow multiple clocks simultaneously across different product groups and auctioneers. Layout templates let buyers configure which clocks to display on their screen.
We wrote about the clock rendering architecture in detail. Read the insight post
- 0
- cooperatives served
- 0+
- domain events mapped
- 0
- concurrent buyers tested
- 0fps
- frames per second
Built with Flutter for consistent performance on Windows bench computers and web browsers, from a single codebase.
The desktop client runs on the integrated computers at each buyer's bench in the auction halls of BelOrta, Coöperatie Hoogstraten, and REO. The web client extends access to remote bidders. Platform-specific challenges included high-DPI scaling on bench screens, password manager integration on web, and a force-update mechanism to ensure all bench computers run the latest version during live auctions.
Need software for a complex multi-stakeholder operation?
We built Lava's auction platform from Event Storming to production, serving three cooperatives. Tell us about your challenge in a free 30-minute discovery call.


