Brightbit
Project in detail · Applied research

Research software, where "it works" is not the requirement

In business software, the bar is that it works today. In research software, the bar is that someone else can re-run it in three years and get the same figure. That single difference changes every design decision on this page.

  • Reproducible by default
  • Python
  • PostgreSQL
  • Docker
  • Object storage
  • LaTeX output

Every result traceable

Dataset version, config, code commit and container digest recorded against each figure, automatically.

Nothing overwritten

Datasets and results are append-only. A correction creates a new version and keeps the old one.

Written for the next student

The person who inherits the lab in two years is a primary user, and the documentation is reviewed for them.

Open formats only

Parquet, CSV, JSON, plain text. No result locked inside a tool that may not exist at submission time.

Application one

Experiment workbench for a university lab

Six researchers, four laptops, one shared GPU box and a folder called final_v3_actual. Two published figures could not be regenerated at all.

Research workbench: an experiment-runs chart showing loss against epoch for three configurations, a parameter-sweep heatmap where each cell is one run, a compute-utilisation donut at 78 per cent, and a reproducibility trail recording dataset version, config, environment digest and output artefacts.
The workbench: runs, sweeps, compute and — the part that mattered most — the reproducibility trail.

What we built

  • Dataset registry. Every dataset gets a version and a checksum. Loading one by name without a version is an error, not a convenience.
  • Run tracking. Each run records its config, code commit, container digest, hardware, metrics and artefacts, with no researcher discipline required beyond using the runner.
  • Sweep runner. Declare a parameter grid, and the queue schedules runs across available hardware overnight, resuming cleanly after a crash.
  • Comparison views. Overlay any set of runs; the interface refuses to plot runs from different dataset versions on the same axes without an explicit override.
  • Figure generation. Publication figures and LaTeX tables are produced by a script in the repository, not by hand in a spreadsheet.
  • One-command replay. replay <figure-id> pulls the dataset version, rebuilds the container from its digest and re-runs the analysis.

The uncomfortable finding. When the trail went live, two of the lab's existing results could not be reproduced — one was a dataset that had been silently corrected, the other a config never committed. Both were resolved before submission. That is the value: it surfaces the problem while it is still fixable.

Experiments completed per week

Before and after the workbench

Shared compute, before and after

GPU hours by state, per week

Application two

Multi-site study data platform

A four-site observational study collecting data on tablets, sometimes in buildings with no usable network, under an ethics approval that required a complete audit trail.

  • Consent first. No data form opens until consent is recorded, with the version of the consent text stored alongside it.
  • Versioned forms. When a form changes mid-study, old records keep their original schema and analysis knows which version produced which row.
  • Offline collection. Tablets hold an encrypted local store and sync when they return to the site office; conflicts are resolved by a coordinator, never silently.
  • Field validation at the point of entry, where the participant is still present and a query can be resolved.
  • De-identified export. Analysts receive a pseudonymised dataset; the re-identification key sits with the principal investigator alone.
  • Audit trail. Every create, edit and view is logged with who, when and the previous value — the log the ethics committee asked for and now receives quarterly.

Query rate is the number the study cared about. Data queries per 100 records fell from 34 on the previous paper-and-Excel process to 6, because validation happened while the participant was still in the room.

Application three

Simulation & analysis pipelines

For engineering and materials groups we build the plumbing around a solver the researchers already trust: parameterised job submission, result collection, convergence checks and comparison against reference cases.

  • Declarative job definitions in version control, so a study is a reviewable file rather than a sequence of remembered commands.
  • Automatic convergence and sanity checks that fail a run early instead of producing a confident wrong answer.
  • Result caching keyed on input hash — an unchanged case is never recomputed.
  • Regression suite of reference cases, run on every change to the pipeline.
  • Cost and queue-time reporting for shared or cloud compute.
Application four

Academic project & dissertation guidance

A long-standing part of our work: helping final-year and post-graduate students build software that is genuinely theirs and genuinely defensible.

What this is and is not. We mentor, review architecture, teach the tooling and help you evaluate results honestly. We do not write your dissertation, and we do not sell finished projects. Anything you submit must be work you can defend line by line in a viva — which is precisely what this guidance prepares you for.

Scoping the question

Most student projects fail on scope, not skill. We help narrow a topic to something answerable in the time available.

Method & baseline

Choosing a baseline to compare against, and a metric that actually reflects the claim being made.

Reproducible setup

A repository, an environment file and a runnable notebook — so your examiner can see it work.

Writing up results

Figures that support the claim, limitations stated plainly, and no overclaiming. Examiners notice.

See the academic guidance track

Our reproducibility standard

Applied to every research engagement. A result that fails a row here does not go into a paper we are associated with.

The six checks. Each one is enforced by tooling, not by a reminder in a meeting.
CheckEnforced byFailure mode it prevents
Data is versionedRegistry rejects an unversioned loadThe silent dataset correction nobody remembers
Code is committedRunner refuses a dirty working treeThe uncommitted line that produced the result
Environment is pinnedContainer digest recorded per runA library upgrade quietly changing an output
Randomness is seededSeed required in every configA result that cannot be hit twice
Figures are generatedBuild script, no manual editingThe chart tweaked by hand and never re-derived
Replay is testedNightly replay of published figuresFinding out at submission that replay is broken

Reproducibility, measured

Across the research engagements currently under support.

Ethics, consent and data protection

  • Consent version stored with every participant record; withdrawal removes data from the analysis set and is logged.
  • Identifiers separated from measurements at the storage layer, not just hidden in the interface.
  • Role-based access with a documented approval step for any re-identification.
  • Retention and destruction schedules implemented in code, with certificates on completion.
  • Export logs, so the study team can always answer who took data out and when.

Bring us the result you cannot reproduce

It is the most useful place to start. We will work out what is missing and what it takes to make the next one traceable from the beginning.