Хочете будувати кар’єру в Data Science та AI? Vodafone Big Data Lab відкриває новий набір —>
Марія БровінськаІсторії
29 October 2026, 09:00
2026-10-29
"The code is growing faster than I can understand it": A math teacher created an AI gifting app using Codex. How he combines school and vibecoding
During the day, Pavlo Makhnovets teaches math to children at the Godomytska Gymnasium in Volyn, works as a deputy principal, and helps implement digital tools at the school. In the evenings, he can spend several hours fixing bugs in the code, testing new features, or negotiating cooperation with Ukrainian brands. For several months now, he has been developing Sviato, an app that helps you choose gifts, create wish lists, and find products from Ukrainian manufacturers.
During the day, Pavlo Makhnovets teaches math to children at the Godomytska Gymnasium in Volyn, works as a deputy principal, and helps implement digital tools at the school. In the evenings, he can spend several hours fixing bugs in the code, testing new features, or negotiating cooperation with Ukrainian brands. For several months now, he has been developing Sviato, an app that helps you choose gifts, create wish lists, and find products from Ukrainian manufacturers.
Pavlo launched the first version in about 2.5 months. He actively uses Codex for development: the tool helps write code faster, but sometimes creates a new problem — the project becomes more complex faster than the developer has time to understand all its details.
“The code grows faster than I can understand it,” is how Pavlo describes one of the main difficulties of working with AI.
Now Sviato has about 2,000 unique users in the web version and application, 13 partner brands and the first paid clients. Pavlo himself is responsible for almost everything: programming, design, testing, analytics, partner search and promotion. And all this — in parallel with school.
dev.ua talked to Pavlo about how an ordinary conversation about gifts turned into an IT product, what working with children teaches him, why Codex does not eliminate the need to understand code, and how not to get lost among dozens of ideas when developing an application practically on your own.
It all started with a conversation about gifts
Pavlo wasn’t specifically looking for an idea for a startup. It all started with a household situation: he overheard his wife and sister discussing gifts.
There is a familiar contradiction in such conversations. On the one hand, you want to get exactly what you need. On the other hand, if you say directly what to give, there is little left of the surprise. And a person looking for a gift risks wasting time choosing something that will not be needed in the end.
Pavlo wondered if it was possible to combine these two desires: to help a person get what they really want, but to leave the opportunity for loved ones to surprise them. That’s how the idea for Sviato came about. The name was taken from the Ukrainian word "свято" written in Latin.
At that time, Pavlo already had basic programming knowledge and wanted to put it into practice. He studied at Mate academy, knew the basics of JavaScript, HTML, and CSS, worked with layout and Git/GitHub. In addition, he had long been interested in web design and had an idea of how websites and interfaces should look.
He already had some practical experience. For his wife, who makes knitwear, Pavlo created the Soft Current website. There, the buyer can choose a product and send an order via a form, and the message is sent to Telegram. He also created a simple administrative panel to manage orders.
But Sviato was a challenge of a different scale. It was not just about displaying products on the website, but building a product with multiple usage scenarios, a database, a catalog, personalized recommendations, and a mobile version.
Pavlo started development in early April. On June 13, the application was already available on Google Play. These two and a half months included writing the code, testing, and preparing for launch. The path from the first idea to the finished product turned out to be short — at least according to the calendar. But the launch was just the beginning.
A wish list is only half the plan
In Sviato, says Pavlo, there are several main scenarios. The first is wish lists that can be created and shared among friends or relatives. The user adds things to the list that they would like to receive. Relatives can view it and reserve a gift so as not to buy the same thing that someone else has already chosen. At the same time, the owner of the list does not see who exactly reserved the position. This way, there is room for a surprise in the gift.
The second scenario is searching for a gift using AI. It is needed for situations when a person knows who they want to give something to, but does not have a specific idea. The user describes the recipient: their age, interests, budget and the desired nature of the gift. For example, it can be something practical or, conversely, emotional. If necessary, you can specify a city so that the search covers local events or experiences. The query can be typed manually or dictated by voice.
AI generates personalized ideas and explains why they might be right for that person. But it’s important to distinguish between two things: the generated idea and the actual product that can be purchased.
Sviato has its own catalog of partner products with prices, photos, and links. AI helps determine what might interest the recipient, and the logic of the application itself selects the appropriate items from the catalog. That is, the model does not have to simply invent a product and pass it off as one that exists for sale.
In addition to recommendations, the catalog has filters and sorting. Pavlo is gradually filling it with goods from Ukrainian manufacturers — from ceramics and sweets to books, handmade products and things with Ukrainian motifs. For him, the catalog is not just a way to monetize the service. He wants people to find brands there that they didn’t know about before.
"I like it when people discover something new. For example, they didn’t know that a certain product was made in Ukraine, and through Sviato they find Ukrainian ceramics, unusual sweets, or a handmade item with its own history," says Pavlo.
This is one of the results that he considers especially valuable: when the service helps not only choose a gift, but also get to know Ukrainian craftsmen.
When AI writes code, the responsibility still remains with the developer
Pavlo creates Sviato practically alone. He does not have a separate team, where one specialist is responsible for the interface, another for the backend, and a third tests the finished result. Therefore, AI has become one of the main tools that allow you to move faster.
He uses Codex for development. The workflow is something like this: Pavlo formulates a task, receives an implementation, reads the result, checks it, and requests changes if necessary. Then he tests whether the new feature works and whether it breaks what was done before.
However, the faster new code appears, the more important it is to understand how it relates to the rest of the project.
“The code is growing faster than I can understand it,” says Pavlo.
Sometimes it’s easier to manually fix an interface element than to explain to Codex several times what exactly needs to be changed. In other cases, the problem is more complex: a new feature may work on its own, but conflict with existing logic. In such cases, it’s difficult to determine the cause of the error without understanding the structure of the application.
To reduce the number of such situations, Pavlo started using project rules and documentation. They give Codex context before performing a task: how the application is built, what decisions have already been made, and what principles should be followed.
This does not eliminate the need to check the result, but it helps avoid situations where the model performs each new task as if it is seeing the project for the first time.
Pavlo doesn’t see AI as a tool that you can just hand over the entire product to and wait for the finished result. It helps automate some of the work, but complex errors still need analysis.
For him, the main criterion is not whether a person wrote the code themselves or generated a model. What is important is that the product works, is reliable, and is safe.
What’s happening inside Sviato
The technological basis of the application is React, TypeScript, Vite, and SCSS. Pavlo uses Firebase for data storage, authentication, and server logic.
The web version works as a PWA — a progressive web application. He created the Android version using Capacitor, which allows you to use web technologies for a mobile application.
AI in Sviato is not only needed to generate text with gift ideas. It also helps make the catalog more searchable.
For recommendations, Pavlo uses Google Gemini via Firebase AI Logic. The model receives data about the recipient, their age, interests, budget, and desired type of gift, and then generates personalized suggestions.
The mechanism for selecting products from the catalog works separately. To better match queries with the assortment, Pavlo uses Google Cloud Vertex AI to enrich product cards. The system helps add structured characteristics: target audience, age group, interests, keywords, and product features.
This is important because the product description itself does not always provide enough information for a quality search.
A manufacturer may write that they make a handmade ceramic cup, but not indicate that it can be a gift for someone interested in Ukrainian crafts or unusual household items.
Additional characteristics help the system find such connections.
Pavlo checks the quality of the selection using automated tests: in particular, whether the system takes into account interests, age and budget, whether security restrictions are observed. He also checks the relevance and diversity of results, tracks product clicks and additions to wish lists.
However, even a gift that is correctly selected in all respects will not necessarily be liked by a person. Preferences are more complex than a set of characteristics, and therefore user feedback remains an important part of the development of the service.
There are always more new ideas than time.
Another challenge Pavlo faced was the desire to constantly add new features. At first, he focused on wish lists. Then came AI recommendations, a catalog, filters, sorting, and other features. Each seemed like a logical next step. But together, they turned development into an endless to-do list.
Ideas came faster than Pavlo could finish the previous ones. And the more features appeared, the more time had to be spent on checking their interaction. Sometimes fixing one problem created another. Some features had to be removed or redone after a long time of work.
Gradually, the man realized that the number of features alone does not make the product better. If the user cannot understand the interface, encounters errors or receives bad recommendations, a new feature is unlikely to solve the problem. Now he tries to first find out what exactly prevents people from using the service.
For example, if many users open an AI recommendation form but few start filling it out, it’s a good idea to check the script. The form may be too complex, confusing, or requires unnecessary steps.
Such observations help determine priorities: not just adding what seems interesting to the developer, but improving what really affects the user experience.
This is especially important when all roles are concentrated in one hand. Pavel not only writes code, but also tests the application, fixes bugs, analyzes user behavior, responds to messages, looks for partners, manages Instagram and Threads, and evaluates promotion results.
He involves friends and family for testing, as well as looking for people in Telegram communities. His wife became one of the first testers: she checks the web version and the iOS version, shares her impressions and helps to notice problems that the developer may not see himself.
Publishing on Google Play was a separate challenge: Pavlo did it without prior experience and had to figure out the launch process on his own.
From early adopters to paid partners
Currently, Sviato has about 2,000 unique users on the web and app, and about 1,000 downloads on Google Play. The catalog includes 13 partner brands. These include BAZHANI, ZOLA, Spell Chocolate, Leaf Ceramics, Glimmer, and Stary Lev Publishing House.
Pavlo searches for manufacturers mainly through Instagram and direct appeals. Over time, publishing houses joined the work with brands. His argument is simple: Sviato can show products to people who are already looking for a gift, and not just accidentally came across an advertisement.
Initially, partners could be hosted for free. Later, Pavlo introduced a paid model of cooperation. Currently, four partners pay for their presence on the service, the rest are on a free trial period or work on separate terms. For publishers, in particular, free hosting is provided.
The project has two monetization formats. Gold involves a fixed monthly payment. In Standard, the partner pays for unique transitions to their site. Sviato does not take a sales commission. Partners get access to an analytics panel: they can see transitions to the site, interest in individual products, and which positions attract users' attention. This allows you to check whether the presence in the catalog brings practical benefits to brands. For Pavel himself, it is also a way to gradually find out which business model will work for the product.
At the same time, Sviato remains free for regular users.
Pavlo would like to maintain this principle and not turn the service into a platform with intrusive pop-up advertising windows.
It’s still early days, but the first paid partners mean that Sviato is gradually moving from a personal project to a product that needs to find a sustainable funding model.
After school, there are four more hours of work.
The development of Sviato takes place in parallel with school work, which in itself is not limited to conducting lessons.
Pavlo has been teaching mathematics at Godomytska Gymnasium for three years. Later, he was offered the position of deputy principal. Together with the principal, he was among the first to introduce “Mriya” in the community: teachers work with electronic journals, and students with electronic diaries.
So digital tools for him are not just part of his own IT product. They are also part of the school’s daily work, where it is necessary to organize learning, work with information, and perform administrative tasks. The school day usually ends around three or four in the afternoon. After that, Pavlo switches to Sviato. On average, he devotes about four hours a day to the project — about 24 hours a week for six days.
We managed to find the most time for development in the summer, during the holidays. But even now, we have to manage everything: from fixing bugs to corresponding with brands and analyzing how users interact with the application.
The students know about Sviato, but Pavlo doesn’t advertise his product in class. He doesn’t want to use his position as a teacher to promote the service.
For now, the teacher says, he is also in no hurry to leave school for the sake of full-time work on the product. Sviato brings satisfaction, although there is also stress, worries and a constant feeling that there are more things to do than hours in the day. Pavlo is not sure that switching to full-time work on his own project would make him happier or more productive: there is a risk of burnout. Therefore, the mathematician is now trying to develop Sviato in parallel with his main job, checking whether the product can grow into a full-fledged business.
AI students, AI developers — the same problem
The developer uses artificial intelligence not only for programming. At school, he turns to it when preparing exercises, presentations, or structuring and analyzing administrative data.
The mathematician checks the results himself. According to his observations, the quality of the answers has improved noticeably recently. If about a year ago the AI could make mistakes even in simple examples of multiplying or dividing fractions, recently Pavlo has hardly noticed such errors.
Students also use AI, often to create a funny image or write a quick essay. But the finished text does not mean that the child understands the topic.
“If a student simply copied the answer and didn’t even read it, the learning didn’t happen,” Pavlo believes.
In his opinion, the teacher’s task is not going anywhere. It is necessary to explain the material clearly and interestingly, build a sequence of learning, support the student and check whether he has really mastered the topic. And here the teacher sees a direct parallel with development using exploratory intelligence. A student who copies the answer without understanding it resembles a developer who accepts generated code without understanding how it works.
His teaching experience also helps Pavlo in his own project. He is used to patiently explaining complex things, structuring information, communicating with people, and asking questions: why did we get this particular result and what is it based on? These skills are also important when working with AI, the teacher is convinced. In order to get a useful result, in his opinion, it is not enough to simply ask the model to do something. You need to formulate the task, provide context, evaluate the answer, and understand what to do with it next.
At the same time, Pavlo would like teachers to have more opportunities for development — in particular, funds for subscriptions, educational materials, and devices for themselves and their students.
Don’t wait until you’re ready.
In the future, Makhnovets wants Sviato to become a place where people find gifts, create wish lists, share them with loved ones, and gradually fulfill these wishes. He likes to imagine the moment when the list is filled and wishes are fulfilled — as a sign that the service really helps people. A separate goal is to support Ukrainian craftsmen and brands that create unique things, but do not always have enough opportunities to find their own audience.
For now, Sviato remains a project that Pavlo is developing in parallel with school. He is testing functions, looking for partners, analyzing user behavior, and gradually learning to build a business around his own development. For those who also want to create a product using vibecoding, he advises not to wait until you have all the necessary knowledge and a perfect plan. "You need to start, try, and learn from your own mistakes. After all, until you take the first step, there is no chance of turning your idea into a real product," the teacher summarizes.
From a pet project to 1000+ registered classes. How an IT guy from Dnipro created the website "Na Shtory" that saves parents from chaos in school chats
"Many students think they already know everything, quickly forgetting what they learned before." A computer science teacher who also works at SoftServe, about students' short-term memory, AI and digitalization at school, and life hacks for studying exact sciences
A computer science teacher from Kyiv, together with his students, created a war game called Ukrainians: Our battle. The release is coming soon, but for now, the developers are gathering those who want to play on the game’s Steam page.