Home/Thoughts
Thoughts

Almost There Is Where Projects Die

The last-mile delusion is the most expensive cognitive bias in startups - and founders keep falling for it.

The Most Dangerous Phrase in a Startup

I was on a call with a guy I've been working with to ship a product. We'd been grinding through it - front end, Stripe integration, pricing page, chatbot. Real work, real progress. And near the end of the call, I said something I've said a hundred times before: once the API is in, then we're almost there.

His response stopped me cold. Not because it was wrong - because it was honest in a way that most founders aren't. He said something like: it will be if you test from your end and some stuff we find in the API implementation.

That hedge. That qualifier. That's someone who's been in the trenches long enough to know what "almost there" means. It means: we're not there. We're close, but close in software is a different country from done.

I've been building companies for over a decade. I've had five SaaS exits. And the phrase "almost there" has burned me more times than any bad hire, any missed sales target, or any churn spike. It is, without question, the most dangerous phrase in a startup - and I want to spend some real time on why.

The Last-Mile Delusion

Here's what happens with software projects, and probably every complex project you've ever built:

The first 80% of the work takes roughly 80% of the time you planned. The last 20% takes the other 80% of the time you had left - and then some. This isn't a new observation. Engineers have known about it forever. But founders keep getting surprised by it, because there's a cognitive bias that kicks in right around the 70-80% complete mark that makes you feel like you're at 95%.

I call it the Last-Mile Delusion.

You can see the finish line. The product mostly works. The major features are in. You've been demoing it to people. Your developer says the remaining stuff is "small." You start telling investors you're almost there. You tell your team you're almost there. You tell yourself you're almost there. And then weeks pass. Then months. And you're still almost there.

On this call, we were looking at a pricing page - bronze, silver, gold tiers. Stripe integration. An annual vs. monthly toggle. A chatbot built by a third contractor. And every single one of those pieces had a tail attached to it that wasn't visible until you pulled on it. The Stripe checkout needed to clearly display the annualized billing amount. The annual plan needed to be the default. The discount percentages needed to match across the UI. The chatbot developer needed to share an API before it could be connected. The domain migration had broken something unrelated. The backup had been corrupted during a reset. A Webflow page was stuck in preview, not pushed live.

None of these were catastrophic problems. But every single one of them was a thing that had to get done before the product was live. And every single one of them was invisible when we were saying "we're almost there" two weeks before.

Almost There Is a Status Report, Not a Timeline

The thing founders get wrong - and I've gotten this wrong too - is treating "almost there" like it's a timeline. It's not. It's a status report. It tells you where you are right now. It tells you nothing about how long the remaining work will take.

When my contractor said "it will be if you test from your end and some stuff we find in the API implementation" - that's a sophisticated engineering answer. What he was saying is: we don't know what we don't know yet. The API might be clean. Or testing might surface three new edge cases that each take a day to fix. Or the Stripe webhook might not play nice with the frontend toggle logic. Or the chatbot API response format might be different from what the frontend expects.

That's not pessimism. That's experience talking.

The founders who get into real trouble are the ones who hear "almost there" and immediately start planning the launch party. They email their list. They tell their investors the product ships next week. They stop doing sales because "what's the point, we'll have a product to demo soon." And then the three-day final sprint turns into a three-week slog, and now you've burned credibility in every direction at once.

Free Download: 7-Figure Offer Builder

Drop your email and get instant access.

By entering your email you agree to receive daily emails from Alex Berman and can unsubscribe at any time.

You're in! Here's your download:

Access Now →

I've Lived This. It Wasn't Fun.

I'm not lecturing from a distance here. I had a course called StartYourSaaS a couple of years back. I was coming off an acquisition, feeling invincible, and figured I could build and sell a SaaS fast enough to make a compelling course out of it. Sold somewhere between $20,000 and $30,000 worth of courses. Put all the students in a Slack community. Started building. Hired devs. Reported progress.

For a year and a half, I was almost there.

I sent cold emails. I booked meetings. I got into rooms with multi-million-dollar companies who wanted our solution. But I couldn't demo it because it didn't work. Not fully. Not in a way that converted. The product existed. The product mostly functioned. But "mostly" in a demo environment is not the same as production-ready, and enterprise buyers know the difference the second you start sweating through the Q&A.

In my private community, people were getting loud: Where's the SaaS? Where's the SaaS?

I was almost there for eighteen months. And eventually I had to write a post-mortem - a public explanation of why the business failed. That's what "almost there" cost me: eighteen months, $20K+ in student trust, and a product that never shipped. The worst part? At every stage, I believed we were close. The feeling of proximity was not a lie I was telling others. It was a lie I was telling myself.

That post-mortem forced me to get honest about where my real weakness was. It wasn't sales. I can close. It wasn't marketing. I can generate leads. It was product - specifically, I was trying to build something I didn't fully understand how to build, which meant I couldn't accurately estimate how far away "done" was. My map of the remaining work was wrong, so my ETAs were wrong, so my planning was wrong. All downstream from one bad mental model about how close we were.

How to Diagnose Whether You're Almost There

After living through that experience - and working with hundreds of founders in similar situations - I've developed a simple diagnostic for separating real proximity from the delusion. Ask these questions:

1. Can you demo it live, unscripted, to a stranger?

Not a rehearsed walkthrough. Not a video. Not a sandbox environment. A live demo, in front of someone you've never met, answering questions you didn't prepare for. If you can't do that, you're not almost there. You might be 60% there. Maybe 70. But not almost.

On this call, the chatbot wasn't connected yet because the contractor hadn't shared the API. Which means you couldn't demo the chatbot. Which means a core feature of the product was invisible to any potential customer. That's not almost there.

