Building Trade-Vocabulary Search for B2B Timber: Timber Link Engineering Teardown
How we built a B2B marketplace where contractors search by timber species, grade, and ISI certification — with trade-credit checkout and same-day Pune delivery
Pune's timber market is fragmented across dozens of dealers operating offline with no price transparency. Contractors waste hours travelling Tilak Road comparing stock. Timber Link aggregates these dealers into a single searchable marketplace — but the engineering challenge was that B2B procurement search has nothing to do with consumer e-commerce search.
This is the engineering teardown of Timber Link — why Postgres tsvector with industry vocabulary outperformed generic Algolia, the trade-credit checkout that captures GSTIN and auto-generates proforma invoices, and how we hit same-day delivery SLAs.
The Problem
A B2B timber buyer's search is fundamentally different from a consumer Amazon search:
- Vocabulary is industry-specific. "Sal", "Teak", "Burma teak", "marine plywood", "BWP grade" — none of which Amazon's search understands
- Specs matter more than visuals. Buyers compare on thickness (12mm, 18mm, 25mm), grade (commercial, residential, marine), brand (Century, Greenply, Mayur), and ISI certification
- Pricing is conditional. Per-cubic-foot, per-sheet, per-piece. Bulk discounts. Net-30 trade credit changes everything
- Same-day delivery is table stakes. Construction sites need timber today, not tomorrow
Generic e-commerce platforms (WooCommerce, Shopify) have none of this. Generic search (Algolia) doesn't know that "BWP" means "Boiling Water Proof" and is a relevant filter.
The Architecture
A Next.js marketplace with Supabase data layer:
- Next.js + TypeScript frontend — Search UX optimised for procurement workflow
- Supabase Postgres + pgvector — Catalog data with full-text + vector search hybrid
- Postgres tsvector — Trade-vocabulary full-text search
- Razorpay + custom net-30 flow — Standard payments + B2B trade credit
- Shiprocket API — Real-time delivery estimates and label generation for same-day fulfilment
- Cloudflare — Edge caching for catalog browsing performance
Key Technical Decisions
Postgres tsvector with Custom Trade Dictionary
Off-the-shelf full-text search doesn't know timber. Postgres's tsvector lets us define a custom dictionary mapping trade synonyms:
- "BWP" ↔ "Boiling Water Proof"
- "MR" ↔ "Moisture Resistant"
- "ISI" ↔ "ISI 303" ↔ "ISI 710"
- "Teak" ↔ "Burmese teak" ↔ "Indonesian teak" ↔ "Indian teak"
We seeded the dictionary with 400+ trade synonyms collected from interviews with three Pune timber dealers. The search index expands queries against this dictionary, so a contractor typing "BWP plywood" finds products tagged as "Boiling Water Proof" too.
We considered Algolia but the per-record cost at full-catalog scale (10K+ SKUs across multiple dealers) was meaningfully higher than the engineering investment to do it in Postgres. Postgres gave us enough quality and full control over the dictionary.
For the broader build-vs-buy reasoning that informed the decision, Custom Software vs Off-the-Shelf.
Trade-Credit Checkout with Auto-Proforma
B2B timber buyers don't pay upfront. They expect net-30 terms. The checkout flow had to handle this without burdening any human in the loop.
We built a dual-track checkout:
- Standard payment: contractor pays via Razorpay; order confirms immediately
- Trade-credit payment: contractor enters GSTIN, business name, PAN; system runs basic validation (GSTIN format check, GST API verification of legitimacy); order confirms with auto-generated proforma invoice; payment expected within 30 days
The proforma invoice is a server-rendered PDF generated from a structured order template, signed digitally with the dealer's signature, and emailed to the contractor within seconds of order placement. The dealer's accounting team gets the same proforma plus a payment-due-by-date entry in their queue.
For the dealer side, we built a simple dashboard showing pending vs settled trade-credit orders with payment-due-date sorting. No external accounting system integration needed at v1; CSV export for dealers who use Tally or Zoho Books.
Same-Day Delivery with Real-Time Carrier Availability
Same-day delivery within Pune and PCMC was a competitive differentiator. The naive approach: promise same-day on every order, then deal with capacity issues at fulfilment time. The real approach: query Shiprocket's real-time API at checkout to confirm courier capacity for the buyer's pincode in the next 4 hours, only THEN show "same-day delivery available" on the checkout page.
This added ~200ms to checkout but eliminated promises we couldn't keep. The order completion rate stayed high because buyers got accurate information at the moment of decision.
Tech-Spec-First Product Pages
In B2C e-commerce, the price is the primary call-to-action. In B2B procurement, the spec is. A contractor evaluating two timber sheets needs to compare thickness, grade, certification, brand, dimensions before they care about price.
We restructured the product page to surface specs prominently:
- Top of page: title + spec chips (Material, Thickness, Grade, ISI, Brand, Dimensions)
- Middle: full spec table
- Below: price, quantity selector, delivery estimate
- Bottom: similar products by spec match
Contractors found the right product faster. Bounce rate on product pages dropped meaningfully vs the v1 layout.
Why This Matters for B2B Builders
Timber Link demonstrates that B2B vertical commerce is a different design discipline from B2C. The patterns that win:
- Domain-specific search vocabulary, not generic full-text
- Trade-credit checkout, not consumer payment flows
- Spec-first product pages, not photo-and-price layouts
- Real-time delivery validation, not promise-then-fulfil
- CSV exports, not vendor-specific accounting integrations (because every B2B buyer uses different systems)
For the broader build-vs-buy framework on B2B verticals, see Custom Software vs Off-the-Shelf and Build vs Buy CRM ROI. For other vertical-specific marketplaces in our portfolio, the broader case studies page.
What We'd Do Differently
- Build the dealer onboarding self-serve from day one. We initially onboarded dealers manually; this didn't scale past ~15.
- Add bulk-quote workflow for contractors ordering 10+ SKUs at once. Common in commercial construction; we shipped it as a v1.5.
- Integrate Tally export earlier. Most Pune dealers use Tally; native CSV in Tally's import format would have eased dealer onboarding.
Where Nexolve Fits
We build B2B vertical commerce platforms via our SaaS & Web Apps service. For the full project context, see the Timber Link case study.
Working on something similar?
Nexolve scopes, designs, and ships production software for startups and growing businesses. Tell us what you're building — we come back with a scoped plan within 48 hours.
Related reading
Custom Software vs Off-the-Shelf: When to Build, When to Buy
A practical decision framework for founders and business leaders evaluating their software options
Build vs Buy a CRM: The Real 5-Year ROI Math
A concrete cost comparison across 10, 50, and 200 user scenarios — with INR figures and the breakeven points most articles refuse to publish
Salesforce vs Custom CRM: An Honest Cost Comparison Over 5 Years
From an agency that builds custom CRMs — the unvarnished math, hidden costs, and the scenarios where Salesforce genuinely wins