Skip to main content

v1 Release Notes — leadforge-lead-scoring-v1

Release date: 2026-05-27 Package version: leadforge 1.0.0 Dataset version: leadforge-lead-scoring-v1 (initial release) Kaggle: https://www.kaggle.com/datasets/leadforge/leadforge-lead-scoring-v1 Hugging Face: https://huggingface.co/datasets/leadforge/leadforge-lead-scoring-v1 Instructor companion (HF): https://huggingface.co/datasets/leadforge/leadforge-lead-scoring-v1-instructor


What is this dataset?​

leadforge-lead-scoring-v1 is a synthetic B2B CRM lead-scoring dataset generated from a simulated mid-market SaaS procurement world. It ships as a family of three difficulty tiers (intro / intermediate / advanced), each with 5,000 leads, split into train / valid / test Parquet task splits and a flat lead_scoring.csv convenience export.

A companion leadforge-lead-scoring-v1-instructor dataset ships the full hidden world (latent graph, mechanism summary, latent registry) for research and pedagogy.

See release/README.md (dataset card) for full documentation.


Pre-publish runbook (required before kaggle datasets create or HF upload)​

Run these steps in order from the repo root. Every step must exit 0.

1. Rebuild release bundles (if not already current)​

python scripts/build_public_release.py

2. Regenerate release validation report​

python scripts/validate_release_candidate.py --no-rebuild

3. Run Kaggle dry-run (package + lint)​

python scripts/publish_kaggle.py --dry-run

Expected output: Dry-run complete — all pre-flight checks passed.

4. Run HuggingFace dry-run (package + lint + load_dataset G12.3)​

python scripts/publish_hf.py --dry-run
python scripts/publish_hf.py --dry-run --variant=instructor

Expected output for each: Dry-run complete — all pre-flight checks passed.

5. Build and review the ShmuggingFace preview site (required)​

npm install # first time only
python scripts/build_shmuggingface_site.py --release-dir release
open release/_shmuggingface/dist/index.html

Review all three tiers on both the Shmaggle (Kaggle mock) and ShmuggingFace (HF mock) tabs. Confirm: metadata accuracy, column preview, file listings, link resolution, description copy.

6. Preview Kaggle page​

python scripts/preview_kaggle_page.py --open-browser

7. Preview Hugging Face page​

python scripts/preview_hf_page.py --open-browser
python scripts/preview_hf_page.py --open-browser --variant=instructor

Publish steps (private → review → public)​

Kaggle​

# Upload as private (requires ~/.kaggle/kaggle.json or KAGGLE_USERNAME+KAGGLE_KEY)
python scripts/publish_kaggle.py

# Review at: https://www.kaggle.com/datasets/leadforge/leadforge-lead-scoring-v1
# Then flip to public via Kaggle web UI (Settings → Visibility → Public)
# or use: python scripts/publish_kaggle.py --public (single-step public upload)

Hugging Face (public dataset)​

# Requires HF_TOKEN env var or: huggingface-cli login
python scripts/publish_hf.py

# Review at: https://huggingface.co/datasets/leadforge/leadforge-lead-scoring-v1
# Then flip to public:
python scripts/publish_hf.py --go-public

Hugging Face (instructor companion)​

python scripts/publish_hf.py --variant=instructor

# Review, then:
python scripts/publish_hf.py --go-public --variant=instructor

Tag and announce​

After both platforms are live and public:

git tag -a leadforge-lead-scoring-v1 -m "leadforge-lead-scoring-v1: initial public release"
git push origin leadforge-lead-scoring-v1

Then update docs/release/post_v1_roadmap.md with the live URLs and announce.


What changed since the alpha bundles (2026-05-05)​

Critical fixes​

  • Relational leakage closed (Phase 2): student_public relational tables were reconstructing converted_within_90_days at 100% accuracy via five join paths (A–E). All five paths are now closed by the snapshot-safe export filter.
  • Post-snapshot feature leak fixed (PR 8.1): has_open_opportunity and opportunity_estimated_acv were using close_outcome.isna() (a full-horizon terminal field) as the open/closed gate; corrected to closed_at is null OR closed_at > snapshot_day.
  • Noise clamp applied (PR 8.1): lead_score_raw and lead_score_percentile were carrying full-precision latent scores; now clamped to ±3σ and binned to 5 percentile bands.

Platform hardening​

  • Snapshot-safe relational export (Phase 2): all event timestamps satisfy <= lead_created_at + snapshot_day; terminal-state fields removed from public leads / opportunities; conversion-conditional entities (customers, subscriptions) excluded.
  • Release validation report (Phase 3): calibration curves, lift curves, P@K, cross-seed stability bands, cohort-shift probes — all gated on v1_acceptance_gates.md.
  • Dataset card (Phase 4): full Datasheets-for-Datasets / Data Cards Playbook checklist; simulation simplifications; known limitations; intended-use / out-of-scope-use.
  • Agent-reviewable artifacts (PR 7.2.1): release/metrics.json (root + per-tier), release/docs/ vendored copies, release/claims_register.{md,json} (26 claims).
  • ShmuggingFace preview site (PR 8.4): hardened site builder with no fabricated metadata, _require() for schema drift, per-tier dataset cards, --config-only flag, --branch preview default.

Dataset​

  • feature_dictionary.csv includes the split column (documented in split_metadata category).
  • Cover image generated at ≥ 560 × 280 (Kaggle minimum).
  • All acceptance gates G1–G15 pass.

Known limitations​

See release/README.md §Known limitations and docs/release/v2_decision_log.md for accepted-with-rationale findings from the external review (Claude, ChatGPT, Gemini).

Key items:

  • GBM−LR sign flip on one feature in the intermediate tier (documented, under investigation for v2).
  • Weak channel signal (marketing_channel AUC improvement ~0.01 over baseline).
  • Flat AUC across tiers (by design — difficulty is modulated via noise and feature availability, not by artificially degrading the signal).