PRIXS
PRIXS Operations Console
We Make Roofers’ Job Easier Local only

Dashboard

Accepted appointments — last 14 days

Money this week

Agent output this week

Client delivery vs weekly target

Appointments by area this week

Acceptance rate — last 8 weeks

What needs attention

Dashboard

Book an appointment Opens the booking form →

Weekly target

Accepted per day — last 14 days

Pay

Hours breakdown

Weekly Entry

Each agent's hours for the week — add them once, typically Friday after the shift ends. Booked, accepted and rejected come from their appointments automatically.

Agent Hours Booked Accepted Rejected Score

How the score works

Agents

Everyone on the floor, at a glance. Click one for the full picture.

Agent Reports

A live dashboard for one agent at a time, plus black-and-white PNG scorecards to send straight to them.

Agent dashboard

Accepted per day — last 14 days

Pay

Hours breakdown

Leaderboard

Standings

# Agent Hours Booked Accepted Rejected Pace Score

Accepted against pace

Target scaled to the week so far, not the whole week.

Score

Hours, output and quality, weighted 35 / 55 / 10.

Team accepted per day

Monday to Friday, against the team's daily target.

Rejection rate

Share of everything booked that came back rejected.

What this week is telling you

Shareable card

The standings, the pace and the headline insight in one image — sized to drop straight into a chat.

Payroll

Weekly pay built from the hours and accepted appointments you've already entered.

Agent Hours Rate Base Accepted Bonus ea. Bonus Total

Rates save against the agent, so you only set them once. Bonus is paid per accepted appointment — rejected ones earn nothing. Mark someone terminated in Weekly Entry and they drop out of payroll and the dashboard's payroll and profit figures.

Payroll reports

Everything finance needs to cut checks — one row per agent, this week.

Agent Days Hours Ready Break Meeting Calls Booked Accepted Appt/day Accept rate Cost/appt Revenue Base pay Bonus Total pay

Appointments

Everything pulled from your sheet. What you set here decides whether it reaches the client and how the agent's day counts.

BookedAppointmentTimeHomeowner AreaRoof age AgentClient StatusOutcome
Nothing here yet. Pull from your sheet to fill this.

Accepted goes on the client report as Delivered and counts as an accepted appointment for the agent. Rejected counts against them and never reaches the client. Pending counts as booked while you decide. Follow up is for anything that needs another look before you can call it either way. Re-pulling the sheet never overrides a decision you've made here — and never changes who it's assigned to once you've picked a client.

Outcome is what actually happened once the client ran the appointment — set by them, or by you on their behalf. It shows up on their report, and only staff and the client themselves can set it.

Calendar

Dashboard

Outcome breakdown

Appointments by city

Delivered per week — last 8 weeks

Clients

Who you're delivering to, what they expect each week, and what it's worth.

Add a client

This week

No clients yet. Add your first one above.

Client Reports

The appointment list you send the client. No pricing and nothing about agents.

Log an appointment

Appointments this week

BookedAppointmentTimeHomeownerAddressCityZipStatus
Nothing logged for this client and week yet.

People

Who can sign in, and what each of them can see. Everyone shares the same data — the difference is how much of it reaches them.

Your business

Invite someone

Who's in

EmailRoleSigns in asJoined

Codes not used yet

CodeRoleForExpires

What each role can see

 OwnerManagerAgentClient
Their own daily numbersYesYesYesNo
Their own payYesNoYesNo
Everyone's daily numbersYesYesNoNo
Their own appointmentsYesYesYesNo
Their own accepted appointments, and who booked themYesYesNoOwn only, agent hidden
Everyone's appointments and homeowner detailsYesYesNoNo
Set an appointment's outcomeYesYesNoOwn only
Clients and client reportsYesYesNoNo
Pay rates and payrollYesNoNoNo
Operating costs and profitYesNoNoNo

These aren't hidden screens — the database refuses the data outright, so it holds even for someone poking at the page.

Operating Costs

Everything you pay for that isn't wages. Enter it once at its natural rhythm and the app keeps the weekly and monthly views in step.

Add a cost

Coming up

The next 30 days. Paid one already? Mark it and the app moves the date on a cycle.

What you're paying

CostCategoryHow often Last paidNext due AmountPer week
Nothing added yet.

Where the money goes

Cost of running a week

Settings

Targets, branding, and your data.

Scoring targets

An agent loses the full quality share of the score once this share of their booked appointments gets rejected. At 25%, one rejection in four wipes it out.
Drives the progress bar on every agent's own Dashboard, and — for a full week — the weekly score below: a flat bar for the week, not the daily target multiplied by however many days they happened to work.

Appearance

Saved on this browser, so everyone picks their own without changing what anyone else sees. The reports you send clients stay black-and-white either way.

Branding

Your logo

Property photos

With a Google Street View Static API key, an exported appointment card carries a photo of the property. The address on the appointment is looked up at export time; nothing is stored and no photo is fetched anywhere else in the app.

This key travels with the page and anyone opening the app can read it, which is how every browser-side Google key works. Restrict it in the Google Cloud console — Credentials → your key → Application restrictions → Websites, limited to your own address, and API restrictions limited to the Street View Static API. An unrestricted key can be used by anyone who finds it, and billed to you.

Appointment source

Point this at a Google Sheet and the app reads it on its own. In Sheets: File → Share → Publish to web, pick the sheet holding your requests, choose Comma-separated values (.csv), publish, and paste the link here.

Re-reading the same rows updates them rather than duplicating, so pulling often is safe. Anything you've edited by hand — a status, an agent's hours — is left alone.

Your data

Everything is stored in this browser. Export a backup regularly, and always before clearing browser data.

Erasing appointments clears the reviewed list and the raw import cache, so a re-pull starts clean — but pulling your sheet again brings back anything still sitting in it.

Sync

Not connected.

Sign out from the menu next to your name, top right.

Give the app to your team

By default the first thing a new person sees is a screen asking for the project URL and key — which you don't want to be handing out. This makes a copy of the app with those already filled in, so everyone else lands straight on the sign-in screen.

Database setup code

This is the code that has to be run once in Supabase before people can share the data. Press Copy, paste it into the Supabase SQL editor, and run it. Running it more than once does no harm.

Show the code