82 lines
2.2 KiB
Go
82 lines
2.2 KiB
Go
package model
|
|
|
|
// CareerApplication represents a single job application from the tracker.
|
|
type CareerApplication struct {
|
|
Number int
|
|
Date string
|
|
Company string
|
|
Role string
|
|
Status string
|
|
Score float64
|
|
ScoreRaw string
|
|
HasPDF bool
|
|
ReportPath string
|
|
ReportNumber string
|
|
Notes string
|
|
JobURL string // URL of the original job posting
|
|
// Derived from Notes free-text (see data.deriveNoteFields)
|
|
Location string // "City, ST" when a US city+state appears in the notes
|
|
WorkMode string // "Remote" | "Hybrid" | "Full" (onsite), "" when unknown
|
|
PayRange string // first $-range found in the notes, e.g. "$140-210K"
|
|
PayMax float64 // top of PayRange in dollars (sort key), 0 when unknown
|
|
PaySource string // "POSTED" when the JD listed it, "est" for estimates, "" unknown
|
|
LastContact string // max YYYY-MM-DD found in notes (falls back to applied date)
|
|
// Enrichment (lazy loaded from report)
|
|
Archetype string
|
|
TlDr string
|
|
Remote string
|
|
CompEstimate string
|
|
}
|
|
|
|
// PipelineMetrics holds aggregate stats for the pipeline dashboard.
|
|
type PipelineMetrics struct {
|
|
Total int
|
|
ByStatus map[string]int
|
|
AvgScore float64
|
|
TopScore float64
|
|
WithPDF int
|
|
Actionable int
|
|
}
|
|
|
|
// ProgressMetrics holds job search progress analytics.
|
|
type ProgressMetrics struct {
|
|
// Funnel
|
|
FunnelStages []FunnelStage
|
|
|
|
// Score distribution
|
|
ScoreBuckets []ScoreBucket
|
|
|
|
// Timeline (weekly activity)
|
|
WeeklyActivity []WeekActivity
|
|
|
|
// Rates
|
|
ResponseRate float64 // Responded / Applied
|
|
InterviewRate float64 // Interview / Applied
|
|
OfferRate float64 // Offer / Applied
|
|
|
|
// Averages
|
|
AvgScore float64
|
|
TopScore float64
|
|
TotalOffers int
|
|
ActiveApps int // not skip/rejected/discarded
|
|
}
|
|
|
|
// FunnelStage represents one stage of the application funnel.
|
|
type FunnelStage struct {
|
|
Label string
|
|
Count int
|
|
Pct float64 // percentage of total
|
|
}
|
|
|
|
// ScoreBucket represents a score range and its count.
|
|
type ScoreBucket struct {
|
|
Label string // e.g., "4.5-5.0", "4.0-4.4", "3.5-3.9", "3.0-3.4", "<3.0"
|
|
Count int
|
|
}
|
|
|
|
// WeekActivity represents application activity for a given ISO week.
|
|
type WeekActivity struct {
|
|
Week string // e.g., "2026-W14", "2026-W13"
|
|
Count int
|
|
}
|