ExitTech · May 2026

Monthly delivery digest

73 tickets shipped across four work streams
Attribute scraper Ensure quality & UX Infrastructure What's next
0
Tickets shipped
0
Attribute scraper
0
Ensure UX & quality
Attribute scraper27 tickets

The attribute scraper dominated May. The team built out the full automated attribute compliance pipeline — from Eve brand sync and smart scheduling through to accuracy improvements that cut noise from scan results. This is the foundation for automated attribute checks at scale across all operator sites.

Tabbed results layout

Attributes results now split into "Found" and "Not Found" tabs with counts per tab.

For users: full coverage visibility at a glance — no guessing whether the scan missed attributes or genuinely found none.
Tabbed attributes results

Bulk approve & remove

Select multiple results and approve or remove in one action with a confirmation step.

For users: reviewing a 26-result scan no longer means 26 individual clicks — select all correct results and approve in one go.
Bulk actions

Priority & active flag on attribute types

Attribute types now have a priority field and an active/inactive toggle managed from an admin view.

For admins: control which attributes get checked and in what order without a code change.
Priority field

Alternative homepage per site

Admins can now set a GEO-specific override URL per site, editable from the Ensure UI.

For admins: fixes cases where the synced brand URL doesn't work for a specific market — no developer intervention needed.
Alternative homepage
ET-641
Results where the AI says "The page does not mention X" are no longer stored as found attributes
Why it matters: these false positives surfaced in every review queue, forcing users to manually delete results that were never real findings. Now they're discarded at source.
ET-647
Scans now scope to the configured locale — fixed multi-language contamination (e.g. Norwegian brand scan returning Spanish, Greek, Hindi evidence)
Why it matters: results were mixing content from unintended regional versions of sites, making attribute values unreliable for geo-specific compliance checks.
ET-636
Slot-level payline and ways-to-win text excluded from game count attributes
Why it matters: payline descriptions were being mistakenly counted as game titles, inflating game count results and creating false conflicts during review.
ET-673
Game-level RTP percentages excluded from the Casino Payout % attribute
Why it matters: individual game RTPs were being extracted as the site's overall payout rate, giving users inaccurate compliance data.
ET-701
News, article, and blog URLs filtered out of the attribute crawl queue
Why it matters: blog content was being scanned instead of product pages, wasting scan budget and producing irrelevant results for compliance attributes.
ET-668
HTML stripped to plain text before sending to AI for extraction
Why it matters: sending raw HTML inflated token usage and degraded quality — the AI was processing nav menus and footer code alongside actual content. Cleaner input = lower cost, better accuracy.
ET-626
Scheduler skips URL discovery if the site was crawled within the last 30 days, reusing the previous URL list
Why it matters: every scan was recrawling the entire site just to find pages — now it only recrawls monthly, cutting unnecessary web traffic and speeding up scans for stable sites.
ET-609
Bot-blocked page fetches automatically retry once using the domestic proxy before failing
Why it matters: a single bot-detection block previously caused the whole URL to fail silently. Now the system self-heals on the first block, improving scan coverage without manual intervention.
ET-669
US and ROW groups now scan on independent schedules with separate queues
Why it matters: a large US scan could previously block ROW scans from running on time. Separate scheduling means each group runs reliably on its own cadence.
ET-560–568 / 578/579/591
Full Eve integration foundation: eve_brand_id column, attribute_types table, brands and attribute types sync, multi-GEO site creation, results linked to attribute types
Why it matters: Ensure now knows about Eve brands and attribute types as first-class data — the prerequisite for the attribute pipeline that feeds data back into Eve automatically.
Ensure quality & UX12 tickets

A round of user-visible improvements across Ensure's core scan pages — making it faster to understand scan health at a glance, fixing edge cases that produced misleading results, and closing out several post-launch quality items.

Links page stat panels

Fix / Check / OK summary counts now appear at the top of every links results page.

For users: no more navigating back to the overview just to see totals — scan health is visible the moment you open a results page.
Links stat panels

Site overview metadata panel

Site pages now surface location, server, Eve brand ID, and last scan summary cards for all users.

For users: this info was previously locked behind the Edit form (admin-only). Now anyone can see the site's geo and server config without raising a ticket.
Site metadata panel

Scan disabled visibility

Sites with a scan type disabled now clearly show "Scan disabled" instead of a stale last result.

For users: previously users couldn't tell if a blank result meant "hasn't run yet" or "scan is turned off" — now it's explicit.
Scan disabled state

Offer scan bot handling

Bot-blocked and "Please rotate your device" offer pages now classify as "Unable to check".

For users: these previously returned misleading similarity scores against error page content — now users get accurate signal, not a false mismatch.

Links scan — Eve brand/site resolution

Fixed a bug where Eve links resolved to the wrong site and brand, causing correct-site offers not to be scanned.

For users: some operator sites were scanned against the wrong brand's offer data — results are now matched correctly.

Offer scan & UX fixes

Newly enabled sites no longer report "already running" on first scan. "Exact" and "Unable to scan" columns hidden from default offers view.

For users: cleaner default view and no false error messages when onboarding a new site.
Infrastructure & DevOps12 tickets

A significant reduction in proxy running costs, a new automated release pipeline, a major codebase refactor, and resolution of several production stability issues that were causing scan failures.

Proxy cost reduction ~13×

Switched Bright Data from residential to datacenter IPs — same geo-routing at ~$0.60/GB vs $8/GB.

Why it matters: residential IPs were costing ~$50 per 3-day run cycle. Datacenter IPs bring this to ~$4 per cycle — freeing budget without reducing scan coverage.

Per-site proxy retry toggle

Individual sites can have proxy retries enabled or disabled from Site settings.

Why it matters: a small number of sites were using disproportionate proxy credit with near-zero success. Admins can now disable retries per-site to stop wasteful spend.

Release automation via n8n

Releases triggered via Slack slash-command — n8n handles branch merging, CHANGELOG generation, and PR creation.

Why it matters: releases were fully manual — creating a Jira version, merging branches, updating the CHANGELOG, opening a PR. Now it takes one Slack message.

Event-driven architecture

CheckObserver refactored from a ~120-line monolith into 6 domain events, 5 focused services, and 5 queued listeners.

Why it matters: the old code was a single point of failure — hard to test, risky to change. New structure means scan behaviours can be added safely with lower risk of regressions.

Queue server stability fixes

Resolved disk full error on Finland server, memory exhaustion in sitemap parsing, and RunCheckJob hitting max retry attempts (24/24h).

Why it matters: each caused scan jobs to silently fail or queue without completing. Scans are now completing reliably without manual restarts.

MySQL 8.0 → 8.4 + security patch

Database upgraded to latest stable MySQL. A privilege escalation vulnerability patched.

Why it matters: the security issue allowed users to escalate to arbitrary teams. Patched before any known exploitation. MySQL upgrade keeps us in the supported LTS window.
What we're considering next

Ideas on the radar across four themes. Filled nodes are selected or in active development; outlined nodes are under consideration. This is a working picture — to be refined with the team.

ExitTech ideas under consideration Animated mind map. Four themes radiate from a central ExitTech ideas circle. Coloured filled nodes are selected or in active development. Outlined nodes are under consideration. ExitTech ideas Attribute scraper Compliance Offers Platform & infra → Eve pipeline Inline translation → Operator features → Geo keywords → Oplist/content split Risk levels Keyword replacement Exclude & comment T&C completeness RG disclaimer check MCP server Links flagging Job health alerts → Redis migration → CloakBot eval
Selected / in progress
Under consideration