A second brand,
and a second business.
The client runs a local water business with its own delivery trucks. The water from Busko-Zdrój was being sold under an inherited name and with no face of its own. The job was both halves at once: give the water a brand that can be sold to companies by the pallet, and build the channel that sells it.
As a separate line, not an extension: different buyer, different geography, different promise, different people in charge. So it got its own store, its own backend and its own warehouse, all on a shared codebase, so a fix never has to be written twice.
- Client
- Aqua Serwis System, a water business in Kielce
- Scope
- Brand, labels, campaign, backend, storefront, SEO
- Market
- Poland, nationwide, business buyers only
The brand did not exist.
We made it.
This was not a job where a finished logo arrived by email. The water had been sold as Buskowianka Zdrój; the name, the wordmark, the brand mark, the labels, the product imagery, the films and the ad creative for the relaunch are our work, and the store further down sells that brand.



Three variants, three labels
Still, lightly sparkling, sparkling: one structure in three colourways, navy, green and blue. The cap, the variant band and the field colour separate them on a shelf at a glance, while the mark and the wordmark stay identical so the brand still reads as one.
The label, print-ready
A full-wrap label in three variants: the engraving of the spa house, the wordmark, the claim and the variant band, and beside them the cations, anions, mineralisation and the statutory declarations on a millimetre grid. Authored as code and rendered to PDF, so a correction to the water analysis does not mean someone redrawing three files by hand.
Wordmark, mark, claim
BUSKO 1828, with the spa house of Busko-Zdrój as the brand mark and “Tradycja w nowej odsłonie” as the claim. As a lockup in navy, white and green, plus favicon, app icon and link preview, all generated from the same cut-out originals rather than redrawn.
The campaign
Ad creative per audience (offices, construction sites, hospitality), each carrying the argument that lands with that audience, rather than one visual for everyone. The same segments the store has its own landing pages for, so the ad and its destination speak the same language.
The livery
The same brand on the vehicle: mark, wordmark and claim across the body, both variants as bottle imagery, the wave carrying it together. For a regional distributor the delivery truck is the highest-reach piece of advertising it owns.
Under the label,
the software.
Two deployments, one codebase
The shop system has no channel-scoped admin permissions, and the two businesses have different people in charge who must not see each other’s orders. So: one repository, two services, two databases, separate configuration, and invoicing, payment and notification logic that only ever gets fixed once.
The order unit is not the stock unit
A pallet is what gets bought; bottles are what get counted. One pallet variant draws down 1,368 units, or 504 at the 1.5 l format. No umbrella SKU, no manual reconciliation: one sale, one correct balance, in the unit the warehouse actually counts in.
One source for the tier price
The tiers live in a module that both the public price table and the cart’s pricing read from. A table that contradicts the cart is a lost order in B2B. The tier follows the total quantity on the order rather than the line, plus a reconcile pass for carts caught between two price states.
An external registry as a convenience, never a gate
The finance ministry’s registry has a daily quota and no key. So: the tax number’s checksum is verified locally first, so a mistyped digit costs no request, then a 24-hour capped cache, a per-IP limit and an eight-second timeout. If the registry is down the form carries on manually. An outage there costs no orders.
Invoices nobody types
An invoicing integration with real line logic: only the deposit line is VAT-exempt, everything else carries the standard 23 %. Variant titles pass through the same normalisation as the storefront and the emails, so the invoice, the confirmation and the PDF all describe the same document. Payment is online by transfer, BLIK or card, with returns handled from both providers.
34 pages from three data modules
18 cities, seven segments, nine guides: one typed module each, feeding the pages, the sitemap, the FAQ markup and llms.txt together. A changed term appears everywhere at once, including in the version AI crawlers read. Forms sit behind a bot check.
Four surfaces,
and what runs behind them.
Screenshots of the live site, September 2026.
A price table that cannot disagree
The table and the cart read the same tier module, which is why the figure in the table is the figure on the invoice. The net/gross and 0.5/1.5 l toggles compute in the browser. No round trip just to show a price differently.
A calculator that runs in the browser
The model is entirely client-side: no server call per slider, instant response, and the page still ships as static. The side effect is the real point here: the result can be sent as a link.
One template, eighteen cities
The page, its sitemap entry and its structured data all come from one record per city. A new city is an object in a typed module, not a copied page that falls behind the next time the copy changes.
One facts module, three outputs
The spring, the mineralisation and the composition are held as data and surface three ways: as a brand page for the buyer, as structured data for search engines, and as llms.txt for AI crawlers. The same figures as on the label we designed.
The same configurator on a phone
Buyers order from the stockroom, not from a desk. So the configurator has to work without pinch-zoom: format, variant, quantity, tier discount, net and gross totals, the delivery note, the buy button. Below it the same page carries on: terms, the tier table, the unit prices.

Something similar in mind?
Brand, labels, a store, invoicing, stock: tell us what you want to sell, and we will tell you which part of it is design and which part is software.








