Coupa PO email parser and Payee Central scraper for Amazon site code resolution
This repository has been archived on 2026-08-04. You can view files and clone it, but cannot push or open issues or pull requests.
Find a file
dependabot[bot] f2553eba0d
Bump @aws-sdk/client-dynamodb from 3.1039.0 to 3.1041.0
Bumps [@aws-sdk/client-dynamodb](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-dynamodb) from 3.1039.0 to 3.1041.0.
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-dynamodb/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.1041.0/clients/client-dynamodb)

---
updated-dependencies:
- dependency-name: "@aws-sdk/client-dynamodb"
  dependency-version: 3.1041.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-02 21:17:47 +00:00
.github Add Dependabot version update configuration 2026-05-02 17:14:29 -04:00
output Add reusable chunk scraper, LLM prompt, README; clean up one-off scripts 2026-05-01 19:52:07 -04:00
prompts Add reusable chunk scraper, LLM prompt, README; clean up one-off scripts 2026-05-01 19:52:07 -04:00
.gitignore Add reusable chunk scraper, LLM prompt, README; clean up one-off scripts 2026-05-01 19:52:07 -04:00
gen-po-list.mjs Initial commit: Coupa PO scraper and Payee Central site resolver 2026-04-29 19:44:46 -04:00
monitor.mjs Initial commit: Coupa PO scraper and Payee Central site resolver 2026-04-29 19:44:46 -04:00
package-lock.json Bump @aws-sdk/client-dynamodb from 3.1039.0 to 3.1041.0 2026-05-02 21:17:47 +00:00
package.json Bump @aws-sdk/client-dynamodb from 3.1039.0 to 3.1041.0 2026-05-02 21:17:47 +00:00
parse-mbox.py Initial commit: Coupa PO scraper and Payee Central site resolver 2026-04-29 19:44:46 -04:00
README.md Add reusable chunk scraper, LLM prompt, README; clean up one-off scripts 2026-05-01 19:52:07 -04:00
scrape-fill-chunk.mjs Add reusable chunk scraper, LLM prompt, README; clean up one-off scripts 2026-05-01 19:52:07 -04:00
scrape-payee-chunk.mjs Initial commit: Coupa PO scraper and Payee Central site resolver 2026-04-29 19:44:46 -04:00
scrape.mjs Initial commit: Coupa PO scraper and Payee Central site resolver 2026-04-29 19:44:46 -04:00

amazon-po-parser

Tools for ingesting, scraping, and enriching Amazon purchase order data from Coupa emails and Payee Central.

Architecture

  • Data source: Coupa PO notification emails → parsed into structured JSON
  • Enrichment: Playwright scrapers hit Amazon Payee Central to resolve site codes, ship-to addresses, and line items
  • Storage: DynamoDB purchase-orders table (us-east-1) is the single source of truth
  • Mapping: output/site-state-extra-mapping.json — curated Amazon facility code → US state mapping (392 codes)

Scripts

Script Purpose
parse-mbox.py Parse Coupa PO emails from MBOX export into structured JSON
scrape.mjs Single-browser Payee Central scraper
scrape-payee-chunk.mjs Chunk-based concurrent scraper (run N instances in parallel)
scrape-fill-chunk.mjs Lightweight scraper for backfilling site codes and ship-to addresses
gen-po-list.mjs Generate PO lists from invoice spreadsheets
monitor.mjs Monitor scraper progress across chunks

DynamoDB Schema

Table: purchase-orders | Key: po_number (string)

Field Type Source
po_number string Email/Coupa
site_code string Payee Central scrape
state string Derived from site_code mapping
ship_to_raw string Payee Central scrape
line_items list Email parse + Payee Central
trade string Classified from descriptions
trades list All trades for multi-line POs
fiscal_year string Order date year
coupa_category string Coupa commodity category
source_system string "coupa"
data_source string "email+payee_scrape"
invoice_total string Downstream invoice matching
invoice_count number Downstream invoice matching
order_date string Email parse
po_status string Email parse
payment_terms string Email parse
requisition_number string Email parse

Prompt

prompts/po-email-parser.md contains the LLM prompt for parsing incoming Coupa PO emails. It includes site code extraction patterns, a skip list for non-site codes, trade classification rules, and ship-to address parsing guidance.

Setup

npm install          # playwright

Requires a Chrome profile logged into Amazon Payee Central at ./chrome-profile/.