30 percent gross margin looks like a passing grade. It isn’t, and Indrek Peenmaa spent more than a year inside his own company’s data proving why.
Indrek manages Nordic Experience, a private day tour operator based in Tallinn running across multiple Northern European destinations for 15 years. Revenue runs between 600,000 and one million euros a year. The team is three people full time. The business is profitable by any conventional measure. And yet when Indrek ran the numbers correctly, he found tours that looked good on gross margin absorbing far more office time than the margin could justify, destinations that felt busy but were barely covering costs, and pricing decisions that had been made with the confidence of gut feeling and the accuracy of a guess.
The conventional gross margin calculation, revenues minus direct costs like guides, buses, and admissions, tells you what a tour earned net of what it cost to run. What it doesn’t tell you is how much of your office team’s time that tour consumed to get out the door. Two tours can post identical margins and require ten times different amounts of internal coordination. Without a way to see that difference, your pricing decisions, portfolio decisions, and growth decisions rest on incomplete information. Indrek built a framework to close that gap, and this post walks through it.
Cleaning the Books Before You Start
The starting point isn’t analysis. It’s correction.
Before any profitability model can tell you anything reliable, you need to strip the books of everything that isn’t the tour business. If your company also runs a rental property, earns investment income, or has any revenue stream unrelated to tours, those numbers distort the picture before you’ve drawn a single chart. Remove them.
The more common issue is owner labor. If you guided a tour yourself last week but your compensation comes through your regular salary rather than a guide invoice, that tour looks artificially profitable. Your cost as a guide is sitting at the company level, not at the tour level. For the analysis to work, you need to allocate a market-rate guide cost back to that specific tour, even though that’s not how it appears in your accounting.
Apply the same logic to your own role running the business. If you pay yourself below market rate, or nothing at all, the business will appear more profitable than it actually is. The correct question to ask is what would it cost to hire someone to do what you do? That number belongs in the model. A business that is profitable only because the owner is subsidizing it is not profitable in any transferable sense.
This cleanup step is not exciting. It is what makes everything after it accurate.
Three Numbers That Tell You If the Business Is Working
Before going to the tour level, Indrek offers three benchmarks that give you a quick read on the whole operation.
Gross margin at or above 30 percent. That means your revenues minus all direct costs (guides, buses, activities, accommodation where you pay directly) leave you with 30 cents on every euro. Below that threshold, there’s typically not enough left to cover marketing, IT, and the salaries of people in the office who support operations. Many businesses run below 30 percent and survive, but it tends to mean ongoing pressure on every other cost line.
Overhead below 20 percent. Overhead here means the cost of people and infrastructure that support operations but can’t be assigned directly to individual tours: your office team, your booking system, your accounting software. If this exceeds 20 percent of revenue, you’ve built a support structure that’s larger than the business currently needs.
Net profit at or above 10 percent. If your gross margin is 30 and your overhead is under 20, you should have at least 10 percent remaining. On a million euros in revenue, that’s 100,000 euros. Indrek is explicit that these are starting benchmarks, not industry standards he found published somewhere. He’s arrived at them through his own experience and hasn’t seen anyone else in tour operating declare something similar.
Matching Costs to Bookings
Getting to the tour level requires one thing most booking systems don’t give you automatically: a shared identifier that exists in both your operational records and your financial records.
For multi-day operators, this often works naturally. Each trip is a discrete project and many booking systems track it that way. For day tour operators running high volumes of small private bookings, it almost never happens automatically. Indrek’s solution was manual: every booking in his booking system has a unique ID. He enters that ID as an object code in the accounting system whenever he books a supplier or receives a payment for that tour. It creates a shared key that lets him join the two datasets for analysis.
The manual step adds work, but it’s the only reliable method he’s found that doesn’t require a custom technical integration. If you want to attempt something similar, the first task is auditing your current systems: does any identifier appear in both places already? Can one be created without a rebuild?
Once you have costs matched to individual bookings, you need labels on each booking to make the analysis useful. Tour type, destination, language, group size, sales channel, season, whether a guide was involved, whether transport was included. Without these labels, you can calculate tour-level profitability totals but you can’t ask why some tours earn more than others. The labels are what turn a margin figure into a decision.
Why Simple Overhead Allocation Gets It Wrong
Here’s where the standard approaches break down.
The most common method: divide total office costs by total booking count and assign each booking an equal share. If your office costs 200,000 euros and you ran 2,000 bookings, each booking gets 100 euros of overhead.
The problem is that a straightforward airport transfer and a fully customized guided tour with five suppliers don’t consume anything close to equal amounts of your team’s time. Answering a complex customized inquiry takes multiple rounds of email. Coordinating four supplier invoices takes more time than coordinating one. Handling a booking that changes three times takes more time than one that books cleanly. The flat allocation overcharges your simple bookings and undercharges your complex ones. Decisions built on that picture will push you toward complexity you’re not pricing for.
The other common approach: allocate overhead proportionally to booking value. More expensive bookings absorb more overhead cost. This sounds logical, but for day tour operators it also tends to be wrong. A larger group on a standard tour uses the same guide and the same bus. The work to coordinate a 700-euro booking is often nearly identical to the work to coordinate a 300-euro booking on the same tour type. Revenue proportion doesn’t track operational effort.
The Complexity Score
Indrek’s answer is a set of weighted coefficients he calls a complexity score. The underlying logic: different booking types have predictably different labor demands, and you can estimate those differences using a small number of variables.
The coefficients he uses at Nordic Experience start with tour type as the base. A transfer-only booking (airport pickups, city transfers) gets a weight of 1. A guided tour gets 2. A guided tour with a bus gets 3. The rationale: coordinating a bus adds booking complexity, day-of logistics, and more supplier communication.
On top of the base, he adds 0.3 for each additional supplier invoice in the booking. A tour with one guide gets the base. A tour with a guide, a museum, and a restaurant gets an additional 0.9. Custom requests, where the client has asked for something that requires building an itinerary from scratch, get the booking’s base score multiplied by 2 to reflect the higher pre-sale workload. Group bookings with unrelated travelers assembled by a partner carry a premium for the extra coordination. Cancellations, which still consumed some work even though the tour never ran, get assigned 0.3 to reflect the sales communication that happened before the booking fell apart.
None of these coefficients are universal. They reflect Indrek’s operation and his team’s work patterns. Your mix of tour types, your supplier arrangements, and your booking complexity will produce different numbers. The method is called activity-based costing, and there’s substantial academic literature on it. Applications specific to travel are sparse, which is part of why Indrek built his version from internal estimates rather than adapting someone else’s model. Treat activity-based costing as a framework to customize rather than a template to copy.
One more step before running the allocation: separate out overhead that isn’t really a cost of running current tours. Time your team spends learning a new destination this year benefits bookings across multiple future seasons. That cost shouldn’t land entirely on this year’s tours. Business development and capability-building belong in a separate bucket. The allocation runs only on the portion of overhead that genuinely tracks to handling current bookings, which Indrek estimates at around 50 percent of his team’s time.
What the Numbers Actually Change
Running the model annually on a full year of data, Indrek can see profit per booking by destination, by tour type, by sales channel, and by group size. He visualizes it as a bubble chart: profit on one axis, complexity on the other, bubble size representing total booking volume. The picture shows immediately which destinations are earning well relative to the effort they require and which aren’t.
For Nordic Experience, Stockholm posts the highest per-booking profitability with low complexity. Tallinn is the volume leader and generates the most total profit, but requires more work per booking. Riga is low volume and below the average margin line. None of those findings led to removing any destination from the portfolio. But they’ve led to redesigning shorter tours where the margin was too thin, declining certain inquiry types more consistently, and raising prices in specific segments. Short walking tours, it turned out, were underpriced relative to what they cost to operate.
Indrek is direct about one implication: in his experience, unprofitable products in travel almost never become profitable at scale. If a tour type, a sales channel, or a customer segment isn’t covering its real costs now, adding volume tends to amplify the problem rather than solve it. The more reliable move is identifying what’s already working and expanding that, not continuing to invest in what isn’t.
About Indrek Peenmaa
Indrek Peenmaa has been involved in the management and development of Nordic Experience for 15 years, overseeing operations across multiple Northern European destinations for a private day tour operator that runs primarily through partner channels. He recently completed a master’s thesis applying activity-based costing to tour operator profitability, building a framework he continues to use and refine in his own business. He writes about financial management in tour operations on LinkedIn and Substack.
To follow Indrek’s work on tour operator profitability, find him on LinkedIn or on Substack. He’s also planning a cohort-based course on this topic for later in 2026. Sign up to express interest here.
For more insights and strategies on building a better tour business, join the community at community.tourpreneur.com.
