miinideckmiinideck
PricingUse casesBlog
Sign in
By role

How to send a demo website to a business that hasn't hired you yet

You built a sample site for a local business on spec and it's still sitting in your AI builder. What the owner needs to be able to do with the link, what the builder's own URL, a Vercel deploy and a screen recording each give you, and how to send it as a private link that stays out of search and ends on its own.

By miinideck·October 22, 2026·10 min read
TL;DR
  • A demo for a business that hasn't hired you needs four things: the owner can open it with one tap and no account, it stays out of search, it comes down on its own, and you can tell whether it was opened.
  • The AI builder's own published URL is the quickest route. Check what it shows the owner (a badge, the tool's name in the address) and whether it's public and searchable on your plan.
  • Deploying to Vercel yourself gives you a real site, but the first deployment of a new project is a production one, and Vercel's Hobby plan is for non-commercial personal use. Whether a pitch counts, Vercel doesn't say.
  • For a static build, a private link covers all four: zip the output, upload, send. Free links expire after 7 days, which is about as long as a pitch should hang around.
  • When they say yes, the real site goes on their domain and proper hosting. The demo link was never meant to be it.

You used Lovable to make a sample site for the car wash down the road. It looks good. It has their name on it, their opening hours, a photo of the forecourt. It's sitting in your Lovable account, and the owner has never heard of you.

The site is done. What's left is getting the owner to open it, and that's the step people tend to get stuck on. A recent r/website thread asks it plainly: the poster has built demo sites for a car detailing business and a coffee shop with AI builders, knows how to deploy with GitHub and Vercel, and is stuck on what happens next.

What does a demo site need before I send it?

Before choosing how to send it, it helps to know what the link has to do. For a business that hasn't hired you, four things:

  1. It opens with one tap, no account. The owner is reading your message on a phone between customers. A login screen or an app download ends it there.
  2. It stays out of search. The page has their business name on it and they didn't ask for it. A Google result for "Joe's Car Wash" that leads to a stranger's demo isn't something you want them to find before you've talked.
  3. It ends on its own. If they say no, or never reply, the demo shouldn't sit online with their name on it for a year.
  4. You can tell whether it was opened. That tells you when, and whether, to follow up.

There's a fifth that's more about taste: when the owner opens it, it should look like your work, not like an ad for the tool you built it in.

Can I just send the link from Lovable, Bolt or v0?

You can, and it's the fastest route. Here's what each tool's documentation says, read on 2026-10-12. Check your own plan's settings, because these change.

Where the demo livesWho can open itSearchWhen it comes downWhat else the owner sees
Lovable (yourapp.lovable.app)Public by default: anyone with the URL. Free and Pro can switch a site to Invite only, which means adding the owner by emailLovable says only publicly published apps can be indexed. It doesn't say whether a regular lovable.app address is indexed by defaultStays live after you downgrade a plan. Unpublishing makes the URL inaccessibleAn "Edit with Lovable" badge, which Pro and above can hide
Bolt (a random bolt.host address)On the Free plan, all published sites are publicBolt says search engines can find and list public sitesUnpublishing takes it downA "Made in Bolt" badge, removed on Pro
v0 (a vercel.app address)Depends on your team's plan and deployment protection settingsSee the Vercel section belowv0's docs don't sayA vercel.app address
A screen recording or screenshotsWhoever you send the file toNot onlineNever, it's a fileYour cursor, not the site
A static build on a private linkAnyone with the link, no accountnoindex by default (on miinideck)On the expiry dateOn a free plan, the host's footer

None of these three builders says, in the pages we read, what happens to a published URL when you delete the project. If the demo has to come down, unpublish it rather than assuming deletion does it.

A recording is a useful backup to attach, but it's a weak pitch on its own. The owner can't tap through the menu or try it on their own phone, and that's most of what makes a demo convincing.

What about deploying it to Vercel myself?

If you already push to GitHub and deploy to Vercel, it's tempting. Two things to check first.

Indexing. Vercel adds an X-Robots-Tag: noindex header to every preview deployment. But, in Vercel's words, "The first deployment of a new project is always a production deployment", and Vercel doesn't say production .vercel.app addresses are noindex by default. Its own help article talks about what to do "If a production .vercel.app URL is being indexed alongside your custom domain". So for a demo, add a noindex tag yourself, and check the response headers with curl -I on the URL before you send it.

The plan's terms. Vercel's fair-use guidelines say:

Hobby teams are restricted to non-commercial personal use only.

The examples of commercial use include "Receiving payment to create, update, or host the site". A demo you build to win a client who hasn't paid you anything sits in a grey area that Vercel doesn't name. We're not going to decide it for them. If it matters to you, ask Vercel, or use a paid plan. We went through how to read these clauses in is client work allowed on a free hosting tier?

How to send it as a private link

This route works when the site builds to a folder of files: a plain HTML page, or a Vite, React or similar build. It doesn't run a server.

1. Get the built files out

