# 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.

