Changelog
Every feature, improvement, and fix - documented. Watch us build in public.
July 202616 entries
Talent fee moved to a clearer 15 percent structure
The talent fee is now 10 percent for the platform plus 5 percent for payment, payout, escrow, and dispute handling, 15 percent total, charged to talent only. Talent keep 85 percent of every booking.
Cancellation and refund terms shown before you commit
Cancellation and refund terms now show before you send a quote, before you pay, in the FAQ, and in your booking confirmation email, so the policy is never a surprise.
New admin view for managing bookings
A new admin view brings booking status, payment state, and cancellations together in one place.
Stalled payouts now escalate automatically
Payouts that stall are now flagged and escalated automatically instead of sitting silent.
Tax identifier collection added to payout setup
Talent now provide a tax identifier as part of setting up payouts.
Quotes now have a $5 minimum
A minimum quote amount of $5 closes a gap that previously let near-zero-value quotes through.
City pages now keep a publish audit trail
City pages record when they were published, improving traceability for the publishing pipeline.
Fixed a browser security policy issue
Fixed a Content Security Policy issue that could block some pages from loading their scripts correctly.
Travel affiliate links and SEO pages expanded
Travel affiliate links and search-optimized pages expanded across postal-code and destination pages.
Miami photography hub is live
A dedicated hub for Miami photographers, with local FAQs and city-specific search, so clients can find and contact photography talent in Miami directly.
Founder, Team, and Elite badges
Verified talent profiles now show Founder, Team, and Elite badges where they apply, so clients can spot vetted and top-tier talent at a glance.
Faster search, a proper 404 page, cleaner empty states
Press Enter to search from anywhere on the site, a branded 404 page replaces the old default, and pages with no results now explain what happened instead of showing a blank screen.
Email deliverability improvements
Confirmation emails and other account messages now land more reliably, with better sender reputation monitoring behind the scenes.
Talent profile pages and category filters fixed
Fixed a set of bugs on individual talent profile pages and the category filter dropdown so browsing talent works correctly across devices.
Shoppable talent profiles rolling out
Selectable services and pricing are rolling out across talent profiles, so clients can see exactly what is offered before reaching out.
Launch date moved to August 2026
Launch date moved to August 2026
June 202611 entries
Cleaner profile editing
The talent profile editor is tidier and more reliable. Each section now has a single Save button with a clear saved confirmation, and a bug is fixed where saving your professional headline wrongly triggered an account email-change prompt. Founder and team accounts also show a clear badge.
New press page and brand kit
A dedicated press page now carries the founder bio, the team, the operating-entity details, downloadable brand assets, and the key platform numbers. The contact page also gained a proper form with topic routing for general, press, partnership, support, and bug messages.
Better city tagging on jobs
More job listings are now correctly matched to their city, so city pages and city filters surface more relevant local work. Coverage of city-tagged published jobs increased substantially, with no listings dropped.
Be part of the build: /fund and /investors
A new homepage banner links to /fund for early supporters and /investors for the pre-seed round, making it easy to back the platform directly.
Cleaner job and gig listings
Job and gig listings now display with consistent, tidy formatting. Titles, company names, and locations are automatically cleaned of stray spacing as listings come in, so every card reads clearly. This runs on every new batch of listings, keeping the directory consistent as it grows.
Sign in with Google
You can now create an account or sign in with one click using Google, alongside email signup. Faster onboarding for talent and clients.
Save jobs and gigs to your dashboard
Every job and gig card now has a save button. Saved listings live in your dashboard so you can come back to them anytime.
Join as talent - new page live
A dedicated page explaining how the platform works for freelancers and performers: free to join, clients contact you and pay you directly, optional Premium for more visibility.
Cleaner listings: salaries, sources and companies normalized
A unified pipeline now standardizes salary ranges, source attribution and company records across all incoming jobs and gigs. Every aggregated listing shows where it comes from and links to the original posting.
1,363 duplicate listings removed
A sitewide deduplication pass archived 1,363 duplicate job and gig listings, and a nightly job now keeps duplicates out automatically.
Profession pages and category links fixed sitewide
Talent profession pages went live with clean URLs, hundreds of mangled listing slugs were repaired, and footer category links now point to the right places.
May 202631 entries
City H1 now includes "Event Talent" intent phrase
City detail pages now include "Event Talent" in the H1 to capture event-staffing intent queries across 340K+ city pages.
Gig ingest throughput tripled
Gig pipeline batch_size increased from 50 to 150. Processes 3x more listings per cron run.
Blog image validator edge function deployed
New edge function HEAD-checks all Supabase Storage image URLs and flags broken ones. First step toward zero broken hero images.
SVG placeholder backfill cron deployed
Nightly cron backfills SVG placeholder images for city and venue pages with no photo.
Jobs pipeline restored: apply URL column fix
Fixed a column mismatch in job-ingest-worker (TBA-700) where the worker wrote apply links to application_url but the auto-publish sweep and CHECK constraint checked apply_url. Deployed v18 of the edge function. Pipeline unblocked with 448 published jobs now live.
Gig archiving fix: 1,148 expired gigs cleaned up
Fixed archive_stale_content() to correctly check gig_postings.expires_at (TBA-488). Previously expired gigs were not being archived due to a WHERE clause targeting the wrong column. 1,148 stale gigs archived, published gigs stabilized at 2,145.
Stale city URL slugs corrected sitewide
Compound city slugs in cross-links, hire pages, and how-to pages replaced with canonical DB slugs. Prevents internal 404s.
Em-dashes removed from user-facing page titles
Page titles in /vs, /hotels/th/bangkok, and city category pages used Unicode em-dash. Replaced with hyphen or colon.
Banned copy removed from legal pages
"Not a marketplace or booking site" replaced with approved platform description in Client Guidelines and Trust & Neutrality pages.
Card/list view toggle on /jobs and /gigs
Users can now switch between a card grid and a list view on /jobs and /gigs. Preference is saved to localStorage and persists across page visits. Default is list for SSR-safe rendering with no layout shift.
9 competitor comparison pages at /vs/{slug}
Nine /vs/{competitor} pages comparing The Booking Agency to Upwork, Fiverr, Indeed, LinkedIn Jobs, Glassdoor, Wellfound, Contra, Workana, and Freelancer. Each page has a comparison table, win/loss breakdown, use-case scenarios, and JSON-LD FAQPage schema. Includes a /vs index page. All routes added to the sitemap.
Web vitals beacon edge function
New Supabase edge function accepts Core Web Vitals (LCP, INP, CLS, TTFB, FCP) from the browser and stores them in a web_vitals table. Enables real-user performance monitoring for production pages.
Text links now blue; brand pink reserved for CTA buttons
Global CSS update: inline text links render in blue (#2563EB) instead of brand pink, matching web conventions. Brand pink (#FF4D82) is preserved exclusively for CTA buttons and action elements.
Affiliate click tracking restored via sendBeacon
Affiliate click events were being silently dropped when users navigated to partner URLs before fetch() completed. Switched to navigator.sendBeacon() which the browser sends even after page navigation. Fixes a 29-day gap in ad_clicks data.
Hotellook branding updated: all copy now references Booking.com
Hotellook shut down in October 2025. Updated 3 SSR pages and the affiliate disclosure that still referenced Hotellook. All affiliate links already auto-redirected to Booking.com via Travelpayouts, so revenue was never interrupted.
Bangkok hotels hub launched at /hotels/th/bangkok
First hotel affiliate landing page. SSR route with Booking.com search CTAs pre-filled to Bangkok and 6 neighbourhood deep-links (Sukhumvit, Silom, Old City, Ari, Suvarnabhumi Airport, Siam). Hotel tips section included. Route added to sitemap.
All talent profiles now publicly visible
Expanded the discoverable talent pool to 59 published profiles. The /talent directory now reflects the full active member base, with quality-checked profiles visible to all visitors.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
April 20262 entries
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.