bundleaf
How it works Features Pricing FAQ
CPQ for engineers

From parts to proposal — assembled, versioned, sent.

bundleaf turns your parts catalog into reusable, nestable bundles — and those bundles into versioned quotes you can price per-deal without ever touching your catalog. The quote that used to take three days takes an afternoon.

  • English & Hungarian
  • Light & dark
  • Cancel any time
CNC Cell — Complete Sent · v3
Frame & Base Assembly€8,210.00
Linear Rail 1200mm ×4€1,312.40
Drive Package€14,990.00
Servo Drive 750W ×6€6,324.00
Control Cabinet, wired€5,440.00
Grand total€28,640.00
Aggregated products 6 × A7K212 × R1L43 × C2B848 × F6M1
How it works

Catalog bundles versioned quotes

Model the structure once. Every layer reuses the one below it.

01
A category tree branching into a grid of part cards, each with a product code and price

Build your catalog once

Categories, custom attributes, and as many supplier offers per part as you actually have — with supplier, SKU, source link, and purchase-date FX rate. Import from CSV to start.

02
Containers nested three levels deep, flattening into a list of leaf parts

Assemble bundles you can reuse

Put products into bundles. Put bundles into bundles. bundleaf flattens the whole tree into a live part-by-part roll-up, so you always know exactly what's in the box.

03
Three stacked quote versions with line items and a total row, the top one being sent

Send a versioned quote

Rename or re-price any line for that deal only, set your margin, then export a PDF or send a link your partner can accept or reject — no account needed.

Recursive bundles

Bundles inside bundles. Totals that keep up.

Add 2× Pump A directly, then drop in your Circulation Unit bundle that contains 5× Pump A and 3× Valve B. The roll-up reads 7 A, 3 B — instantly. Pull the Circulation Unit back out and its contribution is subtracted, leaving your 2 A exactly where you left them.

  • Nest as deep as your product actually is — a bundle can never contain itself
  • Live flattened roll-up to every individual leaf part
  • Summable attributes totalled across the whole assembly — kW, kg, metres
  • Tags, notes, and a separate public name for customer-facing documents
Circulation System — composition
Circulation Pump 1.5kWA7K2
Circulation UnitM4X9
Circulation Pump 1.5kWA7K2
DN50 Ball ValveB2R7
flattened to leaf products
Circulation Pump 1.5kWA7K2
DN50 Ball ValveB2R7
Σ power 10.5 kWΣ weight 84 kg
Versioned quotes

Every version is a real version.

v1 was rejected. v2 is out for review. v3 is a draft on your screen. Each version carries its own status, its own dates, and its own prices — and the diff shows exactly what changed between them.

  • Independent status per version: Draft → Sent → Accepted / Rejected
  • Version-to-version diff: added, removed, and re-priced lines
  • Prices snapshot when a line is added — a March quote still reads as March
  • PDF export, or a link your partner accepts or rejects without an account
v2 → v3 · what changed
v1Rejected
v2Sent
v3Draft
Vibration Damper Kit+ €480.00
Frequency Inverter 4kW€774 → €690
Spare Fuse Pack− €36.00
Pricing engine

Cost, buffer, margin — three numbers, never confused.

Buffer % covers what it really costs to get the part in the door, and cascades down your category tree. Margin % is your profit, set per quote and overridable per line.

ACQUISITION COST
€412.00

Default supplier offer — Circulation Pump 1.5kW A7K2

+
BUFFER · +12%
€49.44

Freight, handling, procurement overhead. Inherited from the category tree.

+
MARGIN · +22%
€101.52

Your profit, set on this quote version. Overridable on any single line.

=
CUSTOMER PRICE
€562.96

The one number your customer sees. You see every layer beneath it.

Change a line's price on a quote and it changes on that quote. Your catalog is untouched, always — and every override reverts in one click.

Everything else

The rest of the system

Category tree

Unlimited depth, drag to re-nest, clone a whole branch with the products you choose.

Custom attributes

