Changelog

Every feature, improvement, and fix - documented. Watch us build in public.

May 202613 entries

updateFeaturedMay 16

Live multi-currency converter shipped

Real-time exchange rates for 50+ currencies, refreshed every 6 hours from open.er-api.com. Available at /tools/currency-converter plus inline on pricing pages.

uitools
FeatureFeaturedMay 16

Talent directory expanded to 50 verified profiles

Published 30 additional talent profiles that met the quality bar (username + name set). The talent directory now shows 50 active freelancers across all categories. Counters on /open and the homepage updated to reflect the new total.

talentplatformlaunch
ImprovementFeaturedMay 16

Jobs and gigs filtered to apply-path listings only

Removed jobs and gigs with no valid apply URL from all listings, sitemap, and detail pages. Improves feed quality and eliminates dead-end applications.

jobsgigsquality
FeatureMay 16

Currency converter placeholder launched

Replaced the unfinished currency converter with a clean Coming Soon card. Live multi-currency tool with price updates sitewide is in progress.

toolsfrontend
FixMay 16

Site stats refresh fixed - nightly cron back on schedule

Rewrote refresh_site_stats() to use single-pass aggregations instead of 30+ sequential COUNT scans. Dropped runtime from 120s (over platform limit) to well under 2 minutes. Stats now update nightly again.

infrastructureperformancebackend
FixMay 16

Job listings now auto-archive when expires_at passes

Fixed archive_stale_content() to catch date-expired jobs. 124 zombie listings removed from the feed. Runs nightly at 04:00 UTC.

infrastructurejobsbackend
FeatureFeaturedMay 16

Gig pipeline launched: 4,000+ gigs now live

Path A-selective gig promotion shipped. 4,003 gigs are now published and included in the combined jobs+gigs feed across /jobs, /gigboard, and all city pages. Combined total: 5,759 active opportunities.

gigsjobscontentpipeline
FixMay 16

City venue cards stable across all cities

Fixed PostgREST statement timeout on large cities. Venue card payload is now pre-computed nightly via venue-card-backfill edge function. London went from 0 to 7 venue cards; all tested cities verified.

citiesperformanceseo
FixMay 16

Subscription pricing canonical IDs locked

Stripe price IDs are now a single source of truth in _shared/subscription-pricing.ts, mirrored to the pricing_config table. All four edge functions (get-subscription-pricing, create-subscription-checkout, create-checkout-session, create-biab-checkout) redeployed with canonical IDs.

paymentsstripesubscriptions
FixMay 16

Talent profile URL improvements

Talent profile slugs now resolve correctly. Monique's profile moved from /talent/monique to /talent/monique-van-bokkum with a redirect from the old URL.

talentprofilesseo
FixFeaturedMay 15

Gig Apply CTA fixed - links now go to source listings

Fixed a routing bug where Apply buttons on gig detail pages were pointing at undefined URLs. All gigs now link correctly to their source application pages.

gigsfrontendux
updateMay 15

GTM and GA4 removed: privacy-first analytics

Google Tag Manager and GA4 tracking removed from all pages. Analytics is now handled via privacy-first tooling only. Reduces page load overhead and removes third-party cookie dependencies.

privacyanalyticsperformance
FeatureFeaturedMay 14

Venue card pre-computation shipped - city pages 10x faster

Added pre-computed venue_card_payload column to city_pages. Eliminates per-request venue joins on high-traffic city detail pages. Backfill running across 340K cities.

performancecitiesbackend

April 202633 entries

FeatureApr 28

Brand Brief shipped at /brand

/brand SSR page with hero, 11 sections, Hot Coral Pink #FF4D82 accents, Inter typeface. Linked from footer About column. Replaces the need to copy-paste brand language into outbound messages.

brandsales-enablementmarketing
FeatureApr 28

Mobile menu and footer rebuild

Header.tsx + Footer.tsx rebuilt. Removed legacy /people, /community, /friends links. Added /hire and /events to primary nav. Pinterest, Instagram, Facebook, LinkedIn, YouTube social icons. All link targets verified 200.

mobilenavigationaccessibilitylaunch-critical
FixApr 28

Roadmap cleaned and rescoped for launch

Roadmap state: 19 Now (was 27), 31 Next, 15 Later, 90 Shipped. Removed duplicates: Multi-Language Support, Content Scale 50M, Mobile PWA. Consolidated mobile entries into one canonical "Mobile App (PWA + native shell)".

roadmapplanningtransparency
FixApr 28

Sitemap collapsed to a single canonical entry

