← Back to the blog
Vibe-codingCase studyPortal

How we vibe-coded an international portal and turned it into a Eurasian association in a week

The Kōkasoku portal: an MVP for two countries that became a platform for five within a week. How AI MAP applies the vibecoding-ncteam standard on commercial and non-commercial projects

April 2026 · AI MAP

The short version

The AI MAP team built an international portal for a niche sports community using vibecoding — development with an AI assistant following a formalized standard. The project is non-commercial: AI MAP founder Leon Nikolaev and his colleague Margarita Nechitailo are professional riichi mahjong players, tournament organizers in the Caucasus, and the technology sponsors of the association.

But the method behind the portal is exactly the one AI MAP applies on commercial projects for clients. The start was March 2025. Less than a month later — five countries, 3000+ club games in the database, personal player profiles. And several more countries in the pipeline.

Kōkasoku — Eurasian Riichi Mahjong Association: 5 countries, 130+ players, 2500+ club games
Kōkasoku — Eurasian Riichi Mahjong Association: 5 countries, 130+ players, 2500+ club games

Context: why a niche community needed a portal

Riichi mahjong is an intellectual discipline within IMSA (the International Mind Sports Association) alongside chess, go and bridge. The community is niche — thousands of ranked players worldwide, not millions — but well-organized with serious infrastructure. Every player has parallel accounts across several systems.

Pantheon — the accounting and statistics system for offline games. Clubs and tournaments record results here, and rankings flow from it.

Mahjong Soul — the main global online server, where tens of thousands of people play worldwide. High-rank player data is available via the third-party aggregator amae-koromo.

Tenhou — the historic Japanese online server. The concentration of professionals at its top is the highest anywhere. It's the "old school" of online mahjong.

mahjong.click — a Russian portal with tournament history, rankings and a player database. Important context: the mahjong organizations in Armenia, Georgia, Serbia, Montenegro and Kyrgyzstan were founded by Russian relocants, many of whom have rich tournament histories on that very portal. A Russian-speaking riichi community formed around mahjong.click, and Kōkasoku's players are part of it.

None of these systems gave a unified picture for our region: how many games a person has played across their career, where they stand in the overall association ranking, what their full profile looks like. The Russian portal has pages for clubs and cities — but no separate cut for Transcaucasia, the Balkans and Central Asia.

"Logical question: why build our own if mahjong.click exists? — says Leon Nikolaev. — We could have agreed to display our countries there. But we have a different vector: a year ago we already submitted applications to join the European Mahjong Association. Showing European colleagues a slice of a Russian portal isn't an option. We need our own platform, one we can present as the infrastructure of independent national organizations."

The solution — build the portal via vibecoding as an internal R&D project at AI MAP.

What vibecoding means at AI MAP

