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 —
- UK count alone dropped from 1,109 → 779.
- Filter applies to every public read — listings, detail page,
- Records still exist in the database; only the public surface is
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()).
getTender()now distinguishes a real 404 from a transient
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
/methodologypage documenting the 5-step extraction ladder.FAQPageJSON-LD on/about,HowToJSON-LD on
/submit-source.
- Per-tender
hreflang+ content-language attributes; RTL tenders
- Canonical tender URLs are now
/tenders/<country>/notice/<id>;
/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
- The "Save tender" button on detail pages now deep-links to the
- Header has an "App Store" chip for desktop / Android / in-app
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
findOne once due to a leading
whitespace edge case; need to harden the comparison.
- Begin populating
Tender.cpvCodesat extraction time so the sector
- Begin populating
Tender.languageso the on-demand translate
- Investigate Cloudflare in front of the GCP load balancer — TR ISPs