Workplace Scientifics
A report portal with two sides: the company's, and each client's.


The brief
Workplace Scientifics sent each inspection report to its client by email, one by one. The brief was one secure, searchable place for each client's reports, and one system for the company to run clients, scheduling and reporting.


Who it is for
Two sides use it. Staff at the company upload reports and manage clients, companies, branches and users. Each client organisation sees its own reports, and a company with several branches sees each one kept apart.




Decisions
The admin and client sides are separate dashboards, each with its own interface and permissions.
A report opens at its summary. The executive summary, key findings and recommendations are pulled out of the PDF, so a client reads the gist first.
Visibility controls decide which of a company's branches a user can see.
Two things were hard at first: switching between a company's many branches, and pulling the summary out of report PDFs in pure Python. I worked out both.



Flows
- UploadThe company uploads an inspection report as a PDF.
- ExtractThe summary, findings and recommendations are pulled out automatically.
- FileThe report goes to its company and, inside it, its branch.
- ReadThe client views, filters and downloads it.
- ReminderInspection reminders are scheduled, and the client can see them.
- Book or requestThe client books an inspection, or requests a new one.
- ClarifyThe client asks about a report from the report itself.
Screens











Where it stands
Built, and in user testing. The company is not using it with clients yet.
- Dashboards, admin and client
- 2
- Levels of isolation, company and branch
- 2
- Businesses the company supported in 2025. The company's figure, not the portal's
- 300+
Tokens
Read from the code I wrote.
- primary
- #414EC3, oklch(0.485 0.181 272.8)
- background
- #FFFFFF, oklch(1 0 0)
- foreground
- #0A0A0A, oklch(0.145 0 0)
- muted-foreground
- #737373, oklch(0.556 0 0)
- border
- #E5E5E5, oklch(0.922 0 0)
- destructive
- #EF4444, oklch(0.637 0.208 25.3)
- radius
- 8px (0.5rem)
- radius md
- 6px (0.375rem)
- radius sm
- 4px (0.25rem)
- font
- Inter, system-ui, Avenir, Helvetica, Arial, sans-serif