OpenLOS

Rate sheet import

Turn a lender's Excel rate sheet into live, exact pricing

Most wholesale lenders still send rate sheets as Excel or CSV. A layout template tells OpenLOS, ORSF Publisher, or the ORSF command line where everything is on a lender's sheet, so importing today's sheet takes seconds and every price is read exactly. Templates hold layout only, never prices, so they're safe to share.

The example is fictional: a made-up lender, made-up prices.

How it works

Map the layout once

Point the template at the cells: where the rates are, the price block (one column per lock period), each adjustment grid and rule, the effective time and the lender's time zone. Start from the example.

Preview before importing

OpenLOS shows what it read: products, rates, lock periods, adjustments, and anything it had to warn about. It refuses mismatched layouts instead of guessing.

Import each day in seconds

Choose the lender's new file and import. Accounting negatives, N/A cells, percent-formatted rates, points conventions, and daylight saving are handled.

Share the template

Every broker who gets the same lender's sheet can use your template. Contribute it to the shared directory so nobody maps that layout again.

A template, in brief

Values are always cell references, never numbers; the format rejects anything else. Full reference: orsf-import/0.1.

Lenders: the better path is to publish the sheet directly as a live feed with ORSF Publisher, which reads the same templates.

{
  "template": "orsf-import/0.1",
  "name": "Example Wholesale daily sheet",
  "effectiveAt": { "cell": "B2", "timezone": "America/New_York" },
  "products": [{
    "id": "conv30", "name": "Conventional 30 Year Fixed",
    "loanType": "Conventional", "amortization": "Fixed",
    "termMonths": 360, "lockDays": [15, 30, 45, 60],
    "rates":  { "range": "A6:A12" },
    "prices": { "range": "B6:E12" }
  }],
  "grids": [{
    "id": "fico_ltv", "name": "Credit score × LTV",
    "rowVar": "fico", "colVar": "ltv",
    "rows": [{ "min": "780" }, { "min": "760", "max": "779" }],
    "cols": [{ "max": "60" }, { "min": "60.01", "max": "75" }],
    "values": { "range": "H6:I7" }
  }]
}