Real-time Customer 360
Join live customer activity with history in one view.
Eventstream · Eventhouse
Hackathon challenge 4 · Advanced · Cloud & AI Platforms
Live Customer 360, behavioural segments and early churn warnings.
“You find out a customer left after they've already left. Build the AI that warns you 3 months early.”
Challenge card
Scroll sideways to see the whole figure.
A time line shows the gap between finding the loss and having time to act. Trade-off: it hides the system design. Each blueprint page shows the architecture.
Four requirements from the challenge card. Fabric is central. The suggested components are not mandatory.
Join live customer activity with history in one view.
Eventstream · Eventhouse
Group customers by behaviour with a machine-learning model.
Fabric Data Science · MLflow
Score the risk that a customer leaves, and show the drivers behind each score.
Fabric Data Science · MLflow
Fire an alert when a live event changes the picture, and send it to a person.
Activator · Power BI
Deliverable: churn risk scores with drivers, and a retention alert that fires on live events.
The slide gives PST as the deadline timezone. Check the organiser's intended timezone.
The illustrative mortgage provider is HomeBridge, a fictional company. The blueprint page gives the full design. The submission pack gives the form answers and the files to upload.
The answer for each form field, ready to copy. The diagrams and documents to upload. The checklist for the final solution on 6 November.
Open the submission pack →These are design judgements, not researched market rankings. The insurance scenario (HavenCover) and three earlier scenarios (software, broadband and retail) are archived and hidden.
The blueprint uses three timing targets. A live event and an ML score refresh are separate operations. The demo shows and measures both.
From a live event to its appearance in the Customer 360 view.
Between scoring runs that refresh features, assign segments and calculate refinancing risk scores. These runs do not retrain the models.
From a successful scoring run to the retention alert.
Calculate the score 90 days before renewal. Freeze the information available at that checkpoint. Evaluate the later renewal outcome. Predicting churn "within 90 days" does not establish 90 days of warning. If the warning comes later, report the failed target.
Feature attributions explain how model inputs affect the score. Checked events support investigation. Neither proves the customer's true motivation. Neither proves that a retention action will work.
A demo can show recurring revenue at risk and recorded actions. Proving improved retention requires evidence from real retention actions and a comparison group. Synthetic results prove only that the process works.
What the demo and video must show.
outcome_at minus first_eligible_warning_at. Report the distribution.Access, Fabric capacity, alert integration, team availability and the dataset's source remain unconfirmed. Check these before promising the final stack.
Two submissions: the blueprint form on 18 October and the solution on 6 November.
Synthetic data shows that the process works. It does not show real predictive power. Real use needs privacy, responsible-AI and domain review.
Submission blueprint · Fictional mortgage provider: HomeBridge
Early warning when fixed deals end.
Hackathon proposal. Fictional business and proposed targets. No implementation results are claimed.
Terms on this page: a product-transfer request is the customer's mortgage application for a new deal with HomeBridge. The renewal portal is HomeBridge's software for that request. Payment support means help with mortgage payments. Technical support investigates verified portal faults.
HomeBridge is a fictional mortgage lender. It services repayment mortgages and offers product transfers when fixed-rate deals end.
The customer unit is one mortgage account, not an individual borrower. Joint borrowers remain linked parties, not duplicate customers. A servicing adviser owns each renewal review.
Score external refinancing risk at the checkpoint, 90 days before the fixed-rate deal ends. Payment-support needs take priority over commercial retention reviews.
Alex reports concern about future payments while the renewal portal repeatedly fails during a product-transfer request. The adviser must inspect both problems.
Sam completes a product transfer without payment problems. A quiet renewal-portal history alone does not justify an alert.
The rules that must hold, the data shape, and the failure cases the demo must pass. Full detail is in the sections below.
occurred_at and ingested_at must be at or before cutoff_at.mortgage_id + cycle_id + action_family.risk_updated fires only after a scoring run succeeds. A failed run leaves the last score marked stale.Key: mortgage_id + cycle_id. The cycle identifies a fixed-rate deal, not a scoring run. Every event carries event time and ingestion time. The risk_updated event carries snapshot, model version, refinancing risk score, segment, evidence IDs and score time.
| ID | Case | Expected result |
|---|---|---|
| T01 | The same eligible event is replayed. | One review case for the same case key. |
| T02 | An unknown account or a conflicting borrower mapping arrives. | The record goes to quarantine. |
| T03 | The payment feed is stale or missing. | The view flags the feed as stale. A missing feed is not zero arrears. |
| T04 | A payment is reversed. | Review and rescoring start. The audit record stays. |
| T05 | A scoring run fails. | The last score is marked stale. The live view still updates. No new risk_updated event fires. Service alerts remain independent. |
| T06 | A review-case write fails. | The write retries with the same key. No duplicate review case appears. |
| T07 | Three contacts concern one unresolved problem. Three other contacts concern separate enquiries. | The history distinguishes repeat contacts about one case from contacts about separate cases. A case state change alone does not count as a contact. |
The detail behind the specification above. Open a section to read it. Printing opens every section. Shared rules are on the overview page.
| Dataset and grain | Required fields | Checks |
|---|---|---|
| Mortgage: one loan account and fixed-rate deal cycle. | mortgage_id, cycle_id, deal_end_at, balance, current_payment, product_type, owner_id. | Keep dated product terms. Deal end is not the end of the loan. Link joint borrowers through an approved account mapping. |
| Payment: one posted ledger change. | entry_id, mortgage_id, due_at, posted_at, ingested_at, amount_due, amount_received, reversal_of. | Keep reversals. A failed collection is not proof of default. |
| Product-transfer request: one request state change. | event_id, application_id, mortgage_id, occurred_at, ingested_at, stage, error_code, status. | application_id identifies the product-transfer request. Separate request rejection or abandonment from a verified portal fault. |
| Source servicing case: one recorded state change. | case_id, mortgage_id, changed_at, recorded_at, category, status, owner_id, support_route. | Categories include general enquiries, complaints and billing enquiries. This is source history, not a new SharePoint review case. Reconstruct each case's resolved or unresolved status at the cutoff. Keep sensitive notes out of features. Show only routing information to authorised advisers. |
| Servicing contact: one customer contact linked to a source case. | contact_id, case_id, mortgage_id, occurred_at, ingested_at. | Link each contact to its case and mortgage. Keep the contact date. Count each contact_id once, not each case state change. Both timestamps must be at or before the cutoff for model inputs. Quarantine unknown or conflicting case links. |
| Feature snapshot: one mortgage, deal cycle and cutoff time. Observed outcome: one mortgage and deal cycle, recorded separately. | snapshot_id, cutoff_at, feature_version, source_watermark, outcome_type, outcome_at, outcome_observed_at. | Keep observed outcomes separate from prediction inputs. Account closure alone does not prove external refinancing. |
| Segment membership: one account, cycle and scoring run. | mortgage_id, cycle_id, run_id, segment_id, cluster_model_version, assigned_at, valid_from, valid_to. | Append one row per scheduled run. Never overwrite a row. An auditor can see each account's segment on any past date. |
The mortgage view shows fixed-rate deal end, current terms, request status, portal faults, segment, refinancing risk score age and source evidence. It also shows the assigned review owner and payment-support priority.
Support history shows the enquiry type, contacts per case and whether each problem is resolved or unresolved.
Keep the high-level design as the entry point. These four detailed views name components, stores, messages and failure paths.
Proposed implementation detail, not a deployed system. Table names and job boundaries are proposed. Tenant access and connector permissions remain unconfirmed.
risk_updated carries event_id, mortgage_id, cycle_id, run_id, snapshot_id, model_version, cluster_model_version, segment_id, scored_at, cutoff_at, target, score and evidence IDs.event_id on retry. Activator passes the required fields to a Power Automate custom action.mortgage_id + cycle_id + action_family. A duplicate write reads the existing review case. Other write failures stay visible.Microsoft documents KQL database copy activities and Activator custom actions for Power Automate. These capabilities do not confirm tenant access.
deal_end_at minus 90 days.deal_end_at plus 30 days. Use known redemption reasons or verified refinance records.Store per-account feature attributions with each score. Use SHAP values for the tree model and coefficient contributions for logistic regression. They explain the score, not the borrower's motive.
Eligibility here permits an internal review case. It does not approve a mortgage, a rate, or customer contact. A human checks contact policy and suitability before any customer-facing action.
Every review case records evidence IDs, routing policy, assigned owner and decision. Score-based cases also record model version, run and snapshot. Record ingestion, scoring, alert and case-creation times separately where those operations apply.
Failure handling follows cases T01 to T06 above.
| Work package | Output |
|---|---|
| Data and replay. | Account histories, reversal fixtures, cutoff checks and the event contract. |
| Models and evaluation. | Classifier, clusters, rules baseline, later-cohort report with lift, and registered model. |
| Dashboard and action. | Power BI mortgage report (Direct Lake), segment history, sensitivity labels, payment-support-first routing, review-case writer and audit. |
The demo passes INV-1 to INV-6 and T01 to T06. It also shows these results:
Measure review effort, renewal-portal faults fixed, payment-support routing time and confirmed external-refinancing outcomes. Loan balance is exposure, not saved revenue.
Get lending, privacy and responsible-AI review. Confirm jurisdiction, contact policy and fairness checks.
Blueprint submission · Fictional mortgage provider: HomeBridge
Copy five answers into the form. Then upload the files in the second section.
The answers describe a proposal. The system is not built. The 90-day lead time and the timing targets are proposed targets, not measured results.
The boxes follow the layout of the organiser's form. Each box has a copy button. The copied text is plain text, so it pastes cleanly into the form. A red star marks a required field.
Each box sits where its field sits on the organiser's form, so you can copy each answer to the matching field. Trade-off: the answers are short. The blueprint page gives the full detail.
The form accepts PDF, PNG, JPG, SVG, Excel, CSV, video, PPTX and DOCX files, up to 100 MB each. Upload files 1 and 2 as a minimum. Files 3 to 9 add evidence and architectural detail.
The proposed design in five zones: history, live events, scheduled scoring, review action and independent support. Files 6 to 9 expand this view.
The full Mortgage Renewal Early Warning blueprint for the fictional mortgage provider HomeBridge. The button opens the blueprint page and the print window. Select “Save as PDF”. Printing opens every section.
An illustrative case. Three signals lead to one action, and the payment-support check runs first.
The checkpoint 90 days before the deal ends, and the outcome window.
Each dataset with its grain, its required fields and its checks. Excel opens this file.
Fabric items, storage boundaries, explicit context copies, KQL joins and the two reporting paths.
Snapshots, scores, model versions, segment history, publication records and review cases.
Event arrival, scheduled scoring, frozen inputs, completed outputs and publication retries.
Independent service rules, review-case eligibility checks, unique case writes and visible failure handling.
Do not use the protected page URL instead of file uploads. Submission reviewers do not receive the page password. Upload the exported files.
Downloads use the light theme. Previews of files 1, 3 and 4 follow.
The team builds from 26 October to 6 November. Then the team sends this package.
Still to confirm: Power BI sharing, Power Automate licences and connector permissions. Synthetic data shows that the process works. It does not show real predictive power.
Submission blueprint · Insurance · Fictional company
Claims recovery and renewal early warning.
Hackathon proposal. Fictional business and proposed targets. No implementation results are claimed.
HavenCover is a fictional home insurer with annual policies. A claims coordinator manages repair partners. A service adviser owns renewal reviews.
The customer unit is one policy and renewal cycle. Claims and repair jobs link to that policy without merging unrelated household members.
Identify customer-led non-renewal risk 90 days before policy expiry. Investigate unresolved recovery problems before proposing a commercial action.
Robin's flood claim has repeated missed repair appointments and an unresolved accommodation request. Separate systems hide the continuing problem.
Casey's larger claim resolves within agreed milestones. Claim size alone does not justify the same action.
The rules that must hold, the data shape, and the failure cases the demo must pass. Full detail is in the sections below.
occurred_at and ingested_at must be at or before cutoff_at. A renewal quote issued after the checkpoint is excluded.policy_id + cycle_id + action_family. One incident exists per incident_id.risk_updated fires only after a scoring run succeeds. A failed run leaves the last score marked stale.Key: policy_id + cycle_id. Every event carries an event time and an ingestion time. The risk_updated event carries the snapshot, model version, score, segment, evidence IDs and score time.
| ID | Case | Expected result |
|---|---|---|
| T01 | The same event is replayed. | One policy case only. |
| T02 | One contractor fails on several claims. | One incident, with a linked case for each affected policy. |
| T03 | A repair job has no claim mapping. | The record goes to quarantine. |
| T04 | The repair feed is stale, or an event is malformed. | The view flags the stale feed. The malformed event is rejected. |
| T05 | A repair completes. | Rescoring and review start. Complaints do not close automatically. |
| T06 | A case write fails. | The write retries. An operator sees the error. |
The detail behind the specification above. Open a section to read it. Printing opens every section. Rules for both blueprints are on the overview page.
| Dataset and grain | Required fields | Checks |
|---|---|---|
| Policy: one policy and renewal cycle. | policy_id, cycle_id, expiry_at, tenure, owner_id, renewal_offer_at, outcome_type, outcome_observed_at. | Separate customer refusal from insurer withdrawal. |
| Claim: one claim state change. | claim_id, policy_id, changed_at, ingested_at, stage, status, coordinator_id. | Keep historical states. Exclude medical details, free text and later settlement from earlier features. |
| Repair: one appointment or milestone change. | event_id, claim_id, job_id, contractor_id, promised_at, occurred_at, ingested_at, status, incident_id. | Use the promise known at the cutoff. Keep cancellations, revised promises and completion evidence. |
| Service: one complaint or assistance state change. | case_id, policy_id, changed_at, recorded_at, category, status, owner_id, restricted_route. | Show only routing flags. Restrict accommodation and personal-support details to authorised staff. |
| Snapshot: one policy, cycle and cutoff. | snapshot_id, cutoff_at, feature_version, source_watermark, feature_values, evidence_ids. | Freeze feature and promise versions. Keep later claim closures and renewal outcomes out of inputs. |
| Segment membership: one policy, cycle and scoring run. | policy_id, cycle_id, run_id, segment_id, cluster_model_version, assigned_at, valid_from, valid_to. | Append one row per scheduled run. Never overwrite a row. An auditor can see each policy's segment on any past date. |
The view shows expiry, recovery milestones, complaint history, segment, score age, evidence, coordinator and case status.
risk_updated carries event_id, policy_id, cycle_id, snapshot_id, model_version, scored_at, score, target and evidence IDs.policy_id + cycle_id + action_family. Each incident_id has one contractor incident with linked policy cases.expiry_at minus 90 days.Store per-policy feature attributions with each score. Use SHAP values for the tree model and coefficient contributions for logistic regression. Show them beside the source evidence. They do not prove why a customer leaves. They do not prove that service recovery prevents departure.
A human approves contractor escalation and customer contact.
Each case stores policy and claim IDs, snapshot, model, evidence, promise version, incident link, owner and decision. It also stores separate operation times.
Failure handling follows cases T01 to T06 above.
| Work package | Output |
|---|---|
| Data and replay. | Policy and claim histories, milestone versions, contractor incidents and fixtures. |
| Models and evaluation. | Classifier, clusters, baseline, leakage checks, lift report and model card. |
| Dashboard and action. | Direct Lake recovery view, segment history, sensitivity labels, incident linking, case writer and assistance routing. |
The demo passes INV-1 to INV-6 and T01 to T06. It also shows these results:
Measure milestone review effort, confirmed repair problems, assistance routing time, case duplication and observed renewals. Premium linked to reviews is not saved revenue.
Get claims, privacy and responsible-AI review. Check proxy discrimination and service access separately from prediction quality.
WorkHarbour sells cloud software to maintenance companies. Dispatchers schedule engineers. Engineers record completed jobs. Office staff create invoices.
Customers pay per field engineer under annual contracts. The subscribing company is the customer, not each engineer.
A customer-success manager owns adoption and renewal. Fewer licences affect revenue but remain a separate prediction target.
Find companies at risk of not renewing, about 90 days before renewal. Show evidence that supports an approved retention action.
A fictional customer, Alder Maintenance, completes fewer jobs through the software. Invoice failures and reopened tickets accompany that decline.
The manager needs to distinguish workflow failure from seasonal demand before choosing an action.
Counterexample: another company uses the product less during its quiet season, without workflow or support problems.
First action: escalate the invoice incident or restore adoption before renewal. Do not assume the customer intends to switch competitors.
Illustrative patterns, not measured data. Chart heights show no numeric values. This desk does not run ML or create cases.
Build cost: find or generate credible account histories with complete renewal outcomes. Do not generate labels from the model's own rule.
Proof: score with only information available 90 days before renewal. Test later outcomes against a simple rules baseline.
Why lead with this: the contract gives a clear outcome. The failing workflow gives a concrete action.
Title: WorkHarbour Renewal Investigation Desk.
Maintenance companies need reliable job and invoice workflows. A failed workflow can reduce adoption before an annual renewal.
Our proposed solution combines contract, product, and support records in Microsoft Fabric. It groups accounts by behaviour and predicts non-renewal.
The manager receives a warning 90 days before renewal, with model drivers and linked evidence. New incidents trigger a separate investigation path.
A human reviews each proposed action. The prototype demonstrates prioritisation and an auditable case, not proven retention improvement.
Distinctive value: connect a commercial warning to a repairable workflow problem. Show seasonal decline as a counterexample.
Scope: one workspace, one business, one renewal target, and one controlled event replay. Exclude automatic discounts and customer messages.
| Dataset and grain | Required fields | Purpose and checks |
|---|---|---|
| Contract: one account and renewal cycle. | account_id, contract_id, cycle_id, renewal_at, annual_value, seats, owner_id, outcome, outcome_observed_at. | Use account_id across sources. Keep labels separate from features. Exclude cycles without an observed outcome. |
| Product: one workflow event. | event_id, account_id, occurred_at, ingested_at, workflow, status, job_id, active_seats. | Deduplicate event_id. Calculate completed jobs per licensed seat and invoice failures per invoice attempt. |
| Support: one ticket status change. | ticket_id, account_id, changed_at, ingested_at, severity, product_area, status, incident_id. | Reconstruct ticket state at the cutoff. Do not use the ticket's later resolution. |
| Feature snapshot: one account, cycle, and cutoff. | snapshot_id, account_id, cycle_id, cutoff_at, source_watermark, feature_version, feature_values. | Require occurred_at and ingested_at at or before cutoff_at. Report missing feeds instead of assuming zero incidents. |
The customer view shows contract dates, value, segment, score timestamp, model version, three drivers, evidence links, and case status.
Use synthetic account histories for the first build unless approved real data exists. Include noise, seasonal demand, missing feeds, and complete outcomes.
Generate outcomes from separate latent business factors. Do not copy the alert rule into the outcome label.
Historical path: exports to Lakehouse to feature snapshots to registered model to account dashboard.
Event path: incident to Eventstream to Eventhouse to scoring job to risk_updated to Activator to review case.
The first build starts the scoring notebook explicitly. Scheduled scoring is acceptable. Neither path claims per-event model inference or instant dashboard refresh.
Store cases in a SharePoint list with a unique case_key column. Power Automate handles duplicate-key responses by reading the existing case.
Use case_key = account_id + cycle_id + action_family. A notification retry must not create another case.
Checkpoint: renewal_at minus 90 days. Predict non-renewal for that cycle using information available at the checkpoint.
Use an explicit renewal decision as the label. Missing decisions remain unknown, not churn. Confirm the outcome rule with the business.
Compare logistic regression with a small tree model. Fit preprocessing only on training data. Record parameters, dataset version, and metrics.
Use 30-day and 90-day histories for completed jobs, seat adoption, invoice failures, reopened tickets, and unresolved severity.
Keep contract value outside the prediction model initially. Use it to prioritise cases without confusing value with churn likelihood.
Fit behavioural clusters on scaled adoption and service features. Compare two to five clusters using stability, separation, and business interpretation.
Name clusters after inspecting their centroids. Proposed names include stable adoption, low adoption, and service friction. These are not measured results.
Explain scores with model contributions and source records. Contributions describe the model, not the customer's motivation.
Use later renewal cohorts for testing. Keep test accounts outside training. Exclude training labels unavailable before the simulated model release.
Freeze thresholds on validation data. Compare precision and recall at a proposed capacity of ten account reviews per run.
Live updates use a separate evaluation set. Do not describe a warning created after the checkpoint as a 90-day warning.
Create a review case when risk exceeds the validated threshold, evidence is current, and an owner exists.
Route invoice failures to product support with the customer-success manager. Route low adoption without incidents to an adoption review.
Record received_at, scored_at, alerted_at, case_created_at, model_version, snapshot_id, evidence IDs, owner, and decision.
Proposed states are New, Reviewed, Action approved, In progress, Resolved, and Closed. Only a human approves customer contact.
Quarantine unknown account IDs. Reject malformed events. Flag stale scores. Send failed case writes to a retry queue with an operator-visible error.
A recovery event updates the evidence and requests rescoring. It does not erase the case history or prove future renewal.
| Stage | Deliverable |
|---|---|
| Before idea submission: October 18. | Confirm tenant access, dataset basis, contract definition, and scenario choice. |
| October 26-28. | Validated history tables, feature contract, and replay fixtures. |
| October 29-November 2. | Baseline, classifier, clusters, registered model, and later-cohort evaluation. |
| November 3-5. | Account view, Activator rule, unique case writer, and integration evidence. |
| November 6. | Reproducible submission package and a 5-10 minute video. |
Build the dashboard against agreed score fixtures while ML work continues. Replace fixtures with registered-model output before recording the final demo.
Measure review effort, confirmed workflow incidents, and annual contract value associated with eligible cases. Value at risk is not saved revenue.
Use pseudonymous IDs and least-privilege workspace roles. Exclude personal messages and credentials from exports. Apply approved data-retention periods.
Capacity, Power BI sharing, Power Automate licensing, and connector permissions remain unconfirmed. Test the complete action path before promising it.
If the SharePoint connector fails, show a local review record and identify the missing integration. Do not claim that SharePoint created a review case.
Submit this proposal, architecture, dataset provenance, reproducible notebooks, model versions, evaluation report, action audit, setup instructions, and video.
Confirm organiser fields, team names, and deadline timezone before submission. This blueprint is a proposed design, not a completed entry.
Fabric batch model scoring supports the scoring design. Fabric Activator describes event rules and actions.
HearthNet provides household broadband. Customers pay monthly under fixed-term contracts.
Network operations monitors service health. Support handles complaints. A retention adviser manages eligible contract reviews.
The customer unit is a household subscription. Cancellation or switching at contract expiry counts as churn.
Identify household subscriptions at risk of cancellation or switching, about 90 days before contract expiry.
A fictional household repeatedly loses evening service. Its complaint remains unresolved as contract expiry approaches.
The adviser needs household evidence, not a network average, before recommending a service fix or eligible plan review.
Counterexample: a regional outage resolves promptly. The household reports no continuing problem and has no unresolved complaint.
First action: investigate the recurring service fault. Offer a plan review only when the household meets eligibility rules.
Illustrative service timeline, not telemetry. The bands show event sequence, not outage duration or measured availability.
Build cost: network, household, and service records make telemetry and identity matching more complex.
Proof: test contract-expiry outcomes using information available 90 days earlier. Prevent one regional incident from creating duplicate household cases.
Choose this when: the team has suitable network data and understands device-to-household mapping.
Title: HearthNet Household Service-Recovery Desk.
Network averages can hide repeated faults at one household. Separate billing and support records make those faults harder to investigate.
Our proposed solution combines subscription, network, billing, and complaint history in Microsoft Fabric. It predicts contract-expiry churn and groups subscriptions by service experience.
A retention adviser sees a warning 90 days before expiry, with outage evidence and model drivers. New faults create human-owned investigation cases.
The prototype demonstrates service recovery before a commercial offer. It does not prove that an intervention prevents cancellation.
Distinctive value: preserve household identity at the event time. Distinguish recurring faults from a resolved regional outage.
Scope: one subscription cohort, one expiry target, one regional incident, and one recurring household fault. Exclude automatic credits and plan changes.
| Dataset and grain | Required fields | Purpose and checks |
|---|---|---|
| Contract: one subscription and expiry cycle. | subscription_id, cycle_id, expiry_at, plan_id, monthly_value, price_changed_at, owner_id, outcome, outcome_observed_at. | Label explicit cancellation or switching at expiry. Keep unknown outcomes outside labelled evaluation. |
| Inventory: one device assignment interval. | device_id, service_line_id, subscription_id, valid_from, valid_to, recorded_at. | Require one valid subscription mapping per event time. Quarantine overlaps and unmapped devices. |
| Network: one outage or recovery event. | event_id, incident_id, device_id, occurred_at, ingested_at, event_type, region_id. | Deduplicate event_id. Pair outage and recovery records. Do not multiply regional duration by duplicate device messages. |
| Support: one complaint status change. | complaint_id, subscription_id, changed_at, ingested_at, status, severity, visit_outcome. | Reconstruct unresolved complaints and repeat contacts at the cutoff. Preserve later corrections separately. |
| Snapshot: one subscription, cycle, and cutoff. | snapshot_id, cutoff_at, source_watermark, feature_version, mapping_version, feature_values. | Use only information recorded by the cutoff. Keep future cancellations and later recoveries outside checkpoint features. |
The subscription view shows contract expiry, plan eligibility, household outage history, complaints, segment, score age, evidence, and assigned case.
Use synthetic network and contract histories unless approved real data exists. Include device replacements, missing recovery events, delayed arrivals, and regional incidents.
Generate retained and cancelled outcomes from separate latent factors. Add realistic noise instead of copying outage thresholds into labels.
Historical path: billing, inventory, and support to Lakehouse to dated features to registered models to subscription view.
Event path: network event to Eventhouse to subscription aggregate to explicit rescoring to Activator to case.
Run the first scoring notebook explicitly. Record ingestion, aggregation, scoring, and dashboard refresh times separately.
SharePoint enforces a unique case_key. Use subscription_id + cycle_id + action_family for household review cases.
Keep one operations incident per incident_id. Link affected household cases to that incident instead of creating duplicate operations incidents.
Power Automate reads the existing case after a duplicate-key response. Other write failures remain visible and enter a retry queue.
Checkpoint: expiry_at minus 90 days. Predict explicit cancellation or switching for that expiry cycle.
Exclude relocations and mandatory disconnections from the initial target. Report this scope restriction rather than treating every closure as preventable churn.
Compare logistic regression with a small tree model. Fit preprocessing on training data and register model signatures with MLflow.
Features include 30-day outage count, observed downtime, recurring evening faults, unresolved complaint age, failed visits, tenure, and known price changes.
Missing recovery records produce an incomplete-duration flag. Do not invent recovery times or use later recovery information at the checkpoint.
Cluster subscriptions using scaled service and support features. Compare two to five clusters for stability, separation, and useful interpretation.
Possible segment names include stable service, recurring local faults, and complaint friction. Name segments only after inspecting fitted clusters.
Use later expiry cohorts for testing. Keep test subscriptions outside training. Remove regional incidents shared across training and test cohorts.
Exclude training labels unavailable at the simulated model release. Freeze thresholds on validation data before the final test.
Report precision and recall at a proposed capacity of ten household reviews per run. Compare against an outage-plus-complaint rules baseline.
Model contributions explain the prediction. Outage records support investigation. Neither establishes the household's reason for switching.
Evaluate live rescoring separately. A new warning inside the final 90 days cannot count as a checkpoint warning.
Create a review case when risk exceeds the validated threshold, the subscription mapping is valid, and current evidence supports investigation.
Route continuing faults to network operations. Route eligible plan reviews to the retention adviser after service evidence receives review.
Check contact eligibility before outreach. A risk score cannot authorise a discount, credit, or plan change.
Store snapshot_id, model_version, mapping_version, evidence IDs, received_at, scored_at, alerted_at, case_created_at, owner, and human decision.
Use New, Reviewed, Action approved, In progress, Resolved, and Closed states. Preserve the case audit after recovery.
Quarantine overlapping inventory intervals. Flag stale feeds. Retain late events for correction without rewriting earlier evaluation snapshots.
A resolved regional outage does not automatically create a recurring-fault case. An existing case receives recovery evidence and human review.
| Stage | Deliverable |
|---|---|
| Before October 18. | Confirm scenario, outcome scope, mapping basis, tenant access, and dataset provenance. |
| October 26-28. | Historical inventory, network replay, interval checks, and subscription aggregates. |
| October 29-November 2. | Classifier, clusters, baseline, leakage checks, and registered models. |
| November 3-5. | Subscription view, Activator path, unique case writer, and recovery tests. |
| November 6. | Submission package and a 5-10 minute video with measured evidence. |
Agree score and event contracts first. Build dashboard fixtures in parallel, then replace them with registered-model output.
Measure investigation effort, confirmed recurring faults, case duplication, and monthly subscription value associated with eligible reviews.
Do not multiply monthly value into claimed savings. Proving improved retention requires real interventions and a comparison group.
Use pseudonymous subscription and device IDs. Exclude addresses and browsing history. Restrict household evidence to authorised workspace roles.
Confirm Fabric capacity, Power BI sharing, connector permissions, and Power Automate licensing before the build.
The main risk is historical identity quality. If valid device mappings are absent, restrict the dataset to verified subscriptions.
If the SharePoint connector fails, show a local review record and label the missing integration. Do not claim that SharePoint created a review case.
Submit this proposal, mapping contract, architecture, data provenance, reproducible notebooks, model versions, evaluation, case audit, setup instructions, and video.
Confirm organiser fields, team names, and deadline timezone. This page is a proposed blueprint, not an implemented service.
Fabric batch model scoring supports the scoring design. Fabric Activator describes event rules and actions.
PantryPaws sells pet food and other replenishable supplies online. Customers return when they need more supplies.
The company earns revenue per order, not through an annual renewal contract.
A customer-care lead fixes delivery problems. A retention specialist manages eligible replenishment reminders.
Find repeat customers at risk of inactivity beyond an agreed repurchase window. Separate normal purchase gaps from service-related warning signs.
A fictional customer, Morgan, regularly buys pet food. A late delivery prompts a complaint, and the next expected order does not arrive.
No purchase does not prove that Morgan chose a competitor. The team needs context before contact.
Counterexample: a customer buys a larger pack and returns later. The longer gap has no associated delivery or support problem.
First action: fix the delivery problem. Do not send a sales reminder while an unresolved complaint needs attention.
Illustrative purchase sequence, not order data. Spacing shows relative sequence, not measured days or a churn probability.
Build cost: inactivity has several possible explanations. A 90-day warning is harder to check without a fixed renewal date.
Proof: define the inactivity checkpoint. Evaluate features available 90 days before that checkpoint, with full later outcome windows.
Predicting no purchase within the next 90 days does not prove 90 days of advance warning.
Choose this when: suitable repeat-order data exists and the team can defend its inactivity definition.
Title: PantryPaws Replenishment and Service-Recovery Desk.
Repeat customers buy supplies at different intervals. Delivery problems can interrupt purchases, but larger packs can also explain longer gaps.
Our proposed solution combines order, delivery, support, and contact records in Microsoft Fabric. It groups customers by purchase behaviour and predicts inactivity.
The retention specialist sees dated risk scores, model drivers, and source evidence. New delivery complaints trigger a separate investigation path.
A human chooses service recovery or an eligible reminder. The prototype does not send customer messages or claim improved retention.
Distinctive value: explain a purchase gap before recommending contact. Compare delivery failure with a larger-pack counterexample.
Scope: repeat pet-food customers, one inactivity definition, one delivery replay, and one human-owned case.
| Dataset and grain | Required fields | Purpose and checks |
|---|---|---|
| Order: one order line. | customer_id, order_id, line_id, ordered_at, ingested_at, category, pack_size, quantity, net_value, status. | Deduplicate line_id. Count completed orders once. Keep refunds and cancellations as dated changes. |
| Delivery: one shipment status change. | event_id, shipment_id, order_id, occurred_at, ingested_at, status, promised_at. | Link shipments to orders and customers. Preserve the delivery promise known at the cutoff. |
| Support: one complaint status change. | ticket_id, customer_id, order_id, changed_at, ingested_at, reason, status, severity. | Reconstruct complaint state at the cutoff. Exclude later resolution from earlier features. |
| Contact: one eligibility change. | customer_id, effective_at, recorded_at, channel, consent_status, suppressed_until, reason. | Check current consent before marketing contact. Consent does not govern necessary service contact in the same way. |
| Snapshot: one customer, anchor order, and cutoff. | snapshot_id, anchor_order_id, cutoff_at, inactivity_at, source_watermark, feature_version, feature_values. | Freeze the target date before scoring. Exclude customers whose later observation window is incomplete. |
The customer view shows purchase rhythm, pack size, delivery evidence, complaint state, segment, score age, contact eligibility, and case status.
Use synthetic histories unless approved real data exists. Include irregular intervals, larger packs, seasonality, consent changes, and missing delivery records.
Generate outcomes from separate latent demand and service factors. Do not define synthetic churn directly from the alert rule.
Historical path: exports to Lakehouse to dated features to registered model to customer view.
Event path: complaint to Eventstream to Eventhouse to explicit rescoring to Activator to review case.
The first build starts scoring explicitly. Record event arrival, score completion, alert delivery, and dashboard refresh as separate operations.
Use a unique SharePoint case_key: customer_id + anchor_order_id + action_family. Duplicate delivery messages must not create another case.
Power Automate reads the existing record after a duplicate-key response. Other failures enter a retry queue with an operator-visible error.
Proposed target: no completed repeat order within 180 days after an eligible anchor order. This defines inactivity, not proven customer loss.
Checkpoint: anchor order plus 90 days. The frozen inactivity date is another 90 days later.
Score only customers without a repeat order by the checkpoint. A completed repeat order before the inactivity date gives a negative label.
No repeat order through day 180 gives a positive label only when source coverage reaches that date. Otherwise, the outcome remains unknown.
Use one eligible anchor per customer in each evaluation cohort. Prevent overlapping windows from counting the same inactivity episode repeatedly.
The 180-day window is a design assumption. Confirm category suitability before submission. Test 150-day and 210-day definitions as sensitivity checks.
This design measures warning before an inactivity threshold. It cannot establish warning before the customer's unobserved decision to leave.
Compare logistic regression with a small tree model. Fit preprocessing only on training data. Register the selected model and feature signature.
Features include historical purchase intervals, pack size, order frequency, refunds, delivery delays, complaint age, and category seasonality.
Calculate historical purchase intervals using orders available by the cutoff. Do not use the next order to explain an earlier score.
Fit clusters on scaled purchase and service features. Compare two to five clusters using stability, separation, and business interpretation.
Inspect cluster profiles before naming them. Possible names include regular replenishment, larger-pack purchasing, and service friction.
Test later anchor cohorts with customers outside training. Require complete outcome windows and training labels available before the simulated release.
Freeze thresholds on validation data. Report precision and recall at a proposed capacity of ten customer reviews per run.
Compare against a historical-interval rule with complaint context. Model contributions explain the score, not customer intent or intervention effectiveness.
Create an internal review case when risk exceeds the validated threshold, evidence is current, and an owner exists.
An unresolved delivery complaint routes to customer care first. Suppress marketing reminders while the complaint needs attention.
A reminder requires current channel consent, no suppression, and human approval. Do not treat case creation as permission to contact.
Keep service-contact policy separate from marketing consent. Confirm the applicable business and legal rules before any real communication.
Record snapshot_id, model_version, evidence IDs, consent version, received_at, scored_at, alerted_at, case_created_at, owner, and human decision.
Use New, Reviewed, Action approved, In progress, Resolved, and Closed states. Record approval without sending messages in the hackathon build.
Quarantine unknown customer or order IDs. Flag missing feeds and stale scores. Retry failed writes without creating duplicate cases.
A new order updates the customer view and requests rescoring. Preserve earlier snapshots and the case audit.
| Stage | Deliverable |
|---|---|
| Before October 18. | Confirm inactivity definition, source coverage, tenant access, and dataset provenance. |
| October 26-28. | Clean order histories, frozen target dates, eligibility changes, and replay fixtures. |
| October 29-November 2. | Baseline, classifier, clusters, later-cohort evaluation, and sensitivity report. |
| November 3-5. | Customer view, Activator path, unique case writer, and consent tests. |
| November 6. | Reproducible submission package and a 5-10 minute video. |
Agree score and event contracts first. Build dashboard fixtures in parallel, then replace them with registered-model output.
Measure review effort, confirmed delivery problems, duplicate cases, and eligible customer counts. Report repeat-order value separately from claimed savings.
Real retention improvement requires controlled intervention evidence. Synthetic results demonstrate mechanics only.
Use pseudonymous customer IDs. Exclude names, addresses, payment data, and message contents. Restrict exports and apply approved data-retention periods.
Confirm Fabric capacity, Power BI sharing, Power Automate licensing, connector access, and contact policy before the build.
The main risk is the target definition. If organisers require contractual churn, select software or broadband instead of disguising inactivity as renewal.
If the SharePoint connector fails, show a local review record and label the missing integration. Do not claim that SharePoint created a review case.
Submit this proposal, architecture, target definition, data provenance, notebooks, model versions, evaluation, consent tests, case audit, setup instructions, and video.
Confirm organiser fields, team names, and deadline timezone. This blueprint is a proposed design, not a completed entry.
Fabric batch model scoring supports the scoring design. Fabric Activator describes event rules and actions.