Skip to content
Workshop compliance · 2026

Taking over a live compliance platform, and making it safe to improve.

KlarOK is the system Swedish car workshops use to document their way to Godkänd Bilverkstad certification: policies, self-inspections, reminders and reports, done in days rather than weeks and without a consultant. The platform was built by other teams from 2019 and had changed hands before. In 2026 KlarOK asked us to take it over: find out why it had become slow, fix what was broken, and keep building. It is live and in use every day, so we improve it while it runs.

Visit www.klarok.se
Industry
Workshop compliance, Sweden
Engagement
Takeover, audit, phased improvement
Inherited
Laravel 5.7 platform, 2019 build
Status
Ongoing engagement
The situation

A working product nobody could see inside.

The platform did its job for hundreds of workshops, but the people who built it were gone, pages had grown slow under real data, and every change carried the risk of breaking something nobody could safely test.

  • Built by other teams from 2019 on a framework and PHP version that had since reached end of life. The database schema, 210 tables, existed only on the production server: the repository held a single migration.
  • The busiest page ran 870 database queries on every load and sent 4 MB to the browser; the dashboard ran 615. Across the whole database there were thirteen secondary indexes and no foreign keys, so most of those queries scanned entire tables.
  • A head-office manager opening one progress page could set off roughly sixteen thousand queries, because completion is counted form by form across about 160 separate tables, pulling every row into memory to count it.
  • The server handled five page requests at a time, so a few slow pages made everyone wait, and the application log recorded hundreds of errors a day, nearly all from one function.
  • Deleted users were only marked as deleted, so usernames stayed occupied and single sign-on accounts were being renamed with random numbers. Rights could say what a user may do, but not what they may see.
  • There was no local development environment and no test suite, and production had drifted from version control. Nobody could change anything with confidence.
What we did, and are doing

Make it reproducible, measure it, then improve it while it runs.

We put the system on a laptop with a copy of the production database first, measured every slow page down to the query, and turned the findings into four fixed-price phases the client can approve, reorder or postpone one at a time.

A reproducible copy of production

A containerised environment matching production's PHP and MySQL versions, importing a production dump on first boot, with a mail catcher and the exposed database tools blocked. Every finding since has been measured on real data, on a laptop.

An audit with numbers

Queries per page, bytes sent, error sources, server limits and schema gaps, each traced to specific lines and written up alongside the production reference, the cron schedule and the traps a newcomer would fall into.

A plan in four fixed-price phases

Stabilise, deliver the three changes users had been waiting for, rebuild the slow pages, then add view profiles. Each phase has its own acceptance test and stands on its own.

Stabilise first

Server concurrency, indexes on the tables behind the activity log and the user-company links, the error that floods the log, cached configuration, and administrative tooling removed from the public web folder: small, low-risk changes with an immediate effect.

Faster pages without a rewrite

One query per kind of information instead of one per form, form-structure checks cached, server-side paging and search for the large lists, and daily figures computed once per company. The acceptance test: the busiest pages under two seconds with fewer than fifty queries.

The changes users asked for

Super admins who can create super admins, permanent user deletion that frees the username while every form stays attributed to a deleted user, proper management of single sign-on accounts, and view profiles that decide what each user can see, enforced everywhere a form can be reached.

Where it stands

Understood, reproducible, and improving in the open.

  • The platform is reproducible and understood: a local environment with production data and a written audit replaced guesswork, before a line of product code was changed.
  • The client has a costed, phased plan with acceptance criteria instead of an open-ended retainer, and approves phases one at a time after a demo on the test environment.
  • Nothing is being rewritten and no user has to relearn anything: the product workshops already know is being made faster and safer underneath them.
  • The larger risks, an end-of-life platform, further hardening and incomplete translations, are written down and quoted separately, so the roadmap is honest.
How we work with KlarOK

Fixed phases, no surprises.

Taking over someone else's software is a trust exercise. We priced each phase as a fixed figure with its own acceptance test, kept the client's existing stack rather than pitching a rewrite, and put a test environment with real data in front of them before every release.

  • Technical audit
  • Performance engineering
  • PHP & Laravel
  • Security hardening
  • Feature development
  • Ongoing support
Built with
Inherited
Laravel 5.7PHP 7.4MySQL 8 on AWS RDSBlade, jQuery, Bootstrap 4
Environment
Docker: PHP 7.4 + Apache, MySQL 8.4Production dump on first bootMailpit
Method
Query and payload measurementFixed-price phasesTest-environment demos
Hosting
EC2 in StockholmReleases outside office hours

Start a project

Have a project in mind?

Tell us what you're working on. We'll come back with a clear plan, a timeline and a price, no obligation.