Upload the day's files
Drop the two CSV files (RMG & RPR). Each upload is verified and logged. Signed timecards are locked; an unsigned one that arrives signed is promoted automatically. Rows for a work week that hasn't ended yet are held back — only completed weeks load, so a clinician's week can be judged fully signed. A clinician is ready to export only when every shift of their week is signed.
Upload history
Every day's-files upload, newest first — click a row to expand its verification numbers.
Productivity upload
Drop the National Contractor Productivity workbook (.xlsx) here. Each contractor's weekly Prod% is matched to your clinicians by name against the Employee Roster and shows up in the Prod% column on the Timesheets grid. The file's week columns are Monday-dated — each lands on its Sunday–Saturday work week (an 8-17 column belongs to the 8/16 – 8/22 week). The rolling 8-week file simply refreshes the weeks it covers every time you drop it — nothing duplicates.
Upload history
Every productivity upload, newest first — expand a row to see exactly who didn't roster-match and which names belong to more than one Person_ID.
Timesheets
⛔ Missing hours
Straight from the Nexus Workweek upload (Reliant rows only): every contractor who has a timecard slot for the selected work week — a row on that week's workweek file — but no hours in the uploaded timesheet files yet. They drop off this list the moment their hours arrive. Rows the workweek file carried without a Candidate External ID are listed too until they're mapped on the Nexus Workweek Upload page.
| Contractor | Person_ID | Job ID | Workweek ID | Supplier |
|---|---|---|---|---|
Loading… | ||||
⏱ Shifts that arrived after the week was exported
NetHealth sometimes reports a shift a day or two late — if the clinician's week had already been exported, those late shifts have to be keyed into Nexus by hand (a work week can't be uploaded to Nexus twice). ✋ unsigned = came in late, not signed yet · ⏳ pending = signed, waiting to be added to Nexus manually · ✓ completed = added to Nexus, caught up. When a signed week has been keyed in, press ✓ Added to Nexus — you'll get a confirmation, the shifts are checked off as exported (so they never end up in a Nexus export file), and the row moves to the Archived tab. Active holds everything still to be caught up. Click a row (▶) to expand every late shift's full detail — in/out times, hours, lunch, facility, signatures, and when each line arrived from the Reliant upload — so you can key it into Nexus straight from here. Click the clinician's name to jump to that week in the grid — press ↻ Refresh up top to clear the name filter again.
Workweek Uploaded
Drop the weekly timecard export file (CSV). Every row whose Client name doesn't start with Reliant is deleted automatically, and each Candidate External ID is checked against your Employees roster (they're the same IDs). Each candidate's Job ID and Timecard Week ID are then saved as reference data, filed under the Sunday–Saturday work week their dates fall into.
Week match-up — file rows vs your clinicians
A row from the workweek file only reaches a clinician when its Candidate External ID matches their Person_ID for that week. Anything that didn't match is listed below — pick the right clinician from the dropdown (it pre-selects when the names line up) and press Map: their Job ID / Workweek ID land on that clinician and they leave the Missing JobID/Workweek ID tab. Rows the file carried without any Candidate External ID (blank ID column) are saved too and stay listed here until you map them. Mapping is per work week and can be redone any time — a later upload or re-map simply overwrites.
| File candidate | Saved under ID | Job ID | Workweek ID | Map to clinician | |
|---|---|---|---|---|---|
Pick a week above. | |||||
Workweek reference data
Every upload saves each Reliant candidate's Job ID and Timecard Week ID under the Sunday–Saturday work week their dates fall into — re-uploading a week simply refreshes it. The ⇩ Nexus export & mark ✓ button on the Timecards tab matches your signed hours against this table to build the Reliant Time Upload file.
| Work week | Candidates | With Job ID | Last updated |
|---|---|---|---|
Loading… | |||
Upload history
SalesForce Workweek Upload
Drop the SalesForce report export here (the .xls file straight out of SalesForce is fine — no need to convert it). One row per clinician timesheet: Contact ID, Reliant ID (the same Person_ID used everywhere in this app), Timesheet / Assignment / Facility record IDs and the facility's Cost Center. The work week is read off the date at the end of the IW Timesheet Name and filed under its Sunday–Saturday week. Re-uploading a week simply refreshes it — rows are saved by their SalesForce Timesheet ID, so nothing duplicates. Every upload is checked for a numeric Reliant ID: the candidates that came without one are listed below the stats, mapped to the employees table, and can be downloaded with ⇩ Export missing numbers (here and on the upload's line in the history).
SalesForce workweek data
Everything saved from the SalesForce uploads, grouped by work week. Each clinician's row carries their SalesForce Timesheet, Assignment and Facility record IDs for that week.
| Work week | Clinicians | Facilities | Last updated |
|---|---|---|---|
Loading… | |||
Upload history
Dashboard
Your HG landing page — this is where everyone arrives after signing in. Widgets land here as the build progresses (open jobs, submissions in flight, assignments ending soon, the candidate pipeline). For now, pick a section on the left.
Employee Roster
One row per Person_ID, built automatically from every upload — each ID belongs to exactly one person and duplicates are impossible. Anyone appearing in a file for the first time lands on the Needed to add to Nexus tab; check them off once they're set up in Nexus and they simply stay in the full roster.
Facilities
One row per AccountingID with its facility name — kept current from every upload, no duplicates.
| AccountingID | Facility | City | State | SF ID | First seen | Last updated |
|---|
Duplicate Accounting IDs
There should only ever be one row per facility. This finds facilities whose Accounting IDs are the same number written differently — almost always a leading-zero twin like 329 vs 0329 (one came from NetHealth, the other from the SNF/SF import). For each pair, pick the row to keep and the others are deleted — anything filled in on a deleted row (SF ID, master data, name) is first copied onto the row you keep, so nothing is lost. Keep the ID your timecards actually use — the count of timecards on each ID is shown, and the most-used one is pre-selected.
SNF master facilities upload
Drop the "All SNF facility" workbook here (CSV — if it's the Excel file, save it as CSV first, or use the converted copy you were given). It reads Accounting ID, Facility, Customer, Division, Address, City, State, ZIP Code and Ops Management by header and keeps all of it on the facilities record, matched by Accounting ID. You get a review first: new facilities that will be added, update rows that fill in or change master data on facilities already on file, and name differs flags where the workbook name doesn't look like the name your timecards use for that same Accounting ID. Untick anything you don't want, then 💾 Save approved. The facility name your uploads maintain is never overwritten — the workbook's name is kept alongside it. Run supabase_schema_v13.sql once first.
SF facility IDs
Drop the Salesforce facilities export here (CSV — if it's the Excel workbook, save it as CSV first). It reads the Name, Id, Street_Address__c, City__c and State__c columns by header and matches each facility on file by name first — timecard name and SNF-workbook name, with the "Reliant -" prefix, capitals, "&/and" and abbreviations (CTR/Center, REHAB/Rehabilitation, HOSP/Hospital) handled — then by address (street + city + state from the SNF master data) when the name finds nothing. Go through the table and approve: ✓ exact name matches come pre-ticked, close-name and address matches wait for your tick after you check the address shown, and rows with more than one candidate wait for you to click Use on the correct one. Then 💾 Save SF IDs writes only the approved rows into the facilities table (sf_id) — run supabase_schema_v12.sql once in Supabase first (and v13 for the address matching).
Upload history
Assignments
Drop the vms_assignment_report export (CSV). Each row is saved by its Assignment ID — new assignments are added, existing ones are updated, and every change is written to a change log with a short description. The Candidate External Id ties each assignment to your Employees roster and timecards, and the Job Id ties it to the workweek reference data — so everything is related for reporting. Candidate SSN and DOB are never saved.
Saved assignments
Candidates highlighted in amber aren't in your Employees roster yet.
| Candidate | Person_ID | Job ID | Facility | Role | Status | Start – End | Hours |
|---|
Recent assignment changes
Every upload writes one line per added or changed assignment — what changed, from what, to what.
| When | Candidate | Type | What changed |
|---|---|---|---|
Loading… | |||
Upload history
Assignments vs Reliant CSV
Pick a work week and this compares the Assignments data against the hours actually uploaded: everyone whose assignment dates make them expected to work that week, the hours they worked (all uploaded shifts including drive time, signed or not), their bill rate from the assignment, and the amount billed (hours × rate) — with the whole week totaled at the bottom. Weeks run from week-ending 4/11/26 out to the farthest assignment end date. Expected = the week overlaps the assignment's dates (pushed start date is used if set, otherwise actual start, otherwise start).
Supplier breakdown
Who's working this week by supplier: National Staffing Solutions vs Non-National Staffing Solutions, counting clinicians with hours and a matching assignment (supplier comes from the assignment) — with the amount billed under each count. Below the chart, one row per supplier for the week — click a supplier row (▸) to drop down its professions. Clinicians without an assignment aren't included.
| Supplier | Profession | Clinicians | Hours | Billed |
|---|---|---|---|---|
Pick a week above. | ||||
Expected but no hours received
Clinicians whose assignment dates cover this week but who have no uploaded hours at all for it.
| Clinician | Person_ID | Supplier | Facility | Role | Status | Rate | Assignment dates |
|---|---|---|---|---|---|---|---|
Pick a week above. | |||||||
Hours worked but no assignment
Clinicians with uploaded hours this week but no assignment covering the week — check whether the assignment export is missing them or the hours landed on the wrong person. Their hours are not billed in the totals below. The box at the bottom of this page lists these across every work week at once.
| Clinician | Person_ID | Job ID | Facility | Hours worked |
|---|---|---|---|---|
Pick a week above. | ||||
Hours & billing vs assignments
One row per clinician with hours and a matching assignment that week. Rate and Job ID come from the assignment; the whole week is totaled at the bottom. Anyone working without a covering assignment is listed in the table above instead and left out of these totals.
| Clinician | Person_ID | Job ID | Facility | Hours worked | Rate | Amount billed |
|---|---|---|---|---|---|---|
Pick a week above. | ||||||
All hours worked, no assignment — every work week
Every clinician-week with uploaded hours but no assignment covering that week, across every work week at once (the box above shows only the selected week). Vendor is the supplier from the clinician's assignment on file even when its dates don't cover the week — if hours landed outside every assignment's date range, that vendor's export probably needs updating. none on file means that Person_ID has no assignment anywhere in the Assignments data. Click any column header to sort.
| Workweek | Clinician | Person_ID | Vendor | Job ID | Facility | Hours worked |
|---|---|---|---|---|---|---|
No timecard data yet. | ||||||
Actual Invoices Audit
Drop the timesheet_week_report export (CSV) from Nexus. Each row is saved by work week + Job ID + Candidate External ID, so re-uploading a newer export updates statuses in place. The Supplier column is looked up from the suppliers table by Supplier Id — names fill in automatically from your saved Assignments (matched by Job Id).
Weekly summary
One row per saved work week. Every value is a link — click it to open that week below and jump straight to the section it references.
| Workweek | Total billed | Missing | Did Not Work | Other | Total Billed +Other |
|---|---|---|---|---|---|
No timesheet data yet — upload the report above. | |||||
Week breakdown by facility billing status
Pick a work week. Rows group by the report's Facility Billing Status: Invoiced, Approved & Finalized together (with hours and amount billed), then Missing, then Did Not Work — anything else (e.g. Saved) lands in the last box so nothing is hidden.
Invoiced & Approved
Timesheets the facility has invoiced, approved, or finalized for this week — hours and the amount billed, totaled at the bottom. Finalized counts as invoiced.
| Clinician | Person_ID | Supplier | Status | Job ID | Profession | Hours | Amount billed |
|---|---|---|---|---|---|---|---|
Pick a week above. | |||||||
Missing
Facility billing status Missing — no timesheet received for this week.
| Clinician | Person_ID | Supplier | Job ID | Profession |
|---|---|---|---|---|
Pick a week above. | ||||
Did Not Work
Facility billing status Did Not Work for this week.
| Clinician | Person_ID | Supplier | Job ID | Profession |
|---|---|---|---|---|
Pick a week above. | ||||
Other statuses
Anything not Invoiced / Approved / Missing / Did Not Work — e.g. Saved timesheets still in progress.
| Clinician | Person_ID | Supplier | Status | Job ID | Profession | Hours | Amount billed |
|---|---|---|---|---|---|---|---|
Pick a week above. | |||||||
All “Other” timesheets — every work week
Every timesheet whose facility billing status isn't Invoiced / Approved / Finalized, Missing, or Did Not Work (e.g. Saved), across all work weeks from 10/11/25 on. The Signed timecard column checks the Timesheets data for that person & work week — ✓ when their whole week is signed. Click any column header to sort — click again to reverse.
| Workweek | Clinician | Person_ID | Supplier | Status | Signed timecard | Job ID | Profession | Hours | Amount billed |
|---|---|---|---|---|---|---|---|---|---|
No timesheet data yet. | |||||||||
Upload history
MSP (Parent Client)
Click chips to filter. All shown by default.
Suppliers
Click chips to filter. Blue dot = National Staffing Solutions, amber = other suppliers. Counts are candidates working the selected week.
Head Count i
| STATE | NSS | OTHER | TOTAL |
|---|
Open jobs by state i
| STATE | JOBS | OPENINGS |
|---|
Facilities by state i
| STATE | FACILITIES |
|---|
Contractors working — week over week
Every bar is a work week: distinct contractors who actually worked hours that week, from the timesheet detail upload — National Staffing Solutions blue, everyone else combined amber, the bold number is the week's total. Everything is a link: click a bar section to jump to that week showing only that group (click it again to bring both back), click the total or the week label to just switch weeks. Client / supplier chips, the state drill-down and this chart all filter each other. Up to 26 weeks (6 months) at a time.
Data uploads — this page only
This page runs on its own tables, completely separate from the hours-export program — nothing dropped here touches the timecards, workweek IDs or the assignments the export pages use.
1 · Timesheet week report (hours worked)
Drop the timesheet week report v2 export (CSV) from Nexus — one row per clinician per work week. Worked hours = the hour buckets (Regular, OT, Holiday, Orientation, Charge, On-Call, Drive Time…); PTO, Sick, Guaranteed, differentials and the supplier-side "S." mirror columns are never counted, and zero-hour timesheets are skipped. Keyed by Timesheet ID — re-uploading refreshes in place. (The older per-day detail report still works here too — the format is auto-detected.)
2 · ALL assignments (reference)
Drop the ALL assignments export (CSV). It supplies the Parent Client for every facility, facility addresses for the map, and each candidate's assignment dates + bill rate for the dot popups. Assignments that ended before 2026 are skipped. Candidate SSN, DOB, email, phone and home-address columns are never read and never stored.
3 · Full facility roster (parent / child)
Drop the facility roster workbook (.xlsx) — the one with the parent and child tabs. It's the authoritative facility → Parent Client mapping and address book for this page (it wins over the assignments file when both know a facility). Zips that lost their leading zero in Excel are repaired. Re-drop whenever the roster changes.
4 · National Staffing jobs report (open jobs)
Drop the National Staffing Jobs Report export (CSV). It powers the Open jobs by state table — every upload replaces the previous snapshot so closed jobs never linger. The Parent Client comes straight from the file's own Parent Facility Name column.
Upload history
Agents
Your automated crew. Click an agent to open their station.
File Upload Agent — duty log
Every upload, who ran it, the verification result, and any lines that didn't load.