The Works
How servicing actually works.The single place auto consumer servicing lives end to end — how it behaves across the Web, API, and Mobile layers, what a proposed change will move, and where reality has drifted from intent. Every claim traced to real code. One verified picture for business, product, and engineering.
Flow Connections
Flow Diagrams
Interactive card-based flows — click to expand, play/pause walkthrough. Trace every decision from trigger to result.
Rule Explorer
Filter by category, layer, severity. Search across all 74 rules with fuzzy matching.
Requirements
SpecDrop in a requirement — new or existing — and see where it lands and what it moves before a line is written.
Impact
RippleSee what a change moves before it ships — pick a flow, rule, or flag and trace its blast radius across every layer.
High-Risk Drift
Bad Words Check Direction
Align logic — API direction is correct. Fix UI to match.
Host-Owned Interrupt & iBubble System
Correct flow docs to attribute interrupts/iBubbles/dedup/CTA-cascade logic exclusively to ally-next-remote-auto-account-details; MFE repos are origination wizards only
CUPP PBZ Effective-Date Check
Add the pbzAlertEffectiveDate-in-past check to isChargedOff(), or confirm the omission is intentional and correct the doc
Payment Server Error Code Coverage
Add bespoke UI copy for these codes, or explicitly confirm the generic fallback is acceptable UX for each
LEM Extension Frontend Ownership
Locate the actual frontend consumer of /lemExtension/* (a repo not yet in scope) or confirm the feature is backend-only/unlaunched
Paperless Preference Submission
Verify against backend whether the mobile 'keep paper' choice is silently dropped; if so this is a bug in paperlessMutation.ts / useAutoPaperlessSettingsMutation.tsx
Interrupt Priority Order
Reconcile the two priority orders against product intent — the same eligible account can see a different interrupt on web vs mobile
Missing Mobile Interrupts (Rewrite / Settlement / Non-EPP)
Confirm whether Rewrite/Settlement/Non-EPP nudges are intentionally web-only; if not, add mobile equivalents
CamAI Eligibility Value Casing
Pin the exact eligibility string the API returns; a casing mismatch silently hides CamAI on one platform
CUPP Eligibility Gate Depth
Add the stop-alert and charged-off gates to the mobile predicate and confirm the intended maxPeriodAllowed upper bound
ERS 8-Gate CUPP Eligibility Not Consumed by Clients
Confirm maxPeriodAllowed/openPTPFlag are pre-filtered upstream by the 8-gate logic; otherwise both clients can offer CUPP to PBZ/STOP/CD/NY accounts ERS itself blocks
AlwaysOn/Outage Interrupt Suppression Web-Only
Decide whether account-load interrupts should be suppressed during a nightly outage on mobile and wire useAutoAlwaysOn into setInterruptValue if so
NYC/NYIPI Suppression Applies to Different Interrupt Sets
Define one canonical NYC/NYIPI-suppressed interrupt set and apply it identically on both clients
Mobile EPP Interrupt Fires for Enrolled, Web for Eligible-to-Enroll
Confirm intended mobile semantics; if it should prompt enrollment like web, gate on isEPPEligible() not enrollment status
Document-Center iBubble Ignores Server Suppression Flag
Make the document-center iBubble consult paperlessEligibility so a customer already suppressed for 180 days doesn't keep seeing the statements-page nudge
Mobile Review&Authorize Fires Paperless Update Unawaited
await/return the acsFetch and surface a distinct error if the paperless update fails while the payment succeeds
Host Text-to-Pay Enrollment CTA Is a Dead Link
Wire the host CTA to the real enrollment entry point or remove it before it ships as a functional-looking link
Web Deceased-Landing Page Missing SCRA Support Number
Add the SCRA branch to the web deceased-account page so servicemember accounts get the correct support line on both platforms
CUPP DPD>60 Suppression Only Hides the Rendered Interrupt
Move the DPD>60/DBO-LBO-LBOAI check into isAutoCUPPEligible so it also blocks the Payment Assistance CTAs and persisted session value, not just the bottom-sheet render
isEppFlowSuccess Inverted Between Host and EPP MFE
Consolidate the two contradictory web copies (or drop the host's sessionStorage heuristic) so the post-submission tracker renders consistently
Mobile EPP Eligibility Skips Termination-Date & Is Case-Sensitive
Add the PBZ/termination date-in-past comparison and normalize status casing on mobile so EPP UI doesn't surface before the effective date
Mobile Rewrite Acceptance Skips acceptRewriteQuote/expireRewriteQuote
Confirm signRewriteQuote alone books a first-time buyer rewrite; if acceptRewriteQuote does booking/expiration work, mobile primary-signer acceptances may be incomplete
Mobile Missing Sibling-Quote Cancellation (extension↔rewrite)
Add sibling-quote cancellation to both mobile accept mutations, mirroring web, so stale quotes aren't left active server-side
Total-Loss / Turned-In Vehicle: Self-Serve vs Hard Block
Decide whether total-loss/turned-in customers self-serve (web) or must call in (mobile) and make both platforms consistent
LBO Counterpart-E-Sign Tracker States Only on Mobile
Port the counterpart-signature status surface to web so co-lessee customers can see they're waiting on the other party
Odometer-Disclosure E-Sign UI Missing on Web
Confirm whether web customers owing only an odometer-statement e-sign have any completion path; if not, this is a functional gap
AAPI_BUS_E053 Maps to Conflicting Guidance
Align the customer action (call dealership vs call Ally) for this code — sending customers to the wrong channel is a real CX bug
11pm Same-Day Cutoff Not Server-Enforced for Generic Payments
Add a blocking server-side cutoff to the generic (non-AON, non-repo) payment path so a direct API call can't bypass the 11pm rule
Future-Payment Window Varies 1–365 Days by Layer
Reconcile web's 180/1-day and mobile's 90-day windows against the API's real 365-day ceiling; a raw API call can schedule far beyond any UI limit
Pending-Payment Cap Value & Enforcement Differ
Pick one server-enforced threshold, eliminate the web-only 12-vs-13 autopay tier mobile doesn't replicate, and wire E014 into a real check
Day-29-31 Autopay Copy Contradicts Across Platforms
Confirm the real downstream behavior for short-month autopay dates and fix whichever client's copy is wrong — the two currently promise opposite outcomes
Direct Pay + Autopay Conflict Is Client-Only
Add a server-side rejection when enrolling autopay while a DPA flag is active so a direct API call can't create a dual-debit conflict
>10 DPD Autopay Restriction Is Client-Only
Enforce the DPD>10 new-enrollment restriction server-side (wire up or replace E089) since it currently exists only in the UI
NSF Exclusion Server-Validated Only in Repo Path
Add an NSF-exclusion check to the generic (non-repo) server-side payment path — a direct API call for a non-repo NSF account currently bypasses this control
Dead NACHA-Return Protection (AAPI_BUS_E103)
Wire up AAPI_BUS_E103 (or confirm retired) — a customer whose account was disabled after an ACH return can re-add the identical routing/account with no rejection anywhere
CUPP paymentsKept Shaw-Path planComplete Drops allSatisfied
Reconcile the two data-source paths: under ff-AAOS-49177-dfs-cam the Shaw path can mark a plan complete even with unsatisfied promise items where the ADV path would not — confirm which is authoritative and align the doc
Extension-Agreement Lifecycle Is NOT Host-Only (document-center re-implements)
Correct flows/extension.md (15,28,37) and cross-layer-matrix.md:167 to state the extension-agreement lifecycle is duplicated across TWO independent Web implementations (account-details PaymentExtensionModal + document-center ReviewAndAcceptAgreementModal), not host-only. Add document-center's four files to Key Files. Maintenance/drift risk — the copies already diverge.