Sometimes the best thing a failed freelance project can do is reveal what you should be doing instead. André Elias, a developer who advocates earning from your own products, accepted a R$6,000 freelance job that he could not complete. Losing that project opened the door to a startup role in Estonia that he says will teach him more than solo product work ever could.
How a failed freelance project started with a micro-SaaS
A failed freelance project forced Brazilian developer André Elias to rethink his solo-product philosophy. In a video published on 7 October 2025, he explains why he accepted a R$6,000 job he could not finish, what the PDF pipeline had to do with it, and how an Estonian startup offer made him hand the work to a friend.
André runs a YouTube channel about programming and builds his own micro-SaaS products. One of them is a WhatsApp chatbot that answers biblical questions, built for people who want quick answers about faith without searching through texts manually. The product uses Stripe, the payment processing platform, for subscription billing. Since launch it generated over R$12,000 in total revenue and peaked at R$1,500 in monthly recurring revenue, according to figures the speaker shared on his channel.
A viewer watched André's video about building the chatbot and asked whether he would build a similar product for a different niche. André usually declines one-off freelance requests, but because the codebase already existed, the adaptation seemed straightforward. He accepted the job for R$6,000.
The table below shows how the client's project differed from the original product that inspired it.
| Aspect | Original micro-SaaS | Freelance adaptation |
|---|---|---|
| Domain | Biblical Q&A chatbot | Client's specific niche |
| Payment model | Subscriptions via Stripe | Fixed fee of R$6,000 |
| Extra requirement | None | User PDF ingestion up to 10 MB |
| Revenue | Peaked at R$1,500 MRR | Split into two R$3,000 payments |
What looked like a simple code adaptation became the failed freelance project he describes as the only job he never completed in his career.
What made the PDF pipeline the hardest part
Ingesting PDF files up to 10 MB per user pushed the developer into vector search and cost optimization, techniques he had never implemented in production before this project.
Feeding a 10 MB document directly into an AI model's context window on every message would have driven inference costs to a level that made the R$6,000 fee unprofitable. The solution required a vector database to store document embeddings and a retrieval step that surfaces only relevant chunks when a user asks a question.
This single requirement turned a copy-and-adapt job into a project with genuine unknowns. André recognized the risk when he accepted the work but underestimated how much time the vector search implementation would consume, especially while maintaining his own products and publishing videos.
How to build a WhatsApp bot with Meta's API
Building the bot required five setup steps on Meta's platform, and the most difficult part was getting approval for production use.
The WhatsApp Business Platform provides the infrastructure for receiving and sending messages through a dedicated phone number. According to the speaker, the setup follows this sequence:
- Create a Meta business account.
- Register an application on Meta for Developers.
- Configure a webhook that Meta calls when a message arrives at the linked number.
- Point that webhook to an endpoint in your own application.
- Link the bot's phone number to the registered app.
Once configured, every message sent to that number triggers a notification to the application endpoint. The speaker emphasized that the hardest step is not the technical setup but Meta's production approval process, which requires proving that a real business exists behind the application.
Why the developer traveled to Curitiba
André traveled from Belo Horizonte to Curitiba to pair-program with Eduardo, a junior developer he had recently hired, and unblock the PDF processing work in person.
André had hired Eduardo to help with an increasing workload across his own products and freelance demands. He assigned Eduardo the client project, using the existing chatbot codebase as a starting point. The prompt configuration page, user authentication, and agent editing features were already built. The webhook integration with Meta's platform remained incomplete.
The plan was to arrive in the morning, work through every blocker in real time, and finish in one day. They worked from morning until night. By the end of the session they had unlocked several pieces of the integration and advanced the remaining logic. The project needed one more focused day, and the Stripe payment connection for the client's own customers had not yet been wired in.
The Estonia offer that changed the plan
A three-day paid trial at an Estonian startup pulled André's attention away from freelance work and toward a different career direction entirely.
After the Curitiba trip, André received an invitation to test with a company in Estonia. The company covered all expenses for a three-day evaluation. The opportunity to work on a startup with global reach made him reassess his priorities. He had built his personal brand around the idea that developers can live off their own products, but this offer asked him to set that philosophy aside for a steeper learning curve.
Splitting the fee with César
Rather than leave the client without a delivery, André reached out to César, a friend who runs a software house and had completed similar chatbot projects with his team before. They agreed to split the original R$6,000 fee evenly: André kept R$3,000 for the work already completed, and César received R$3,000 to finish and deliver the project.
The failed freelance project ended without a loss for the client, without unpaid work for either developer, and without André abandoning his commitment to the person who hired him.
What the failed freelance project actually taught
Knowing when to hand off a project protects the client relationship and your own career trajectory at the same time.
André continued working with Eduardo on maintaining and improving his SaaS products. As of 2026, his stated primary focus is growing a startup at global scale. He framed the trade-off as exchanging the independence of solo product work for the learning speed of an international team.
The failed freelance project also demonstrated the value of building in public. André received the offer because he published a video about his micro-SaaS and documented how he made it work. That visibility created the opportunity, even though the outcome differed from what he planned.
Frequently asked questions
- How much did the freelance project pay? The original fee was R$6,000. When André reassigned the project to César, they split it evenly: R$3,000 each for the work done and the final delivery.
- What was the hardest technical challenge in this failed freelance project? Ingesting PDF files up to 10 MB per user. Feeding them directly into an AI context would have been too expensive, so the developer needed a vector database and retrieval optimization, a pattern he had not used before.
- Why did André Elias not finish the project himself? He received a work opportunity from an Estonian company and chose to pursue it. He passed the freelance job to a friend with an established software house rather than leave the client without a delivery.
- What tools do you need to build a WhatsApp chatbot? A Meta business account, an app registered on Meta for Developers, a configured webhook, an endpoint in your application, and a linked phone number. Getting production approval from Meta is the most difficult step according to the speaker.
Your video stories deserve a written form
André told this story in an eight-minute video. The same specificity and honesty work in written form, where readers can scan the numbers, quote the decisions, and find the article when they search for advice on handing off their own projects. If you have lessons, explanations, or hard-won stories inside your YouTube videos, Skala Blog turns them into structured articles: paste the video URL, get a transcription, and generate a draft you can review and publish.
Fork this article
Start a new branch from the same video, shaped your way. You keep the credit; the original keeps the attribution.
A fork in another language is filed as a translation of this article, so the two pages point at each other. You can unlink it later from the editor.
0/240
You are creating
- Format
- For
- Language
- Source
- Your angle
You will be asked to sign in before it is generated.
Buy credits