Data Lab

I wanted the numbers to explain themselves

A chart can show that two columns move together, but that is not the end of the analysis. I built this page to import a file, check whether the rows are usable, describe the distribution, find the strongest relationships, explain what those patterns may mean, and show what I would investigate before making a decision.

Currently open

Casino Offer Export

I use this model to check assignment logic, required fields, delivery eligibility, validation status, player value, and post-offer response.

Offer File Review

Check the file before it reaches production

I built this around the kind of monthly file review I actually did: pull the rows, confirm the required fields, inspect assignments, find exceptions, and understand what the response data is saying before anything moves forward.

Using demo data. Download the template, fill it out, then import it here.

Required Import Columns

Casino offer import

PlayerIDTierRankActiveInactiveTripsMonthDaysSinceLastTripNetADTSegmentNameOfferFSPOfferTGOfferHotelOfferFoodOfferGiftMailableFlagAppEligibleFlagValidationStatus

Histogram

Net ADT distribution

Player value after adjustments.

Avg

$296

Min

$88

Median

$218

Max

$690

Total

$1,775

3

$88–$188

1

$188–$289

0

$289–$389

1

$389–$489

0

$489–$590

1

$590–$690

Rows

6

Passed

3

Review

2

Failed

1

Total FSP

$525

Total Food

$195

Redeemed Value

$670

App Eligible

4

Rows Behind the Result

The records and fields behind the summary

PlayerIDRequiredTierRankRequiredActiveInactiveRequiredTripsMonthRequiredDaysSinceLastTripRequiredNetADTRequiredSegmentNameRequiredOfferFSPRequiredOfferTGRequiredOfferHotelRequiredHotelNightsHotelRoomTypeOfferFoodRequiredOfferGiftRequiredMailableFlagRequiredAppEligibleFlagRequiredValidationStatusRequiredValidationNotes
P100284PlatinumActive93412Core Active125702DLX2Deluxe45Premium TumblerYYPassEligible and complete.
P100918GoldActive59248Mid Active75351DLX1Deluxe30Kitchen SetYYPassEligible and complete.
P101337DiamondActive121690VIP Active2501752MS2Master Suite75VIP GiftYYPassHosted VIP. Offer package complete.
P102014SilverInactive011288Reactivation2535NONE0No hotel offer15Comeback GiftYYReviewEmail suppressed. Mail/app only.
P102880GoldActive46188Mid Active5035NONE0No hotel offer30Mystery GiftYNReviewMissing UniversalID. Review before app import.
P103552GoldActive313149Suppressed00NONE0No hotel offer0-NNFailExcluded due to suppression and bad address.

Identity

PlayerIDUniversalIDFirstNameLastNameTierRankPlayerStatusActiveInactiveHostName

Player Value

TotalTripsTripsMonthTripsLast3MonthsTripsLast6MonthsLastTripDateDaysSinceLastTripCoinInTheoWinActualWinNetWinLossADTNetADTMonthlyTheoMonthlyActual

Eligibility

SegmentNameOfferGroupWorthGroupVIPFlagNewMemberFlagBirthdayMonthMailableFlagEmailableFlagAppEligibleFlagDoNotMailDoNotEmailBadAddressFlagExcludedFlag

Offers

OfferFSPOfferTGOfferHotelOfferHotelCodeOfferFoodOfferGiftOfferBonusEntriesBirthdayOffer

Valid Dates

FSPValidStartFSPValidEndTGValidStartTGValidEndHotelValidStartHotelValidEndFoodValidStartFoodValidEndGiftValidStartGiftValidEnd

Redemption

RedeemedFSPRedeemedTGRedeemedHotelRedeemedFoodRedeemedGiftTotalRedeemedValueRedemptionCountFirstRedeemDateLastRedeemDateOfferCostPostOfferTripsPostOfferTheoPostOfferActual

Audit

CampaignIDCampaignNameExportMonthExportDateSourceSystemSourceFileScriptVersionValidationStatusValidationNotesDuplicateFlagMissingIDFlagMissingOfferFlag
My Read of the Data

Offer quality, player value, and response signals

I am reviewing 6 player rows. 3 rows pass validation, 2 need review, and 1 fail, which puts the current pass rate at 50.0%. 4 rows are app eligible (66.7%). For Net ADT, the average is $296, the median is $218, and the range runs from $88 to $690. Net ADT is pulled upward by larger values because the average is above the median. I would read the validation counts first, then use the relationships below to decide which assignment rules, segments, delivery flags, or response measures deserve a row-level review.

Rows Reviewed

6

This section recalculates when a CSV is imported.

Strongest Positive Relationship

Redeemed ValuePost-Offer Theo

Very strong positive relationship: higher values generally appear alongside higher values in the currently loaded rows.

+1.00

What this may mean

Players with more redeemed value also show higher Post-Offer Theo. That is a useful response signal and may indicate that the campaign is reaching players who return and generate activity.

What I would check next

Compare redeemers with non-redeemers who had similar NetADT, MonthlyTheo, trips, tier, and recency before the offer. Also compare the result against a pre-offer period.

