add_job
ChatGPTQueue one specific posting by URL (Greenhouse or Workday link), optionally in a campaign.
answer_question
ChatGPTSave the user's answer to a pending application question (reused on future forms).
applications
ChatGPTWhat Sally sent: each application with company, role, when, and (on the board) the screenshot of the filled form and what she entered. Default: the latest run that sent anything. Pass query (company/title words) or job_ids to pull up specific applications, or run_id for an older run (ids in runs). Skipped postings stay hidden unless include_skipped.
billing
ChatGPTHow many applications (credits) the user has left and recent credit activity. Credits are managed on elegylabs.com.
campaign_results
ChatGPTOne campaign's jobs with their status (sent, filled in dry run, queued, waiting, stopped) and its progress toward the goal.
complete_onboarding
ChatGPTMark first-time setup as finished (only while get_status shows first_time_setup).
find_jobs
ChatGPTFind jobs already in the user's list by company and/or title words (all must match), to get the job_id for send_jobs. Empty query = most recent.
forget
ChatGPTDelete a saved memory by id (ids are in get_status 'remembered').
get_profile
ChatGPTThe user's profile that application forms read: contact, links, schools, jobs, work eligibility and logistics. Change fields with update_profile. Street address and voluntary self-ID answers (gender, race/ethnicity, veteran, disability, sexual orientation, transgender, pronouns) are only set on the site's Profile page (https://elegylabs.com/sally/app); forms use the answers saved there.
get_resume
ChatGPTThe active resume's text, its versions, and experience the user mentioned that isn't on the resume yet. Use before drafting resume bullets or answering questions about it.
get_status
ChatGPTEverything at a glance: setup still missing, dry run on/off, applications (credits) left, every campaign with progress, what's running or queued, nightly schedule, and what Sally remembers about the user. Use it before acting on the account. If it includes first_time_setup, the account is new: follow that checklist, ask the user to attach their resume here for upload_resume, then call complete_onboarding.
live
ChatGPTWhat Sally is doing this second: each running campaign's progress, every application in flight and its stage, and her thought bubble. The board polls this by itself while she works.
next_steps
ChatGPTEmployers moving the user forward: interviews, phone screens, assessments, offers, recruiters reaching out (from emails to their application address). Newest first. Rejections aren't tracked; employer replies also reach the user's own inbox.
pending_questions
ChatGPTApplication-form questions only the user can answer. Only bring these up if they ask.
remember
ChatGPTSave one durable fact or preference about the user (things that help applications or the search). Categories: personal: Facts about the candidate (licenses, availability, location, eligibility, contact details); experience: Work, projects, skills, awards or education not on the current resume file; job_search: What they want or don't want in a job (roles, companies, pay, location, schedule); preference: How they want LilSally to behave (tone, how often to report, what to ask first)
run_campaign
ChatGPTRun an existing campaign now (search + apply). Pass more_applications whenever the user gives a number ('do 20 more' = 20); if it already hit its goal the goal is raised automatically.
search_report
ChatGPTWhy a campaign found few, no, or odd postings: what each recent search returned and why postings were skipped (other places, other titles, closed, unsupported sites). Use before explaining or suggesting a change. Omit campaign_id for the newest campaign.
send_jobs
ChatGPTSend REAL applications to 1-25 specific jobs (job_ids from find_jobs or campaign_results) right now. No search. Can't be taken back.
send_test
ChatGPTWhile dry run is on: send 1-5 real applications once from a campaign's already-found jobs, leaving dry run on for everything else.
set_boards
ChatGPTChange the DEFAULT boards for every campaign (only when they want it everywhere). For one search, set boards on that campaign instead.
set_dry_run
ChatGPTDry run on (forms filled and screenshotted, not sent) or off (real applications go out).
set_schedule
ChatGPTWhen the user wakes up (HH:MM 24h), their IANA time zone, and whether overnight employer confirmations wait for wake-up time (morning_delivery, default true).
site_accounts
ChatGPTAccounts Sally created for the user on job sites (Workday): which site, the email, and whether it's verified. Passwords are only shown on the site (Settings).
skip_jobs
ChatGPTSkip jobs so Sally never applies to them (skip=true), or put skipped ones back in her queue (skip=false). job_ids from find_jobs or campaign_results.
start_campaign
ChatGPTCreate a campaign and (by default) run it now: Sally finds matching postings and applies to them for real (1 credit each) for the signed-in user, with their own resume and profile; never for anyone else. Pass the user's own words as request; turn them into short title and location keywords (no place named = anywhere). Default 20 applications, or fewer if applications_left is lower. The board then shows each application live; don't poll.
stop
ChatGPTStop the run in progress and clear queued sends (stop, pause, cancel, 'that's enough').
update_campaign
ChatGPTPause/resume a campaign, change its roles, places, boards or goal, or make it nightly (nightly=true, per_night) or one-time again (nightly=false). target_applications = how many NEW applications from now.
update_memory
ChatGPTReplace the text of a saved memory.
update_profile
ChatGPTSave facts the user told you to their profile (what application forms read). education/experience are whole lists. Keys: first_name, last_name, email, phone, city, state, country, linkedin, github, website, school, degree, major, grad_date, gpa, current_company, current_title, skills, education, experience, work_authorized_us, needs_sponsorship, citizenship, willing_to_relocate, earliest_start, salary_expectation, how_heard, over_18, postal_code, work_setting. Street address and voluntary self-ID answers (gender, race/ethnicity, veteran, disability, sexual orientation, transgender, pronouns) are only set on the site's Profile page (https://elegylabs.com/sally/app); forms use the answers saved there.
upload_resume
ChatGPTSave the resume the user attached in this chat (PDF, Word or text) as their active resume, exactly like uploading it on the site: it's parsed into their profile and kept as a new version. Pass the attached file as resume.
use_resume_version
ChatGPTMake an earlier resume version the active one (versions are in get_resume). The profile isn't re-read, so their edits there stay.