Number, text, date, or option — per category, inheritable, overridable per product.

Supplier offers

Many prices per part, one default. Supplier, SKU, source link, spec sheet, purchase date.

Multi-currency

Manual rates or one-click MNB sync, per-currency decimals, converted roll-ups.

PDF & share link

Export a PDF, or send a link your partner opens, accepts, or rejects without signing up.

CSV import

Bring your catalog in as-is — missing categories are created for you, with per-row errors reported.

Team & workspaces

Invite colleagues, transfer ownership, belong to several companies at once.

Two-factor auth

TOTP with recovery codes, on top of Google and Microsoft sign-in.

Full audit trail

Every change to every record, with a diff. Your data is isolated at the database layer.

Pricing

Priced for an engineering team, not a sales org.

One subscription per company. Every plan includes unlimited bundles, unlimited nesting depth, and unlimited quote versions.

Monthly Yearly 2 months free

Sprout

€39 / month

For the solo engineer who quotes on the side of the job.

  • 1 user
  • Up to 500 products
  • Unlimited bundles & nesting depth
  • Unlimited quote versions
  • PDF export & CSV import
  • 1 currency
  • Email support
Start with Sprout

Grove

Most popular
€99 / month

For the team that quotes every week.

  • Up to 10 users
  • Unlimited products
  • Everything in Sprout, plus:
  • Public accept / reject share links
  • Multi-currency + MNB rate sync
  • Custom attributes with roll-up totals
  • Quote version diff
  • Two-factor authentication
  • Priority support
Start with Grove

Canopy

€249 / month

For firms running several quoting teams.

  • Unlimited users
  • Multiple company workspaces
  • Everything in Grove, plus:
  • Full audit log access
  • Onboarding & catalog migration help
  • Dedicated support contact
Talk to us

All plans are billed through Stripe. Have a coupon? Enter it at checkout. Cancel any time — you keep access until the end of the period, and your data stays readable afterwards in read-only mode.

FAQ

Questions engineers actually ask

Can a bundle contain another bundle?

Yes — to any depth. A bundle can hold products, other bundles, or both, and Bundleaf flattens the whole tree into a single part-by-part roll-up. It also prevents a bundle from ever containing itself.

If I change a price on a quote, does it change my catalog?

No. Quote-level renames, price overrides, and margin overrides live on that quote version only. Your catalog is never modified, and every override is revertible in one click.

What happens to old quotes when my catalog changes?

Nothing. Each line snapshots its name and price when you add it, so a quote reads exactly as it was sent — regardless of what the catalog does afterwards.

Can my customer accept a quote without an account?

Yes. Once a version is Sent, you can generate a share link (optionally emailed to them) that lets them view the quote and accept or reject it directly. No sign-up on their side.

Can I import my existing catalog?

Yes — CSV import handles product name, category, parent category, price, currency, supplier, and supplier SKU, and creates any missing categories for you. It reports exactly which rows failed and why.

How does bundleaf handle multiple currencies?

Set a default display currency for your company, maintain FX rates by hand or sync official MNB rates in one click, and set decimal rules per currency. Roll-ups and quote totals convert into the target currency — and if a rate is missing, Bundleaf tells you instead of quietly getting it wrong.

What's the difference between buffer % and margin %?

Buffer % is the uplift on your acquisition cost — freight, handling, procurement — and it cascades down your category tree. Margin % is your profit, set per quote with per-line overrides. Cost → buffered price → customer price, visible at every level.

What happens if I cancel?

You keep full access until the end of your billing period. After that, your workspace switches to read-only: everything stays visible and exportable, you just can't create or edit until you subscribe again. Nothing is deleted.

Is my data isolated from other companies?

Yes. Tenant isolation is enforced at the database layer on every record, not left to application code, and every change is written to an audit trail.

What languages does bundleaf support?

The app is fully available in English and Hungarian, in light and dark themes.

Your next quote doesn't have to take three days.

Build the catalog once. Reuse it forever.