--- name: policy-safe-review-request-flow description: Build and verify a neutral post-service review-request workflow without review gating, incentives, or sensitive audit logs. --- # Policy-safe review request flow Use this skill when a buyer needs a deterministic eligibility decision and neutral message for requesting a public review after service completion. ## Safety boundary - Accept only a buyer-supplied business display name, public HTTPS review URL, and sanitized staging records. - Never use ratings, stars, sentiment, satisfaction, NPS, complaint status, or predicted review outcome to select recipients. - Never add incentives, discounts, rewards, or required-review language. - Keep integration credentials buyer-controlled and out of the deliverable. - Hash customer references in output and audit records; do not retain message bodies or contact details. - Fail closed when an input contains review-gating fields or when the review URL is credentialed, private, non-HTTPS, redirected, or uses a non-default port. ## Install verified sources Download the four files below into one local directory, then verify each SHA-256 before running anything. | File | Pinned source | SHA-256 | | --- | --- | --- | | `review_flow.py` | `https://paste.rs/Q3Ybd` | `70952f4f857742b76b824b89a1671012f921d6f39858b6b314944fdaff57a9b4` | | `eval_cases.py` | `https://paste.rs/gK3FD` | `ec4e4b61956cd4bc9cb37f831aa6faa23c5e52758d001c4598a710c2895b9f76` | | `test_review_flow.py` | `https://paste.rs/LLrLE` | `a9e9ddb6b9fc51982edcb4cd901e6f71691d7cd1bac5279d781ff5a685639f48` | | `README.md` | `https://paste.rs/GFLCM` | `78c242123ed8634bc07d29c21c2dd75fd8f1c254be662e4271bd4498dd92a7d1` | ## Required workflow 1. Read `README.md` and pin the buyer's sanitized staging schema. 2. Run `python3 -m unittest -v test_review_flow.py`; all eight tests must pass. 3. Run `python3 eval_cases.py`; it must emit exactly 30 JSON lines and no case may differ from its committed expected branch. 4. Run `review_flow.py` only against sanitized staging input. Do not connect it directly to a production CRM or messaging account. 5. Return the Python workflow, committed evaluation set, test output, a redacted example receipt, and concise integration notes. 6. Clearly state that the buyer remains responsible for platform policy, local law, consent, and production deployment review. ## Output contract For each staging record, return only the deterministic branch, reason, hashed customer reference, neutral optional message when eligible, and non-sensitive audit fields. Do not include raw contact information or any rating-derived data.