# fryga — hard product problems on Rails

fryga is a four-person product engineering consultancy in Kraków, Poland (Norwegian co-owners at Rubynor in Oslo). Currently booking: Q3 2026.

When shipping stops. When scaling breaks. When AI isn't sticking.

We're four product engineers. We work with product companies past MVP — the ones whose codebase, team, or AI rollout needs more than they can ship alone. Rails and AI are our engine. We work in sprints — usually two weeks — you keep everything we build, and you can stop after any one of them.

## Three problems we recognize

### 01 / Rescue — "We can't ship."

Your delivery has stalled. The codebase fights every change. The team that built it isn't here anymore. We come in, read the mess, and decide what to kill — instead of writing more code on top of it. (Case: Domestika)

### 02 / Scale — "We need to scale this."

You've shipped a working product in one place. The next four places want it too — and each has its own constraints. We come in for the architecture decisions and stay long enough to make them hold. (Case: FastTravel)

### 03 / Ship with AI — "AI isn't sticking."

Pilots ran. Demos happened. Delivery looks the same. AI sticks when the people closest to the customer can ship the code themselves — and your codebase stays safe while they do. (Cases: nerds.family, Gyfted)

## Case studies

### Rescue — Domestika (unicorn, 11 months)

The codebase had four architectures pretending to be one app. Domestika serves millions of creative professionals. Thirteen years of Rails, mid-restructure. The codebase mixed react-on-rails, regular Rails, separate React apps, and internal libraries that reinvented the wheel. Delivery had stalled.

The CTO called us to decide what stays and what dies, not to write more code on top of the mess. We killed react-on-rails entirely, converted views to Stimulus, and rebuilt the abandoned Community module from scratch. Then we shipped a contest platform on the new foundation and replaced the tests that weren't catching real bugs with ones that do.

Outcome: deploy time dropped 40%. The team that inherited the codebase could actually read it. (Rails, Stimulus, TypeScript)

### Scale — FastTravel (3 years, ongoing)

One airport worked. Then the next four needed it too. We've been part of FastTravel since day zero — through the launch at Oslo Airport and the scale that followed. We went to the queue and watched: passengers fumbling, drivers idle four hours for a single fare, support staff drowning. The first version came from what we saw.

Oslo worked. Then Bergen, Trondheim, Stavanger, and Tromsø wanted it. Each site had its own layout, payment rules, and operational reality. Going from one airport to five forced multi-tenant architecture, per-region configuration, and a payment system that handles invoicing, billing, corrections, and automatic passage fees at every airport — without forking the codebase.

Outcome: driver wait times went from four hours to thirty minutes. The five biggest airports in Norway on one multi-tenant system — and we still run the payments, three years in. (Rails, Hotwire Native, Payments)

### Ship with AI — nerds.family + Gyfted (ongoing)

10% in demos, 2–3× in production. The difference is who ships.

nerds.family has run coding academies for four years. The platform needed to grow to three academy types — no dev team, no budget to hire one. Marcin worked through every AI coding approach on the market and built the harness (github.com/marostr/superpowers-rails) from what held up: conventions encoded in the repo, review enforced, rollback automatic — open source, in production since December 2025. Now a CPO with zero engineering background writes product specs against a codebase the AI knows; agents write the code; Marcin makes the calls. Two people, part-time, shipping to production daily for seven months — more output per week than a full-time developer produced in a month before.

The harness isn't married to Rails. Gyfted builds psychometric assessments on a stack we don't usually touch. Same harness, same guardrails, and they held. Their CPO now ships landing pages to production on his own schedule, no developer in the loop.

Outcome: 7+ months of AI in production, daily. A CPO who couldn't touch the codebase ships without us in the room. (Rails, AI harness)

Client quote: "They would not only provide their services, but also take the product as their own. Questioned what needed to be questioned, and eventually saved us from making some silly mistakes." — Oskar Lakner, CEO @ nerds.family

## How we work

"How much time do you want to spend on it?" That's our opening question. The usual one — "how long will it take?" — has no honest answer, only a guess. So we flipped it: you decide how much time the problem is worth, and we tell you what ships inside it — usually two weeks at a time. We start with the decision sprint: we talk to your team, read the codebase, map the mess — and before we write a line, we tell you what we'd kill, what we'd keep, and what we'd build first. The rest of the week starts the first of it, in your repo.

1. **One call.** You tell us what's broken. We ask questions until we understand what's actually going on. If we're not the right fit, we'll say so.
2. **A sprint plan.** You set the time, we fill it: what ships in that time, and the price, agreed before we start. If something has to give, it's scope, never the date.
3. **The work.** Direct access to whoever's doing it. No standups to schedule, no project managers in the middle. At the end of the sprint, something ships.
4. **Your call.** Continue, pivot, or stop. Everything we build is yours. The work earns the next sprint, not a contract.

The engagements still run long — Domestika was eleven months, FastTravel is three years and counting. Just one sprint at a time.

We pick up the phone and answer on Slack. When something breaks at 3pm on a Friday, we fix it Friday, not Monday. Four people means no handoffs, no "let me check with the team," no vanishing into a process.

