Skip to main content

Results review for algorithm teams

Tests tell you it runs. QA-Board shows you it's better.

Every commit runs on your test set. QA-Board puts its outputs next to the reference's (images, plots, flame graphs, logs and metrics) so your team sees what changed, agrees it's better, and ships it.

Self-hosted · git-native · built for heavy data

  • Open sourceApache 2.0, on GitHub
  • Self-hostedYour results stay on your network
  • Since 2018Born at Samsung Israel R&D Center
  • ~50 projectsIn production there, on the central quality platform

You already built half of this

Every algorithm team ends up with its own tools to look at results. They fit, at first.

  • A script that renders an HTML page of images, and an output folder per run that nobody cleans up.
  • Metrics pasted into a spreadsheet, a week after someone ran them.
  • Screenshots in a chat thread, to argue which version looks better.
  • A dashboard someone maintains on weekends, for one project.

QA-Board is what those tools become after years of use on dozens of projects: one place where each commit's outputs and metrics sit next to the reference's, for everyone on the team.

The loop

Run, compare, look, find, tune, gate

The same review loop for every algorithm: camera pipelines, models, servers, embedded code.

Run your code on your test set

Wrap your code with qa and run it on a batch of inputs: on your computer, on a cluster (LSF, Dask, Celery) or in CI on every push.

Put your project on QA-Board →

Use cases

For outputs that pass/fail tests can't judge

Each use case follows a demo project: the problem, the workflow, and the configuration that produces what you see.

  • Camera, ISP, imaging

    Image quality

    A denoiser wins PSNR but adds halos: synced zoom, Image Diff, deep zoom on 113 MP images, every pipeline stage.

  • Performance engineering

    Serving latency

    A cache saves CPU and takes p99 from milliseconds to seconds: latency distributions, flame graph diffs, History, a tuning frontier.

  • Computer vision, ML

    Model evaluation

    An int8 detector loses small objects: metrics per class and slice, PR curves over the reference, automated tuning.

  • Embedded, HW/SW co-design

    Bit accuracy

    Check that a change left every output file identical, before you hand a model over to a hardware team.

  • Robotics, perception

    Trajectories and 3D

    6DoF trajectories against ground truth, point clouds and videos played in sync with the reference.

All use cases →

The details

Polish you'd never build in-house

Years of daily use on dozens of projects, in the web app you get on day one.

  • Deep zoom

    Images over 100 MP load tile by tile, from the whole image down to single pixels.

  • New image, Image Diff and reference image of the facade window: in the diff, the window frame's edges show in yellow and orange, the flat wall stays white.

    Image Diff

    A perceptual diff with a threshold: only what really changed stands out.

  • The facade's window frame, new and reference images: above them, the hovered pixel's coordinates and its RGB values in both images, with their colors; crosshairs mark the pixel in both.

    Pixel values

    Hover a pixel to read its values in both images, with a crosshair on the other.

  • A rectangle selected on the sky gradient; below the images, the red, green, blue and luma histograms of the region, new and reference overlaid.

    Histograms

    Select a region to compare its histograms, new against reference.

  • The View ROIs menu open over the facade run, with Full Image, ROI Presets and Auto ROIs checked; below it, thumbnails of the twenty regions where new and reference differ most, found automatically, a dot colored by how much.

    Regions of interest

    Jump to preset regions, or to where the images differ most.

  • The Image Tools panel over the night street's shadows, with brightness raised and gamma lowered: the noise of both images shows.

    Filters

    Brightness, contrast and gamma on every image at once, to see into the shadows.

  • Every stage

    Sliders over a pipeline’s stages or a video’s frames, synced across runs.

  • A differential CPU flame graph of the steady-high run: in the workers and the ingress, the shared cache's respond and lookup, with the response rendering under them, are new, in orange; the model's forward pass, which runs less, is blue.

    Flame graph diffs

    The functions that got slower in red, the faster ones in blue, the new ones in orange.

  • Precision-recall curves of the indoor slice, one per class: the int8 model's solid, the fp32 release's dashed in the same color. The legend gives each curve's AP50: person drops from 0.19 to 0.06.

    Plot overlays

    Your Plotly figures, with the reference drawn dashed on the same axes.

  • Bit accuracy

    Only the output files that changed: click one to diff it with the reference.

  • Live logs

    Follow a running log, count its errors, jump to the next one.

  • File browser

    Every run’s folder in the browser, driven from the keyboard.

Integrations

Fits your stack

QA-Board wraps the code you have, where it runs today. It doesn't need to be the entrypoint of your build or your CI.

  • Your code

    • Python
    • Any executable: C++, shell...
  • Git and CI

    • GitHub and GitLab webhooks
    • GitHub Actions, GitLab CI, Jenkins
    • CircleCI, Travis CI...
  • Runners

    • Local processes
    • LSF
    • Dask
    • Celery
  • Servers

    • Docker Compose
    • Kubernetes (Helm)
    • Air-gapped installs
  • Sign-in

    • Local accounts
    • LDAP
    • SAML
  • Storage

    • A shared folder (NFS, SMB...)
    • Mounted at the same path everywhere

Roadmap

Where we're going

  • Next

    N-way comparisons

    Pick N commits, batches or tuning runs: outputs in a grid with synced zoom, one metrics column per run.

  • Next

    HTTP upload of outputs

    Save results from GitHub-hosted runners, laptops off the VPN and pods without a shared volume.

  • Next

    An MCP server

    Coding agents read results, Metrics Diffs and image crops, and review their changes like people do.

The whole roadmap →

See it on your computer

Start a server, run an example project and open its results in a few commands.

What's new: October 2026

qaboard v1.1.1

QA-Board now works with GitHub as well as GitLab, Gitea/Forgejo and Bitbucket, searches all of a project's commits, opens big commits much faster, and has a file browser and a video viewer. A quickstart, a user guide and release notes in the app help you get started; admins, check your git host settings before upgrading, and at SIRC install one more package when you upgrade qaboard.

Project integration

GitHub and other git hosts

QA-Board works with repositories on GitHub and GitHub Enterprise as well as GitLab, and receives the push events of Gitea, Forgejo and Bitbucket Cloud. On GitHub, qa batch sets a commit status that links to the results, and you can start GitHub Actions workflows from the web app. The experimental qa gate fails the CI when quality regresses.

Learn more →
Users

Search all your commits, browse your files

The commit list's Filter box searches all of a project's commits, not only the last days: by message, committer, branch, batch or hash. Open a folder under /s/ to get a file browser. Commit pages with 1000 runs filter and sort without freezing, and big commit lists and the projects list load much faster.

Learn more →
Users

What's new, a user guide, logs and videos

Release notes pop up once a month is over: read them again from the sparkles button in the sidebar. A new user guide, with screenshots of demo projects, explains the web app. Logs update live, with search, failed LSF runs show why LSF stopped them, and videos compare with a wipe, frame by frame.

Learn more →
Admins

Quickstart, Kubernetes, and upgrading

Try QA-Board with one Compose file and demo projects. deployments/deploy.py rolls out new backend replicas next to the old ones and rolls back instantly, and each release publishes its images and a Helm chart. Before upgrading, keep GITLAB_HOST set or list your GitLab in QABOARD_GIT_HOSTS: a migration records the git host of each project.

Learn more →
All release notes →