{% extends "base.html" %} {% block title %} {% if job %}{{ job.title }} — {{ job.company }}{% else %}Job Not Found{% endif %} — Job Cannon {% endblock %} {% block content %} {% if job is none %}

Job not found.

← Back to Job Board
{% else %} {% import "components/_score_macros.html" as fit %} {% set sources_list = job.sources | from_json if job.sources else [] %} {% set urls_list = job.source_urls | from_json if job.source_urls else [] %} {# v3.0 fit = 6-30 composite from sub_scores_json (the legacy 0-100 job.score is dead). #} {% set composite = fit.composite(job.sub_scores_json) | int %}
← Back to Job Board

{{ job.title }}

{{ job.company }} — {{ job.location }}

{% if job.salary_min or job.salary_max %}

Salary: {% if job.salary_min and job.salary_max %} ${{ "{:,}".format(job.salary_min) }} – ${{ "{:,}".format(job.salary_max) }} {% elif job.salary_max %} up to ${{ "{:,}".format(job.salary_max) }} {% else %} ${{ "{:,}".format(job.salary_min) }}+ {% endif %}

{% endif %}
First seen: {{ (job.first_seen | local_date) if job.first_seen else "—" }} Last seen: {{ (job.last_seen | local_date) if job.last_seen else "—" }} {% if job.posted_date %} Posted: {{ job.posted_date | local_date }} {% endif %}
{{ composite if composite > 0 else "—" }} fit / 30
Status:
{% if sources_list %}

Sources

{% for i in range(sources_list | length) %} {% set src_name = sources_list[i] %} {% set src_url = urls_list[i] if i < urls_list | length else None %} {% if src_url %} {{ src_name }} → {% else %} {{ src_name }} {% endif %} {% endfor %} {% include "jobs/_direct_link_badge.html" %}
{% endif %} {% set _jdf = job.jd_full or '' %} {% set _desc = job.description or '' %} {% set jd_display = _desc if (_desc | length) > (_jdf | length) else _jdf %} {% if jd_display %}

Description

{{ jd_display | format_description }}
{% endif %}

Pipeline Timeline

{% if events %}
    {% for event in events %}
  1. {{ event.timestamp[:16] | replace("T", " ") }} {% if event.from_status %} {{ event.from_status }} {% endif %} {{ event.to_status }} {% if event.source != 'manual' %} via {{ event.source }} {% endif %}
  2. {% endfor %}
{% else %}

No pipeline events yet.

{% endif %}
{% include "jobs/_notes_panel.html" %}
{% endif %} {% endblock %}