The product we point to when someone asks whether we ship.
Overview
Invuna is the SaaS we own end-to-end. Strategy, design, code, infrastructure — every decision is ours, and every consequence is ours. A user describes an event in plain language; the product generates the copy, generates the artwork, assembles the card, and ships it across WhatsApp, Telegram, Instagram Story, Facebook, email, and direct link. Auth, payments, multilingual routing, RSVP dashboard — all in place. All custom-built. Live at invuna.com.
This is not a client case study. This is what we build when the brief is ours.
The shape of the product
- 0
- Languages live
- 0
- Share channels
- 0
- AI models in pipeline
- 0
- Bill, no subscription forced
The Challenge
The invitation software market is broken in a specific way. Every existing tool forces the user to pick a template, crop a photo, fill thirty form fields, and hope the result doesn't look like a 2015 eCard. The templates are generic, the design systems are rigid, and the words on the invitation — the actual content — are left entirely to the user. So most invitations sent through these platforms are ugly, long-winded, and forgettable.
We wanted to find out what happens when the software does the work the user actually hates. Describe the event. We generate the words. We generate the visuals. We handle the sharing. We track the RSVPs. The user describes the moment. They don't become an amateur graphic designer at 11pm before a baptism.
01 · The single input

Doing that end-to-end meant building a real SaaS product, not a marketing page with a sign-up form. Authentication. Payments. AI pipelines for both text and imagery. An RSVP system with guest tracking. A calendar that respects time zones. Multilingual routing. Analytics. Legal pages. Everything a consumer SaaS actually needs.
The Approach
We picked the stack deliberately, against the grain.
Not WordPress. This is a product, not a content site.
Not a heavy React framework either. The product is consumer-facing, has to load fast on phones, and didn't need the abstractions of Next.js for its core flow. A lean stack was the right answer.
Vanilla JavaScript on the frontend, Express on the backend, DigitalOcean App Platform for hosting, Cloudflare for DNS and edge, Bunny CDN for video delivery. Custom auth. Custom language routing. Every dependency chosen because we actively wanted it, not because a framework came with it bundled.

For the AI layer we built a pipeline that extracts structured event data from free-form natural language, validates and enriches it, and feeds two separate generation steps: one for the copy, one for the artwork. The output is a complete invitation with matching words and visuals.
For payments, we use Stripe — but with a flow that respects how people actually buy invitation software. No forced subscriptions. Pay when you need it, use the credits, come back next time.
For RSVPs, the host gets a live dashboard: accepted, declined, pending, plus-ones, dietary notes, custom questions if needed. For the calendar, an in-product event tracker with countdown timers and reminders. For language, a custom router that handles Romanian, English, and Italian from day one — first-class navigation, not an afterthought.
All of it in-house. All of it maintained by us.
The Solution
Core product
- Natural-language event parser — takes a free-form description ("baptism for my niece, April 20th, 11am, orthodox at St. Nicholas, lunch after at Grandma's") and extracts structured fields: event type, date, time, location, host, dress code, gift preferences.
- AI text generation — produces invitation copy in the appropriate tone (formal, casual, playful, elegant) based on the event, with bilingual parity across all three supported languages.
- AI image generation — produces the artwork, matched to the event mood and the text. Not stock templates — generated specifically for that event.
- Card builder — assembles the generated text + imagery into a shareable invitation with clean typography, auto-layout, and quality suitable for print or digital.
- Multi-channel sharing — native share intents across WhatsApp, Facebook, Instagram Story, Telegram, email, and direct link with clipboard fallback.
- RSVP system — recipients respond via a dedicated link. Host sees a live dashboard.
- Event calendar — hosts see all upcoming events with countdown timers, status at a glance, quick share access.
- Authentication — accounts to manage events, save drafts, track RSVPs over time.
02 · The RSVP dashboard

Product infrastructure
- Stripe payments — credit-based billing. Buy credits, spend them on generation and sending, top up when needed. No forced subscription, no auto-charge. Every major payment method Stripe offers.
- Multilingual routing — Romanian, English, Italian. URL-level language detection, custom
language-loader.jsandlanguage-router.js, properhreflangsignals for SEO. - Schema.org JSON-LD —
SoftwareApplicationmarkup for discoverability. - Performance-first asset delivery — click-to-load video embeds via Bunny CDN, self-hosted fonts, lean JavaScript, deferred loading.
- Legal compliance — Privacy Policy, Terms of Service, Refund policy, GDPR-compliant consent flow.
Key Moments
The single input
The thing that took the longest to land wasn't the AI — it was the input field. Every existing competitor opens with a template gallery and a thirty-field wizard. We open with one box. Type the event. The form behind it is generated dynamically based on what was extracted.

Two AI passes, one card
Most products that use AI for invitations bolt a single text generator onto a stock template library. We split text and imagery into two separate models with shared event context, so the copy and the artwork land on the same wavelength. Formal baptism gets serif type and a soft palette. Cocktail birthday gets bold sans and a saturated accent. The card composes itself around both.
No forced subscription
The credit model is the move. Every competitor wants a $9.99/month. We watched real people use the product and discovered that nobody wants a subscription for an event. They want it for a wedding, then again in two years for a baptism, then again for a birthday. So we billed accordingly. Stripe one-off, credits on the account, top up when you have something to send.
The Stack
Frontend Vanilla JavaScript (no framework)
Custom "Calimate" 900 display font
Source Serif 4 italics
Modular component architecture
Backend Express (Node.js)
Auth Custom flow — email + session
Payments Stripe — credit-based, no forced subscription
AI text Natural-language event parsing → contextual copy
AI image Visual pipeline producing event-matched artwork
RSVP Custom guest management — plus-ones, dietary, custom Qs
Calendar In-product event tracker with countdown timers
Hosting DigitalOcean App Platform
CDN / Security Cloudflare
Video delivery Bunny CDN
Schema JSON-LD SoftwareApplication
Languages Romanian, English, Italian
The Result
Live at invuna.com. Real people are creating real invitations for real events — weddings, baptisms, birthdays, graduations, corporate launches — in three languages, paying through Stripe, tracking RSVPs, sharing across every major platform.
We maintain the product continuously. New features ship regularly. Bugs are fixed as they surface. The AI generation layer is refined based on what users actually ask for.
If the rest of our portfolio shows how we build for clients, Invuna shows how we build for ourselves. Same standards. Same level of care. The only difference is that we're accountable for every decision, forever.


