← Selected workWeb design / Interactive development

AmazinSaver.

From scattered data to something useful.

AmazinSaver archived interface with fictional sample records
Archived interface / fictional demonstration catalog
The assignment

Bring promotional information into one categorized experience, with search and clear distinctions between new offers and offers nearing their expiration.

Design decisions

The interface depended on useful, organized records. Browser collection fed CSV files into a spreadsheet workflow for enrichment and review. The front end then used the prepared content for browsing, categories, countdowns, and code copying.

What was delivered

An independent web project connecting interface design with a practical data workflow. The original service is offline. The preserved archive uses fictional sample records, local illustrations, and no live offers or affiliate destinations.

The data workflow

Collect. Enrich.
Review. Publish.

The collection tool and Apps Script connect the information behind the interface. Human review remains part of the workflow.

  1. 01

    Collect

    Scroll the former promo page, extract records, and deduplicate promo codes.

  2. 02

    Export

    Write CSV files for a structured intake into Google Sheets.

  3. 03

    Enrich

    Resolve product identifiers and images; record status and errors.

  4. 04

    Review

    Check completeness, dates, and exceptions before publication.

  5. 05

    Publish

    Move eligible records to READY for the website’s published CSV feed.

Ready means something specific.

The Apps Script checks for Active status, a title, image URL, FOUND image status, ASIN, and an affiliate link before moving a record to READY. The historical affiliate field belongs to the original workflow; the preserved demonstration does not send visitors to affiliate destinations.

Exceptions have a path.

Upcoming and expired records have separate destinations. Missing-product and image failures receive explicit statuses. Failed-row scans have a preview mode, and safe promotion-link reviews flag suspected ended offers for manual confirmation rather than silently removing them.

Read the actual readiness rule +
const ready =
  String(rowData[col.promo_status] || "").trim() === "Active" &&
  rowData[col.product_title] &&
  rowData[col.image_url] &&
  String(rowData[col.image_status] || "").trim() === "FOUND" &&
  rowData[col.asin] &&
  rowData[col.affiliate_link];

Source excerpt from moveReadyRows() in the supplied Google Apps Script. Configured batch limits describe settings, not measured throughput.

Open the archived website ↗

Fictional sample catalog · Original service offline · No live offers