尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Be early, not applicant #900. First 48 finds jobs, hackathons and bounties that opened in the last day or two, straight from the source. It checks every listing is still live, removes duplicates, and ranks the results against what you're looking for.
Built for the TinyFish Student Bounty Drop 001 (Job Portal / Careers Finder).
You set your roles, location, keywords, seniority, how fresh results must be, and whether you need visa sponsorship. First 48 then:
| Endpoint | What it does here |
|---|---|
| Search | Searches each applicant-tracking system's domain (include_domains) with recency_minutes to find fresh postings. News mode (domain_type=news) finds companies that just raised money. Further searches locate each funded company's job board and resolve direct links to bounty tasks. |
| Fetch | Reads every candidate posting at the source to verify it's live and extract details. Also reads funded companies' job boards (links: true), Devpost's open-hackathon listing, Luma and Eventbrite event pages, and Pond's bounty board. |
| Agent (auto-apply) | Uses run-sse. The STREAMING_URL event is embedded as a live browser view, and PROGRESS events become a step list. The Agent fills the application from the visitor's profile and returns what it filled plus what it needs from the visitor. |
| Agent | In deep mode, Agent reads what Fetch can't: careers pages that render in the browser (Workable, custom company sites) and bounty cards whose links only exist after a click. It costs credits, so it's limited to a few runs per scan, and its results stream in after the fast results. |
Company logos come from the job posting itself: Fetch's image_links returns the employer logo that Ashby, Lever, Greenhouse and YC pages embed. Hackathon artwork comes from Devpost's listing and the event pages.
Every TinyFish call is listed live in the UI's call log, with a running count per endpoint.
npm install
cp .env.example .env.local # then put your key in TINYFISH_API_KEY
npm run dev # http://localhost:3000
To test the pipeline from the command line without the UI:
TINYFISH_API_KEY=... npm run scan -- --roles "data scientist" --location remote --visa --fresh 168 --deep
TINYFISH_API_KEY.ACCESS_CODE so only people with the code can run scans.The scan route streams results with server-sent events and sets maxDuration = 300 seconds.
app/page.tsx UI: preferences, live call log, ranked results
app/api/scan/route.ts Streaming scan endpoint (SSE)
app/api/profile/route.ts Build a profile from GitHub / LinkedIn / portfolio links (Fetch)
app/api/apply/route.ts Auto-apply stream: fit check (Fetch) + form filling (Agent, live preview)
lib/apply.ts Agent instructions and safety rules for applications
lib/profile.ts Profile extraction + skills dictionary
lib/guard.ts Access code, rate limits, SSE helper
lib/tinyfish.ts Search / Fetch / Agent client with caching and call logging
lib/sources/jobs.ts ATS search, funding signal, verification, Agent fallback
lib/sources/hackathons.ts Devpost listing + Luma/Eventbrite events
lib/sources/bounties.ts Bounty marketplaces (Pond; add more in BOUNTY_SOURCES)
lib/rank.ts Dedup, filters, scoring
scripts/scan.ts CLI runner
TinyFish Agent can't upload files. Where a form accepts pasted résumé text (for example Greenhouse's "Enter manually"), the Agent pastes yours. Where only a file upload is accepted, it's listed under "Needs you".
In "Fill only" mode the remote browser closes when the Agent finishes. You get the full list of what was filled, but you need to open the posting yourself to submit.
Visa detection only reads the posting's own wording. "Unknown" means the posting doesn't say either way.
Company names in funding headlines are found with simple rules, so a few headlines get skipped.
The cache and rate limit are in memory, which suits a demo deployment, not heavy traffic.