Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

Three riders carried on one galloping horse

gallop

Routes a product question to the method it deserves, then runs that method with checks in place.

A product data science system, packaged as agent skills. Most questions leave at intake without an analysis. The ones that stay get the method that matches how treatment was assigned, and the checks that decide whether the result is a result. What they teach is written back, so the next question starts smaller.

The map

A question enters at the left and leaves as a decision. Measurement is a foundation rather than a phase, because what ships changes the data. Theory is a ceiling rather than a report, because what you learn has to outlive the test that produced it.

Three method buckets, a floor underneath them, a memory above them, and a layer of judgment on top. Each bucket has its own question, its own output, and its own failure mode:

Bucket Asks Hands back Fails by
Description What happened? A hypothesis Being mistaken for causation
Causation Did this change cause that? An effect size An invalid comparison group
Prediction What will happen? Who gets what? A forecast, a ranking, an allocation Breaking the moment you intervene

Experimentation and causal inference share all three, so they are one bucket separated only by who did the randomising: you, or the world.

Read the full map · Read the intake algorithm

Install

# Claude Code
/plugin marketplace add 0trm/gallop
/plugin install gallop@gallop

# any other agent, or none: a skill is a directory of markdown
cp -r gallop/skills/reading-experiments .claude/skills/

# the package; the import name is gallop
pip install gallop-pds

The five-minute path

One command, one synthetic dataset, every check once:

python -m gallop.examples.quickstart

Fifteen seconds of runtime: an MDE, an SRM verdict, an exposure ratio, a CUPED-adjusted effect with an always-valid interval, and the same effect shrunk toward a seeded prior store. The full loop, from a question arriving to the prior store changing on disk, is python examples/end-to-end/run_loop.py.

The skills

Skill What it decides Reach for it when
routing-questions Whether this becomes work at all, and which skill it becomes a product, analytics, or experimentation request first arrives, when someone asks for a deep dive or a dashboard, or before opening a query editor on any question about impact, lift, or whether something worked
defining-metrics A metric turned into a computation, a source of truth, and a statement of how it will be gamed defining a north-star or guardrail metric, when two dashboards disagree on the same number, when arbitrating between conflicting metric definitions, or when a readout depends on a metric nobody has validated
designing-experiments The four choices that cannot be repaired after launch, with the MDE from the prior store planning, powering, or pre-registering an experiment, when deciding whether a question is testable at the available traffic, or when a feature is about to ship without a flag
reading-experiments Whether the result is a result: SRM, exposure, the sequential bound, CUPED, shrinkage analysing or reviewing A/B test results, when a test looks like a winner, when someone reports a lift, or when deciding whether to ship on an experiment readout
choosing-causal-designs The method that matches how assignment happened, and the exit that says there is no comparison group measuring the impact of something already rolled out, a launch, a migration, a pricing change, or a campaign that reached everyone at once
automating-decisions Whether a repeated decision belongs to a model, validated out of time, and the holdout that measures its impact someone asks for a churn, propensity, LTV, scoring, forecasting, uplift, recommendation or allocation model, when a model's offline accuracy is offered as evidence that something worked, or when deciding who gets an offer, a discount or an intervention
writing-readouts The decision rule first, the result last; the belief filed where the next question starts a test finishes, when documenting a shipped or killed decision, when writing up a null result or a rollback, or when a question needs an entry someone can find in a year

What this is not

Not an experimentation platform. It does not assign traffic, hold flags, or replace your warehouse. It assumes those exist and writes the part that decides whether the number they produced is true.

More

The site renders the skills and the two arguments: the map · the intake · the theory layer · install

Licence

MIT, see LICENSE.

Metadata

Release files for gallop-pds 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gallop-pds 0.2.0
File Size Uploaded
gallop_pds-0.2.0.tar.gz 32.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gallop-pds 0.2.0
File Interpreter ABI Platform
gallop_pds-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 60.1 kB

Release files / gallop_pds-0.2.0.tar.gz

Download URL gallop_pds-0.2.0.tar.gz
Size 32.1 kB
Tags Source
SHA-256 checksum
How to use checksums
b63230add38b539c0803b5f5943172f631a715d27ac70db41530a972ce185dc0
BLAKE2b-256 checksum
How to use checksums
300573487f2f8dbac7a096be28cef7502da5308e5a68ff586803ec22a6ea8bed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / gallop_pds-0.2.0-py3-none-any.whl

Download URL gallop_pds-0.2.0-py3-none-any.whl
Size 28.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
42f3379aa26dbc3aad2ae633ac5ed0650a590b70029c6c1504e9cdd9cdaf4c9f
BLAKE2b-256 checksum
How to use checksums
f88c1c22b57dc745a26f7ba6670be6c265bdb14ec6d1ad4be1d821eb4398bf36
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page