Field visit to travel claim
Modules ATT, FFM, MOB, CLM, PAY, NTF · Release R3 · Specs Field Force & CRM, Claims, Attendance
Context
The reference product records a photo punch, tracks GPS (point-to-point or continuous) with battery level, shows whether a visit matched the client location, and sends travel records through a separate path (Pending → Verified → Approved → Claimed) where the manager can edit "KM Revised" [Observed] (see Spryple analysis §11 and §21.7). Spyrl adds explicit consent and work-hours-only tracking, filtered distance computation, enforced visit verification and a single reimbursement pipeline in CLM.
Diagram
Steps
| # | Actor | Action | System response | Module | Notifications |
|---|---|---|---|---|---|
| 1 | field_executive | First use: reads the disclosure and consents to tracking | Consent recorded with purpose and retention; can be withdrawn | EMP, MOB | — |
| 2 | field_executive | Punches in with a selfie | Punch stored with location and fence result (client sites allowed by policy) | ATT | — |
| 3 | System | Starts the track session | Session in point-to-point or continuous mode; on-screen tracking indicator | FFM, MOB | — |
| 4 | Mobile app | Sends location batches (offline-tolerant) | Points stored in monthly partitions with accuracy, speed, battery and mock flag | FFM | — |
| 5 | field_executive | Follows the beat plan and checks in at an account | Distance from account computed; MATCHED, NOT_MATCHED or NOT_AVAILABLE; policy blocks, flags or allows | FFM | Manager alert when flagged |
| 6 | field_executive | Logs activity, follow-up date, stage change, payment collected | Opportunity and activity updated; lead age resets on stage change | FFM | Finance FYI on collections |
| 7 | sales_manager | Watches the live map | Positions, last ping, battery, visits so far | FFM | — |
| 8 | field_executive | Punches out | Session closed; tracking stops | ATT, FFM | — |
| 9 | System | Computes the day's distance | Accuracy, speed and jitter filters; snap-to-road when enabled; gaps flagged; ffm.travel.day_closed | FFM | Executive asked to review |
| 10 | field_executive | Reviews and submits (or auto-submit) | Daily travel Submitted | FFM | Task to manager |
| 11 | sales_manager | Verifies; may revise km with a mandatory reason; bulk verify with selected-records summary | Daily travel Verified; ffm.travel.verified | FFM | — |
| 12 | System | Creates a mileage claim | Claim with MILEAGE line at the policy rate for the vehicle type; source FFM_TRAVEL | CLM | — |
| 13 | payroll_manager | Approves (the verification step is already satisfied) | Claim Approved; reimbursement scheduled | CLM, PAY | — |
| 14 | System | Pays with salary | See claim to reimburse | PAY | Employee informed |
Exception paths
| Situation | Handling |
|---|---|
| Consent withdrawn | Tracking stops; point-to-point distance from punches and visits only; mileage still possible with manager verification |
| Location permission off or GPS unavailable | App shows a warning; gap flagged; manager sees it in verification |
| Mock location detected | Points dropped; event flagged to the manager |
| Phone battery dies | Gap bridged by straight-line distance and flagged |
| Executive forgets to punch out | ATT missed-punch rules; session closed at the policy default out-time |
| Visit outside radius with BLOCK policy | Check-in refused; executive can request an exception that the manager approves |
| Account has no location | First check-in sets it (as observed); manager can correct |
| Days below the minimum-visit filter | Travel not eligible for a claim unless the manager overrides |
| New phone | Device approval by manager before tracking and punching are allowed |