Source: https://guthlabs.ai/docs/instruments/margin-vs-markup-converter/

instrument / verified-clean

# Margin vs Markup Converter

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/margin-vs-markup-converter/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/margin-vs-markup-converter/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/margin-vs-markup-converter/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/margin-vs-markup-converter/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Finance, Economics & Business (educational only — never individualized investment, tax, or legal advice)

**Tranche**: tranche-4

**Evidence ID**: t4-259

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The core formulas pass standard mathematical verification, but the instrument needs explicit inverse formulas, input-selection rules, percentage representation, and domain validation before release. 'Price suggestion' should be labeled as a calculated price, not individualized pricing or financial advice; the existing educational-only label is appropriate.

### Formula and scope findings

- The stated forward formulas are standard and correct: margin=(price-cost)/price and markup=(price-cost)/cost.

- The specification does not provide the inverse formulas needed for bidirectional conversion. Required inverses include: price=cost/(1-margin), markup=margin/(1-margin), price=cost*(1+markup), and cost=price/(1+markup).

- The output description 'the missing values, price suggestion' is ambiguous about which inputs are optional and which values must be returned.

### Unit assumptions

- Cost and price must use the same currency and unit basis, such as both USD per item; mixing total cost with per-unit price is invalid.

- The test vectors interpret margin_percent and markup_percent as percentage points, so 20 means 20% and is converted to 0.20 before calculation.

- The formulas require price != 0 for margin and cost != 0 for markup.

- For ordinary positive cost and price, margin is below 100%; margin=100% causes price=cost/(1-margin) to divide by zero.

- Markup and margin are dimensionless ratios, reported as percentages only for display.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

A zero cost makes markup undefined, and an unlabelled margin value such as 50 is ambiguous between 50% and decimal 50. The converter should reject zero denominators and enforce explicit percentage units.

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "inputs": {
    "cost": 80,
    "price": 100,
    "currency": "USD",
    "basis": "per item"
  },
  "expected_outputs": {
    "margin_percent": 20,
    "markup_percent": 25
  },
  "working": "margin=(price-cost)/price=(100-80)/100=20/100=0.20=20%. markup=(price-cost)/cost=(100-80)/80=20/80=0.25=25%."
}
````

## Related workflows

[Startup Unit Economicspricing literacy](<https://guthlabs.ai/docs/instrument-workflows/startup-econ/>)

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

- `evidence-tranche4/tranche4-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
