59 lines
2.7 KiB
HTML
59 lines
2.7 KiB
HTML
{% extends "base.html" %}
|
|
{% block nav_dash %}active{% endblock %}
|
|
{% block title %}Dashboard{% endblock %}
|
|
{% block content %}
|
|
<h1>Dashboard</h1>
|
|
<p class="sub">Discover jobs → score → tailor → self-audit → your approval → send → track.</p>
|
|
|
|
<div class="grid">
|
|
<div class="card"><div class="num">{{ stats.total_jobs }}</div><div class="lbl">Jobs Collected</div></div>
|
|
<div class="card"><div class="num">{{ stats.new }}</div><div class="lbl">New / Unscored</div></div>
|
|
<div class="card"><div class="num">{{ stats.scored }}</div><div class="lbl">Processed</div></div>
|
|
<div class="card"><div class="num">{{ stats.sent }}</div><div class="lbl">Sent</div></div>
|
|
</div>
|
|
|
|
<div class="panel">
|
|
<h2 style="margin-top:0">Discover jobs</h2>
|
|
<form method="post" action="/discover" class="flex">
|
|
<input name="query" placeholder="role (e.g. software engineer)" value="software engineer" style="max-width:280px">
|
|
<input name="location" placeholder="location (e.g. seattle wa)" value="seattle wa" style="max-width:200px">
|
|
<button class="btn" type="submit">Discover</button>
|
|
<button class="btn ghost" type="submit" formaction="/autopilot">Run Autopilot</button>
|
|
</form>
|
|
<p class="muted" style="font-size:12px">Pulls RemoteOK + Indeed RSS + Firecrawl search (+ feeds in Settings). Autopilot also scores and prepares the top matches automatically (never sends).</p>
|
|
</div>
|
|
|
|
<h2>Jobs ({{ jobs|length }})</h2>
|
|
<table>
|
|
<tr><th>Title</th><th>Company</th><th>Fit</th><th>Status</th><th>Opinion</th><th></th></tr>
|
|
{% for j in jobs %}
|
|
<tr>
|
|
<td><a href="/job/{{ j.id }}">{{ j.title }}</a><br><span class="muted" style="font-size:12px">{{ j.location }}</span></td>
|
|
<td>{{ j.company or '—' }}</td>
|
|
<td>{% if j.fit_score is not none %}{{ '%.2f'|format(j.fit_score) }}{% else %}—{% endif %}</td>
|
|
<td><span class="badge b-{{ j.status }}">{{ j.status }}</span></td>
|
|
<td class="muted" style="max-width:340px;font-size:12px">{{ j.opinion or '' }}</td>
|
|
<td><a class="btn ghost" href="/job/{{ j.id }}">Open</a></td>
|
|
</tr>
|
|
{% else %}
|
|
<tr><td colspan="6" class="muted">No jobs yet — run Discover above.</td></tr>
|
|
{% endfor %}
|
|
</table>
|
|
|
|
<h2>Applications</h2>
|
|
<table>
|
|
<tr><th>Job</th><th>Company</th><th>Status</th><th>Outcome</th><th></th></tr>
|
|
{% for a in apps %}
|
|
<tr>
|
|
<td>{{ a.title }}</td>
|
|
<td>{{ a.company or '—' }}</td>
|
|
<td><span class="badge b-{{ a.status }}">{{ a.status }}</span></td>
|
|
<td class="muted">{{ a.outcome or '—' }}</td>
|
|
<td><a class="btn ghost" href="/app/{{ a.id }}">Open</a></td>
|
|
</tr>
|
|
{% else %}
|
|
<tr><td colspan="5" class="muted">No applications prepared yet.</td></tr>
|
|
{% endfor %}
|
|
</table>
|
|
{% endblock %}
|