Inspiration

In January, I received a job listing that looked completely real — a good salary, a clear role, an urgent start date. Before responding, something felt off. I spent an hour investigating, only to discover the company didn't exist. That hour cost me time I couldn't get back.

I'm a final-year Mechanical Engineering student in Nigeria, and this isn't a rare experience where I'm from. Every year, millions of job seekers across Africa invest their time, money, and personal data into opportunities that were never real — scam jobs designed to steal information, and "ghost jobs" posted by real companies with no intention of ever filling them, often just to signal growth to investors. The people most exposed to this have no professional network to warn them, and no tool built for their specific risk.

What it does

JobShield AI is a career opportunity decision simulator. Paste any job listing, and it runs three layers of AI reasoning in parallel:

  • Scam Risk — detects fraud patterns using weighted multi-signal analysis, not keyword matching, because scam language constantly evolves to bypass static rules
  • Ghost Job Risk — uses live web search to check whether a company is actually hiring or just posting roles to appear like it's growing
  • Application ROI — evaluates whether a legitimate job is actually worth a user's time

All three combine into a single Decision Confidence Band, alongside a Trust Graph, a Verification Matrix, and a mandatory Human Review checklist. The AI never outputs an absolute verdict — it shows evidence, confidence levels, and lets the human decide.

We also built Compare Opportunities — letting users model two job choices side by side, directly addressing the challenge brief's call to "compare major life or career paths by modeling tradeoffs, surfacing hidden considerations, and knowing likely outcomes."

How we built it

  • Frontend: React + Vite + TailwindCSS
  • AI Engine: Groq API (LLaMA 3.3 70B) for multi-signal reasoning
  • Web Intelligence: Serper.dev for live company verification
  • Database: Supabase for community reports and application tracking
  • Hosting: Netlify
  • Development: Built with IBM watsonx (Bob) as our primary development partner

Every score on screen is mathematically derived from weighted signals — never AI-generated arbitrarily. For example: scamScore = ( emailMismatch × 0.20 + paymentLanguage × 0.25 + domainAge × 0.15 + urgencyPressure × 0.10 + identityVague × 0.15 + documentRequest × 0.05 + highSalary × 0.10 ) × 100

Challenges we ran into

The honesty test: Early on, we considered adding flashy predictive features — success probabilities, career trajectory projections, salary negotiation calculators. We stopped ourselves and applied one rule to every feature: can this number be traced back to something real — actual text, an actual API result, an actual existing score? If not, we cut it. This became our core design philosophy.

Signal-score reconciliation.We caught a real bug during testing where our Verification Matrix showed two "Confirmed High Risk" signals, but our overall Scam Score displayed only 5%. We had to audit and rebalance our entire weighted scoring formula to make sure every signal we detected was actually counted.

Showing AI reasoning without announcing it. A mentor pointed out that explicitly telling users "this required AI, not rules" is a tell, not a demonstration. We removed that language from our UI entirely and instead let reasoning quality, sequential reveal animations, and our interactive chat feature speak for themselves.

Deployment debugging. We hit a real production issue late in build week — a dependency version mismatch between Vite and our React plugin caused a silent build failure, compounded by an automated deploy-fix tool that introduced new syntax errors while trying to "help." We diagnosed it by reading build logs line by line and restoring the codebase manually, file by file.

Accomplishments We're Proud Of

  • A weighted scoring engine where every percentage is mathematically traceable, never invented
  • A Trust Graph where node states are functionally coupled to displayed scores, not decorative
  • A Human Review Layer present on every result screen, with no exceptions
  • Honest empty-state handling — zero community reports is shown as "No reports yet," never silently treated as "verified safe"
  • A Compare Opportunities mode that models real tradeoffs instead of a single flat verdict

What we learned

Multi-signal reasoning beats keyword filtering, but only if every signal is honestly grounded. Transparency builds more trust than confidence does — showing our work mattered more than sounding impressive

What's next for Jobshield AI

  • Browser extension for LinkedIn, Indeed, and Jobberman with inline risk badges
  • WhatsApp bot for users without consistent smartphone app access
  • USSD support for users with no internet access at all
  • Deeper local-language scam pattern coverage across more African markets

Built With

Share this project:

Updates