Apple Card "export transactions to CSV" doesn't produce a file that matches the column names and order that Quicken requires to import transactions from a CSV.
apple_to_quicken.py: Converts CSV output from Apple Card export to Quicken required CSV import format. Clears out default categories to let Quicken handle assignments locally.
python ./apple_to_quicken.py <transaction-export-csv-file> <quicken-import-csv-file>
watch_folder.ps1: The monitoring agent running a synchronous polling loop. It uses .NET file streams to ensure incoming downloads are completely written and unlocked by Windows before calling the Python processor.- Windows Task Scheduler: The persistence layer that automatically initializes the script invisibly behind the scenes whenever the machine boots up and logs in.
- Place
apple_to_quicken.pyandwatch_folder.ps1into your preferred environment directories. - Update the configuration paths at the top of
watch_folder.ps1to reflect your specific download watcher and Quicken storage paths.
To install the background agent without dealing with the Windows Task Scheduler GUI sorting or validation anomalies, open an Administrator PowerShell session and execute the registration block provided in the deployment codebase.
This establishes a task named "Apple Card Watcher Loop" configured with:
- Trigger: Launch automatically at user logon.
- Execution Options: Run with highest privileges to avoid OS blocks.
- Visibility: Uses the
-WindowStyle Hiddenargument to run silently as a background process. - VM Compatibility: Overrides the default Windows AC power requirements so it never falls asleep or fails to initialize on a virtual machine.
- Status Checks: Run
Get-ScheduledTask -TaskName "Apple Card Watcher Loop"to check status. When active, it will report asRunning. - Process Tracking: The loop runs under a silent instance of
Windows PowerShellviewable inside Windows Task Manager's Background processes view. - Manual Cycling: The engine can be restarted at any point via PowerShell using
Stop-ScheduledTaskfollowed byStart-ScheduledTask.