# Pneumatic wrist device — leads project

Stage 1 longlist of 1688 sellers for the air-pump (pneumatic) BP-watch
sourcing project. Goal: identify ODMs / component suppliers / solution
providers for an OEM fit. Stage 2 (verify) is documented in
`stage2_research_log.md`.

## How to re-run the longlist

```bash
export APIFY_TOKEN=$(python3 -c 'import json; print(json.load(open("/home/claw/.openclaw/credentials/apify.json"))["token"])')
python3 apify_run.py
```

This runs the `1688-bp-watch-odm` recipe end-to-end:

- kicks the `prodiger/1688-scraper` actor (PPE, $1.40/1k products)
- fetches the dataset
- saves the raw json + normalized csv to
  `~/.openclaw/apify/datasets/pneumatic-wrist-leads/1688-bp-watch-odm/<ts>/`
- appends a JSON line to `~/.openclaw/apify/logs/1688-bp-watch-odm.jsonl`
- continues the lead_id sequence in the project's `stage1_raw_leads.csv`
  (the local working copy used by `pneumatic-wrist-leads.html` and the
  `leads.csv` merge)

Total cost: ~$0.15 per run, ~3 min wall time, ~$0.24 cost-estimate cap.

## Files

| File | What it is |
|---|---|
| `apify_run.py` | thin project wrapper around the `apify` CLI (see ~/bin/apify) |
| `leads.csv` | merged master (stage 1 + verified stage 2 additions) |
| `leads_clean.csv` | latest verified-only snapshot |
| `stage1_raw_leads.csv` | stage 1 only — all 1688 hits, dedup'd, classified |
| `stage1_research_log.md` | stage 1 run history |
| `stage2_research_log.md` | stage 2 verify history |
| `TASK.md` | the original task spec (kept for reference) |
| `keyword-plan.md` | keyword rationale |
| `full_run_raw.json` | legacy raw cache from the original spike run (2026-06-16). newer raw data is in `~/.openclaw/apify/datasets/pneumatic-wrist-leads/` |
| `pneumatic-wrist-leads.html` | the public longlist page on claw.mni.ac |
| `pneumatic-wrist-crm.html` | the verified CRM page on claw.mni.ac |

## Recipe location

The recipe (keywords, classifier, schema) lives in
`~/.openclaw/apify/recipes/1688-bp-watch-odm.py` — edit it there to
change the keyword set, not here. Re-run after edits.

## Useful subcommands

```bash
apify list-recipes                            # show installed recipes
apify show-recipe 1688-bp-watch-odm           # print the RECIPE dict
apify cost-estimate 1688-bp-watch-odm         # check cost vs cap
```

To add a new keyword: edit the `KEYWORDS` list in
`~/.openclaw/apify/recipes/1688-bp-watch-odm.py`, re-run.
