Our own business
Our own sailing charter out of ACI Marina Pula needed everything a small tourism business needs — an identity, a site that sells in the languages its guests actually speak, printed material that works at the marina, and somewhere to run hiring. All of it built by one team in one continuous stretch of work, which is also why we can be candid about what went wrong along the way.
A Phoenix LiveView site covering the fleet, the trips, a schedule with open dates, and enquiry flows that email the booking inbox and copy the customer. Seven languages, each served under its own URL prefix so search engines and shared links behave predictably.
One detail mattered more than it looks: the site's front door had always redirected to Croatian regardless of the visitor's browser. Fine for locals, wasteful for the German and Italian guests the business depends on. The entry points that appear on printed material now negotiate the visitor's language and fall back to English — the language the flyer itself is written in.
We added a single-offer landing page for a discounted private charter, translated into all seven languages, with every figure derived from one constant so a price change cannot leave a stale number behind in the copy.
Every printed QR code points at a short tracked link rather than a long tagged URL. Three reasons, all practical:
An identity built around a roundel emblem, with a type system and palette carried across every surface. From it we produced a house flag for the boat's starboard spreader, a 360 × 75 cm beach flag at the print shop's exact format, a backstay banner, and a double-sided A5 flyer.
Print is unforgiving, which is where the verification habit earns its keep. Every QR code was rendered at final size and scanned by machine before release. Photographs were checked against the millimetre dimensions on the press order — one layout was rejected because a two-thirds-height photo would have needed a crop that threw away 40% of the source width and landed under 200 DPI. Another shot was dropped after measuring, at full resolution, that the boat's mast ran off the top edge of the frame.
Recruitment runs on a self-hosted HR system: job listings in Croatian, gender-neutral titles as Croatian job-advertisement law requires, and screening questionnaires that replace the CV for roles where a CV tells you nothing. Seasonal roles — hostess, boat cleaning — are modelled as an on-call pool rather than a single vacancy, because that is how the business actually staffs a boat.
Design lives in a self-hosted Penpot instance, driven through its API so artwork can be regenerated from a script instead of nudged by hand. Alongside it: project management, CRM and monitoring, all on one small server behind a single reverse proxy.
Nothing here is individually exotic. What compressed the timeline was the absence of handoffs — the same team wrote the Elixir, drew the flags, produced the print files, set up the servers and checked the results. Agents did the volume; the checking was automated wherever a machine could do it, and done by hand where it could not.
Tell us what is not working. A couple of paragraphs is enough to start.