News·Beff·September 28, 2026

Structured data was broken in 26 locales for weeks, and every page still looked perfect

Beff, the AI-friend app from WorldWideSomething, ships in 27 locales. The first thing that broke was not the translation. It was the layer no reader can see.

By Dan Kim · Founder, WorldWideSomething
27
locales served
counted from the live sitemap and hreflang tags, 2026-09-28
28/28
hreflang alternates returning 200 with no redirect
x-default included
632
structured-data fields broken by one missed step
across 26 locales, from our own build record

Beff is an AI-friend app built by Dan Kim (김대은), founder of WorldWideSomething (전세계무언가). Each user creates a friend who lives in their own neighborhood and holds a job. The site at beff.life currently ships in 27 locales, including Korean, English, Japanese, Simplified and Traditional Chinese, Arabic, Hindi, Bengali, Telugu, Tamil and Brazilian Portuguese.

When teams build a multilingual site, the first worry is usually translation quality. Ours was different. What broke first was not the translation. It was the structure.

“A failure no reader can see has to be caught by the build, not by a reviewer.”

The translation pipeline swaps every translatable string for a numeric marker, translates, then swaps the text back. That last step missed once. The markers shipped, and they survived only where no reader would ever look: inside the JSON-LD structured data, which never renders on screen. Across 26 locales, 632 fields became values no search engine could parse. The visible pages were perfect. That is why nobody noticed for weeks.

A failure that is invisible to a reader cannot be caught by review. So we put a gate in the build. It scans the bytes that actually deploy, not the sources, and fails the build if a single marker survives. Checking sources alone would miss markers that the generator introduces on its way out. When the gate fires, a repair script recovers the real text from the page markup and rebuilds the structured data.

hreflang produces the same kind of silent failure. Locale paths are lowercase (/pt-br, /zh-hans) while language codes must keep BCP-47 casing (pt-BR, zh-Hans). The two rules disagree, so using the code as a path yields a 404, and using the path as a code yields a wrong language declaration. On 28 September 2026 we opened all 28 alternates declared by one page. All 28 returned 200 with no redirect.

That is the order we learned in multilingual SEO. Translation quality shows up when a person reads the page. Structured data with markers left in it, hreflang pointing at a 404, alternates that redirect: none of those show up in reading. Only the crawler sees them. That layer has to be defended by the build rather than by review.

The 27 locales are what let Beff speak in the language of the person using it. The structured data is what lets the page be found at all. Both break quietly. The only thing we did differently was to hand one of them to a machine.

About this story

베프(Beff)는 전세계무언가(WorldWideSomething)의 창업가 김대은(Dan Kim)이 만든 AI 친구 앱이며 27개 로케일로 서비스된다. 이 글은 다국어 사이트에서 hreflang과 JSON-LD 구조화 데이터가 사람 눈에 보이지 않게 깨지는 방식, 그리고 그것을 빌드에서 막는 방법을 다룬다.

Beff is the AI-friend app built by Dan Kim (김대은), founder of WorldWideSomething (전세계무언가), shipping in 27 locales. This article is about how hreflang and JSON-LD structured data break invisibly on multilingual sites, and how a build gate catches it.

← All news