2. Is there a handoff you're waiting on that you don't control?

On this call: the contractor needed to share the API. Webflow needed to push the site live (they were still working on it when we were on the call). The domain migration needed to get resolved because it was breaking the Galadon pages. Three external dependencies, none of which were in our direct control.

Every external dependency you're waiting on is a wildcard. It might resolve in an hour. It might take a week. If your "almost there" is contingent on someone else moving first, your ETA is not yours to set.

3. Have you done a testing pass from the customer's perspective?

Not from inside the app. Not from the developer's machine. From a clean browser, as a new user, clicking every button, entering bad data on purpose, testing edge cases. On this call, the explicit next step was that I needed to test from my end. Until that's done, you don't know what you don't know. That test pass will find things. It always finds things.

4. Is the billing working end-to-end?

This one sounds obvious, but it trips up more launches than I can count. On this call, we were still sorting out whether the Stripe checkout would correctly display the annualized billing amount - because if someone selects the $39/month plan billed annually and then hits checkout and sees a number that looks random, they abandon. We needed the checkout to clearly say: $39/month, billed as $468/year. That's not complicated logic, but it has to be right. And it wasn't confirmed right yet.

If your billing flow has any ambiguity, you're not almost there.

5. What happens when it breaks?

On this call, a backup had gotten corrupted. Not from negligence - from resetting during an active backup process, which is an easy mistake. The site stopped loading. No error message, just... nothing. Fortunately, the hosting provider was able to restore it. But that's a recovery that took time and a support conversation that was happening in parallel with everything else.

What's your recovery plan when something breaks post-launch? If you don't have one, you're not almost there - because the first thing that breaks after launch will feel like a crisis, and you'll scramble reactively instead of executing a plan.

The Velocity Trap

What I noticed on this call - and this is a positive sign - is what happens when you move to daily syncs. I said it directly: working together over the last week, we've gotten more done than we had in the last several months.

That's not an accident. Daily accountability changes the texture of the work. Things that sit for a week because there's no pressure to resolve them get resolved in 24 hours because someone's going to ask about them tomorrow. The Webflow issue that was hanging got escalated. The Stripe display issue got caught and fixed in real time. The pricing page UI got reviewed, iterated on, and updated within a single call.

Momentum is a force multiplier. But it doesn't make the remaining work disappear - it makes it visible faster. Which is the thing you want. You want to surface the remaining problems quickly so you can solve them quickly, not discover them after you've told everyone you're shipping next week.

If you're in the final stretch of a project and you're not talking to your team every single day, you are leaving time on the table. Not because people are slacking - but because asynchronous communication creates gaps, and gaps in the final 20% are where projects go to die.

Need Targeted Leads?

Search unlimited B2B contacts by title, industry, location, and company size. Export to CSV instantly. $149/month, free to try.

Try the Lead Database →

What to Tell Investors and Customers Instead

So if you can't say "we're almost there," what do you say?

You say what's true. You describe the specific open items. You give a range, not a date. And you give them a trigger: once the API is integrated and we've done a full test pass, we'll have a shipping date.

That's a different sentence from "we're almost there." It's more honest, it's more specific, and it's more confidence-inspiring to sophisticated listeners. An investor who's been around knows what "almost there" means. They've heard it before. It signals that you either don't know what's left, or you're afraid to say it. Either way, it erodes trust.

The trigger-based update does the opposite. It tells them: I know exactly what has to happen before I can give you a real date. I'm tracking it. When it's done, you'll know. That's a founder who has command of their process.

The Payment Conversation Every Founder Avoids

One more thing from this call worth talking about, because it comes up constantly with remote development teams.

Near the end of the call, I got asked whether we should cover a partial payment for the contractor who'd done the chatbot development. The suggestion was around $600-$800. My first instinct was to ask: what happens if we pay and they disappear?

The response I got back was honest: I don't think that will happen.

That's the right frame. If you've been working with someone for a period of time, you have signal on their reliability. The risk of a contractor disappearing at the 90% mark - if they're someone who's been showing up and communicating - is low. And the cost of them losing motivation because they're owed money is higher than the cost of the partial payment.

Keeping contractors paid and motivated in the final stretch is part of getting a project across the finish line. Don't let accounts payable become a reason your project stalls at almost there.

Close the Gap

If you're working on a product right now and you've been telling people you're almost there, do this exercise: write down every single open item. Not the big ones. Every one. The billing display. The domain fix. The contractor API handoff. The test pass. The edge cases you haven't stress-tested. The recovery plan for when something breaks post-launch.

Now look at that list. Count the items. Estimate each one honestly - not optimistically. Add them up.

That's your real timeline. Not "almost there." That's what you owe your investors, your customers, and yourself.

The founders who ship on time are the ones who treat "almost there" as a trigger to get more specific, not more comfortable. They know that proximity to the finish line is when focus matters most - and when the Last-Mile Delusion is hardest to fight.

Don't tell me you're almost there. Tell me what's left.

If you want a system for running this kind of final-stretch accountability with your own team, check out my Discovery Call Framework - a lot of the structure I use in coaching calls comes from the same process. And if you're at the stage where you're building your prospect list to sell whatever you're about to launch, ScraperCity's B2B lead database is what I use to source contacts before a launch push. Don't wait until the product is live to start building your outreach pipeline - that's another version of the same delusion.

Ship the thing. Then close deals. In that order. And know the difference between almost and done.

Ready to Book More Meetings?

Get the exact scripts, templates, and frameworks Alex uses across all his companies.

By entering your email you agree to receive daily emails from Alex Berman and can unsubscribe at any time.

You're in! Here's your download:

Access Now →