Skip to content
Protocolzone Protocolzone

Data module

Ingress and egress data management

Every feed in and out, versioned, validated and replayable.

Part of the Ashva module inventory — a multi-tenant tote and fixed-odds betting platform we built and operate. The engineering practice behind it is our platform build and integration service line.

A wagering platform is mostly a boundary. Racing data, tote pools, results and third-party prices come in; prices, market state, settlement and reporting go out. Almost every incident that looks like a platform failure starts as a feed that changed shape, arrived late, or arrived twice.

This module owns both boundaries and treats them the same way.

Land it raw, then transform

Inbound payloads are stored as received before any transformation. When a provider quietly renames a field or starts sending an empty element where it previously sent a value, the raw record is the difference between a ten-minute diagnosis and a day of speculation.

Validate at the edge

Every inbound stream declares a schema and is validated against it at the boundary. Failures are quarantined and alerted rather than partially applied. A half-processed field update is the worst available outcome: it leaves markets live against a state nobody intended.

Replay is a design requirement

Providers re-issue files. Outages create gaps. Corrections arrive after settlement. Streams can be re-run from a stored position, and the effect of a replay downstream is traceable, so reprocessing a day of results is an operation rather than a project.

Outbound contracts are owned per consumer

Aggregators, downstream operators and reporting destinations each consume a versioned contract. Publishing one shape to everyone means every consumer upgrades on the same day, which in practice means nobody upgrades.

Failures stop, they do not disappear

Messages that cannot be delivered are held with the reason and retried under policy. Retry limits, back-off and alert thresholds are configured per interface and monitored by the Operations Desk.

What this module does not do

It does not interpret the data. Meaning is assigned by the modules that consume it: the schedule, the statistics and the odds module. This layer is responsible for getting it across the boundary with validation, ordering rules and duplicate handling defined for each integration.

Module facts

Module group
Data
Tenancy
Tenant-aware
Bet types
Fixed odds, Tote, Pari-mutuel, Exotics
Codes and verticals
Thoroughbred, Harness, Greyhound, Sports, Esports

Integration surfaces

  • Racing data and form providers
  • Tote hosts for pool, price and dividend data
  • Official result and amendment feeds
  • Aggregator and downstream operator interfaces
  • Finance, business intelligence and regulatory reporting destinations

Capabilities

What ingress and egress actually does.

Inbound feed handling

Racing data, fields and scratchings, official results and amendments, tote pool and dividend data, and third-party pricing, each landed raw before transformation so a provider-side change is diagnosable after the fact.

Contract validation

Inbound payloads validated against a declared schema at the boundary. A malformed file is quarantined and alerted, not partially applied to live markets.

Outbound distribution

Prices, market state, results and settlement data published to partner and aggregator interfaces, with per-consumer contracts and versioning so one consumer's upgrade does not force everyone else's.

Replay and reprocessing

Any inbound stream can be re-run from a stored position after a correction or an outage, with the downstream effect of the replay traceable.

Dead-letter and retry

Failed messages held with the failure reason and retried under a defined policy, rather than dropped or looped indefinitely against a broken consumer.

Per-tenant routing

Which feeds a tenant receives and which data leaves the platform on that tenant's behalf is configuration, enforced at the boundary rather than filtered by the consumer.

Reporting and reconciliation extracts

Scheduled extracts for finance, business intelligence and regulatory reporting, generated from reconciled data rather than from live operational tables.

Other data modules

Working on this problem yourself?

We will go through how this module handles it, what it deliberately does not do, and where we would make a different call today.