Brno, CZGrowth · Marketing ops · Analytics

Oliver Michalik

Oliver
Michalik

I run acquisition campaigns and build the data pipelines that measure them.

Growth, marketing operations and analytics, mostly around events. Open to conversations.

315 registrations / 300 seats13 CZK per registration6× cheaper than static4 bookings from zeroAugust fully booked155 attendees imported~100 client profiles7 hours → 4 hours, once

michalik.oli@gmail.comLinkedInCV (PDF)

Selected work

01

Level Up conference

Investors Club Brno · April 2026

The campaign was buying registrations on static creative at 70–90 CZK each. I cut the static spend and moved the budget to Reels. Cost per registration fell to 13 CZK — roughly a sixth of what we had been paying — and we closed at 315 registrations against 300 seats.

Cost per registration, CZK — lower is better

Reels 13
Static 70–90

315 registrations against 300 capacity · 13 CZK per registration on Reels · 70–90 CZK on static · ~6× cheaper

What I'd do differentlyI never found out whether 13 CZK held at higher spend — we hit capacity before I had to push it. Next time I'd keep raising the budget until the cost per registration starts bending upward, so I know where the ceiling actually is instead of only knowing we cleared the target.

02

Areál Orlové

Independent · 2026–present · orlove.pages.dev

A multi-sport complex with accommodation that nobody could find online and nobody could book without phoning someone. I treated it as a product rather than a facility: decided who it was for, wrote the positioning around that, built the site, launched it on social, and replaced the phone call with a booking process. Four bookings came in from a standing start with no audience. August is fully booked.

4 bookings from a standing start · 0 existing audience · August fully booked · orlove.pages.dev

03

Attendee data pipeline

Ventrata · 2026

The attendee list lived in our ticketing dashboard. The event platform needed the same people in its own import format, which meant somebody hand-building a CSV every time the list moved. I set it up instead as a dashboard export shaped by Sheets formulas into the format the platform expected, so refreshing the data became a re-run rather than a rebuild. 155 attendees loaded, checked against the source rather than by eye.

155 attendees imported · 2 systems, 1 import format · refresh is a re-run, not a rebuild

04

Client logo pipeline

Ventrata · July 2026

Around 100 client profiles each needed a logo, a brand colour and a link. At roughly four minutes a row by hand that is the better part of a working day. I wrote an Apps Script that scrapes the logo from the client's site, pulls hex colours off the image, writes both back to the sheet, and — the part that mattered — flags the rows it cannot resolve instead of guessing at them. Four hours to build.

~100 client profiles · ~4 min/row by hand ≈ 7 hours · 4 hours to build · unresolved rows flagged, not guessed

Background

2026 —
Event Coordinator Intern, Ventrata — ticketing platform for tours and attractions; event delivery and the data behind it
2026 —
Operator, Areál Orlové — multi-sport complex I run end to end, from positioning to bookings
2024 —
Head of Marketing, Investors Club Brno — five-person team; I own acquisition for the club's events
2024 —
B.Sc. Economics, Masaryk University — Faculty of Economics and Administration; econometrics project on used-car pricing

Tools

Acquisition
Meta Ads Manager · creative & audience testing · vertical video (CapCut, Canva)
Data
Google Sheets (XLOOKUP, pivots, structured imports) · Excel, advanced · Python, basics · Cloud Vision API
Automation
Google Apps Script · Sheets triggers · scraping and write-back pipelines
Events
Swapcard · ticketing exports · attendee reconciliation
Web
HTML/CSS · Cloudflare Pages
Languages
Slovak, native · Czech · English · German, beginner

Contact

Or write directly: michalik.oli@gmail.com