Documents
that search the market for you.

For the first time, project documentation is directly connected to the live market. BauAI pulls suppliers, prices, and companies straight into your schedules and specifications, filling positions with real data.

Data direction
Internet → your project
Latency
< 100 ms live search
Protocol
Semantic market injection
Coverage
Materials, works, regulations

Web RadarAuto demo

Search across construction and materials markets

Start exploring

Set filters above to discover live projects, tenders, materials, and services in the market.

Interactive demo: sample query — “office tower construction in Berlin”

The internet plugs into your project.

Traditionally, bills of quantities and specifications are static text. You write “concrete C30/37” and hope someone finds a supplier. BauAI reverses the direction of data flow.

Materials sourcing

Type “Interior doors” in your quantity schedule. Web Radar pulls specifications, drawings, and live prices from manufacturers and marketplaces directly into the document line.

Contractors

Need an HVAC contractor? The document looks through registries, aggregators, and portfolio sites, pulling verified contractor profiles straight into your tender invite list.

Codes & standards

Compliance checks move into the background. The system pulls current building codes, standards, and certification requirements, comparing your specs with live regulations in real time.

Programmatic data insertion

We do not just show search results. We insert structured data objects. When you accept Web Radar suggestions, SimpleDocumentEditor turns raw web data into a rigid construction schema.

HTML from the web
BauAI parser
Project JSON
market_ingestion.ts
async function injectMarketData(docId, query) {
  // 1. Search the live web
  const rawResults = await webRadar.search(query);

  // 2. Transform to Project Schema
  const structuredItem = {
    name: rawResults.title,
    price: rawResults.extracted_price,
    supplier_id: rawResults.domain,
    verified: true
  };

  // 3. Insert into Document State
  return editor.insertBlock(docId, structuredItem);
}