Spaces:
Running
Running
Commit History
13 days ago
-
docs/env: 24h ceiling, Firecrawl-first, Fantastic Jobs budget; pin selftest clock
Claude +1: Claude Sonnet 5.5Unverified signatureCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01St57jDbnhsxp47mMrr4yigc656aba
15 days ago
-
feat(ui): teal + gold for the agent UI and the scored result
Claude +1: Claude Sonnet 5.5Unverified signatureAgent - Strong job cards get a gold seal: gold edge and glow, gold-ringed score with a teal-to-gold percentage. Verdict colour stays green. - Active chat in the session rail has a gold edge; "Chats" label gets the gold diamond; New chat hovers gold. - User chat bubbles get a teal outline. Scored result - Strong match percentage runs teal to gold (with padding so the % is not clipped); the next-step quote gets a teal-to-gold spine. - The best-scoring dimension is marked with a gold diamond. Checked job cards and result hero in a headless browser with sample data. Logo, brand assets and both brand hex values are unchanged. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q54vp7U5MJ3JrbTQk45zmta520b27 -
feat(ui): bolder teal + gold across the scorer page and landing
Claude +1: Claude Sonnet 5.5Unverified signatureSubtle touches were too easy to miss, so this puts the pair on the surfaces people actually see (checked in a headless browser). Scorer page - Stronger gold/teal page glows; gold diamond before section labels. - Main card gets a teal-to-gold top line; profile banner a teal-to-gold spine. - Free-credits offer becomes a gold callout; its "Start free" is gold. Landing page - Hero tagline phrase and a rule under the wordmark run teal to gold; "400 free credits" is gold. - "How it works" line runs teal to gold and ends on a gold icon. - Hunt Pass card gets a gold glow and hairline with a gold button; "Buy credits" buttons use the quiet gold style. Logo, brand assets and both brand hex values are unchanged. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q54vp7U5MJ3JrbTQk45zmt58d3f2f -
feat(ui): small teal + gold details and a brand guide
Claude +1: Claude Sonnet 5.5Unverified signature- Add --brand-teal / --brand-gold aliases (no value changes) and docs/BRAND.md describing when to use each colour. - Links: gold underline on hover. - Inputs: gold caret; checkboxes, radios and sliders follow teal. - Gold buttons get a dark spinner so loading stays visible. - Dashboard: saved roles get a gold edge (and a gold saved flash); the Strong tab gets a gold dot. - Agent report emails: teal-to-gold line at the top. Logo, brand assets and both brand hex values are unchanged. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q54vp7U5MJ3JrbTQk45zmt4701b58
16 days ago
-
Docs: update loop review and agent loop for merged reliability fixes
Claude +1: Claude Sonnet 5.5Unverified signatureDocument role-family discovery, pool-exhausted/funnel diagnosis, outage handling (scoring and chat model), visa opt-in, run lease / merge writes / final states, and list the loop-review items that remain open. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DiGbNfvkFBXtwjrEu6qup4ab521e2 -
Add zero-credit discovery fallback with central spend policy
Claude +1: Claude Sonnet 5.5Unverified signatureRunning out of credits now stops new paid spending instead of the product. - discover-spend-gate: one atomic authorization per run, reusing tryDeductCredits and the credit-guard marker. Out of credits or unreadable ledger => zero_cost (fail closed). Retries never double charge or refund. - spend-policy / provider: zero_cost runs only reach free sources (atsdirect by default, optional webindex); enforced in settleProviders plus a per-provider guard. - discover tool: zero_cost skips LLM scoring, embeddings, inner planner, Firecrawl page fetch and crawl; results carry a structured `spend` summary and an honest note. - SearchRun stores spendMode; background chunks and resume never upgrade it and no longer dead-end at zero balance. - Separate bounded daily budget for zero-cost searches. - /api/score/subscriber returns a labelled heuristic score instead of 429. - Provider errors are not treated as the user's balance (isJobScorerCreditDenial). Co-Authored-By: Claude Sonnet 5.5 <no…db1d726
21 days ago
-
fix(discovery): deeper, safer provider calls and result handling
Claude +1: Claude Sonnet 5.5Unverified signature- Fantastic Jobs: paginate with offset after full pages (page size up to 1000, FANTASTIC_JOBS_MAX_PAGES), stop when offset is ignored, merge cap spans pages/endpoints, expose truncated - Treat 200 error bodies as outages (Firecrawl success:false, Fantastic/TheirStack bad shape, SearXNG all engines unresponsive) - Fresh timeout per retry attempt plus total fan-out cap; per-provider deadline; ATS direct query timeout - Interleave web query lanes before the cap; release budget and issued keys for failed requests - Add provider-recall selftests Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EKbC9wYNpJZycBKTEZA3pq39920b8 -
fix(discovery): send searchable queries to every provider
Claude +1: Claude Sonnet 5.5Unverified signatureReview of the discovery planners found that the digest and agent-chat intents reached providers as non-titles, so most queries matched nothing: - Digest intent is a composite ("A / B · skills · fully remote") and LLM intents are sentences. Fantastic Jobs `title` is an AND-search and the web plan quoted the whole string as an exact phrase (cut mid-word). - Visa lane was remote-only on every provider although visa roles are relocation/onsite by design. - Fantastic Jobs sent an undocumented `location_type`, a case-sensitive exact `organization`, and pulled a 7d feed for a 48h window. - Angles re-sent identical FJ / Firecrawl / SearXNG requests, burning the per-user Firecrawl budget. Changes: - Add lib/discovery/search-titles.ts: one normalizer used by discoveryInputFromProfile and TheirStack; word-boundary truncation. - Add DiscoveryQueryInput.lane=visa_relocation: FJ ai_visa_sponsorship=only, TheirStack hybrid/on_site + description keywords, web queries without "remote"…71cb485
-
feat(search): score every kept listing and show which read it was
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureThe model still reads the top shortlist. Listings past that are checked against the profile in the same pass instead of being dropped, and the card says Full score or Quick check. A search now costs 300 credits. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>635aaf9 -
fix(discovery): use Fantastic's full page without narrowing the inventory
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureA configured Fantastic key was trimmed to the open-web cap, and a source hint could turn into a company or ATS filter that dropped the rest of that provider. TheirStack still bills per job, so its page stays inside the daily credit cap and spends a leftover balance instead of skipping. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>f7228e1
-
fix(discovery): send TheirStack short titles and release unused credits
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureA full search sentence is one job_title_or pattern, and TheirStack combines every word in that pattern, so the avenue intent matched nothing. Use short title patterns instead. Reserve the request limit up front, then give back credits for jobs that were not returned, and do not send the same body twice in one run. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>2942399 -
feat(discovery): add TheirStack as a curated search provider
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureTheirStack Jobs Search runs beside Fantastic Jobs and still scores when Fantastic Jobs and Firecrawl fail. Requests stay planner-owned, remote-only, and credit-capped. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>de8a9d2 -
fix(discovery): close leftover batch-search paths
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureStop chat from linking to the removed batch page, stop offering a background search, and drop the dead batch status calls and company-name angle wiring. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>59f833f -
chore(discovery): drop Hirebase and JSearch from live source labels
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureKeep lib/batch-jobs/redis.ts. It is the app Redis client for credits, search runs, shortlist, and digest, not a leftover of batch search. Stop treating Hirebase and JSearch as discovery sources. Old seen-URL buckets are still read so previously scored listings stay seen. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>5e769f3 -
fix(discovery): drop seniority prefix, run 48h retry, remove legacy search
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureStop prefixing profile seniority onto outbound titles. When a 24h pass finds listings but scores none, run a real 48h discover_jobs instead of nudging the model. Remove batch search, Hirebase, and JSearch from the live path. Keep the shared Redis client. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>b6e22cf
-
fix(discovery): let revealed market titles change the next search
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureThe loops were control-safe but cognitively playlist-shaped: Strong/Possible titles were tokenized into soup, so "Design Systems Engineer" never became the next intent. Extract multi-word role families, feed them to L2 (market_vocabulary), L3, and the outer avenue, keep geo-first on remote failures, and do not diminishing-stop before an unused phrase is searched. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>edc3c44
-
docs(discovery): standing nested-loop reliability review for frontier audit
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureAdd DISCOVERY_LOOP_REVIEW.md as the canonical charter: executive summary, implementation weakpoints, invariants, and recommended actions for a frontier-model reviewer. Point AGENT_LOOP, DISCOVERY, README, and the agent handoff at it. Clarify that outer avenue switch is synthetic while 24h→48h recency widen is still a planner nudge. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>f96a1b4
-
docs(agent): document execute-loop fallbacks and debug-trace diagnosis
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureCanonical AGENT_LOOP.md for reviewing lab traces: silent gpt-oss turns vs quota, backend=none provider gate, score_job URL-only gap. Point README, DISCOVERY, HF Spaces, and the handoff at that contract. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>c8e9020 -
fix(discovery): remediate memory races, outer avenue, and loop proofs
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureAdd Redis locks + SearchRun revision for safe concurrent updates; lock Markdown append/edit. Prove inner L3/L2 adaptation with test hooks; guard near-duplicate L3 angles; execute structural outer avenue switches from avenue evidence; add checkpoint/resume integration coverage. Leave durable cross-run learning unwired (future phase). Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>e367fe6
-
fix(discovery): close reliability and loop fidelity gaps from review
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureStop double-counting circuit breaker failures, keep runMemory on the same SearchRun checkpoint as angle progress, and distinguish partial-infra empty recall from quality no_results. Soft L3/L2 avenue stops now mark strategy exhausted so outer retry_strategy can fire; L2 no longer broadens on a bare exhausted pivot; crawl uses firecrawl_crawl under L1; avenue rollup no longer dilutes last-angle infra outages. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>9b7cce9 -
feat(discovery): add structured run/search memory for nested loops
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureIntroduce RunMemory/SearchMemory with infra vs search_quality vs strategy evidence, exhausted-approach tracking, and SearchRun checkpoint persistence. Wire discover_jobs to update memory each angle and feed L2/L3; add durable learned_query_patterns schema plus agent-facing Markdown projection. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>1ebdfcb -
feat(discovery): wire L2 bounded semantic policy under L1 reliability
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureShare one RetryBudget per discover angle across providers; route Hirebase HTTP through the reliability helper. Extract finite L2 transforms (geo chain, broaden_role, company/skill pivots) so LLM fail-open and LLM-down paths preserve progress without fake open-ended reasoning. Infra-empty still blocks strategy pivots; docs cover the degradation ladder. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>c8a58a1 -
feat(discovery): add reliability layer separate from strategy pivots
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureRetry/backoff+jitter, Retry-After, budgets, and circuit breakers live under provider execution. Semantic outcomes surface to discover_jobs; infra-empty no longer drives inner quality pivots or outer retry_strategy. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>f19a839 -
Cursor: Apply local changes for cloud agent
a4c19ea
-
Remove em dashes from customer-facing copy.
Replace AI-style em dashes in marketing, product UI, and agent email text with commas, periods, or colons. Leave empty-state placeholders and code comments alone. Co-authored-by: Cursor <cursoragent@cursor.com>875f022 -
Position Job Scorer as global SaaS with African founding proof.
Rewrite marketing and support copy, add About/FAQ, unify Job Scorer/LiteKite brand hierarchy, and align subscription claims with Terms so regional pricing and eligibility read as policy—not a local SKU. Co-authored-by: Cursor <cursoragent@cursor.com>f938578 -
Ship production-readiness: credit guards, packs, budgets, and AI disclaimer.
Enforce credits when commercial mode is on, reset monthly grants on invoice.paid, add provider daily budgets and exhausted-credit pause/resume, wire Stripe credit packs plus capacity banner, and default Firecrawl Search scrape off. Co-authored-by: Cursor <cursoragent@cursor.com>1d1f9e0 -
docs: document Firecrawl degrade path and current agent stack
README and DISCOVERY now match multi-provider recall, paid OpenRouter defaults, and what users see when Firecrawl Search is down. Co-authored-by: Cursor <cursoragent@cursor.com>88708e8
-
feat(discovery): harden Firecrawl-first OOS active-jb and scrape paths
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureExport Fantastic JB query-param builder (omit ATS source, exclude_ats_duplicate), extend selftests for lab endpoints/scrape flags, and document intentional OOS deferrals in DISCOVERY.md. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>d396d79 -
feat(discovery): finish demote/seen TTL and lab docs for consolidated path
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureExtract pre-LLM demote vs hard-drop helpers with selftests, export per-source seen TTLs, drop Hirebase-shaped system copy, and wire lab fjReq/fcReq coverage into test:discovery. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>2158355 -
feat(discovery): active-jb parallel, search scrapeOptions, careers crawl
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureAdd Fantastic Jobs active-jb in parallel with active-ats (prefer ATS on URL merge), opt-in Firecrawl Search scrapeOptions (markdown preferred), and a focused Firecrawl /map company-careers helper when companyName + URL hints. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>0166ad9 -
fix: raise discovery recall and stop accidental score drops
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signaturePrefer wider provider shortlists, enforce a 48h local recency ceiling on all sources, and demote thin mode mismatches instead of hard-dropping them before LLM scoring. Digest inherits the same discover funnel. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>36bc2ff -
feat: consolidated discovery via Fantastic Jobs, Firecrawl Search, and SearXNG
Cursor Agent +1: Zimuzo EjinkeonyeUnverified signatureFan out curated + web providers on every angle, soft-off Hirebase/JSearch, demote thin regional hits pre-LLM, and raise the env-driven score shortlist. Co-authored-by: Zimuzo Ejinkeonye <zimejin07@users.noreply.github.com>27f533b
-
feat: default discover to 48h and loosen JSearch recall
Product default is now 48h (24h remains a fast option). JSearch pulls date_posted=3days and keeps undated rows; local window still trims dated listings to the product ceiling. Co-authored-by: Cursor <cursoragent@cursor.com>d2f4ab7 -
chore: standardize JSearch on OpenWeb Ninja only
Drop RapidAPI transport, aliases, and env names. Single access path: JSEARCH_API_KEY with x-api-key against api.openwebninja.com/jsearch/search. Co-authored-by: Cursor <cursoragent@cursor.com>a37f646 -
fix: use OpenWeb Ninja as default JSearch transport
The app was calling RapidAPI with x-rapidapi-key; our key is OpenWeb Ninja (x-api-key + /jsearch/search), which caused silent soft-fails. Default to OpenWeb Ninja, keep RapidAPI as opt-in, and raise the OWN timeout. Co-authored-by: Cursor <cursoragent@cursor.com>c4ac3e3
-
feat: add JSearch as soft-fail additive discovery provider
Google Jobs recall merges into discover_jobs beside Hirebase/SearXNG with local 24h/48h gating so LLM-down and digest paths inherit coverage without touching Hirebase lanes. Co-authored-by: Cursor <cursoragent@cursor.com>2dd11e7
-
Make Firecrawl opt-in and harden listing fetch plus scoring fallbacks.
Co-authored-by: Cursor <cursoragent@cursor.com>aff2e09
-
Fix agent URL keys, credit deduct races, and first-invoice billing grants.
Co-authored-by: Cursor <cursoragent@cursor.com>7b14dbc
-
Rank fresh listings higher using our own observation history.
Every discovery run already records firstSeen/lastSeen/postedAt per URL; now heuristic ranking reads those records back, so a first-sighting or freshly-posted listing wins relevance ties against stale rediscoveries. Boosts are bounded tie-breakers (+3 new, -2 stale), never relevance overrides. Co-authored-by: Cursor <cursoragent@cursor.com>d266d41 -
Add open-web job discovery via self-hosted SearXNG alongside Hirebase.
Discovery is now a provider seam (lib/discovery/types.ts): Hirebase is one source, and a webindex provider finds job URLs across ATS boards, remote job boards, and career pages through SearXNG - feeding the same dedupe, accessibility, and scoring funnel. Includes per-user URL freshness tracking (firstSeen/lastSeen/postedAt) and a benchmark (npm run bench:discovery) that measures fresh, accessible yield per provider. Co-authored-by: Cursor <cursoragent@cursor.com>a7a2caf
-
Default Hirebase to lexical search; enable neural via HIREBASE_SEARCH_MODE.
Route discovery through POST /v2/jobs/search on Free-tier plans, keep neural-search opt-in, improve lab diagnostics and batch Hirebase error handling, and document env defaults. Co-authored-by: Cursor <cursoragent@cursor.com>051e46a
-
Align agent prompts with search runtime
Co-authored-by: Cursor <cursoragent@cursor.com>b895ce7
-
Add Supabase findings store and agent-voice digest for autonomous runtime.
Persist digest and agent_chat discoveries, expose findings/runs APIs, upgrade digest email copy, weekly Monday summary, and fix batch job ID recall. Co-authored-by: Cursor <cursoragent@cursor.com>dc30a47
-
chore(backend): remove legacy agent tools and demo scoring
Remove legacy agent tool schema/runner paths, delete unused launcher/query helpers, and drop public demo scoring in favor of subscription-only server inference. Made-with: Cursord4b9519
-
Remove launcher Smart Search; background batch is the only async path
Delete the launcher Smart Search API routes, QStash worker, and lib modules (smart-search-jobs, smart-search-qstash, run-smart-search-pipeline). Strip all Smart Search state, refs, callbacks, effects, JSX, and CSS from JobSearchLauncher; prune launcher query persistence. Add a Redis TTL auto-expiry note to lib/batch-jobs/redis.ts so legacy smartsearch:*, search:status:*, and smartsearch:active:* keys are known to expire on their own. Update README, docs/BATCH_JOBS, docs/HUGGINGFACE_SPACES, env.pipeline.example, and the welcome email to describe the background batch job flow as the sole server-side launcher search path. Made-with: Cursore20deee
-
refactor(launcher): consolidate Headless Search into Smart Search QStash path
Removes the legacy inline NDJSON streaming flow (POST /api/launcher/headless-search and lib/headless-search-stream-client.ts) and routes admin (showPipelineInternals) through the same POST /api/launcher/smart-search -> Redis + QStash worker -> GET /api/launcher/smart-search/[id] poll flow used by subscribers. Admin/subscriber distinction is now purely UI labels and technical detail visibility; lab admins remain billing-exempt via isBillingExemptClerkUser. No changes to runSmartSearchPipeline, the worker route, Redis job structure, polling, or credit deduction. README, docs/BATCH_JOBS.md, docs/HUGGINGFACE_SPACES.md, and env.pipeline.example updated to remove headless-search references. Made-with: Cursore1894d4
-
Remove Claude/Gemini references
Update README/docs/env templates for OpenRouter + local ONNX inference. Rename batch job flag to disableAiForRun. Made-with: Cursora311036
-
Pace headless search Serp and score steps using batch delay env vars
Made-with: Cursor1bd44a9 -
Fix NEXT_PUBLIC_* in Docker build; neutral guest landing when Clerk is on
Made-with: Cursor6159ead