Replatformed in 9 weeks. Inbound leads tripled in the first quarter. Zero P1 incidents in 8 months running.
Northbeam runs supply-chain visibility for mid-market shippers across North America. They came to us with a 7-year-old Rails monolith powering both their app AND their marketing site, a 7-second LCP, and a CMO who had been told for 14 months that engineering 'didn't have capacity' to ship a single new marketing page. We rebuilt the marketing site as a typed Next.js app with a headless CMS in 9 weeks, layered in technical SEO, and now run the platform end-to-end as a managed service. Inbound leads tripled in Q1 post-launch.
Northbeam Logistics came to us with…
Northbeam's marketing site lived inside their Rails app, sharing a database, deploys, and a release queue with their core product. Every marketing page change required an engineering review and a release. The CMO had a backlog of 47 pages that hadn't shipped in over a year. LCP was 7.1s on the homepage and 4.8s on the product detail page. Bounce rate was at the 78th percentile in their category. Two competitors had recently raised Series Cs and were aggressively content-marketing into Northbeam's commercial keywords.
Marketing locked behind engineering
Every page change went through a 6-step approval + release process. The marketing team had 47 page changes blocked. CMO and CTO meetings ended in shouting matches.
Performance tax
LCP at 7.1s. INP at 540ms. CLS at 0.21. Sites with these CWV scores were being deprioritized in Google's March 2025 update. Their organic traffic had been declining 4% week-over-week for three months.
No SEO foundation
Rendered HTML didn't include critical content (client-side rendering). Schema was missing. A robots.txt directive was blocking 38% of programmatic location pages. Internal linking was effectively flat.
Replatform risk
Migrating 412 pages from Rails to a new stack without losing rankings — and without any engineering capacity to spare from the core product.
The approach
Discovery + architecture decisions
We crawled the entire site, mapped every URL to its rendered output, and produced a 1:1 redirect map for the migration. Picked Next.js 14 + Sanity CMS for the new stack — a decision documented in a 3-page ADR with the alternatives considered.
- URL inventory + rendering audit (412 pages)
- Architecture Decision Record (Next.js + Sanity)
- 1:1 redirect map (preserves equity)
- Performance budget (LCP < 1.6s on every template)
- Sanity schema design (12 content types)
Build + content migration
Two engineers + one content operator shipped 412 pages onto Next.js with full schema, image optimization, and edge caching. Marketing got a Sanity preview environment so they could see drafts before publishing — without engineering review. We also caught a robots.txt issue that had been blocking 38% of programmatic location pages from search for 18 months.
- 412 pages migrated to Next.js
- Sanity Studio for marketing self-serve
- Edge-cached images (WebP + responsive)
- Schema markup across 8 templates
- Robots.txt fix (38% of pages now indexable)
Cutover + monitoring
Cutover happened on a Saturday at 2am ET in a 4-hour window. We monitored Search Console for 6 weeks afterward; rankings recovered within 18 days and exceeded baseline at day 31. Zero traffic loss in the migration.
- Cutover plan + rollback procedure
- GSC monitoring dashboard (rank tracking)
- Real User Monitoring (CrUX + Vercel Speed Insights)
- Search-console anomaly alerts
Managed operations + growth
We took on uptime, performance, security, and dependency hygiene under a fixed monthly tier. CTO got their nights and weekends back. In parallel, we shipped 2–4 new pages per week from the marketing self-serve flow with zero engineering involvement. Inbound leads grew month over month: 3.4× in Q1, 4.1× in Q2.
- 24/7 monitoring + on-call rotation
- Weekly perf budget reviews
- Quarterly dependency upgrade cycles
- Content velocity: 2–4 pages / week (marketing-led)
- Monthly ROI report to leadership
Before / after — every metric
Numbers verifiable with the client. Audit trail available on request.
| Metric | Before | After | Change |
|---|---|---|---|
| LCP (p75) | 7.1s | 1.4s | −80% |
| INP (p75) | 540ms | 84ms | −84% |
| CLS | 0.21 | 0.02 | −90% |
| Bounce rate (homepage) | 78% | 31% | −60% |
| Inbound leads (monthly) | 47 | 162 | +245% |
| Q1 pipeline added | $285K | $890K | +212% |
| Pages indexed (productive) | 256 of 412 | 397 of 405 | 98% productive |
| Marketing pages shipped (per month) | 0.4 | 11.2 | +2,700% |
| Mean time-to-deploy a marketing change | 9 days | 8 minutes | −99.94% |
| P1 incidents (8 months) | — | 0 | — |
Stack, team, and tools
- · Next.js 14
- · Sanity CMS
- · Vercel Edge
- · TypeScript
- · tRPC
- · Cloudflare Workers
- · Sentry
- · OpenTelemetry
- · 1 senior strategist
- · 2 staff engineers (full-stack)
- · 1 SEO operator
- · 1 SRE / on-call lead
- · 1 design system maintainer
- · Vercel
- · Sanity Studio
- · Sentry
- · PagerDuty
- · Lighthouse CI
- · GSC API
- · Linear
- · Datadog (managed)
We had been burned by three agencies. Aman and the team rebuilt our stack in 9 weeks and tripled inbound the same quarter. The first time we've seen marketing and engineering talk in the same language. Eight months in, our CTO told me he hadn't been paged in six weeks — that's the real ROI.
“I went from blocking marketing every week to forgetting they exist. The Sanity self-serve setup was the unlock — they ship their own pages, my team ships actual product.”
Quarter 4 plan: AI-powered freight matching feature inside the product (RAG + cost-aware model routing) and a Power BI revenue-attribution dashboard for the CFO. Both already scoped, kicking off month 9.
The cost of waiting
is your competitor.
Every 90 days you delay is 90 days of authority compounding for someone else. Get the audit. See the math. Then decide.