-
Use verified 100-result mobile search pages for longer windows and retry the observed uncoded backend error with the same bounded request budget.
-
Recover temporarily empty/incomplete mobile details, preserve valid offers when optional numeric fields are malformed, and report damaged or conflicting pagination as partial output.
-
Reject malformed GraphQL error codes and oversized identifiers safely; extend local concurrency, fault injection, billing and maximum-volume resource validation.
-
Retry individual mobile requests with bounded waits, preserve the current page and detail identity, and respect shared server cooldowns without restarting a completed search window.
-
Record aggregate request attempts, recoveries and exhausted errors in SUMMARY while keeping credentials and response bodies out of progress logs.
-
Align the run-summary schema with the current output and validate actual Dataset rows and summaries against their declared schemas.
-
Deliver the affordable portion of tiered batches, restore spending reservations, serialize billing decisions, and distinguish uncertain Dataset writes from saved charge-ready batches.
-
Reject overlapping billing replays before any duplicate write/charge; reuse stable charge keys after lost responses. Unknown Dataset-write outcomes stop for reconciliation.
-
Reject malformed selector inputs and discard malformed optional links without dropping otherwise valid offers. Pin the tested Apify SDK/client and refresh the dependency lock.
-
Bound active and completed search results to prevent memory growth during slow Dataset writes; select 256 MB for search windows above 100 offers, including offsets, while retaining 128 MB for smaller workloads.
-
Enriched delivered offers with company IDs, ratings, review counts, salary provenance, normalized titles, application/sponsorship/expiration flags, company type/year/sector and public review/salary links.
-
Preserve fractional salary amounts, normalize company domains as external websites, and prefer reported publication dates over age-derived dates.
-
Distinguish country, region and city locations while preserving null locations for remote offers. All 28 existing output fields remain available; the 13 additions are optional.
-
Validated the enriched output with 218 local tests, the final 17-case Docker matrix at 128 MB, complete real README output, and SDK PPE/spending-cap simulations.
-
Migrated the Actor locally to the anonymous Android mobile GraphQL transport, preserving the public input and Dataset fields.
-
Removed the production proxy-secret dependency; share request pacing and stop all searches on access controls or rate limits.
-
Validate country scope, detail identity, cursor pagination, optional enrichment, and the documented whole-day publication dates.
-
Passed the local Docker migration matrix at 128 MB and local SDK PPE checks, including the spending cap. Cloud promotion awaits approval.
-
Show customer progress in both the run log and status message, with live page counts, saved-job counts, and explicit terminal outcomes.
-
Keep library, request, retry, and billing diagnostics out of the console log; status-update failures do not interrupt Dataset delivery.
-
Restored location lookup using Glassdoor's current autocomplete service.
-
Updated the initial page request to the current homepage route.
-
Stop on denied or unavailable pages rather than retrying an access denial.
-
Added regression coverage and default-input smoke validation with real Dataset checks and a runtime limit.
-
Resolve ambiguous locations within the selected country and align runtime result defaults with the input schema.
-
Share a bounded request budget across retries for small searches, and close HTTP sessions on success and failure.
-
Preserve source order and requested offsets in partial results; continue past filtered pages and stop repeated pagination cursors.
-
Reject unreadable listing responses and access-challenge HTML instead of reporting empty success.