job

package
v0.7.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 19, 2026 License: MIT Imports: 1 Imported by: 0

Documentation

Overview

Package job defines the job-posting data model that the rest of the system reads, writes, and operates on.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CalendarEventRef

type CalendarEventRef struct {
	ID        string    `json:"id"`                // Google's event ID
	Kind      string    `json:"kind"`              // "interview" | "deadline"
	When      time.Time `json:"when"`              // event start (UTC)
	Summary   string    `json:"summary,omitempty"` // event title at create time
	CreatedAt time.Time `json:"created_at"`
}

CalendarEventRef is a lightweight pointer to a Google Calendar event this CLI created. Stored on the Job so `jobforge calendar list` doesn't need a side-table.

type Job

type Job struct {
	ID          string    `json:"id"`
	Title       string    `json:"title,omitempty"`
	Company     string    `json:"company,omitempty"`
	Location    string    `json:"location,omitempty"`
	URL         string    `json:"url,omitempty"`
	Source      string    `json:"source,omitempty"`
	Description string    `json:"description,omitempty"`
	Notes       string    `json:"notes,omitempty"`
	Tags        []string  `json:"tags,omitempty"`
	Status      Status    `json:"status"`
	CreatedAt   time.Time `json:"created_at"`
	UpdatedAt   time.Time `json:"updated_at"`
	LastDraft   string    `json:"last_draft,omitempty"`

	// Match fields are populated by the ranker (jobforge feed). Score is
	// 0-100; zero means unranked. Rationale is one short sentence from
	// the LLM explaining the score. Stale when the user's profile or
	// resume changes - re-run `jobforge feed --rerank` to refresh.
	MatchScore     int       `json:"match_score,omitempty"`
	MatchRationale string    `json:"match_rationale,omitempty"`
	MatchedAt      time.Time `json:"matched_at,omitempty"`

	// CalendarEvents tracks Google Calendar entries this job has created.
	// Populated by `jobforge calendar add-interview` / `add-deadline`.
	// We keep a slice (not a single ID) because one job often has
	// multiple scheduled events: phone screen, technical, onsite.
	CalendarEvents []CalendarEventRef `json:"calendar_events,omitempty"`
}

Job is one position the user is considering or applying to. We keep it flat and JSON-friendly so it can be hand-edited if needed.

type Status

type Status string

Status enumerates the lifecycle stages of a tracked job.

const (
	StatusNew         Status = "new"
	StatusResearching Status = "researching"
	StatusDrafted     Status = "drafted"
	StatusApproved    Status = "approved"
	StatusApplied     Status = "applied"
	StatusRejected    Status = "rejected"
	StatusArchived    Status = "archived"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL