package ui const jobsTabHTML = `{{ define "jobsTab" }}

Job Opportunities

All ingested postings · AI-scored · sortable

{{ template "jobs" .Jobs }}
{{ end }}` const jobListHTML = `{{ define "jobs" }}
{{ range . }} {{- $qual := "pending" -}} {{- if .Analysis }}{{ if .Analysis.IsQualified }}{{ $qual = "qualified" }}{{ else }}{{ $qual = "not-qualified" }}{{ end }}{{ end -}} {{- $appClass := "none" -}} {{- if .App }}{{ if eq .App.Status "OPTED_OUT" }}{{ $appClass = "opted-out" }}{{ else if eq .App.Status "EXPIRED" }}{{ $appClass = "expired" }}{{ else }}{{ $appClass = "pipeline" }}{{ end }}{{ end -}} {{ else }} {{ end }}
Job Title & Company Link Analysis Score & Qualification Reason / Tags Last Updated Actions
{{ .Company }} • 📍 {{ .Location }}
🔗 {{ if .Analysis }} {{ if eq .Analysis.Status "PARSED" }} PARSED {{ else if eq .Analysis.Status "PENDING" }} PENDING {{ else if eq .Analysis.Status "DONE" }} DONE {{ else }} {{ .Analysis.Status }} {{ end }} {{ else }} UNANALYZED {{ end }} {{ if .Analysis }} {{ if .Analysis.IsQualified }} ★ {{ printf "%.0f" .Analysis.Score }} {{ else }} ✗ Not Qualified {{ end }} {{ else }} – {{ end }} {{ if .App }} {{ if eq .App.Status "OPTED_OUT" }} Opted out {{ else if eq .App.Status "EXPIRED" }} ⚠️ No longer active {{ end }} {{ end }} {{ if .Analysis }} {{ if .Analysis.IsQualified }}
{{ range parseJSON .Analysis.MatchedHighlights }} {{ . }} {{ else }} No tags {{ end }}
{{ else }} {{ $missing := parseJSON .Analysis.MissingHighlights }} {{ if $missing }} {{ index $missing 0 }} {{ end }} {{ end }} {{ end }}
{{ formatDate .LastSeenAt }} {{ if .App }} {{ if eq .App.Status "OPTED_OUT" }}
Opted-out
{{ else if eq .App.Status "EXPIRED" }}
⚠️ EXPIRED
{{ else }} {{ .App.Status }} {{ end }} {{ else }}
{{ end }}

📭

No job postings found. Click 🔍 Discover in the bottom bar to start crawling.

{{ end }}` const jobDetailHTML = `{{ define "jobDetail" }}
{{ .Company }}

{{ .Title }}

📍 {{ .Location }} • Last Updated {{ formatDate .LastSeenAt }}

{{ if .Analysis }}
Match Score {{ if .Analysis.IsQualified }} {{ printf "%.1f" .Analysis.Score }} / 100 {{ else }} Not Qualified {{ end }}
Analysis Status {{ .Analysis.Status }}
{{ if .Analysis.IsQualified }}

✓ Matched Highlights

{{ range parseJSON .Analysis.MatchedHighlights }} {{ . }} {{ else }} None identified {{ end }}
{{ end }}

! {{ if .Analysis.IsQualified }}Gaps / Missing Skills{{ else }}Disqualification Reasons{{ end }}

{{ range parseJSON .Analysis.MissingHighlights }} {{ . }} {{ else }} None identified {{ end }}
{{ if .Analysis.IsQualified }}

💡 Resume Tailoring Tips

    {{ range parseJSON .Analysis.TailoringSuggestions }}
  • • {{ . }}
  • {{ else }}
  • None
  • {{ end }}
{{ end }}
{{ end }}

Job Description

{{ rawContent .RawContent }}
Apply External ↗
{{ end }}`