Back to Notes
engineering, ai, climbing, product

Why I built Gora. AI accelerated the code. Marketing was the real challenge.

AI helped me build Gora faster than any product before it. The real challenge began after launch: earning trust and building density inside a global but deeply local climbing community.

Why I built Gora. AI accelerated the code. Marketing was the real challenge.

I started climbing in late 2019. It quickly stopped being just a sport I did after work and became the thing around which I organised most of my free time, my travel, and eventually a large part of my life.

In 2025, I quit my job, bought a small camper van, and set out to climb full time. I expected the hard part to be the climbing. Sometimes it was. But one frustration followed me from gym to crag and from country to country: finding somebody to climb with was still unnecessarily difficult.

You can be surrounded by climbers and still have nobody available on Tuesday morning. You can be in ten WhatsApp groups and get no answer. You can message twenty friends, wait half a day, and discover that one wants to boulder, another is projecting far above your grade, and the only person who is free is two hours away.

When you are travelling, the problem becomes even sharper. You may know exactly which crag you want to visit, what routes you want to try, and where you will sleep. But without a partner, the whole plan can stop before it begins.

That is why I built Gora.

Finding partners should not be harder than climbing

Climbing is intensely social. We belay each other, share beta, celebrate sends, make spontaneous plans, and often turn people we met at a wall into close friends. Yet the tools we use to make those connections are mostly generic group chats, old Facebook groups, scattered direct messages, and luck.

Those channels are good at keeping an existing group together. They are not designed to answer a more specific question: who nearby wants to climb the same style, around my grade, at the same time and place?

Gora is my attempt to answer that properly. Climbers can discover people nearby, create live sessions, organise trips, explore gyms and crags, match around climbing preferences, and move a real plan into direct chat. Profiles, reviews, privacy-aware location, reporting, and blocking provide context and trust before two strangers decide to meet.

The goal is not another feed to scroll. The goal is fewer unanswered messages and more days climbing.

Building AI-native changed the speed completely

Gora is also the most AI-native product I have built. AI was not a feature bolted onto the app or a chatbot added for a launch announcement. It was part of the development process from architecture through implementation, testing, content, operations, and iteration.

That accelerated development dramatically. A product like this crosses a surprising number of boundaries: an iOS and Android app, maps and geographic discovery, sessions and trips, direct messaging, push notifications, authentication, subscriptions, media storage, moderation, analytics, a typed API, a marketing website, and a CMS.

The mobile app uses Expo and React Native. The API is built with Hono and oRPC, backed by PostgreSQL, Drizzle, and Redis. Better Auth handles identity, Firebase supports messaging and analytics, Cloudflare R2 stores media, and the public site runs on Next.js and Payload CMS. It is a substantial system for an independent product.

AI made it possible to move across that surface area at a speed that would have been unrealistic a few years ago. It generated implementation options, helped investigate edge cases, accelerated repetitive work, and made it practical to test and refine several parts of the product in parallel.

But faster code does not remove the need for experience. I still had to define the product, choose the architecture, reject weak solutions, review the behaviour, protect the privacy model, and decide what should not be built. AI increased the rate at which decisions became software. It did not make the decisions for me.

The hardest part was not development

The biggest challenge has been marketing.

That was humbling. As engineers, we can convince ourselves that shipping the product is the summit. In reality, shipping gets you to the start of a different route.

Gora operates in a specialised niche. Climbers are a passionate community, but they are distributed across countries, cities, gyms, disciplines, grades, and tiny local groups. A social product only becomes useful when enough of the right people are active in the same place at the same time. Ten thousand users spread thinly across the world can feel less useful than fifty active climbers around one gym.

That makes marketing less about buying broad reach and more about building local density and trust. Every country has different climbing communities. Every gym has its own culture. Some people live in WhatsApp groups, some use Facebook, some follow local athletes, and some only hear about new tools from the person belaying them.

I have had to learn distribution as seriously as I learned mobile development: talking directly with climbers, making useful content, listening to criticism, contacting gyms and communities, explaining that Gora is a climbing tool rather than a dating app, and repeating the message in places where climbers already are.

It is slower and less predictable than writing software. It is also deeply rewarding, because every sign-up represents a real person who may find their next partner, session, or trip through something I made.

From hundreds in the first days to thousands in the community

Hundreds of climbers joined in the first days. At the time of writing, thousands of people are using Gora or following its progress on Instagram, across Europe, the United States, South America, and beyond.

The most meaningful signal is not the total. It is seeing profiles appear around a new city, climbers create sessions, people organise trips, and the map slowly become useful in places where I have never climbed.

Well-known professional climbers and athletes have also joined, followed the project, and acknowledged the app. I do not take that as proof that the work is finished. I take it as proof that the underlying problem is real, including for people with far larger climbing networks than mine.

The project has also started receiving press coverage. New in Porto covered the story behind Gora, and Rock Climbing Portugal introduced it to the climbing community, alongside other mentions and conversations that continue to bring new climbers into the app.

Coverage matters, but not simply because it creates traffic. An independent community product needs legitimacy. Every article, recommendation, athlete profile, and message from a climber saying “this is exactly what I needed” reduces the uncertainty for the next person.

The rewarding part is the community

Marketing in a niche is challenging because there is nowhere to hide. You cannot optimise a landing page and pretend that is community. You have to show up, listen, explain, fix things, and earn attention one group at a time.

That process has changed how I think about building products. AI has made development dramatically faster, which means the scarce resource is moving. The constraint is increasingly not whether a small team can build the software. It is whether they understand a real problem, can reach the people who have it, and can earn enough trust for the product to become part of their lives.

Gora is still early. There are regions that need more climbers, flows that need refinement, and lessons arriving every day from people using the app in ways I did not anticipate. But it is no longer an idea in my notes or a prototype on my phone. It is a growing international climbing community.

I built Gora because I was tired of spending more time finding a partner than preparing to climb. AI helped me build the answer faster than ever before. The climbing community is teaching me how to make that answer matter.

Gora is available now on iOS and Android.

Find partners. Make plans. Go climb.

Something to add or contest? I'm always open to technical debate.

Start a discussion