What We Threw Away
Most sites show you the finished thing. This page shows you the other side of it — the photographs we discarded, the sentences we got wrong and rewrote, and the numbers we could not stand behind and therefore left out.
There is a practical reason to publish this. A great deal of travel writing is now generated rather than researched, and it looks fine. It cites sources. It builds tables. You cannot tell from the finished article. What you can tell it from is the record of what got refused, because that record only exists if somebody actually refused something.
10 photographs rejected 28 corrections made 12 figures withheld 43 locations checked by eye
Photographs we rejected
Our photographs come from Korea Tourism Organization's open data. You request a place by name and you get files back. The registered name is not a guarantee of what is in the picture, and this is the part that surprised us: the mismatches are not random, they are plausible. A hotel branch named after a station. A noodle restaurant named after a temple.
| Asked for | What came back | Why it was no good | |
|---|---|---|---|
| 서울역 | 서울역사박물관 | A museum about Seoul's history, not the railway station. | by eye14 Aug |
| 설악산 | 설악산책 | A bookshop café. The registered name reads as 'Seoraksan' plus one syllable that changes it entirely. | by eye14 Aug |
| 설악산 | 설악산 자동차야영장 | A car campsite inside the park. Correct area, wrong subject. | by eye14 Aug |
| 부산역 | 하운드호텔 부산역점 | A hotel branch named after the station. | by eye14 Aug |
| 불국사 | 불국사밀면 | A noodle restaurant named after the temple. Not the temple. | by eye14 Aug |
| 단풍 (autumn foliage) | 단풍산 | A mountain whose name contains the word 'maple'. The photograph showed no autumn colour. | by eye14 Aug |
| 벚꽃 (cherry blossom) | 안양천제방벚꽃길 | Byte-for-byte identical to a photograph we already had under a different name. | auto14 Aug |
| 내장산 단풍생태공원 | 내장산 단풍생태공원 | Right place, wrong season. The photographs were summer green, and the article was about autumn colour. | by eye15 Aug |
| 명동 | 명동성당 | Myeongdong Cathedral, not the shopping district. Caught while choosing a lead image for the doctor article. | by eye15 Aug |
| 안경점 (optician) | 인사동 한복 스카프 진열대 | This was the lead photograph on our glasses article, and its alt text said 'sunglasses'. Enlarged, the dark round objects are folded fans and the rest is hanbok fabric. There is no eyewear in it. | by eye16 Aug |
Eight of these nine were caught by a person opening the file and looking at it. That does not scale, so where the mistake was visible in the name alone we moved the check into code — and where it was not, the build now refuses to publish a photograph that has no record of having been looked at.
Things we published wrongly and have fixed
Every entry here was live on this site at some point. The date is when it was corrected.
- 17 Aug
We said: We were about to treat an access-denied page at etk.srail.kr as evidence that SRT's English booking is hostile to foreign users.
Actually: The page loads normally in an ordinary browser. The denial was aimed at our automated one.
A tool being blocked is not a fact about the service. That site has a macro-detection history, which is exactly why we opened it once and did not retry — and why we wrote nothing until a human opened it.
Read the corrected article → - 16 Aug
We said: Seoul's own Climate Card FAQ still lists only the 62,000 and 65,000-won passes and an out-of-date list of subway sections.
Actually: Seoul's usage page, revised 8 June 2026, carries the 1-to-7-day short passes, the Han River bus option and the payback event.
This is not our error — it is a contradiction between two pages on the same government site. We recorded it here because we relied on the more recently revised page, and a reader checking our work against the other page would think we were wrong.
Read the corrected article → - Someone outside found it 15 Aug
We said: We said free subway travel for over-65s applies automatically at the gate.
Actually: It requires an application, and short-term visitors are not eligible at all.
We had confused two different things. Palaces and museums genuinely are free for over-65s including foreign visitors; the subway concession is not the same scheme.
Read the corrected article → - Someone outside found it 15 Aug
We said: We said Korea publishes no official list of Muslim-friendly restaurants.
Actually: The Korea Tourism Organization publishes one, in four tiers, and keeps it current.
We asserted an absence without checking the obvious place. An absence is a claim like any other and needs the same evidence.
Read the corrected article → - Someone outside found it 15 Aug
We said: We called it 'five palaces' and then listed four palaces plus Jongmyo, which is a shrine.
Actually: Added Gyeonghuigung, and marked Jongmyo in the table as not a palace.
Read the corrected article → - Someone outside found it 15 Aug
We said: Airport bus fares contradicted the figures in another article on this site.
Actually: Unified to route-level fares in both.
Read the corrected article → - We found it 15 Aug
We said: The opening paragraph said two palaces close on Mondays and two on Tuesdays. The table directly below it said otherwise.
Actually: Rewrote the paragraph to match the table.
We had corrected the table and not re-read the sentence introducing it. Fixing one element and leaving its neighbour stale is our most common failure.
Read the corrected article → - Someone outside found it 16 Aug
We said: Every page declared a canonical address without a trailing slash, while its own breadcrumb data and the live URL both had one.
Actually: One address everywhere. Verified: zero mismatches across canonical, hreflang and sitemap.
A regular expression meant to add the slash was written to replace a slash that had already been stripped, so it did nothing at all.
- We found it 16 Aug
We said: A photograph was imported under the name 'night' and captioned as a side street. It is a daytime photograph under a blue sky. A second one was described as a crowded shopping street; it is a shop on a corner.
Actually: Both descriptions rewritten to match the photographs. One of the two moved to an article that actually needed it.
We wrote the captions from the file names rather than from the pictures. That is the same mistake as trusting a registered place name, one step further downstream.
Read the corrected article → - Someone outside found it 16 Aug
We said: The footer said "Some links are affiliate links" while the article modules said the opposite — that nothing here is an affiliate link and we earn nothing. Both could not be true, and the footer was the false one.
Actually: The footer now reads its wording from the merchant registry. With no approved programme it states plainly that we carry no affiliate links and earn nothing; the day one is approved, the sentence changes by itself.
We corrected exactly this false disclosure in an article on 13 August and did not check whether the same sentence lived anywhere else. It did. Fixing one place and not sweeping for the rest is now the fourth time this pattern has caught us in three days.
- Someone outside found it 16 Aug
We said: Links to Korail booking, Incheon Airport, the Royal Palaces and other official bodies carried rel="nofollow" — a signal meaning we do not vouch for the destination.
Actually: Removed. These are the pages we send readers to. Approved affiliate links will still carry rel="sponsored", which is a different statement.
- We found it 16 Aug
We said: We built a Klook affiliate link for a Seoul city page and the page did not exist. The link generator accepted the address without checking it.
Actually: Every commercial link on this site is now opened and loaded before it is published. Three are in place; each one was viewed as a live page first.
We guessed a URL from a pattern instead of retrieving it. That is the same error as trusting a registered place name for a photograph — one step further downstream, and this time it would have sent a reader to a dead page from a paid link.
- The site owner found it 16 Aug
We said: We published an article whose entire premise was that a Korean tourist eSIM gives you data and no phone number. It gives you an 010 number. Even the cheapest data-only product does.
Actually: Rewritten. The real boundary is not data versus number — it is number versus identity verification. You get a Korean number; you still cannot verify yourself to a bank or a government site, and no tourist product at any price changes that.
We wrote the article from English guides that all repeat the same claim, and we said in the article itself that we had not checked a primary source. We published anyway. The carrier states the actual position plainly on its own English site; it took one page to find once we looked. Saying "we did not verify this" is not a substitute for verifying it.
Read the corrected article → - We found it 16 Aug
We said: Two article templates printed "None of these are affiliate links and nobody pays us for a place here" directly beneath the links. Those same templates render the airport article and the hanbok article, both of which carry an approved affiliate link. The sentence was false at the exact place a reader would rely on it.
Actually: The wording is no longer written by hand anywhere. It is now calculated from the links actually present in the block, so a paid link cannot appear under a sentence denying that paid links exist.
This is the third time this specific false disclosure has been corrected: once in an article on 13 August, once in the footer on 16 August, and now here. Each time it was fixed in one place and the neighbouring copy was left alone. Removing the ability to write the sentence by hand is the only fix that has any chance of holding.
- We found it 16 Aug
We said: The eSIM article declared a commercial link in its source file, and the link never appeared on the page. Two separate layers dropped it silently — the schema did not recognise the field for that section, and that section's template did not render the block at all. Nothing failed and nothing warned.
Actually: Commercial links are now a field every section shares, and the build refuses to publish if any article template cannot display one. The link is on the page, labelled as an affiliate link.
A link that vanishes without error is worse than a broken one, because there is nothing to notice. We found it only by comparing the published pages against what the source files claimed.
Read the corrected article → - 16 Aug
We said: "Data + Voice can only be bought at an airport counter … you cannot sort it out from home" — under a heading built around that claim. We also stated that the 010 number never appears until you arrive in Korea.
Actually: True at KT and LG U+, false at SKT, which sells its voice eSIM online and verifies passports online between 8am and 10pm KST, with the airport counter as the fallback. The section is now a three-carrier table. The arrival-only number display is LG U+'s documented behaviour, quoted from its Korean product page — not a fact about all tourist eSIMs.
We read one carrier's page and wrote up the market. The strongest sentence in the article was the least verified one. A Korean travellers' forum thread contradicted it; we then opened all three carriers' own pages, and the thread was right.
Read the corrected article → - 17 Aug
We said: "The Climate Card covers Seoul's subway, some suburban sections, and Seoul-licensed city and neighbourhood buses" — one sentence covering both pass types, in an article whose entire recommendation is the short pass.
Actually: The suburban sections belong to the 30-day pass. Seoul prints the short pass's scope in a parenthesis under its own closure table — 이용범위:서울시, Seoul city. The seven Gyeonggi cities the 30-day pass reached (Gimpo, Goyang, Gwacheon, Seongnam, Hanam, Namyangju, Guri) are not included. All three languages now say so.
We opened the closure FAQ for its dates, took the dates, and stopped. The footnote that narrows the scope sits one line under the same table. So we recommended one pass and described the other one's map.
Read the corrected article → - 17 Aug
We said: Every Japanese and Chinese page carried English furniture. All ten translated articles headed their quotation blocks "The Korean sentence this comes from". The filming-location template printed its section headings, the photo table, the place table, the affiliate disclosure and every source label in English under Japanese and Chinese text.
Actually: All of it now comes from ui.mjs in the reader's language. Components called from inside articles read the language from the URL instead of a prop, because the prop is the thing a writer forgets.
The translations existed in ui.mjs from the start. Nothing was missing — the components simply defaulted to English and nobody passed the language. The eleventh gate checks for missing translations, which is the opposite failure, so it reported all clear.
- 17 Aug
We said: Caught before publication, not after. The draft said the Klook listing was "no cancellation, no refund, no date change, for any reason" and "valid until 31 December 2026". Both are true of the three tickets we priced and false of the two combo packages beside them — one of those offers free cancellation with 24 hours' notice. The draft also wrote that the tower is "the last 130 metres" of the climb, two paragraphs after a caption promising we had calculated nothing: 130 is 400 minus 270, our arithmetic across two of the operator's pages.
Actually: The terms are now stated per package rather than per page, with the combo exception named. The height sentence gives the operator's 135.7 m for the tower body and refuses to reconcile 400 with 506.7 — which is the thing the article criticises other people for doing. Six smaller overstatements went with them: a generic weather caveat we had turned into wind, a Klook-only 'no package includes it' we had globalised, four routes we had called three, a transport section sourced from a reseller but attributed to the operator, an operator identity inferred from an address on an error page, and an implied price comparison in an article that says it does not convert currency.
A verification pass we asked for before publishing, deliberately told to be adversarial. It found fifteen things. The two worst were sentences that were accurate about what we had read and wrong about what we said they covered — scope errors, not reading errors. Those do not feel like mistakes while you write them.
Read the corrected article → - 17 Aug
We said: We published a commercial link without registering it as opened. GitHub's check failed on the push and the article went live for the time it took to notice.
Actually: The Klook URL is now in data/link-verified.json with what we saw on it: rating, booking count, all four package prices, and the fact that the cancellation terms differ between packages. The check passes.
We ran the build gates and the translation check and called that verified. The link check is a separate script that only the repository was running, so our local 'verify' and GitHub's 'verify' were counting different things — and the one we trusted was the smaller one. npm run verify now runs all three.
Read the corrected article → - 17 Aug
We said: Our Trip.com hotel link was missing from the Japanese and Chinese versions of the Gyeongju article, and the three Trip.com pages we link to had never been registered as opened. Neither showed up as an error anywhere.
Actually: Both translations carry the link again, and all three Trip.com pages are on the record with what we saw on them — including one we had to open in a browser because the fetching tool returned nothing.
Three separate checks were written with the word 'klook.com' typed into them: the gate that counts commercial links in translations, the link checker, and the source list. We added a second merchant that morning and every one of those checks went quietly blind to it. The affiliate registry also lacked a host field that two of them were already reading — so it was always undefined, and they had been falling back to the Klook-only path all along. Merchant identity now comes from the registry, and the link checker reads the product registry directly, because the Seoul hotel link lives in a page template by key and no amount of scanning articles would ever have found it.
- 17 Aug
We said: "If the logo row does include it, the language of the interface is beside the point — the transaction is going to run through Visa or Mastercard either way." And a headline, "Which ATMs Take a Foreign Card", promising a list of banks the article never gives.
Actually: The logo is now described as the strongest thing you can check while standing at the machine, and explicitly not a guarantee: your bank may block the country, the operator may not support cash advances on your card type, there may be no cash PIN, the daily limit may be spent. The headline is now "How to Find an ATM in Korea That Takes Your Foreign Card", which is what the article actually teaches.
We wrote a diagnostic and then let one sentence promise an outcome. On the page it reads as 'check the logo and you are fine' — and the reader who follows that and gets refused has been told wrong by us, at a cash machine, abroad.
Read the corrected article → - 17 Aug
We said: hankuk-in.com and www.hankuk-in.com both returned 200. Our canonical tags and sitemap say www, so we were publishing every page at two addresses without telling anyone which was the real one. There was also no favicon of any kind, and the contact page printed our email address as bold text rather than a link you could press.
Actually: The apex domain now redirects to www with a 301. A favicon, apple touch icon and manifest are in place. The email address is a mailto link in all three languages.
None of these is a fact we got wrong — they are things we never did, which is why no check caught them. Our gates read what we wrote; they cannot see what is absent from the head of every page.
- 17 Aug
We said: Only six of our twenty-eight English articles carried any commercial link. We had told ourselves this was editorial restraint — that we do not link to accommodation we have not assessed.
Actually: Ten now carry one, including every article about a place you travel to: Seoul, Busan, Gangneung, Gyeongju, Geoje. The restraint was misapplied. A Trip.com city link is a search, not a recommendation — 'look here' rather than 'this hotel is good' — so the objection we were making never applied to it. The rule is now written down as: articles about a place you go to get a stay link, articles about a task you perform do not.
The honest reason those articles had no link was not judgement. We had created three city entries in the product registry and never made the ones the articles needed, so when we wrote the Busan piece and the Gangneung piece there was nothing to attach and we moved on. Calling that editorial discipline afterwards was a story we told ourselves.
- 17 Aug
We said: Eleven articles — every one that carries diagrams instead of photographs — shared a single generic image when anyone posted them to a chat or a feed. Pasted into a group chat, our ATM piece and our lost-property piece were indistinguishable.
Actually: Each of those now has its own card carrying its title, its section and the date we checked it. Twenty-eight cards across three languages, drawn once and committed rather than rendered at build time, because we cannot see what fonts the build host has and a card full of empty boxes would ship without anyone noticing.
We had treated the shared image as a fallback and stopped thinking about it. It is not a fallback — for anything shared in a message, it is the article.
- 17 Aug
We said: On the author page, two separate outside reviews said the same thing: a name and one line, with no background a reader can weigh. Both were right, and for a month we left it that way.
Actually: The page now carries the actual reason this site exists — sixteen years on overseas construction projects across Africa and Asia from 2007, and coming back to Korea in 2023 after four years away and struggling with it as a Korean. In three languages.
This was the one gap on the site that could not be closed by working harder. Inventing a background would have been the single most damaging sentence we could publish — every other claim on the site rests on being believed about where our facts come from. So it stayed empty until the person who has that history wrote it down.
- 17 Aug
We said: The article tells you the KTX to Gangneung costs about ₩27,000 and takes two hours, and then gives you no way to act on it. We had added a hotel search and considered the article finished.
Actually: It now carries a train ticket link as well. Single journeys, not the rail pass — the two-day pass is US$94.65 against roughly ₩54,000 for a Gangneung return, so the more lucrative product is the wrong one for this reader and we are not linking it here.
We had been treating 'where do I sleep' as the whole of a destination article's commercial surface. For a day trip out of Seoul the first decision is not the bed, it is the train — and that is the number the article had already printed.
Read the corrected article → - 6 Sept
We said: The article said Gyeongsang speech is “flatter, faster and more clipped than Seoul speech”. We had no source for any of the three, and the first one runs the wrong way.
Actually: The Academy of Korean Studies' entries say Gyeongsang is one of the two modern Korean dialects that still uses tone — pitch there distinguishes 말 meaning horse, a grain measure and speech — while standard Korean lost tone. Whatever else it is, it is not the flatter of the two. The sentence has been replaced with a link to the new dialect article, which says only what the entries say.
We were describing how the dialect strikes a listener and presenting it as a fact about the dialect. Impressions are not measurements, and this one was also backwards.
Read the corrected article →
Numbers we could not verify, and left out
A missing figure is visible and slightly annoying. An invented one is invisible and costs you money at a ticket window. We take the first.
- What lost112 offers in English — its interface, search fields and app
- Left it out. lost112.go.kr would not open from outside Korea, the same block we hit on t-money.co.kr and korea-pass.kr. We linked it, said plainly that we could not open it, and gave phone numbers that work regardless of what the site does. This is the gap most likely to matter to a visitor, so we named it in the article rather than only here. →
- Current opening hours for the four subway lost-property centres
- Published locations, floors and phone numbers as Seoul lists them, and told readers to call before crossing the city. We did not invent hours. →
- Whether the tourism organisation's Korean pages carry the same stale fare
- Left it out. The language parameter on discoverseoulpass.com did not switch the page for us, so we could not compare the Korean and English versions. Without that comparison we cannot say the English page is worse than the Korean one — only that it disagrees with the City of Seoul. →
- What SRT's nationality dropdown lists, and what its final Ticketing step does
- Left both out. The operator walked the whole English flow on an ordinary browser and sent us the screens, so we wrote up what is visible: class-not-seat, the numeric password, the no-edit warning, the five-year retention notice, and the Domestic Card default. We did not open the nationality dropdown and did not complete a purchase, so we said nothing about either. A reported problem with the country list is going around; we are not repeating it, because we have not seen it. →
- Whether the Discover Seoul Pass eSIM carries a phone number or is data only
- Left it out. Seoul Tourism Organization's English eSIM page states duration, activation and refund rules but not this. We told readers to assume data only and said that is an assumption, not a finding. →
- Whether a short-stay visitor can register for the replacement card (모두의 카드 / K-패스)
- Left it out and said why. korea-pass.kr would not load for us — the same block we hit on t-money.co.kr and lost112.go.kr. A search summary claimed a Korean alien registration number is required; we would not print that without reading the source ourselves. We printed the K-pass helpline number instead. →
- How to top up an ordinary T-money card at a convenience store
- Left it out. t-money.co.kr was unreachable, so we had no primary source for the payment methods accepted at the counter. One reader's testimony that cash worked is quoted as testimony, not stated as the rule. →
- Bulguksa temple admission
- Left the row out and said so. →
- Seoul to Singyeongju rail fare
- Used the verified Seoul–Busan fare as an upper bound and labelled it as one. A budget that is slightly too large is fine; one that is slightly too small is a problem. →
- How many days photochromic lenses take
- Said a few days, told you to ask on the day you order, and did not put a number on it. →
- City-by-city bloom dates for the coming season
- Gave the observed historical pattern and the forecast source instead of inventing a calendar. →
- A government tariff for what a non-insured visitor pays
- Kept the range, and said plainly in the article that it is the weakest number on the page. →
What the build refuses to publish
These run every time the site is rebuilt. Any one of them failing stops publication entirely — there is no override, which is the point.
no-shared-imagesStops the build if two articles use the same photograph.no-duplicate-filesStops the build if two files are byte-identical under different names.photo-sanityStops the build if a registered place name contains a word that changes what the place is, or if a photograph in use has no record of a human having opened it.content-qualityStops the build on a missing lead image, a missing caption, an over-length title, or too few internal links.Original quote lengthStops the build if a quoted Korean sentence runs past 120 characters.cta-renderableStops the build if any article template cannot display a commercial link, so a declared link can never vanish without an error.stuck-index-driftStops the build if an article is neither listed on the problem index nor explicitly excluded with a written reason.english-on-translated-pagesReads the built pages and stops the build if a Japanese or Chinese page contains an English UI string that has a translation. Watches 100 strings per language. Written after a first version that compared paths wrongly and passed even with the bug deliberately put back — a gate that cannot fail is worse than no gate, so this one was tested by breaking the code on purpose.share-card-existsStops the build if a page's og:image points at a card file that is missing or empty. Rewriting a title without redrawing the card would otherwise leave a live link to a 404 that shows up nowhere on our own screens — only in someone else's chat window.
What this page does not claim
It is not complete. It records what we caught. Whatever is still wrong on this site is, by definition, not on this page yet — and there will be something. If you find it, tell us and it will appear here with your finding credited to where it came from.
Being careful is not the same as being right. All of the above describes process. It reduces mistakes; it does not eliminate them.