Skip to content

Bijection for Data & Analytics

A metric is a Function. Not two people’s SQL.

Define each metric once, in reviewed code, and get the rows behind every number.


Revenue has three definitions: one in the finance deck, one in the board dashboard and one in a notebook nobody has opened since its author left. When the numbers disagree, someone spends a day finding out why.

In Bijection each metric is a Function in reviewed code, and every report reads the same one. Each number comes back with the rows that produced it, and changing a definition is a change someone approves.

  • Metric changes

    Starts: Someone edits a metric definition

    1. Run the old and new definitions side by side on a branch.
    2. See which reports move, and by how much.
    3. An owner approves before the new definition goes live.
  • Billing reconciliation

    Starts: Every night

    1. Compare invoices in Stripe with usage in the warehouse.
    2. Rows that disagree become a list with both values.
    3. Each mismatch is assigned to an owner.
  • Feed checks

    Starts: Every morning, before reports refresh

    1. Check that each source arrived and kept its shape.
    2. A failing feed opens a task for its owner.
    3. The task closes when the next sync passes.
  • Board pack

    Starts: Five days before the board meeting

    1. Run every metric in the pack at the same cut-off.
    2. Each number links to the rows behind it.
    3. Finance signs off before it is shared.
  • Data requests

    Starts: Someone asks for a new figure in Slack

    1. Check whether an existing definition already answers it.
    2. If not, an analyst writes one, and it is reviewed.
    3. The answer goes back with its definition.
  • Unexpected moves

    Starts: A metric moves more than you expect

    1. Compare it with the same period last month.
    2. List the rows that account for the change.
    3. The metric owner confirms it or investigates.