Strongest Negative Relationship

Trips This MonthDays Since Last Trip

Strong negative relationship: higher values generally appear alongside lower values in the currently loaded rows.

-0.69

What this may mean

As days since the last trip increase, Trips This Month tends to decrease. That is the expected pattern when recent visitors remain more active than lapsed players.

What I would check next

Create recency bands such as 0–30, 31–60, 61–90, and 90+ days, then compare offer response and post-offer value inside each band.

How I would use the strongest signal

Redeemed Value and Post-Offer Theo are the first place I would investigate

Working hypothesis

Players with more redeemed value also show higher Post-Offer Theo. That is a useful response signal and may indicate that the campaign is reaching players who return and generate activity.

Next comparison

Compare redeemers with non-redeemers who had similar NetADT, MonthlyTheo, trips, tier, and recency before the offer. Also compare the result against a pre-offer period.

Possible action

Prioritize the segments where redemption is followed by meaningful trips or theo, then test whether the same pattern holds in another month or campaign.

Before acting on it

More active or valuable players may be more likely both to redeem and to return, so this is not proof that redemption caused the response.

Other relationships worth reviewing

Redeemed ValuePost-Offer Theo

+1.00

Very strong positive association

Players with more redeemed value also show higher Post-Offer Theo. That is a useful response signal and may indicate that the campaign is reaching players who return and generate activity.

Practical next step

Prioritize the segments where redemption is followed by meaningful trips or theo, then test whether the same pattern holds in another month or campaign.

Net ADTMonthly Theo

+0.99

Very strong positive association

Net ADT and Monthly Theo show a very strong positive relationship in the loaded rows. That means they tend to move in the same direction, but the pattern does not explain why.

Practical next step

Use this relationship to form a testable hypothesis. Make a small operational or campaign test, define the success metric in advance, and compare the result with a similar group or period.

Monthly TheoPost-Offer Trips

+0.99

Very strong positive association

Higher baseline Monthly Theo is appearing with higher Post-Offer Trips. The strongest players in the file are also producing stronger post-offer activity.

Practical next step

Use baseline value to forecast response, but measure incremental lift separately so high-value players are not over-credited to the campaign.

Monthly TheoRedeemed Value

+0.99

Very strong positive association

Monthly Theo and Redeemed Value show a very strong positive relationship in the loaded rows. That means they tend to move in the same direction, but the pattern does not explain why.

Practical next step

Use this relationship to form a testable hypothesis. Make a small operational or campaign test, define the success metric in advance, and compare the result with a similar group or period.

Redeemed ValuePost-Offer Trips

+0.99

Very strong positive association

Players with more redeemed value also show higher Post-Offer Trips. That is a useful response signal and may indicate that the campaign is reaching players who return and generate activity.

Practical next step

Prioritize the segments where redemption is followed by meaningful trips or theo, then test whether the same pattern holds in another month or campaign.

Net ADTOffer FSP

+0.98

Very strong positive association

In these rows, higher Net ADT generally appears with higher Offer FSP. That is consistent with a tiered offer strategy where stronger player value receives a larger incentive.

Practical next step

Keep the tiered structure if the higher offers also produce acceptable post-offer trips or theo. Add caps or review rules where offer value rises faster than player response.

File-level findings

Validation Ready

50.0%

3 of 6 rows currently pass validation.

App Eligible

66.7%

4 rows can currently be used for app delivery.

Offer Utilization

100.0%

$670 redeemed against $670 of recorded offer cost.

Rows Needing Attention

4

2 review, 1 fail, 1 missing identity signals, and 1 inactive rows.

What correlation can and cannot tell us

A correlation tells me which columns move together strongly enough to investigate. It does not tell me that one column caused the other. I would use the result to form a working hypothesis, split the data into fair comparison groups, inspect outliers, confirm the time window, and test the decision on a later campaign or period before turning it into a production rule.

Why I built this page

I wanted to show the part of analysis that happens after the export finishes

In my database work, pulling the rows was only the beginning. I still had to check IDs, assignment rules, eligibility, dates, suppression flags, duplicates, totals, delivery channels, and whether the output made sense against the business request. I also had to explain what the results meant to people who were not looking at the SQL or the raw file.

That is what this page is trying to show. It does not stop at an average, histogram, or correlation coefficient. It turns the result into a working hypothesis, explains what I would compare next, suggests a possible action, and keeps the limitations next to the recommendation instead of hiding them.

First: trust the file

Confirm required columns, data types, flags, IDs, dates, duplicates, and validation status before interpreting the results.

Then: explain the pattern

Describe the size and direction of the relationship in plain language and connect it to the actual campaign or operating question.

Finally: test the decision

Compare fair groups, inspect outliers, define the success metric, and validate the result on a later period before making it a production rule.

Demo data and privacy

The records on this page are synthetic examples. They are shaped like the kinds of files and checks I worked with, but they do not contain private player information, internal campaign data, or proprietary business rules.