# Project Overview ImEX RPS is a desktop repair performance system for body shops. It imports estimating-system files, decodes estimates into jobs and joblines, stores and reads them through Hasura GraphQL, and gives users workflows for job review, reporting, audit, scan/import, settings, admin maintenance, updates, and estimate scrubbing. ## Product Concepts - Bodyshop: The shop/account a signed-in user can access. - User association: A user is linked to one or more bodyshops through Hasura data. - Job: A repair estimate/claim. Jobs contain claim number, owner/customer fields, vehicle information, insurer, close/loss dates, totals, rates, group data, flags, and related joblines. - Jobline: A decoded estimate line. Joblines contain part/labor data, pricing deltas, ignore flags, ruleset-derived booleans, and alert metadata. - Targets/groupings: Config data used to calculate target percentages and vehicle group eligibility. - Notifications: Hasura-backed shop/user notifications shown in the app. - Watch paths: Local folders where Electron watches for estimate files. - Scan: Manual folder scan for estimate files. - Audit: Spreadsheet-driven workflow comparing claim data against cached jobs. - Estimate scrubber: External API workflow that sends estimate JSON and opens/sends scrub reports. ## Main User Workflows - Sign in with Firebase auth. - Load user/bodyshop/notifications from Hasura after auth. - Configure watched folders and shop settings. - Watch or scan folders for estimate files. - Decode estimates in Electron main process. - Upsert jobs/joblines through renderer GraphQL helpers. - Review jobs and joblines in the Jobs page. - Search and paginate jobs. - Generate reporting and scorecards over date ranges. - Run audits from selected spreadsheets. - Send eligible estimates to the estimate scrubber service. - Receive update notices through electron-updater/S3 publishing. ## External Systems - Hasura GraphQL/Postgres: Primary app data store. - Firebase: Authentication. - S3 updater bucket: Electron auto-update publishing target. - Sentry: Renderer and main-process error telemetry. - Amplitude: Main-process analytics through IPC. - Estimate scrubber API: External estimate validation/report flow. - Local file system: Estimate file watcher, scan, and DBF decoding. ## Legacy Context The repository started from Create React App but now uses Vite. Some docs and comments are old. Prefer `package.json` scripts and current code over README boilerplate. The app uses a mixture of older class-era Redux patterns and current library versions. Preserve working conventions unless a task specifically asks for modernization.