Back to projects

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.

Next.jsTypeScriptnext-intlGSAPLenisReact EmailResendjsPDFVercel Analytics

Some details omitted under NDA

Salto

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.

Ready to build your project?

Let's turn your idea into a tailored digital solution.

Get in touch