Saga’s in-house legal ‘lab’ team tests every change before it ships. That used to mean 380 pull requests a month queuing for one staging server for the lab team to test and review it on. After implementing per-pr-preview environments from boxd, every pull request gets its own machine instantly, allowing their Lab team to test and approve changes the same day.
“It has been really useful for our Lab team to receive a preview environment upon demand. It made us so much faster by allowing us to involve teams that are not technical with the ability to share it across the organisation. Reducing reviews to same-day approval has been a game changer for our shipping speed”.
Before: 380 pull requests a month through one staging server, ten to hundreds of hours waiting
Saga builds legal AI for more than 500 legal teams and law firms across 25+ countries. Nothing ships until Saga Lab, the in-house legal team, has tested it on a real build.
That build lived on one shared staging server. A developer finished a change, waited for the server to be free, deployed the branch to it, then told the Lab it was ready. The Lab tested whatever happened to be on staging at that moment. Everyone else queued behind them or overwrote it.
That single staging/preview environment caused a serious bottleneck for the Lab team, but also for the developers. Sign-off often took days too long, causing their development teams to be stuck in a queue. Developers reviewing each other's work gave up on staging entirely and rebuilt the branch on a laptop instead. Building per-PR environments in-house would have fixed it, but that was platform work Saga had no room for, mid-migration to Kubernetes.
After: 20 to 40 environments live at once, one per pull request
Yunus Emre, the engineer who ran the rollout, had it working in one day from the boxd docs. Nobody touched the application code.
- Saga configured its app once on a single machine, with its background services and database installed and running, then took a snapshot of it. Every pull request boots a fresh environment from that snapshot in seconds, hardware-isolated. The only real wait is Saga’s own Next.js build for the branch.
- Each preview gets its own HTTPS address under a wildcard on Saga’s domain. Reviewers log in once and comments go on the PR.
- Twenty to forty previews are live at any moment, against the one staging server they replaced. Idle ones hibernate and cost disk only. Each disappears when its PR closes.
So the Lab opens a link, tests the exact change, and comments on the PR while the developer is still on it. Every Lab test used to start with a developer putting a branch on staging. None of the 380 a month do now. Saga estimates that through using boxd, tens to a few hundred hours of waiting a month are saved out of the Lab's schedule. The same setup gives it one place to ship its internal harness, the content, working agreements and guardrails, to every developer.
“I’m not doing PR reviews in my local anymore. I go to boxd”
Next, Saga is looking at moving its background workers, which embed documents at about 30,000 jobs a day, onto boxd. The snapshot idea has already spread: the team’s coding agents run on boxd machines, with Saga’s agent instructions and guardrails set up once for every developer.
See it on your stack
We showed you what one change did for Saga Legal. They did not replace their stack, they moved where their test environment lives, and the slowest part of shipping stopped being the queue. That is the part of the job we care about at boxd: giving developers back the hours they spend waiting on their own infrastructure. Per-PR previews are the easiest place to start. They are not the last one, and Saga's workers and agents are already heading the same way.
If your reviews wait on a shared staging box, we would like to show you Saga’s setup and what it would take on yours. Please email Hidde Kehrer, boxd co-founder, at hidde@boxd.sh. Or start with our docs: docs.boxd.sh/preview-environments/per-pr-preview-urls.



