Meet Kaloyan Stoyanov, a tech lead who turned his passion project into a full-fledged SaaS product, and sold it within days of launching it.
A year before officially launching NuloApp, Kaloyan realized that many creators in the "faceless YouTube channels" niche were using tools like Opus.pro to generate short-form content from long-form videos, but these tools were very expensive. Without yet earning revenue from YouTube or TikTok, Kaloyan decided to take matters into his own hands, building his own tool in just a month.
Initially, his tool automatically created and uploaded shorts, but after some time, when his channel didnât pick up, he stopped the project. Fast forward to a year later, and YouTube's algorithm brought similar content back into his feed, reigniting his passion. This time, Kaloyan took it further by transforming his tool into a SaaS product: NuloApp.
The Problem NuloApp Solvesâ
NuloApp is an AI tool designed to make video content creation simpler by converting long-form videos into short clips that have the highest chance to capture audienceâs attention. It resizes content from horizontal (landscape) to vertical (portrait) for platforms like YouTube Shorts, Instagram Reels, and TikTok, helping creators push content faster.
Tech Stack Overviewâ
- Framework: Wasp
- Payment integration: Stripe
- Other tools: OpenCV, FastAPI, Meta's llama, OpenAI's Whisper, LangChain
- Database: PostgreSQL
Programatically Editing Videosâ
The real genius behind NuloApp is the way that Kaloyan combined a number of tools to programatically edit the longer form videos and podcasts, into short, engaging clips for social media.
First of all, OpenCV, an open-source computer vision library, was used as the main editing tool. This is how NuloApp is able to get the correct aspect ratio for smartphone content, and do other cool things like centering the video on the speaker so that they aren't out of frame when the aspect ratio is changed.
In order to programtically get the correct clips to extract, AI tools like Meta's llama-3-70b LLM and OpenAI's Whisper were also used. Whisper allowed for fast speech-to-text transcription, which could then be passed on the llama in order to find segments worth extracting.
Putting these tools together and accessible via a standalone API was the final step in this process. But this really clever combination of tools was just one part of puzzle. The next problem to solve was how to deliver it all as a SaaS app that users could pay for?
Why Wasp?â
When Kaloyan decided to relaunch his tool as a SaaS product, he didnât have time to spare. He needed a framework that would allow him to build and deploy quickly. Thatâs where Wasp came in.
âI was looking for a quick and easy-to-use boilerplate with most SaaS app features already pre-built so I could deploy faster,â says Kaloyan. Waspâs SaaS boilerplate starter, with well-structured documentation, alongside its responsive Discord support, made it the ideal choice.
The Impact of Wasp on Developmentâ
Kaloyan was particularly impressed with how Wasp simplified complex tasks that would normally take much longer to implement. From setting up Google logins and dark mode switches to creating hourly jobs, the development process was smoother than expected. âEverythingâfrom enabling Google logins to creating hourly jobs I badly neededâwas way too easy to set up.â.
Auth and Stripe Integration Made Easyâ
One of Kaloyanâs least favorite tasks as a developer is building out authentication systems, and he found that even implementing third-party libraries could be frustrating. Fortunately, Waspâs boilerplate made the process of setting up authentication and pre-configuring Stripe for payments seamless.
Here's what wasp.config
file looks like, through which you can define full-stack auth in a Wasp app.
app myApp {
wasp: {
version: "^0.14.0"
},
title: "My App",
auth: {
// 1. Specify the User entity
userEntity: User,
methods: {
// 2. Enable Github Auth
gitHub: {},
email: {
// 3. Specify the email from field
fromField: {
name: "My App Postman",
email: "[email protected]"
},
// 4. Specify the email verification and password reset options
emailVerification: {
clientRoute: EmailVerificationRoute, //this route/page should be created
},
passwordReset: {
clientRoute: PasswordResetRoute, //this route/page should be created
},
// Add an emailSender -- Dummy just logs to console for dev purposes
// but there are a ton of supported providers :D
emailSender: {
provider: Dummy,
},
},
},
onAuthFailedRedirectTo: "/login"
},
}
And here's a 1 minute demo:
Additionally, the framework's job scheduling features helped Kaloyan avoid the headache of configuring cron jobs on Docker containers.
Fast Acquisition: From Launch to Sale in 24 Hoursâ
Upon launching NuloApp, Kaloyan listed the product on Acquire with the primary goal of gathering feedback from potential buyers about what features or metrics they value most in a SaaS product. To his surprise, within the first day of listing, he received multiple offers. After a brief meeting with one interested buyer, they quickly agreed on a $20k deal, validating the product's value and market potential.
Advice for Builders Considering Waspâ
If you're considering Wasp, Kaloyanâs advice is clear: Wasp is easy to get started with and flexible enough to build what you need without adding unnecessary complexity. For Kaloyan, Wasp was ideal because it handled the boilerplate while still giving him the freedom to customize as required. "The documentation is also solid, which definitely helps when you're moving quickly.â
Next Stepsâ
If youâd like to follow in Kaloyanâs footsteps, this is how to get started with the boilerplate he used.
Open your terminal and install Wasp:
curl -sSL https://get.wasp-lang.dev/installer.sh | sh
From there you only need to run:
wasp new -t saas
Thatâs it, youâre one step closer to building your first SaaS!
Feel free to join our Discord to connect with other builders and get support from the Wasp community. See you!