Back to blog

Building wezu.me: From Idea to Launch — My Micro-SaaS Journey

A honest account of building a micro-SaaS as a solo developer — the tech decisions, the mistakes, and what I learned shipping a product that helps freelancers close more deals.

Building wezu.me: From Idea to Launch — My Micro-SaaS Journey

Every freelancer knows the pain. A potential client lands on your LinkedIn, likes what they see, and then... disappears into a rabbit hole of tabs. Your GitHub is somewhere else. Your portfolio is on a different domain. Your Upwork reviews? Buried three clicks deep.

I lived this problem for years. So I decided to build the solution.

wezu.me is a micro-SaaS that turns your scattered professional presence into a single, interactive, AI-powered page. This is the story of how it went from a late-night idea to a live product.

The Problem That Started Everything

It was late 2023. I was freelancing full-time, juggling clients across Upwork, Workana, and direct contracts. Every time someone asked me, "Can you send me your portfolio?", I'd scramble to piece together five different links into a coherent message.

LinkedIn? Just a resume. GitHub? Just code — no context. A personal website? I'd abandoned it two years ago.

I realized something: no single platform lets you show the full picture. Not Linktree (too simple). Not a personal site (too much maintenance). Not LinkedIn (too rigid).

I wanted one link that said everything. And I wanted it to work for me while I slept.

The Build: Tech Stack Decisions

I'm a full-stack developer, so the temptation was to use every shiny tool in the ecosystem. I resisted. Here's what I actually chose and why:

Next.js (App Router) — Server components for SEO, client components for interactivity. The blog is MDX-based. The profile pages are dynamic. It just works.

Tailwind CSS v4 — Fast to iterate on. Dark mode and theming were critical since users customize their profiles.

Prisma + PostgreSQL (with pgvector) — Relational data for profiles, links, bookings. pgvector powers the AI Avatar's RAG (retrieval-augmented generation) so it can answer questions about a user's actual content.

LangChain + OpenAI — The AI Avatar isn't a gimmick. It indexes the user's bio, links, portfolio, and testimonials, then answers visitor questions using that context. When someone asks, "What projects has this developer worked on?", the AI pulls from real data.

Stripe — Three tiers: Free, Standard ($5/mo), Pro ($7.50/mo). Stripe handles checkout, webhooks, subscription management, and the customer portal. I didn't want to build billing.

Firebase Auth — Quick to set up, supports Google sign-in, and plays nicely with Prisma on the server side via Firebase Admin.

Supabase Storage — For avatar uploads and portfolio images. Free tier is generous.

The stack is not exotic. That's intentional. I wanted to move fast and sleep well at night.

What I Built First (And What I Should Have Built First)

I made the classic mistake: I built features before validating demand.

In the first two weeks, I had:

  • A full profile editor with drag-and-drop link management
  • Social network integrations for 18 platforms
  • Theme customization (fonts, colors, layouts)
  • An email signature generator

You know what I didn't have? A single person asking for it.

The turning point was showing a half-finished prototype to a freelancer friend. His response: "This is cool, but I'd never pay for it. Just give me the AI chatbot thing. That's what I actually want."

That hit hard. But it was the right signal.

The Pivot: AI as the Core, Not the Add-On

I restructured the entire product around the AI Avatar. Everything else — the links, the portfolio, the scheduling — became content that the AI uses to have better conversations.

The flow became:

  1. Set up your profile (fast, under 5 minutes)
  2. Train your AI (it reads your content automatically)
  3. Let it work (handles FAQs, captures leads, books meetings)

This reframing changed everything. The product wasn't "a better Linktree." It was a 24/7 sales representative that lives on your profile.

The Hard Parts Nobody Talks About

Lead Capture Is Not Just a Form

Adding a contact form is trivial. Getting people to actually fill it out is not. I learned that the AI chatbot converts 3x better than a static form because it meets visitors where they are — in a conversation, not a form field.

Scheduling Is a Minefield

Google Calendar integration sounds simple. It's not. Time zones, working hours, buffer times, cancellation flows, event creation, invite emails — each one has edge cases. I spent two full weeks just on the scheduling feature.

The Pricing Page Is the Hardest Feature

Three tiers. Each with different feature gates. Stripe checkout for paid plans, redirect to signup for free. The plan migration logic, the webhook handlers, the customer portal — the billing system has more code than some entire apps.

Internationalization Is Non-Negotiable

My target audience is global. English for the international market, Portuguese for Brazil. Every string, every error message, every UI element needed to support both. I built a custom i18n context with JSON locale files. No next-intl, no react-i18next — just a lightweight solution that fits the app.

What I'd Do Differently

  1. Launch uglier, faster. I spent weeks polishing the UI before showing it to anyone. Ship the rough version. Polish based on feedback.

  2. Talk to users before building. I had 15 features planned. Users only cared about 3. Build those first.

  3. Don't build your own auth. Firebase Auth saved me weeks. Worth every limitation.

  4. Price earlier. I launched with a free tier only. Adding paid tiers earlier would have validated willingness to pay from day one.

  5. Write the blog first. Content marketing takes months to compound. Start writing before you have a product to sell.

The Stack (For the Curious)

| Layer | Technology | |-------|-----------| | Framework | Next.js 16 (App Router) | | UI | Tailwind CSS v4 | | Database | Prisma + PostgreSQL | | AI | LangChain + OpenAI + pgvector | | Auth | Firebase Auth | | Payments | Stripe | | Storage | Supabase | | Analytics | Microsoft Clarity | | Hosting | Vercel |

Where It Goes From Here

wezu.me is still early. The roadmap includes:

  • Embed posts (rich cards for articles, videos, products)
  • Video embedding directly in profiles
  • Analytics dashboard so users can see what visitors click
  • Team plans for agencies and studios

The goal hasn't changed: make one link do the work of twenty.

Final Thoughts

Building a micro-SaaS as a solo developer is simultaneously the easiest and hardest thing I've done.

Easy because the tools exist. Next.js, Stripe, Firebase, Tailwind — you can build a production-grade SaaS in weeks, not months.

Hard because every decision is yours. Every bug is your bug. Every feature request is a prioritization challenge with no PM to delegate to.

But here's the thing: the constraint is the advantage. I can move fast because there's no committee. I can pivot because there's no org chart. I can ship on a Tuesday afternoon because I don't need anyone's approval.

If you're a freelancer thinking about building a tool to solve your own problem — do it. Start ugly. Talk to users. Ship fast. Iterate.

And if you want a single link that works harder than your entire online presence combined — try wezu.me.