The term gets used in different ways. At NC Team (AI MAP's project office), vibecoding isn't "AI writes, I watch". It's a formalized process with a locked stack, review rules and clear lines of human responsibility.

The internal standard vibecoding-ncteam applies on every project. The point: the AI assistant doesn't pick the tech itself and doesn't invent architecture from scratch. It's given a corridor up front — which stack to use, how to organize the code, where to deploy. Inside that corridor it works predictably and fast.

The human is the architect and reviewer. They make decisions about project structure, check the output, steer the direction. The AI (Claude Code paired with VS Code) generates code, suggests solutions, handles the busywork.

Thanks to the standard, time from idea to a working site drops from weeks to days. The Kōkasoku portal became the proving ground where the standard was road-tested — and then stress-tested when the project started growing faster than planned.

From prototype to product in three stages

A core principle of AI MAP's vibecoding approach: don't build the final system right away. Start with the minimum and grow as real demand calls for it.

Stage 1. Prototype. In a single working session we built a site with static data: 45 players from the Yerevan club, two cups with full results, a historical tournament timeline. The data lived right in the code — no database, no server. Pushed it to free hosting — and the portal was online. The base had 500+ club games in it.

Kōkasoku MVP prototype: Georgian-Armenian riichi mahjong union, two clubs, dark theme
MVP prototype: "Georgian-Armenian Riichi Mahjong Union", two clubs, dark theme

Stage 2. Open-source reference. We dug into the Russian mahjong-portal — an open-licensed project that's been evolving for the Russian-speaking community for years. We used its decisions as a reference for the data structure and added proper attribution. We took inspiration — and immediately started doing things the original didn't.

Stage 3. Own server and database. Once it became clear the project was growing, we stood up a full database, added authentication and an API layer. The portal went from a simple "showcase" to a standalone system with its own data history.

The week that changed everything

The MVP went out as the portal of the Georgian-Armenian alliance — two clubs, two cities. Then things moved faster than planned.

Even before the main announcement, new countries started joining Kōkasoku. Serbia. Montenegro. Then Kyrgyzstan. A few more — still in negotiation. In a week, an alliance of two Transcaucasian clubs became the Eurasian Riichi Mahjong Association.

And that's where the thing that's often more important than the code itself showed up in business: speed of reaction to change.

"We didn't just code fast, — Leon explains. — We did a full product transformation: from the name and positioning to the data structure and the interface. From the old alliance version only the domain and the general name survived — everything else was rebuilt for the new scale. And that happened in a week, not a quarter."

Adding a new country takes 1–2 hours of work plus roughly an hour of review from a representative of that country. For context: the data volume for Serbia turned out to be comparable to Georgia and Armenia combined. This isn't "add a line to the config" — it's player imports, account linking, history validation. But because of how the system is built, it's hours, not weeks.

Where things stand today

Kōkasoku ranking: 129 players from five countries in a single table
Kōkasoku ranking: 129 players from five countries in a single table

Five countries: Armenia 🇦🇲, Georgia 🇬🇪, Serbia 🇷🇸, Montenegro 🇲🇪, Kyrgyzstan 🇰🇬 — and several more in the pipeline.

3000+ club games in the database (we started with 500+ at MVP stage).

Four data sources aggregated into a single player profile: Pantheon (offline), Mahjong Soul (global online), Tenhou (Japanese server), mahjong.click (tournament history).

Personal player dashboard — a feature that doesn't exist on the Russian portal we used as reference. The player signs in, links their accounts, sees aggregate stats: tournaments, club games, online games, distribution of placements, win rate, rankings — all on a single page. Links to external profiles are one click away.

Kōkasoku player dashboard: four data sources aggregated on one page
Player dashboard: 44 tournaments, 73 club games, 754 online hanchan — all in one place

Bilingual interface — English / Russian.

The team keeps developing the portal, shipping ideas that the parent portal hasn't gotten to yet.

What this means for business

The method that built Kōkasoku is exactly what AI MAP applies on commercial projects. Here's what this case demonstrates.

Speed of launch. A web system with a database, authentication, a personal dashboard and four integrations — that's not a quarterly project. It's days of active work. Provided the team has a vibecoding standard and a clear sense of where a human is mandatory and where the AI can handle it alone.

Speed of transformation. The MVP was designed for two countries. A week after launch it was a platform for five — fully rebuilt, from positioning to interface.

Speed of scaling. Adding a new country — 1–2 hours. Not because the data is small, but because the process is reproducible. Each next integration is faster than the last.

Our own touches next to the original. The Russian portal is a decade-long project with a huge base and features Kōkasoku still has to grow into. But the team has already shipped things it doesn't have — like the personal dashboard aggregating four sources. In the future those experiments could be useful to the Russian community too. Vibecoding lets a small team experiment fast and find solutions that bigger projects later adopt.

Where this same approach gets used

Everything road-tested on Kōkasoku works on AI MAP and NC Team client work: corporate chatbots, internal SaaS tools for partners, the DevRating.ru developer rating portal, case landings. Same stack, same process, same speed.

The difference is having a client, a spec and deadlines. On Kōkasoku, the clients were Leon and Margarita, and the motivation was to do something useful for a community they care about.

If you need technical expertise in AI development, automation, or building your own portal with integrations — get in touch: aimap.am.

AI-помощник по статье

Обсудите статью с AI

Нажмите кнопку — AI откроется с готовым запросом: пересказать статью и быть готовым ответить на ваши вопросы. Поддерживается Claude, ChatGPT и Gemini.

Откроется новая вкладка с предзаполненным запросом. Может потребоваться вход в аккаунт сервиса.


The Kōkasoku portal: kokasoku.com

AI MAP — AI solutions and business automation, Yerevan

Want to talk about your project?

Tell us about the task — we'll propose a solution and show a demo on your data

Submit a request →