bama
BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI.
An open-source, local-first job agent for Claude Code. It reads public LinkedIn postings against your own criteria and shows why each role passed.
SkillsPython · HTMLGitHub @TaegyuJEONGOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
A job-search agent that runs in your own Claude Code: it reads public LinkedIn postings against your criteria and shows why each role passed. Local-first, open source.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Stop reading every job description yourself. FTJA is a job-search agent
that runs inside your own Claude Code. You give it your resume and your
standards; it reads public LinkedIn postings for you and shows only the roles
worth your attention, with the reason for each one.
Click the recording to watch it full size.
Beta. Built and tested with Claude Code on macOS. Codex and other
agents come next. Until then, fork it and make it yours.Read the full README ↗Stop reading every job description yourself. FTJA is a job-search agent that runs inside your own Claude Code. You give it your resume and your standards; it reads public LinkedIn postings for you and shows only the roles worth your attention, with the reason for each one.
Click the recording to watch it full size.
Beta. Built and tested with Claude Code on macOS and Windows. Scheduled runs and the "run finished" notification are macOS only. Linux is not supported yet: most of it should work, but it is untested and the resume chooser does not open there. Codex and other agents come next. Until then, fork it and make it yours.
It is free and open source. There is no FTJA account and no FTJA server: it is a folder on your computer and a set of skills your agent follows.
You need a Mac or a Windows PC and Claude Code. Setup installs Git and Python if your computer does not have them yet.
Open https://ftja.vercel.app and copy the setup prompt, or copy it from here:
Set up FTJA: clone https://github.com/TaegyuJEONG/ftja.git into a new local FTJA folder, connect this session to it, then follow .claude/skills/ftja-setup/SKILL.md. Do not guess my preferences.
Paste it into a new Claude Code session.
That is all. Your agent downloads FTJA, opens a web view next to the chat and walks you through four steps: add your resume, confirm the profile it drafts, confirm your search settings, and answer three short questions that become your judgment rubric.
/ftja-run. The web view shows the run as it
happens and then the results./ftja-run, your agent reads those reasons and proposes changes to your
rubric. Nothing changes until you approve it./ftja-remote and your
agent writes the keywords and rules for where you live; the results
download as a table.How much of your Claude plan a run uses. A run is real work for your agent, and it scales with how many postings it reads. Our largest run so far (4 titles, up to 1,000 postings each, 1,991 scraped) ran for well over an hour, used roughly 12 million tokens by the agent's own estimate, and hit the session usage limit partway through. Start with one or two titles and 100 results per title, then widen.
Your resume, profile, criteria, run history and results are files in your FTJA folder. They are excluded from git, so updating FTJA never uploads them. FTJA has no server of its own and collects nothing.
What does leave your computer:
VERSION file, at most twice a day, to
tell you when an update exists. It sends nothing about you. Set
FTJA_NO_UPDATE_CHECK=1 to turn it off.The web view runs on 127.0.0.1 only and refuses requests from other sites.
The landing page at ftja.vercel.app is separate from the tool. It uses Vercel Web Analytics, which counts page visits without cookies. The tool itself has no analytics.
Next
Then
Vision
The roadmap is a direction, not a schedule. BACKLOG.md records what was deliberately deferred and why.
This is a beta, and your reaction decides what comes next. Open an issue for anything that broke, confused you, or judged a job wrongly.
Skills are the instructions your agent follows. You only need the first two.
| Skill | What it does | When |
|---|---|---|
/ftja-setup | Onboarding: profile, search settings, rubric | Once, or to start over |
/ftja-run | Scrape, filter, judge, show results | Whenever you want a search |
/ftja-remote | Writes the Remote check's keywords, categories and rules for where you live | When you switch the Remote check on, or move |
/ftja-keywords | Writes the keywords for a language you started reading postings in | When you add a language |
/ftja-tune | Adds a preference you state in chat to your rubric | When you say one |
/ftja-review | Turns your apply/skip reasons into proposed rubric changes | Automatically at the start of a run |
/ftja-update | Updates FTJA and tells you what changed | When a run tells you an update exists |
/ftja-profile-update | Rewrites your profile summary from your source files | After you change your resume |
FTJA stays at the version you downloaded until you update. The web view shows
a banner when a newer version exists, and /ftja-run asks at the start of a
run whether to update first. You can also run /ftja-update at any time. It
pulls the new version, reinstalls dependencies, restarts the web view and
summarizes what changed (CHANGELOG.md). Your own files are
never touched.
Do this only after you trust the manual runs. Copy the example LaunchAgent,
replace every /path/to/FTJA in it with your FTJA folder, then load it:
cp com.ftja.run.example.plist ~/Library/LaunchAgents/com.ftja.run.plist
launchctl load ~/Library/LaunchAgents/com.ftja.run.plist
A scheduled run has no one to click "allow" on a permission prompt. Either
configure a permission allowlist for this project in .claude/settings.json
covering the commands /ftja-run makes, or accept the risk of
--dangerously-skip-permissions in the plist (only if you understand what it
disables). This is a real safety tradeoff, so it is left to you. After the
first scheduled run, check launchd.err.log to confirm it ran.
To stop it:
launchctl unload ~/Library/LaunchAgents/com.ftja.run.plist
Needs Git and Python 3.10 or newer. The Python that comes with macOS (3.9) is too old; the setup in Claude Code finds or installs a newer one.
git clone https://github.com/TaegyuJEONG/ftja.git ~/FTJA
cd ~/FTJA && python3.12 -m venv venv && venv/bin/pip install -r requirements.txt
On Windows, in PowerShell:
git clone https://github.com/TaegyuJEONG/ftja.git $HOME\FTJA
cd $HOME\FTJA; py -3 -m venv venv; venv\Scripts\pip install -r requirements.txt
Then open the folder in Claude Code and run /ftja-setup.
criteria.example.json, rubric.example.md # public templates
criteria.json, rubric.md # your search settings and rubric — gitignored
rubric-criteria.json # the rubric as a list of single criteria, edited in the Pipeline tab — gitignored
remote-check.json # the Remote check's keywords, categories and rules — gitignored
profile/ # your resume and profile summary — gitignored
seen.db # which jobs were already judged (SQLite) — gitignored
digest-*.md, rejected-*.md # results of each run — gitignored
run.log, runs.jsonl # run history — gitignored
.ftja-run/ # each run's working files (last 5 runs) — gitignored
.ftja-trash/ # runs you deleted in the viewer, until you empty the trash — gitignored
ftja/ # the pipeline code and the web view
.claude/skills/ftja-*/ # the skills for Claude Code
.agents/skills/ftja-*/ # the same skills adapted for Codex (no Claude-only tools)
landing.html # the public landing page (deployed to ftja.vercel.app)
SPEC.md is the original design note. CONTRIBUTING.md covers development and releasing.