{% extends "flow.html" %} {% set step = "map" %} {% block main %}

Mapping — {{ role }}

the profile did not fit this file; fix the mapping, nothing loads until it does
{% if error %}
Load failed. {{ error }}
{% endif %}
Suggestions are hypotheses. The headers below come from the file itself (sheet {{ sheet }}, suggested header row {{ suggested_header_row }}). Nearest-match hints are never auto-accepted; a wrong mapping loads cleanly and produces a confidently wrong plan, which is why this page exists.

What the file looks like

{% for h, samples in headers.items() %} {% endfor %}
HeaderSample values
{{ h }}{{ samples | join(" | ") }}
{% if sheets | length > 1 %}
{% endif %}

Map the columns

Pick the file's own header for each canonical field the role knows. Leave a field unmapped only if the loader treats it as optional — a missing required field fails loudly on retry, by design.

{% for f in fields %} {% set cur = columns.get(f) %} {% endfor %}
Back to files
Advanced — edit the full profile YAML (geometry, value maps, filters, money-column semantics)
{% endblock %}