Documentation
¶
Overview ¶
Package profile holds the user's personal job-search profile: who they are, what they want, and what they'll let the agents say on their behalf.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type EEO ¶
type EEO struct {
Gender string `json:"gender,omitempty"`
Race string `json:"race,omitempty"`
VeteranStatus string `json:"veteran_status,omitempty"`
DisabilityStatus string `json:"disability_status,omitempty"`
}
EEO is optional Equal Employment Opportunity self-identification. Every field is optional; values are free-form because canonical choices vary per employer.
type Education ¶
type Education struct {
Level EducationLevel `json:"level,omitempty"`
FieldOfStudy string `json:"field_of_study,omitempty"`
Institution string `json:"institution,omitempty"`
}
type EducationLevel ¶
type EducationLevel string
const ( EducationHighSchool EducationLevel = "high_school" EducationAssociate EducationLevel = "associate" EducationBachelor EducationLevel = "bachelor" EducationMaster EducationLevel = "master" EducationPhD EducationLevel = "phd" )
type GoogleCreds ¶
GoogleCreds is the OAuth Desktop client identifiers the wizard collects so Google Calendar integration works out of the box. The wizard pre-fills these from whatever's already in config.json and returns whatever the user typed (empty strings == "skip").
type JobPrefs ¶
type JobPrefs struct {
SalaryMin int `json:"salary_min,omitempty"`
SalaryMax int `json:"salary_max,omitempty"`
Currency string `json:"currency,omitempty"`
EarliestStart string `json:"earliest_start,omitempty"`
WorkMode WorkMode `json:"work_mode,omitempty"`
WillingToRelocate Relocate `json:"willing_to_relocate,omitempty"`
}
JobPrefs captures the "what kind of job" answers. EarliestStart is free-form so users can write "immediate", "2 weeks", or an ISO date.
type Profile ¶
type Profile struct {
Name string `json:"name"`
Email string `json:"email"`
Phone string `json:"phone,omitempty"`
Location string `json:"location,omitempty"`
Headline string `json:"headline,omitempty"`
Summary string `json:"summary,omitempty"`
Skills []string `json:"skills,omitempty"`
DesiredRoles []string `json:"desired_roles,omitempty"`
PreferredStack []string `json:"preferred_stack,omitempty"`
YearsOfExp int `json:"years_of_experience,omitempty"`
ResumePath string `json:"resume_path,omitempty"`
PortfolioURLs []string `json:"portfolio_urls,omitempty"`
LinkedInURL string `json:"linkedin_url,omitempty"`
Tone string `json:"tone,omitempty"`
// Pointer-nested so partially filled profiles serialize without empty
// {} blocks cluttering profile.json.
WorkAuth *WorkAuth `json:"work_auth,omitempty"`
Education *Education `json:"education,omitempty"`
JobPrefs *JobPrefs `json:"job_preferences,omitempty"`
EEO *EEO `json:"eeo,omitempty"`
}
Profile is the user-supplied context every agent reads from. The first-run intake wizard populates it; users may also edit profile.json by hand.
type WizardResult ¶
type WizardResult struct {
Profile Profile
Google GoogleCreds
}
WizardResult bundles everything the intake wizard collects. Profile fields are persisted to profile.json by the caller; the GoogleCreds half is merged into config.json. Splitting them keeps the profile package agnostic about how the caller stores credentials.
func RunWizard ¶
func RunWizard(in Profile, gIn GoogleCreds) (WizardResult, error)
RunWizard presents the intake form, pre-filled from `in` and `gIn`. Returns a WizardResult that the caller persists. The form reads stdin and writes to stdout via bubbletea, so it requires a real TTY — tests should exercise the helper functions (splitCSV, stripEmpty*) rather than RunWizard itself.
type WorkAuth ¶
type WorkAuth struct {
Status WorkAuthStatus `json:"status,omitempty"`
VisaType string `json:"visa_type,omitempty"`
NeedsSponsorshipNow bool `json:"needs_sponsorship_now,omitempty"`
NeedsSponsorshipFuture bool `json:"needs_sponsorship_future,omitempty"`
}
type WorkAuthStatus ¶
type WorkAuthStatus string
const ( WorkAuthCitizen WorkAuthStatus = "citizen" WorkAuthPermanentResident WorkAuthStatus = "permanent_resident" WorkAuthVisaHolder WorkAuthStatus = "visa_holder" WorkAuthNeedSponsorship WorkAuthStatus = "need_sponsorship" )