2
6 Comments

Stop losing deals in the gap between "sounds good" and getting paid

The slowest part of freelancing was never the work. It was the gap between a client saying "sounds good" and money actually landing in my account.

The pattern never changed. Good call, then "send me a proposal", then I spend an evening on a PDF and hear nothing back. No idea if anyone even opened it. When someone did say yes, the deal still had to survive printing, signing, scanning, and a separate invoice in a third tool. The work was never the slow part. The gap between yes and money was.

So for the last two months I built Pactiamo. A proposal or contract becomes one link. The client opens it, reads, signs in the browser, and pays through your own Stripe, PayPal, or bank link. No account for them to create, and I never touch the money. AI writes the first draft, there is a legal check that flags the clauses working against you, and view tracking plus reminders do the chasing so you stop refreshing your inbox.

Two honest things about how I built it.

What I'm glad I did: I used it for my own work before showing anyone, which kept me from adding features nobody asked for. And I put real effort into the client-facing side, because the person who signs never sees my dashboard, they see one page, and that page is the whole product.

What I skipped and now regret a little: I did almost no market research up front. I asked an AI what a solo dev could build, it suggested this space, the reasoning sounded good, and I just started. There were nights I wondered if I was building something nobody wanted. I still don't fully know. Today is the first real test.

It's a solo full stack build on Next.js and Postgres, nine languages, and I'm figuring out SEO from zero at the same time.

If you send proposals for a living, I'd genuinely like to know: what would it actually take to move you off PDFs? Honest teardowns welcome, that's more useful to me today than a nice word.

We're live on Product Hunt right now if you want to see it: https://www.producthunt.com/products/pactiamo

posted to Icon for group Building in Public
Building in Public
on July 24, 2026
  1. 1

    One thing I'd flag from the payment side, since I built something similar (a one-time-purchase flow for a Mac app: Stripe checkout, webhook, then deliver a license, no server the customer ever sees).

    The gap that bit me wasn't the workflow, it was trusting the wrong signal for "the client paid." checkout.session.completed fires when checkout finishes, not always when the money has actually settled. Delayed payment methods go through the same event before the charge clears, so if delivery is wired purely off that webhook you can end up granting access before you're actually paid, or double-processing if Stripe retries the webhook and the handler isn't idempotent.

    Two things that saved me: checking payment_status explicitly instead of trusting the event type, and making the "unlock this" step idempotent (a unique constraint on the session or payment id) so a retried webhook, or the client refreshing the page after signing, doesn't fire twice.

    Given Pactiamo also lives at the "did they actually pay" moment, this seems worth a deliberate look before it's the thing that quietly loses a deal you thought had closed.

  2. 1

    The gap between client approval and payment is a clear workflow problem.

    What would convince you that the main reason deals stall is the proposal-to-payment process itself, rather than a broader issue around client trust, budget approval, or buying friction?

    1. 1

      You'd be right to push back, and I'm not going to pretend the process is the main reason deals stall. Trust, budget, and internal approval kill far more deals than a clunky handoff, and most of those were dead before the proposal ever went out.

      Where the process actually bites is narrower. It's the deals that already had a yes in them and then leaked time and certainty in the gap. The client was in, but the PDF sat unopened for a week, or the signature waited on a printer, or the invoice got buried under everything else. Honestly I can't measure that pile cleanly yet, which is the real answer to your question. The one signal I trust is that the complaint I heard most as a freelancer was never that my work cost too much, it was that it got lost in someone's inbox. That is the failure I'm building against, not the decision to buy. If that pile turns out to be small, that is a genuine risk to the whole idea.

      1. 1

        Appreciate the honesty and context.

        Would be good to continue the conversation as you learn more about that gap and how customers experience it.

        What's the best email to reach you on?

        1. 1

          Easiest is X, I'm @leomiller_dev and my DMs are open, that's usually the fastest way to reach me. If you'd rather do email, [email protected] works too. Either way I'll be digging into how real users hit that gap over the next while, so I should have more worth comparing soon.

          1. 1

            Thanks! I’ve just sent it over.

            Looking forward to hearing your thoughts whenever you have a chance.

Trending on Indie Hackers
I built an AI that turns an idea into a live business in under 10 minutes. Here’s what 1,000 launches taught me User Avatar 88 comments Building a startup costs $0. Your tooling budget costs $500K. Here's why. User Avatar 35 comments Building Noodle, a keyboard-first REST client for the terminal User Avatar 33 comments "Looks Good to Me" Is Quietly Killing Your Feedback Loop User Avatar 31 comments 787 tools for developers. 5 for nurses. Two weeks of tracking 14,000 indie launches. User Avatar 23 comments I didn't want to build another AI chatbot User Avatar 16 comments