Website & Proposals
Salto
A four-language site for a sales consultancy, plus a password-protected area with five sales decks and service orders signed on screen, turned into a PDF and emailed, with an alert if the email does not arrive.
Some details omitted under NDA

The problem it solved
The consultancy's own selling leaked in two places. The presentation changed from one meeting to the next, because each person assembled their own, so no client heard the same offer twice.
And the service order was filled in on paper: retyped afterwards, chased for a signature, and discovered days later to have never reached the client by email.
What the site delivers
The site in four languages
Portuguese, English, Spanish and Italian, with the choice remembered between visits.
A password-protected deck area
Five sales decks behind one password so everyone presents the same thing: full presentation, Salto presentation, websites and platforms, automation and Google Business.
Service orders signed on the spot
The form is filled in with the client present and both signatures, client and provider, are captured on screen.
PDF generated and sent
The signed service order becomes a PDF and goes out by email, with the file attached.
Technical briefing
A briefing form that emails the details gathered in the meeting.
An alert when the email does not arrive
If a message bounces, is delayed or is marked as spam, the team is told. A service order does not get lost in silence.
Conversions measured without exposing data
The event is sent from the browser and from the server with the same identifier so it is not counted twice, and email and phone are scrambled before they leave.
Social preview per language
The image that appears when a link is shared is generated on the fly, with the text in the right language.
How it turned out
- Everyone presents the same thing, because there is one deck and it sits behind one password.
- The service order is signed and sent before the rep leaves the meeting, as a PDF, with nothing retyped.
- Nobody asks whether the email arrived any more: if delivery fails, the alert reaches the team.
- Ad measurement works without sending email and phone numbers to the platform in the clear.
- Being clear about scope: there is no CMS and no database. The site content is changed in code, and the deck area is internal sales tooling behind a shared password, not a client area.
In numbers
4
languages
5
sales decks
2
signatures captured per service order
For technical visitors
The rest of this page is written for whoever decides the purchase. This block is for whoever has to maintain the site.
- next-intl on the pt, en, es and it locales, with messages split per namespace (10 namespaces across 4 languages) and a language cookie.
- The deck gate is a form that posts to an API route and sets an httpOnly cookie scoped to /deck for 24 hours, re-read server-side on every deck page.
- 5 decks across 20 slide files, served outside the locale routing with their own CSS and icons.
- jsPDF lazy-imported in 5 service-order components, A4 portrait in millimetres, with the PDF attached to the email as base64.
- 7 routes using Resend with 7 React Email templates. The delivery webhook verifies the svix signature headers and alerts on bounced, delayed, complained and failed events, filtered to the service-order tags.
- Meta conversions sent from the browser and relayed from the server sharing the same event identifier, with email and phone hashed with SHA-256 before sending.
- Dynamic OG image on the edge runtime, with per-language copy. GSAP always imported asynchronously and Lenis driven off the GSAP ticker, with ScrollTrigger kept in sync.
- Canvas signature capture for both client and provider, embedded in the generated PDF.