Inspiration
Newcomers to Canada face a brutal job market problem that nobody talks about: the remote job boards are full of noise. Fake-remote listings disguised as hybrid roles. Scam postings targeting people who are unfamiliar with local norms. Roles that quietly require "Canadian experience" buried in paragraph four. Scale Without Borders Canada works directly with newcomers navigating this — and their members were spending hours filtering listings manually before ever hitting apply. We wanted to fix that with AI.
What it does
OneBoard is an AI-powered remote job verification pipeline built specifically for newcomers to Canada. It ingests live postings from five sources (We Work Remotely, RemoteOK, Remotive, Working Nomads, and Lever), runs every posting through a two-stage verification system, and surfaces only the ones that are genuinely remote, legitimate, and newcomer-friendly.
Every posting in the feed gets:
- A Trust Score (0–100) computed by Claude Sonnet
- A "Verified Remote" badge only if it passes both rule-based and AI checks
- A "Newcomer Friendly" tag when signals like worldwide hiring, visa sponsorship, or inclusive language are detected
- A one-sentence rationale explaining exactly why it was surfaced
- Role family, seniority, and location filters so members can narrow to what matters
Staff can export the entire verified feed as a CSV with one click — ready to drop into a weekly newsletter.
How we built it
Four-layer pipeline:
Ingest — feedparser + httpx pull from 5 live sources every 6 hours via APScheduler. Every posting is normalized to a shared Pydantic schema.
Verify — rule filters run first (cheap and fast): posting age, 10 scam-language patterns, 6 fake-remote patterns, duplicate detection via MD5 hash. Postings that pass get batched (10 at a time) and sent to Claude Sonnet 4.5 at temperature 0.1 for structured JSON classification — trust score, remote confidence, scam likelihood, newcomer signals, and a rationale.
Rank — hard filter (trust ≥ 70, genuinely_remote = true, posted ≤ 14 days), then soft ranking weighted 50% trust + 35% freshness + 15% newcomer-friendliness boost.
Deliver — Next.js 15 dashboard with role family and seniority filters, feedback buttons (thumbs up/down → Supabase), and CSV export. FastAPI backend deployed on Render, frontend on Vercel, data on Supabase.
Stack: Python 3.11 · FastAPI · Supabase (PostgreSQL) · Claude Sonnet 4.5 (Anthropic API) · Next.js 15 · Tailwind CSS · Render · Vercel
Challenges we ran into
Getting the AI classifier to be consistent took more prompt iteration than expected — early versions over-flagged legitimate contract roles as scams. We locked temperature at 0.1 and built a 30-posting labeled validation set to catch regressions. The other hard problem was fake-remote detection: postings rarely say "you must commute" — they bury it in phrases like "proximity to our Toronto office preferred." We ended up with six regex patterns that catch the most common evasions.
On the infrastructure side, Render's free tier spins down after inactivity, which caused the first live demo attempt to time out. We fixed it with a 15-second AbortController on the frontend fetch and a clear "server waking up" message — and added an UptimeRobot ping to keep it warm.
Accomplishments we're proud of
- 91.4% classifier agreement on a human-labeled validation set of 30 postings
- Full pipeline — ingest, verify, rank, deliver — running end-to-end on live data in under 3 days
- The rationale display: every card tells you why a job was surfaced, not just that it was. That transparency matters for trust.
- A CSV export that Scale Without Borders can drop into their member newsletter today, without any engineering involvement
What we learned
Claude's structured output is remarkably reliable for classification tasks when you give it explicit JSON schemas and a low temperature. The bottleneck wasn't AI quality — it was data quality. Garbage in from job boards (malformed dates, missing locations, duplicate titles) caused more bugs than the classifier ever did. Rule-based pre-filtering isn't glamorous but it's essential.
What's next
- Personalized ranking using embeddings matched against member profiles
- Weekly email digest auto-sent to the Scale Without Borders member list
- Member login to save jobs, track applications, and set role preferences
- Feedback loop — using the thumbs-up/down signals already being collected to continuously retrain the classifier ranking
Built With
- claude
- fastapi
- next.js
- python
- react
- supabase
- typescript

Log in or sign up for Devpost to join the conversation.