Auto Check Engine
The Auto Check Engine is the core technology that automatically monitors your USCIS case status without manual checking.
Overview
Instead of manually visiting egov.uscis.gov multiple times per day, the Auto Check Engine runs in the background and checks your case status automatically every few hours. When a change is detected, you receive an instant notification.
How It Works
Step 1: Case Registration
When you add a USCIS receipt number to the app:
- Receipt number is validated (format check)
- Initial status is fetched from USCIS
- Case is registered in Auto Check queue
- Local database record created
Step 2: Background Monitoring
The Auto Check Engine runs as a background service:
- Frequency: Every 2-6 hours (varies by user settings and iOS background limits)
- Method: HTTP request to egov.uscis.gov API
- Data sent: Only your receipt number (public information)
- Data received: Current case status, last updated date, form type
Step 3: Change Detection Algorithm
1. Fetch current status from USCIS 2. Load previous status from local database 3. Compare status text (exact match) 4. If different: - Save new status to history - Update "last checked" timestamp - Trigger notification system 5. If same: - Update "last checked" timestamp only - No notification
Step 4: History Tracking
Every status change is recorded with:
- Status text
- Timestamp (when USCIS updated it)
- Detection timestamp (when app discovered it)
- Form type
- Service center
Step 5: Notification Delivery
When change detected:
- Push notification sent to device
- In-app badge updated
- Case card highlighted in app
- History tab updated
Technical Architecture
Background Processing
iOS Background Modes:
- Uses BGTaskScheduler for efficient background refresh
- Respects iOS battery optimization
- Adapts frequency based on device conditions
Network Efficiency:
- Lightweight API calls (typically <5KB)
- Concurrent requests for multiple cases
- Automatic retry on network failure
- Exponential backoff if USCIS server issues
Data Storage
Local Database (SQLite):
- Encrypted case receipt numbers
- Complete status history
- Last check timestamps
- User preferences
iCloud Sync (Optional):
- Backup of case list
- Sync across user's iOS devices
- End-to-end encrypted
Check Frequency Explained
Why Not Real-Time?
USCIS does not provide real-time webhooks or APIs. The only way to check status is by querying their website periodically.
Why Every 2-6 Hours?
Balance between:
- ✅ Timeliness: Catch updates within a few hours
- ✅ Battery life: Not drain phone battery
- ✅ Server load: Respectful to USCIS servers
- ✅ iOS limits: Background tasks have restrictions
Reality check: USCIS typically updates cases during business hours (9 AM - 6 PM EST), so checking every 4 hours is sufficient.
Check Frequency Tiers
| Tier | Frequency | Availability |
|---|---|---|
| Standard | Every 6 hours | Free users |
| Premium | Every 2-4 hours | Premium subscribers |
| Manual | On-demand | All users |
What Gets Checked
USCIS Case Status Elements:
- Status title (e.g., "Case Approved", "Case Received")
- Status description (detailed text)
- Last updated date
- Form type (I-130, I-485, etc.)
- Service center location
What does NOT get checked:
- ❌ Your USCIS online account details (we don't have access)
- ❌ Your email from USCIS
- ❌ Internal USCIS systems
- ❌ Non-public information
Notification Logic
When Notifications Are Sent
Trigger conditions:
- Status text changed
- OR Status description changed
- OR Last updated date advanced
Smart Filtering
To avoid false positives:
- Ignore whitespace changes
- Ignore trivial wording changes
- Debounce rapid changes (only notify once)
- Respect user's quiet hours
Notification Content
Example notification:
📬 Case Status Update IOE0123456789 Old: Case Was Received New: Case Was Approved Tap to view details
Reliability & Error Handling
Network Failures
If check fails due to network:
- Automatic retry after 15 minutes
- Max 3 retries before waiting for next cycle
- User sees "last checked" timestamp
USCIS Server Issues
If USCIS website is down:
- App shows "Unable to connect to USCIS"
- Continues retrying on schedule
- No false notifications
Invalid Receipt Numbers
If receipt number becomes invalid:
- App shows warning
- Continues checking (may be temporary USCIS issue)
- User can manually verify
Privacy & Security
What We Send to USCIS
- Your receipt number (public information anyone can check)
- No personal information
- No authentication credentials
Data Stored Locally
- Receipt numbers (encrypted at rest)
- Status history (encrypted)
- Timestamps
- User preferences
Data NOT Stored
- Your name or personal details
- USCIS login credentials (we never ask for these)
- Any documents or forms
Battery Impact
Optimization Techniques
- Uses iOS Background App Refresh (energy-efficient)
- Batches multiple case checks together
- Only network activity every few hours
- CPU usage <1% during checks
User Control
You can:
- Adjust check frequency
- Disable auto-check for specific cases
- Enable/disable completely
- Use manual check only
Limitations
iOS Background Restrictions
Apple's limitations:
- Background tasks may be delayed if battery low
- Low Power Mode reduces frequency
- iOS may suspend background refresh if not used
Recommendation: Open app occasionally to keep background refresh active
USCIS Update Timing
Even if we check every 2 hours, there's inherent delay:
- USCIS updates case (unknown exact time)
- Our app checks 0-2 hours later
- Notification sent
- Total delay: 0-2 hours after USCIS update
This is still much better than checking manually once per day!
Comparison: Manual vs Auto
| Aspect | Manual Check | Auto Check Engine |
|---|---|---|
| Frequency | When you remember | Every 2-6 hours |
| Effort | Must visit website | Zero effort |
| Notifications | None | Instant alerts |
| History | You must record | Automatic tracking |
| Miss updates | Likely | Never |
Technical Specifications
API Endpoint: https://egov.uscis.gov/casestatus/mycasestatus.do
Method: POST with form data
Response: HTML parsing (USCIS doesn't provide JSON API)
Timeout: 30 seconds
User-Agent: CaseTracker Auto iOS/3.0
Learn More
Never miss an update
Let Auto Check Engine monitor your case 24/7 while you focus on what matters.
Download App