Reproducible Firecrawl workflow for McDonald's receipt survey navigation with non-submit safety mode, audit logging, and human takeover at final submission/captcha.
- OpenClaw skill:
skills/mcdonaldsreceipt/ - Deterministic runner script:
skills/mcdonaldsreceipt/scripts/run_receipt_flow.py - Prompt references:
skills/mcdonaldsreceipt/references/prompts.md - Output reports in JSON for reproducibility and debugging
- Non-submit mode is the default behavior.
- The workflow is designed to stop before final
submit/finish/complete. - If a captcha/challenge appears at submission boundary, use human takeover.
- Python 3.10+
requestspackage- Firecrawl API key
Install dependency:
pip install requestsSet API key:
export FIRECRAWL_API_KEY="<your-key>"./run.sh "https://cxsurvey.sonata-software.com/ws/furl-mcdnl" "MQPF-KKRC-9JCM-WC46-CMYV" 8Args: ./run.sh [url] [receipt-code] [audit-steps] [out-file]
python3 skills/mcdonaldsreceipt/scripts/run_receipt_flow.py \
--url "https://cxsurvey.sonata-software.com/ws/furl-mcdnl" \
--code "MQPF-KKRC-9JCM-WC46-CMYV" \
--audit-steps 8 \
--out "reports/mcdonaldsreceipt-$(date -u +%Y%m%d-%H%M%S).json"- See
reports/sample-report.jsonfor a standardized example.
Each run saves JSON with:
timestamp_utctarget_urlnon_submit_modescrape(success, scrape_id, content lengths, anti-bot flags)interact_1(initial state discovery)interact_code(receipt code entry state)audit_logs(per-step question/selection trace)interact_2(pre-submit summary)captcha_or_challenge_detectedchallenge_flagsliveview_url
Use this when submit may trigger captcha:
- Run automation until pre-submit state.
- Share
liveview_urlwith the user/operator. - User takes over to solve any challenge and click final submit.
- Store confirmation text/screenshot reference in your report.
Skill entrypoint:
skills/mcdonaldsreceipt/SKILL.md
Load that skill when you need to:
- test receipt survey navigation,
- collect anti-bot/captcha evidence,
- run repeatable, auditable non-submit flows,
- hand off final steps to humans.
- Do not hardcode API keys in committed code.
- Rotate keys if exposed.
- Firecrawl may return empty
interact.outputon some runs; rely on both output text andliveview_urlevidence.