Single source of truth for crawlers. The old /sitemap.xml and /sitemap-jobs.xml now permanent-redirect to /sitemap-index.xml. Robots.txt declares only one Sitemap line.

seocrawlabilitylaunch-critical
FeatureApr 28

Pinterest domain verification shipped

p:domain_verify meta tag shipped to pages/+onRenderHtml.tsx and index.html. After Monique completes the claim flow in Pinterest, all pins linking to bookingagency.io will surface analytics + show the verified domain badge.

pinterestsocialverification
FeatureApr 28

Pipeline health monitoring shipped

New check_ingest_health() function and ingest_health_log table. Cron logs alerts when any pipeline goes >6 hours without a new row. This eliminates the "we didn't notice the pipeline was dead" problem we hit last week.

monitoringinfrastructurereliability
FixApr 28

Job ingestion pipeline revived - 1,400+ new jobs in 24 hours

Live job count went from 2,442 to 3,846 in one session. New jobs continue to flow hourly from 11 active sources including WeWorkRemotely, Himalayas, Remotive, Python.org, Ruby on Rails Jobs, and Cyber Security Jobs.

jobsingestionlaunch-criticalinfrastructure
FeatureApr 25

Expat Score Distinct from Nomad

New expat_score column differentiates long-term (1+ year) settlers from nomads (1-12 month). Weighs healthcare, citizenship path, property rights, schools.

scoringexpats
FeatureApr 25

OSM Priority Queue

814 nomad cities with sparse data (<10 listings) flagged osm_seed_priority=100. OSM scraper fills these gaps first to make nomad-relevant cities feel complete.

dataosmpriority
FeatureFeaturedApr 25

Crosslinks 3K → 61K (20x)

content_linking_matrix expanded with bidirectional links: country↔cities, city↔similar-global, blog↔city, city→visa-calculator, city→categories, city→nearby cities.

seocrosslinks
FeatureFeaturedApr 25

All 340K Cities Now Scored

Every city has nomad_score (0-100) and expat_score (0-100). 996 cities scored 60+ as nomad-relevant. ~140 cities scored 70+ as top expat hubs.

scoringdataseo
ImprovementApr 24

577K Venue Descriptions Expanded

city_listings descriptions expanded from 60-char boilerplate to 200-400 char rich descriptions using address, WiFi, power, pet, accessibility, and price data.

venuescontentseo
FixFeaturedApr 24

Talent Dashboard Save Fixed + RLS Hardened

owner_update_own_profile + owner_insert_own_profile RLS policies applied. Talent dashboard saves now work reliably (TBA-134).

talentrlsauth
FeatureApr 24

city_listings Meta + JSON-LD Framework

Added meta_title + meta_description columns to 3.57M city_listings. LocalBusiness JSON-LD schema live on listing pages (TBA-167).

seoschemavenues
FeatureApr 24

Continent Classification - 340K Cities

All 340,025 cities now classified by continent (TBA-165). /cities page will tab by Asia, Europe, North America, South America, Africa, Oceania.

citiestaxonomy
FeatureFeaturedApr 24

Brand Logo Pack Delivered

Full brand logo package: Design A (pure heart) in 6 colorways × 13 outputs, canonical pink-filled-on-white for /public/.

brandingdesign
FixApr 24

152 Duplicate Cities Deduped

city_pages dedupe migration shipped (TBA-162). 152 city pairs consolidated; 31 FK tables remapped.

citiesdata-quality
FeatureFeaturedApr 24

Footer Rewrite + Transparency Gate

Major footer overhaul with Legal, Transparency, About sections (TBA-145). RSS link to /rss/jobs.xml prominent.

footertransparency
FeatureFeaturedApr 24

Mobile City Carousel

Homepage mobile now shows a scroll-snap carousel of 6 featured cities: Bangkok, Amsterdam, Tokyo, Buenos Aires, Miami, Cape Town (TBA-163).

mobilehomepageui
FeatureFeaturedApr 23

SEO Fix Worker - 10 Targets

Auto-healing SEO worker extended to 10 targets including images, thin content, meta tags (TBA-131 + TBA-148).

seoworkers
FeatureApr 23

Climate Worker - Köppen Classification

City climate data auto-refreshes via Köppen lat-band approximation (TBA-146). Covers 340K cities.

climateworkers
FeatureApr 23

Visa Verify Worker - /5min

Automated worker refreshes country_visa_info data every 5 minutes (TBA-142). Prevents stale visa info going out to users.

visaworkers
FeatureApr 23

Visa Preset Picker

Creator trips now support 8 pre-configured visa presets - DTV, Schengen, US B1/B2, Thailand Tourist, and more (TBA-140).

