Performance marketing2025EN · UA · RU
RA Agency
Three ad platforms, a large case library and a hard positioning line — "We don't buy clicks. We take minds."
- Website
- i18n
- Case studies
- SEO

- Industry
- Performance marketing
- Engagement
- 8 weeks
- Team
- 1 designer · 1 engineer
- Platforms
- Marketing site · Case library · Blog
01
Challenge
Performance agencies all publish the same page: a hero claim, three service tiles, some logos. The differentiator RA had was evidence — a large body of campaign results across Telegram, Meta and Google — and it was invisible.
The site needed to make that evidence the structure rather than a section, in two languages, without turning into a case-study archive nobody reads.
- Channels
- Telegram Ads · Meta Ads · Google Ads
- Content
- Case library, reviews, blog
- Locales
- English and Ukrainian
02
Solution
Cases are a first-class content type with structured fields — channel, vertical, spend band, outcome — so they can be surfaced contextually rather than only in an archive.
Each service page pulls the cases that prove that specific channel, which means the proof appears at the moment a visitor is deciding, not three clicks later.
Locales are routed segments with independent metadata, so each language ranks on its own terms instead of competing with itself.
- Cases
- Structured, contextually surfaced
- Service pages
- Proof attached per channel
- i18n
- Routed locales with per-locale metadata
03
Architecture
- L0/enClient/uaClient
- L1Locale routerService
- L2Content modelsCases, services, posts
- L3Static generationPer localeLead captureService
- L4CRM / TelegramExternalAnalyticsExternal
Connections (7)
- /en → Locale router
- /ua → Locale router
- Locale router → Content models
- Content models → Static generation
- Static generation → Lead capture
- Lead capture → CRM / Telegram
- Static generation → Analytics
04
UX
The page order follows the buying question: which channel do I need, has this agency done it in my vertical, what happened, who says so.
Case cards lead with the result and the constraint it was achieved under, because a result without its context is exactly the kind of claim this industry has trained buyers to discount.
05
UI
Confident and typographic. The positioning line carries the hero rather than a stock image, and numbers are set large enough to be the visual.
Client and partner logos are treated as a quiet band rather than a wall — presence, not volume.
06
Development
Everything is statically generated per locale with typed content models, so adding a case is a data change and the pages that reference it update on rebuild.
Lead submissions go through a server action into the CRM with an instant Telegram notification to the responsible manager.
07
What it does
Channel service pages
Telegram, Meta and Google Ads, each with its own proof set.
Case library
Structured cases filterable by channel and vertical.
Metrics band
Headline agency figures presented as data, not decoration.
Testimonials
Client reviews attributed to named people and companies.
Blog
Editorial content supporting search visibility per locale.
Trilingual routing
English, Ukrainian and Russian as independent routed locales.
08
Integrations & stack
Integrations
- CRM
- Telegram notifications
- Analytics
Frontend
- Next.js
- TypeScript
- Tailwind CSS
- Motion
Platform
- i18n routing
- Static generation
- Server actions
09
Where it landed
- 3
- Ad channels
- EN · UA · RU
- Locales
- Typed
- Content model
- Instant
- Lead routing
Telegram Ads · Meta Ads · Google Ads — each with its own page
Independent metadata per language
A new case is a data change
CRM plus Telegram to the owner
The evidence became the architecture. A visitor decides on a channel and the proof for that channel is already on screen.




Every build is designed for the phone as its own experience, not as a narrowed desktop layout.
Got a product that should exist by now?Tell us about it.
Describe what has to change in your business. We will work out what that actually takes — including when it takes less than you think.