DEV Community

Aldo Barbosa
Aldo Barbosa

Posted on

Built a simple client sign-off portal to stop endless unpaid revisions

anyone who freelances knows the pain: you finish a website build, send it over, and suddenly the client remembers 10 "small tweaks" that end up taking another week of unpaid work.

i tried using trello, jira, and notion to get them to sign off on stages, but non-tech clients never bother creating accounts. they just ignore the invite and text you on whatsapp anyway.

got tired of arguing about scope, so i put together a lightweight tool called Velloxis.

the idea is stupidly simple:

  • you send the client a private link (no login, no password, no signup for them).
  • they see what’s done for that milestone.
  • they click a button to approve it before you start the next phase.
  • it logs a timestamped sign-off.

now if they come back later asking to redo something they already approved, there is a clear record and it makes charging for extra hours way less awkward.

curious how other devs here handle milestone sign-offs with stubborn clients?

Top comments (5)

Collapse
 
routinekit profile image
RoutineKit

The no-login link is the right call — every sign-off tool I've tried died the moment a non-tech client had to make an account. Two things that made this work for me beyond the approval button: first, define "done" in the proposal itself as a numbered list of deliverables per milestone, so the approval page is just echoing language the client already agreed to. Second, write the revision policy into the same doc (e.g. two rounds per milestone, anything after is billed hourly at $X) — the timestamped approval only has teeth if there's a stated consequence attached to it. I also send a short "here's what's approved, here's what's next, here's what's out of scope" note in whatsapp right after each sign-off, because that's where the client actually lives and it makes the record feel like a courtesy rather than a legal trap. On the tooling side, the one field I'd add is a free-text "anything you want changed before you approve?" box, since clients who feel unheard are the ones who reopen closed milestones. Worth logging the client's IP/user agent alongside the timestamp too — cheap to add, and it removes the "I never clicked that" argument entirely.

Collapse
 
aldobarbosa profile image
Aldo Barbosa

Thanks for the thoughtful feedback, this is super solid advice!

Totally agree on the "anything you wanted changed before approving?" prompt. Giving the client a dedicated moment to speak up right before the sign-off removes any "I didn't notice this earlier" excuses later on.

Also really like the idea of logging client IP/User-Agent alongside the timestamp to make the audit log watertight without adding friction.

Appreciate you taking the time to share your workflow!

Some comments may only be visible to logged-in visitors. Sign in to view all comments.