When the work stops earning the next sprint, you keep what we built and we move on. No multi-year contracts, no exit clauses. We're a Kraków team with Norwegian co-owners at Rubynor; we've shipped in both markets and can open doors in either.

## Team

The four people making the calls. No handoffs, no bench — these are the people who'll be in your codebase. Who you get depends on the problem, and you'll know their names before the sprint starts.

- **Marcin Ostrowski** — Founder / CEO. Kept hiring the same people at every company he built, then stopped pretending that was a coincidence and made it a company. fryga is the band he always wanted: small, handpicked, no bench. Too many ideas on a normal day, the anchor when something's on fire. Answers for the result, not the scope of the task. Writes about AI-assisted coding at rubyonai.com. Mentors at 42 Warsaw. (linkedin.com/in/marostrowski)
- **Katarzyna Kukułka** — Product engineer. Went to Oslo Airport before designing a single screen. She watched passengers fumble, talked to drivers between fares, sat with support staff. The kiosk booking and driver app came from what she observed, not what a brief described. Named the company. First person Marcin hired for every company he's built. At Domestika, rebuilt the project editor from user research through production. Taught Interface Design at AGH Kraków. Sociology degree. Mario Party fan — wanna play? (linkedin.com/in/kakukulka)
- **Mateusz Baltyn** — Engineering / Payments. Built FastTravel's payment system from day zero. Invoicing, billing, corrections, automatic passage fees across the five biggest airports in Norway. Marcin's longest collaborator, since 2015. Proud owner of a long-lived sourdough starter. (linkedin.com/in/mateusz-baltyn-32a69586)
- **Wojciech Janoszek** — Product engineer. Works where frontend meets design — and tests every AI design tool that claims to close that gap. At Domestika, owned the standalone frontend app: TypeScript and React, no half-measures. Modernized legacy areas while the rest of the team rebuilt the backend. Before fryga, led a product team at Sprout Social and co-founded an AI fashion-tech startup. Off the clock, an explorer — capturing beauty one photo at a time. (linkedin.com/in/wojciech-janoszek)

## The deal

You pay for the sprint. Every sprint compounds. Every sprint in your codebase makes the next one faster — same price, more shipped.

**€5K per product engineer, per week**

Working software is what's there at the end — that's the deliverable, every time. Some engagements take one sprint, some take ten. Start with the decision sprint: two of us, one week, €10K. You walk away with a plan for the problem you brought us, and the first change already started in your repo — whether or not there's a sprint two.

Every engagement compounds on your side: the AI harness on your codebase, the conventions in your repo, the deploy pipeline. They keep running when we're not in the room. They're yours.

## What we won't do

If that's what you need, we'll save you the call.

- **MVPs.** If you're starting from scratch, we're not the right call. For a first build, find a technical co-founder.
- **Staff augmentation.** If you need bodies, hire full-time. It's cheaper, and they'll learn your business.
- **Filling seats.** We're four people, maybe five tomorrow. We don't subcontract strangers to make the team look bigger. If the project needs more hands than we have, we'll say so.
- **Negotiating down** …and then quietly resenting the project. Either the price is right or we don't take the work.
- **Building whatever you spec** …without pushing back. If the feature is wrong, we'll say so.
- **Stack migrations** to whatever framework is trending this quarter. We pick technology by what survives, not what's loud.

But if your product is stuck and your team can't unstick it — or you want AI that delivers 2–3× in production, not 10% in demos — that's what we do.

## Contact

Talk to Marcin. If the work fits, we put a team on the first sprint. If it doesn't fit, we'll tell you who might.

- Book a 30-min call: https://zcal.co/marcino/vcdc
- Email: marcin@fryga.io
- Located: Kraków · the work happens wherever you are
- Currently booking: Q3 2026 · 2 slots available
- Reply time: within 2 business days, from a real person

## What we believe

We're the problem to your solutions. A product is worth building only if it makes someone's life measurably better. Anything else is just code that runs. Most teams ship the wrong thing for the right reasons — designers protect the experience, engineers protect the code, business protects the numbers. That gap between good intentions and the right outcome is the one we exist to close.

We work in small teams because quality grows where everyone feels the product is theirs. We tell each other the truth, even when it's uncomfortable. We share what we learn through writing, teaching, and open source — the knowledge isn't ours to hoard. We don't preach any of this. We just work this way.

## Teaching

We show up where people are learning. Katarzyna taught Interface Design at AGH Kraków. Marcin mentors at 42 Warsaw (42warsaw.pl) and writes about AI-assisted coding at rubyonai.com. If you run a university program, a coding school, or a student event and want a workshop or a talk, reach out: marcin@fryga.io.

---

fryga · Kraków, Poland. We build with companies in Spain, Norway, the US, and beyond. Legal entity: RubyPL sp. z o.o., ul. Będzińska 5/8, 31-403 Kraków, Poland. KRS: 0001044822, NIP: 6762646011.

More for AI tools: https://fryga.io/llms.txt
