2025–26Data Feeds
Redesigning how a client’s request for TMX market data becomes a live feed.
Here’s how it came together
Overview
Challenge
Opportunity
Date of Project
Role
Responsibilities
- Workflow mapping
- Funnel and KPI design
- SLA definition
- Status and ageing reporting
- AI-assisted automation
Tools
- Salesforce
- Data BP
- Jira
- Slack
- Days, average request cycle
- 106 → <45
- Shorter cycle time
- ~60%
- Revenue recognition pulled forward
- $700K+
- Funnel stages defined
- 7
What a data feed is, and why the wait costs money
TMX Datalinx is the TMX Group’s market-data business. It distributes real-time Canadian equity data from the TSX, TSX Venture, TSX Alpha and the Montréal Exchange to banks, brokers, trading firms and data vendors globally.
A feed isn’t a login. It’s a stream a client wires into its own systems, governed by licences, usage rights and connectivity. A Data Feed Request turns a client’s order into live access, and the recurring revenue only starts once the feed is live.
Exchange activity
Quotes, trades and order books on TSX, TSXV, TSX Alpha and MX
TMX market-data feed
Level 1, Level 2, QuantumFeed, consolidated products
Licence, rights, connectivity
What the client may receive, and how it arrives
Client systems
Trading, pricing, risk, analytics, redistribution
- Brokers
- Trading firms
- Data vendors
- Wealth platforms
- Asset managers
The problem wasn’t one slow team
Clients waited an average of 106 days. Requests were stuck in approvals and handoffs that nobody could see, and delays were handled one escalation at a time.
Escalation can move one request while leaving the system unchanged. The loudest client gets attention, and older or higher-value requests stay hidden, thus delaying revenue recognition.
Client approves
Data Feed Request opened
Approvals and handoffs
Feed goes live
Revenue recognition begins
Mapping every handoff
I mapped the journey end to end: where a request starts, every stage it can enter, who owns each one, what must be complete before it moves, and where it waits instead of being worked.
Requests were tracked across Data BP and Salesforce, with owners, notes and ageing kept by hand. Two teams could both call a request “in progress” and mean entirely different things.
Before
- IntakeOwner unclear
- Commercial & product reviewOwner unclear
- Agreement & entitlementOwner unclear
- Technical provisioningOwner unclear
- Client testingOwner unclear
- Go-liveOwner unclear
- BillingOwner unclear
After
IntakeOwner · SLA
AI reads and standardizes the request
Commercial & product reviewOwner · SLA
Missing-information check
Agreement & entitlementOwner · SLA
Fixed rules decide what’s required
Technical provisioningOwner · SLA
Jira ticket created automatically
Client testingOwner · SLA
Slack status updates
Go-liveOwner · SLA
Status update to the client team
BillingOwner · SLA
Activation feeds revenue reporting
A defined lifecycle instead of heroics
I redefined the funnel stages, KPIs and SLAs: Intake, Commercial & Product Review, Agreement & Entitlement Review, Technical Provisioning, Client Testing, Go-Live and Billing.
With one shared definition of where a request is and who owns the next step, “this seems slow” became a measurable condition, and bottlenecks showed up by stage instead of by complaint.
Stop escalating; redesign the system
Option A
Keep escalating case by case
Quick relief for the loudest request.
Nothing is learned, and the next request waits just as long.
Option B
Add reviewers to the queue
More hands on the backlog.
The same hidden handoffs, at a higher cost.
Option C
Redesign the lifecycle
ChosenStages, owners, SLAs, shared visibility and automation for routine work.
Teams have to agree on shared definitions first.
Status and ageing everyone could see
I rebuilt the reporting around status and ageing: how long each request had sat in its stage, who owned it and whether it was inside its service level. A queue of 50 means something very different if 20 of them have waited three months.
| Client | Feed | Stage | Owner | In stage | Total age | SLA |
|---|---|---|---|---|---|---|
| Client A | Level 2 · TSX | Technical provisioning | JM | 6d | 31d | On track |
| Client B | QuantumFeed | Agreement & entitlement | AK | 12d | 27d | At risk |
| Client C | CDF · TMX IP | Commercial & product review | SR | 3d | 9d | On track |
| Client D | Level 1 · TSXV | Client testing | JM | 15d | 44d | Over SLA |
| Client E | Level 2 · MX | Intake | RK | 1d | 1d | On track |
AI for the reading, rules and people for the controls
I automated parts of triage and status updates with AI-assisted workflows: reading a request, standardizing its fields, flagging missing information, creating the Jira ticket and posting Slack updates.
Market data is governed by licences and rights, so the line mattered. AI prepares and routes the work; fixed rules and people make the entitlement and approval decisions.
AI prepares
- Reads the request
- Standardizes the fields
- Flags missing information
- Creates the Jira ticket
- Posts Slack status updates
Fixed rules decide
- Which agreements are required
- Entitlement checks
- When a stage can start or finish
People own
- Approvals
- Exceptions
- Client conversations
What it changed
Before106 days
After the redesignunder 45 days
About 60% shorter, with $700K+ in revenue recognition pulled forward
- Average request cycle cut from 106 days to under 45, about 60% shorter
- $700K+ in associated revenue recognition pulled forward
- A shared view of every request’s stage, owner and age
- Routine triage and status updates automated, with the controls kept with people
- Delays managed as a system, not a string of escalations
What did I learn?
Key takeaways
- The hard part wasn’t automation. It was a shared definition of where a request is and who owns it.
- Once the workflow was observable, automation became easier and safer.
- In a governed product, AI should prepare and route the work, not make the control decisions.
Next time
- Start with instrumentation and ownership definitions earlier.
- Separate client waiting from internal waiting in the metrics from day one.
Next project
Market Data Calendar
TMX Group · 2025–26