Skip to main content
All insights

2026-05-09DataMesh Consulting

9 May — public portal hardening day, junk filter removes 48% noise, country-first homepage

A long deploy day. Three threads landed in production — backend hardening (throttler + relation filter + junk hide), Phase 3 SEO surfaces, and full DataMesh Consulting Ltd legal-entity disclosure. Plus the homepage now prioritises tenders from the visitor's own country.

What shipped today

Three independent threads landed in production. They all touch datameshconsulting.co.uk but solve very different problems.

1 · Junk filter (backend)

Several portal scrapers had been capturing the host portal's "About procurement", "Find contract opportunities", "How to bid", "Welcome to…" navigation pages alongside the real tenders. The new server-side filter hides every record whose title matches one of those navigation prefixes.

  • Public corpus dropped from 4,991 → 2,573 active tenders
roughly 48% of what we were showing was actually portal nav, not procurement notices.
  • UK count alone dropped from 1,109 → 779.
  • Filter applies to every public read — listings, detail page,
search, sitemap.
  • Records still exist in the database; only the public surface is
cleaned. Easy to widen or roll back.

2 · Country-first homepage

The homepage's "Fresh from the wire" feed used to show whichever six tenders had landed most recently — typically a mix of Morocco, Oman and Poland, regardless of where the visitor was browsing from.

Now we detect the visitor's country (Cloudflare/Vercel/GCP geo headers first, hostname TLD second, ipapi.co fallback) and prioritise tenders from that country if we have at least three. Visitors from the UK see a UK-led feed; from Türkiye, a TR-led feed; from unsupported regions, the global feed unchanged.

Googlebot crawls from US datacenter IPs so it sees a US-localised feed when we have coverage there — fully indexable, no cloaking.

3 · Throttler + 404-hygiene fixes

Two annoying bugs that caused valid tender pages to render as 404 in Google's index:

  • Public reads now bypass the per-IP throttler (@SkipThrottle()).
The web tier on Cloud Run egresses through a small NAT IP pool that was exhausting the 100-req/min limit almost immediately, returning HTTP 429s that propagated as cached "tender doesn't exist" 404s on the public site. Mutations still throttle.
  • getTender() now distinguishes a real 404 from a transient
429/5xx — Next's ISR fetch cache used to bake a false "doesn't exist" for 600 s on any backend hiccup. Now only true 404s short- circuit; transient errors throw and re-render fresh.

Tender-detail revalidate also dropped from 600 s → 60 s so the junk filter (and any future status changes) reach public ISR-cached pages within a minute, not ten.

4 · Legal-entity disclosure

For Apple Developer Program organisation enrolment plus general UK companies disclosure best practice. DataMesh Consulting Ltd, registered in England & Wales, registered office 95 Mortimer Street, London W1W 7GB now appears in the footer, About page, Privacy data-controller block, Terms operating-company section, and the site-wide Organization JSON-LD. Contact email standardised to yy@datameshconsulting.co.uk everywhere.

5 · Phase 3 SEO surfaces

Less visible per page, but a lot of new URLs:

  • ~2,350 programmatic country × CPV-division landings at
/tenders/<country>/<cpv-2-digit> targeting queries like "construction tenders Saudi Arabia".
  • Country editorials (250-word hand-curated blocks) for the top 20
markets.
  • /methodology page documenting the 5-step extraction ladder.
  • FAQPage JSON-LD on /about, HowTo JSON-LD on
/submit-source.
  • Per-tender hreflang + content-language attributes; RTL tenders
(Arabic / Hebrew / Persian / Urdu) now lay out correctly.
  • Canonical tender URLs are now /tenders/<country>/notice/<id>;
the legacy /tenders/<id> form 308-redirects so existing inbound links keep working and pass link equity.

6 · Apple Smart App Banner + App Store CTAs

The website is read-only. Personalisation — bookmarks, keyword profiles, AI matching, push alerts — lives in the Asistan iOS app. Three changes make that obvious:

  • iOS Safari now renders Apple's native Smart App Banner at the top
of every page (dismissible, links to the App Store).
  • The "Save tender" button on detail pages now deep-links to the
App Store instead of asking for a non-existent web login.
  • Header has an "App Store" chip for desktop / Android / in-app
browsers where Apple's Smart Banner doesn't fire.

What's flowing right now

| Surface | Volume | |---|---| | Active tenders publicly indexed | 2,573 | | Source portals tracked | 127 | | Countries with at least one active tender today | 32 | | Cloud Run revisions deployed today | 6 backend × 6 web |

What we're working on tomorrow

  • Diagnose the last junk-tender prefix-match miss — Network Rail
"Procurement -" leaked through findOne once due to a leading whitespace edge case; need to harden the comparison.
  • Begin populating Tender.cpvCodes at extraction time so the sector
pages stop relying on keyword fallback.
  • Begin populating Tender.language so the on-demand translate
button surfaces correctly on every non-English tender.
  • Investigate Cloudflare in front of the GCP load balancer — TR ISPs
are intermittently injecting TCP RSTs on the apex SNI; Cloudflare edge IPs are widely-allowed and would unblock.
Methodology: drawn from the week ending 2026-05-09 tender corpus. Tender data sourced from public procurement portals worldwide; see our methodology for the extraction pipeline.