visatrips
ImprovementApr 22

Travel Dashboard Reorder

Reorganized travel dashboard for better flow (TBA-138).

traveldashboard
FeatureApr 22

Collaborations Banner Shipped

Homepage partnerships and brand collaborations banner live (TBA-137).

homepagemarketing
FeatureApr 21

Trip Purpose Taxonomy - Education Added

Added Education enum to trip purposes (TBA-133) for DTV/education-visa use cases.

tripsvisa
FeatureApr 20

Admin Superbrain Menu

Consolidated admin tools behind single menu (TBA-130).

admin
FixApr 19

Seed Cities Tile Fixed

Homepage featured tile now renders correctly across devices (TBA-147).

uihomepage
FeatureApr 14

3-Level Category Architecture

L1: 34 Industries. L2: 10 BLUE bookable + 14 GREEN professions. L3: Specialties JSONB. Ships with buildCategoryFilter() in SSR.

taxonomycategories
FeatureFeaturedApr 12

Site Direction Pivot - Talent Discovery

Removed dating/friend pages. Renamed Hire Talent. 50+ messaging locations updated to "independent talent discovery platform."

pivotbrandingux
FeatureApr 10

OSM Scraper - 30+ Venue Categories

OpenStreetMap ingestion for cafes, coworking, coliving, gyms, and 26 more categories.

dataosmingestion
FeatureFeaturedApr 8

Venue Detail Pages SSR - 3.5M Listings

Every one of 3.5M city_listings now has a server-rendered detail page with JSON-LD.

ssrvenuesseo
FeatureApr 6

URL Architecture - /hire, /events

/hire/{category}/{country}/{state?}/{city} + /events/{type}/{country}/{city}. 10 event types defined.

urlsroutingseo

March 202614 entries

FeatureFeaturedMar 30

Universal Search - 7 Content Types

One search box, seven indexes: cities, listings, venues, jobs, gigs, talent, blog.

searchdiscovery
FeatureMar 28

100,000+ Travel Blog Articles

Travelpayouts affiliate content generator live. Marker 671111. 147K articles across 8K cities.

blogseotravelpayouts
FeatureFeaturedMar 25

Sitemap Infrastructure - 8.7M URLs

Split into 1,741 sub-sitemaps under master index. All routes discoverable by Google, Bing, DuckDuckGo.

seositemaps
FixFeaturedMar 23

SSR Architecture Stabilized

Vike SSR + hydrateRoot pattern deployed sitewide. 199 page directories converted. All pages now server-render with valid HTML for crawlers.

ssrinfrastructureseo
FeatureMar 21

Search Rebuilt - 6 Sections

Complete search overhaul with 6 result sections: Cities, Guides, Countries, Talent, Jobs, and Venues. Trigram indexes for fast fuzzy matching. CSP headers fixed for inline scripts.

searchperformance
ImprovementMar 21

City Pages Redesigned

Hero content collapsed by default, quick navigation cards shown first. Weather widget, eSIM and flight search widgets placed above the fold.

city-pagesux
ImprovementMar 21

Travelpayouts Widgets Upgraded

NordVPN native recommendation cards, Aviasales flight search forms, blog contextual affiliate widgets. Mobile-optimized placements.

monetizationaffiliates
FeatureMar 21

Weather Widget on City Pages

Beautiful weather widget with condition-based gradient backgrounds, 5-day forecast, C/F toggle, and smooth expand/collapse animation.

city-pagesfeature
securityMar 21

Security Hardened - RLS & API Keys

Affiliate API keys restricted to admin-only access. Reviewer emails masked via secure views. brain_research_queue RLS policies fixed.

security
PerformanceMar 20

Sitemap Optimized - 258 Sitemaps

Reduced from 5,744 to 258 sitemaps. Consolidated index structure for faster crawling and better SEO coverage.

seoperformance
FeatureMar 20

GA4 Analytics Live

Google Analytics 4 (G-V4D4PYPGH3) confirmed active across all pages including SSR-rendered routes.

analytics
FixMar 20

Unsplash Photo Attribution

All Unsplash images now include proper photographer attribution with links. Compliant with Unsplash API guidelines.

legalimages
PerformanceMar 20

Search Performance - Trigram Indexes

Added pg_trgm trigram indexes on city_name, country_name, title columns. Content Security Policy fixed for search functionality.

performancesearch
ImprovementMar 20

170 Local Event Images Replaced

Replaced 170 placeholder event images with curated, location-relevant photos for local events across all city pages.

contentimages