You need either one .html file, or the folder your build produces, with index.html at the top. If your builder lets you export or sync the project's code, build it locally and you'll get that folder.

Before zipping, two checks:

  • Open index.html from the folder and click through every page. If it comes up unstyled, the build is probably using absolute asset paths. Set the base path to relative and rebuild.
  • Turn off source maps. They can ship your original source code next to the build. How to show a client their website before the final payment has the details and our test.

Routing. If the app uses hash-based routing (addresses like /#/menu), it works as it is. If it uses history-based routing (/menu), it works when the owner starts on the front page and clicks around. A link straight to an inner page, or a refresh on one, needs a server rewrite to find the page, and a static private link doesn't do that. So send the front page, which is what you'd send anyway.

2. Upload it

Zip the folder and upload the ZIP, or upload the single HTML file.

  • Without an account (the /try page): files up to 3 MB, the link disappears after 7 days, and there's no expiry setting. You can add a password, but you can't change it later. Fine for a quick test of what the owner will see.
  • With a free account: files up to 10 MB, links expire after 7 days by default, you can change or remove the password later, and the dashboard shows how many times each page has been viewed. Pages on the Free plan carry a "Powered by miinideck" footer, which the owner will see.

Either way, the page is noindex by default and the address ends in a 32-character random string, so it isn't in search and nobody stumbles on it.

Drop your demo's HTML file and open the link on your phone, the way the owner will. To track opens or change a password later, sign in first. Both come with a free account.

Try it free (no signup)

3. Send it to a person

Send it to the owner or manager by name if you can, not to a general inbox. Keep the message short and say what it is, why they're getting it, and when it goes away:

Hi Dana, I build websites for local businesses. I put together a sample of what a site for the car wash could look like: [link]. It's private and comes down next Friday. If you like where it's going, I'd be happy to talk it through.

Saying when it comes down is true on a 7-day link, and it gives them a reason to look this week rather than someday.

4. Follow up when they've looked

On the Free plan you'll see a view count next to the page in your dashboard. The Solo plan ($4.99/mo) adds the date it was last viewed, a 30-day daily chart and referrers, which is the difference between "opened at some point" and "opened yesterday". Views are counted by a script that runs when the page opens, so a chat app fetching a link preview doesn't add one. Still treat a single view as a hint, not proof: a forwarded link counts too. What the timing tells you, and how to use it, is in who opened my shared link?

If a week isn't long enough, a Free account can keep one page up permanently, and on Solo and Studio you set the expiry date yourself.

They said yes. Where does the real site go?

Not on the demo link. A demo link is noindex, has no backend, and expires. The real site needs the opposite of all three.

The real site goes on their domain, on hosting that suits what it does: Vercel or Netlify for a site built with a modern framework, or the hosting the AI builder offers if you're staying in that tool. Agree who owns the hosting account and the domain before you set them up.

If the owner wants to see the finished version before the final payment, that's a different situation with its own rules. How to show a client their website before the final payment covers what to hold back and how.

What a demo link can't do

  • Run a server. Booking forms that save to a database, logins, payments: none of that works on a static link. Show the design of the form and say it'll work on the real site.
  • Stop saving. Anyone who can open a page can screenshot it or save a copy. A demo link controls where the page lives and when it ends, not what the owner has already seen.
  • Make the pitch for you. The link gets the site in front of the owner. Whether they reply depends on whether the site solves something they care about, like being findable, or taking bookings without the phone ringing.

More in By role

How to show a client their website before the final payment (without launching it)

Launching a site and handing it over have become the same click, which is why freelancers stall when a client says 'looks great, put it live' before the last invoice is paid. What you can hold back until payment, what you can't, six ways to show the work without launching it, and a step-by-step for static builds.

October 18, 2026·10 min read

Do you need a client portal, or just a link for each thing? (2026)

"Client portal" is one word covering two very different jobs. One of them needs software with logins and permissions. The other one is four links in an email, and buying the first when you needed the second is how a solo practice ends up administering a system nobody logs into.

September 21, 2026·6 min read

Share a portfolio piece before the full site is public (2026)

You have one finished case study but the portfolio site isn't live yet. Here's how to send that single piece as a private link — without pushing a half-built site or flattening it into a doc.

September 19, 2026·6 min read

Send your own private link.

miinideck turns a single HTML file into an unguessable link with optional password and expiry. Default-private, never indexed.

See the use casesTry it free →
miinideck

HTML files, finally as links — for AI builders, agencies, and consultants. Default-noindex, default-private, default-yours.

Product

  • Pricing
  • Use cases
  • Free HTML hosting
  • Try it free

Resources

  • Blog
  • Free tools
  • Featured on
  • Report abuse

Legal

  • Privacy
  • Terms
Listed onmiinideck listed on Product Huntmiinideck listed on Faziermiinideck listed on TheSaaSDirmiinideck listed on AIToolHuntmiinideck listed on LaunchNest
© 2026 miinideckMade for people who don't want their work indexed.