Finds Northeastern co-op postings on NUworks that fit your resume, lets you approve them, and submits the approved ones for you. Not a mass-apply bot: you approve every job, and it applies to at most 11 per week (99 total). Not affiliated with Northeastern, NUworks or Symplicity.
- NUauto checks NUworks for new postings, has Claude score them against your resume, and ranks them.
- You review the best ones. Approving a job adds it to your Google Sheet as Approved.
- NUauto opens NUworks in Firefox and submits each Approved job, one at a time, while you watch.
It stops and asks you when a form has a question with no saved answer, and never writes free text (essays,
cover letters). Jobs that send you to the company's own site are left to you; nuauto assist <row> can fill
those with a Claude agent in a visible browser. It drafts longer answers for your approval and always asks you
before it submits anything. The same agent works on jobs that aren't on NUworks: add them to the sheet's
Other jobs tab (Apply > Add a job, or nuauto sheet add other <url> <company> <title>), then nuauto assist other <row>.
Apply's Add a job and each row's More menu (or nuauto sheet add|move|remove) also add NUworks co-ops by hand and move
or remove rows.
Summer internships too, if you want them: with "internships": {} in your settings file (local/local_config.json),
NUauto follows SimplifyJobs' and
vanshb03's Summer 2027 lists (a job on both counts once), reads each
posting from the company's own job site, and scores and ranks them like the co-ops. Review has a switch for them;
approved ones go in the Other jobs tab (no weekly cap), and the agent applies on the company's site.
You need a NUworks account, a Google account, and Claude Code (a Claude subscription or API key; scoring uses Sonnet). NUauto's setup screen installs Claude Code for you if it's missing.
Download the app from Releases: nothing else to install.
- Linux (most distributions from 2022 on):
NUauto-…-linux-x86_64.AppImage(or-aarch64). Make it executable (right-click > Properties > "Allow executing as program", orchmod +x NUauto-*.AppImage) and double-click it. - macOS (12 or newer):
NUauto-…-macos-arm64.dmg(Apple silicon) or-x86_64(Intel). Drag NUauto to Applications. It isn't signed by Apple, so the first time: open it, then System Settings > Privacy & Security > Open Anyway.
NUauto opens in its own window on its setup screen, which walks you through the rest, checking each step:
Claude Code, your own free Google sign-in client, your sheet (it can create one), your resume, the NUworks login and
what you are looking for. Your files stay on your computer, in ~/.local/share/NUauto (Linux) or
~/Library/Application Support/NUauto (macOS), readable only by you. To update, download the new version.
Used for real on Fedora and Ubuntu; the macOS app is built and tested automatically (in demo mode) but hasn't been used for real yet.
curl -fsSL https://raw.githubusercontent.com/voidReq/NUauto/main/install.sh | shIt installs everything in your home folder (no sudo): the code in ~/NUauto, Python 3.12 through
uv, Playwright's Firefox, the nuauto command and an app icon, then opens the same
setup screen. Your files go in ~/NUauto/local/. nuauto assist also needs Node.js (npx) and Google Chrome.
To build the packaged app yourself: sh packaging/build.sh (see packaging/).
git clone https://github.com/voidReq/NUauto.git && cd NUauto
python3 -m venv .venv && .venv/bin/pip install -e .
.venv/bin/python -m playwright install firefox
mkdir -m 700 local && cp local_config.example.json local/local_config.jsonThen: a Google OAuth client ("Desktop app", Sheets API on) saved as local/client_secret.json; a blank sheet
whose ID goes in local/local_config.json as sheet_id (then nuauto setup-sheet); your resume PDF as
resume_path; local/profile.json with {"resume_label": "..."} (the resume's exact name in NUworks' Apply
popup); nuauto login; nuauto doctor. Your preferences go in local_config.json "preferences" (see
docs/PIPELINE.md; without them NUauto uses its original settings).
nuauto gui (or the app icon) opens the window: Today (what needs you, this week's count), Review
(approve jobs: y/n/s), Apply (submit the Approved ones, watch, stop any time; company-site applications too),
Answers (your saved form answers) and Settings (every health check: logins, Claude Code, the sheet).
It keeps checking that your logins still work and tells you before something expires. Something seems off?
Settings > Run a self-test checks the whole app in demo mode, without touching anything real.
Try it with nothing real involved: nuauto gui --demo (a fake sheet, fake NUworks pages, fake Claude).
The same things from a terminal:
nuauto list every command (plus tools like `nuauto jobs stats`)
nuauto gui the window (--demo: everything fake)
nuauto update find and score new jobs
nuauto approve review the best jobs (y approve, n no, s skip, q quit)
nuauto rate y/n on jobs to teach the ranking your taste
nuauto apply [-n 3] submit Approved jobs (run in a real terminal)
nuauto status sheet counts and this week's limit
nuauto login [google] NUworks login / Google login (Google's lasts 7 days)
nuauto assist <row> an agent fills a company-site application; it asks you before submitting
nuauto assist other <row> the same agent, for a job in the sheet's Other jobs tab (not on NUworks)
nuauto doctor [--json] health check
nuauto test offline tests
Your preferences (term, year, major, thresholds, priorities, and how Claude should see you) are set in the setup
screen and saved in local/local_config.json; the rules that use them are src/nuauto/jobs.py and the Claude
prompts in prompts/. See docs/PIPELINE.md. How the window works: docs/GUI.md.
To run updates on a server twice a day instead, fill in the server fields in
local/local_config.json and follow docs/DEPLOY.md (the server must be Linux with systemd). Leave them
empty and everything runs locally.
Check NUworks' terms of use before using this. Everything in local/ (logins, secrets, answers) is
gitignored; keep it that way.
MIT licensed (see LICENSE).