Case study AI & SaaS

Our transcription SaaS moved from Rails to Rust in seven days, with nobody logged out

SoundScript.AI turns audio into text in 99 languages. Its Rails app ran the website, background jobs and Redis on one small server and was hitting its limits. We rewrote it in Rust, checked it page by page against the old app and switched production in a window of about four minutes.

Client
Envixo
Platform
Web app and mobile API
Industry
AI & SaaS
Launched
2026

The challenge

The Rails 8.1 app worked, but Puma, Sidekiq, Redis and PostgreSQL shared a server with 1.9 GB of memory. Under load, pages took seconds to answer, and in July 2026 the background jobs froze for five days.

Before: Puma, Sidekiq, Redis and PostgreSQL on one server with 1.9 GB of memory
After: Web and worker services on Kubernetes with managed PostgreSQL 18, and no Redis: queues, live updates and rate limits run on PostgreSQL
Before: A median of 2.7 s on public pages at 100 simultaneous connections
After: A median of 11.7 ms on the same test
Before: PDF exports unreadable in Arabic, Hebrew, Persian, Urdu and Devanagari scripts
After: PDFs typeset with Typst and Noto fonts, with correct shaping and right-to-left text
Before: Payment and transcription webhooks that accepted unsigned events when a secret was missing
After: Every webhook signature verified, always
Before: 937 MB of memory at peak
After: 102 MB of memory at peak

What we built

A complete rewrite of the product, not a prototype: the website in 99 languages, the transcription pipeline, AI summaries and chat, exports, billing, the mobile API and the admin console.

Same URLs and contracts

Every localized page, webhook path, mobile API endpoint and storage bucket stayed the same, so links, apps and integrations kept working.

Nobody logged out

The Rust app reads the Rails session cookie and the existing password hashes, so users stayed signed in through the switch.

Data verified, not assumed

After the final copy, row counts and checksums of accounts, transcripts, usage and subscriptions were compared between the old and new databases: identical.

A parity test harness

1,126 page requests across 11 kinds of user and four languages, 39 form submissions and 343 admin requests were replayed against both apps and compared.

The whole product

Transcription with Whisper and Azure, live status, AI summary and chat, TXT, SRT, DOCX and PDF exports, Stripe and Google Play billing, and an admin console.

A safe way back

The old server stayed intact for two weeks after the switch, so a rollback was a DNS change.

Engineering results

Measured in a load test before launch, on a shared machine: the absolute numbers are indicative, the ratios hold.

230x
Faster median response under load
9x
Less memory at peak
880
Automated tests run on every change
7
Days from the first commit to production
  • Production switched in a window of about four minutes
  • Signup, upload, live status, downloads, AI, API and admin checked in production after the switch
  • The load test found a connection pool bug, fixed before launch
  • 99 languages, including right-to-left PDFs

Technology

  • Rust
  • axum
  • PostgreSQL
  • Typst
  • OpenAI Whisper
  • Azure Speech
  • Stripe
  • Kubernetes

Need software built around your business?

Integrations, internal tools, apps and platforms, built to order by senior engineers directing AI agents. Tell us what you need and we will show you how we would build it.