A legal-tech company needed users to query thousands of legal documents and contracts in plain English. Their keyword search returned irrelevant results and drove 40% of users to abandon the search entirely without finding an answer. Every failed query was a support ticket.
The approach
We designed a RAG pipeline with hybrid retrieval — BM25 for keyword precision combined with dense vector search for semantic understanding. Documents were chunked with overlap to preserve cross-sentence context, then indexed in Qdrant. Claude 3.5 Sonnet received structured retrieval context with source citations enforced through tool use, eliminating the hallucinated sources that had been the primary user complaint. Cost routing: simple queries went to Haiku, complex multi-document synthesis to Sonnet.
The result
Query accuracy: 58% → 91% on a held-out evaluation set of 300 representative queries
P95 latency: 4.2s → 810ms via streaming and pre-fetched context windows
LLM cost reduced 60% through model-tier routing — same quality, one-third the API spend
Support tickets related to search failures: down 74% in first month post-launch
Shipped to production in 4 weeks from the first scoping call
Next.jsClaude APIQdrantFastAPIPostgreSQL
Web Development·B2B SaaS · UK·2 weeks, audit to deployment
A B2B SaaS company was losing organic search ranking to competitors with faster sites. Their Next.js marketing site scored 47 on mobile Lighthouse performance with an LCP of 4.8 seconds. Mobile bounce rates ran 30% higher than desktop. Their SEO agency had reported the problem for six months without being able to fix it.
The approach
Full Lighthouse audit and waterfall analysis identified three root causes: a 340KB unoptimised hero image without modern format support, a third-party chat widget loading synchronously and blocking the main thread for 1.9 seconds, and a font strategy causing cumulative layout shift. We migrated image delivery to next/image with AVIF/WebP fallback, deferred the chat widget to load after first user interaction, and replaced the font implementation with next/font with explicit preload. No design changes — purely technical.
The result
Mobile Lighthouse performance: 47 → 96
LCP: 4.8s → 1.1s (within Google's 'Good' threshold for the first time)
CLS: 0.28 → 0.02
Mobile bounce rate dropped 18% within 30 days of relaunch
Google Search Console impressions up 34% over the following 8 weeks
Next.jsVercelCloudflareLighthouse CI
AI Engineering·Logistics · Singapore·3 weeks, prototype to production
AI support system: 73% of queries resolved without human involvement
The problem
A Singapore logistics company's operations team was spending four hours per day answering the same 30 questions over email — shipment status, customs requirements, pricing tables, document checklists. Average response time for simple questions was 3 days because the inbox was shared and unstructured. Senior operations staff were handling questions that did not require their expertise.
The approach
We built a RAG system on their internal documentation: standard operating procedures, pricing tables, customs requirement guides, and a 2-year archive of answered client queries. The system ran as an embedded chat interface in their client portal. Cost routing was built in from day one — Claude Haiku handled simple lookups and confirmations, Sonnet handled multi-step logistics questions that required reasoning across multiple documents. Human escalation triggered automatically on anything the system flagged as ambiguous.
The result
73% of incoming queries resolved without human involvement at 6-week review
Response time for remaining queries: 4 minutes average (from 3 days for simple questions)
Senior operations team reclaimed approximately 15 hours/week of capacity
Monthly LLM running cost: SGD $180 at current query volume — under their original budget estimate by 40%
Client satisfaction score on support interactions: up 22 points in the first quarter post-launch
Next.jsClaude APIPineconeVercelResend
Web Development·Professional Services · Ireland·5 weeks, scoping to production
Full Next.js rebuild: 5-year-old WordPress site to 95 Lighthouse, first organic enquiries in 8 weeks
The problem
A Dublin-based B2B professional services firm had a 5-year-old WordPress site on a purchased theme. Mobile Lighthouse score: 41. LCP: 5.3 seconds. The site had generated zero organic enquiries in Q4 2025 despite a monthly Google Ads spend. Their ads agency blamed the landing pages. Their previous web developer blamed the content. Neither had fixed anything.
The approach
We rebuilt the site on Next.js with a content architecture designed for conversion — not just for search. Service pages were restructured around specific client problems rather than service descriptions. We added two anonymised case studies with real outcome numbers, a clear scoping process explanation, and a contact form with explicit expectations (response time, what happens next). Technical foundation: next/image, next/font, static generation, Lighthouse CI in the deployment pipeline to prevent regression.
The result
Mobile Lighthouse performance: 41 → 95
LCP: 5.3s → 1.2s
CLS: 0.31 → 0.01
First 5 organic enquiries arrived within 8 weeks of relaunch
Google Search Console: impressions up 340% in the first 60 days
Google Ads Quality Score improved — same ad spend, 28% more clicks
Next.jsVercelSanity CMSLighthouse CI
Want results like these?
Tell us what you're working on. We'll be direct about whether we can help.