Inspiration

In April 2025, CBEX, a platform that promised to double people's money in 30 days through "AI trading", froze withdrawals in Nigeria. The regulator's general warning came only after the collapse. Since then, SEC Nigeria has kept warning about schemes promoted on WhatsApp, Telegram, Instagram and TikTok, and has told the public to verify registration before investing.

The trouble is where people hear about these schemes: in family group chats, forwarded "many times", from an aunt or a cousin who says "I don put my own money o". Nobody leaves that chat to search a regulator's website.

The name comes from a Yoruba proverb: Ojú l'alákàn fi ń ṣọ́ rí, "the crab guards its head with its eyes." I built Crab Eyes to bring the regulator's records, the maths and the public evidence to the message people already have.

What it does

  1. Forward a pitch: a screenshot, a link or pasted text.
  2. Watch it investigate: it reads the claims, plans which checks to run, and goes back for evidence that is still missing.
  3. Get a verdict with the top reasons and a full dossier:
    • Claims vs. records: what the pitch says about itself beside what official sources say.
    • Ponzi maths: the promised return as a yearly figure, calculated in code.
    • Competing explanations: licensed and legitimate, real but unlicensed, Ponzi or fraud, or impersonation, each with a probability.
    • Every source, including the ones it checked and set aside, and why.
    • A trace of every model and Tavily call, with tokens and cost.
  4. Prove me wrong: the agent says what evidence would change its mind. Supply it and the investigation reruns.

There are four verdicts, and rules in code decide them, not the model:

Verdict Shown only when
High risk Two or more independent verified red flags, one of them official; or the return fails the maths plus one more red flag
Check first At least one verified red flag, but not enough for High risk
Looks legitimate A confirmed match on an official register, with matching details
Not enough evidence Too little verified evidence to judge

Crab Eyes never calls a named company a scam. It shows a rating and the evidence.

How I built it

Pipeline: intake → planner → five investigators in parallel → verification → reasoning → policy gate → dossier.

Step Model on Nebius Token Factory
Read screenshots nvidia/Nemotron-3.5-Super-VL
Extract claims from text nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B
Planner, investigators, verification nvidia/nemotron-3-super-120b-a12b
Final reasoning (once per dossier) nvidia/Nemotron-3-Ultra-550b-a55b

Each step uses the cheapest Nemotron model that does it well, so an investigation costs about $0.011. Ultra is called once, at the end, on evidence that has already been checked.

The five investigators, each powered by Tavily:

  • Regulator: searches restricted to sec.gov.ng, cbn.gov.ng and fccpc.gov.ng. If a pitch claims a licence and no record turns up, that is a red flag.
  • Ponzi maths: compounds the promised monthly return in code and compares it with Treasury-bill rates:

$$ \text{annual return} = (1 + r_{\text{month}})^{12} - 1 $$

so "100% a month" becomes \( 2^{12} - 1 = 4095 \), or 409,500% a year.

  • Footprint: company and website facts. Scheme sites are read through Tavily Extract and never opened directly.
  • People: named promoters (full names only).
  • Voices: blocked withdrawals, "withdrawal fees", collapse and regulator action, counted only when at least two independent sources agree.

Verification sits between the investigators and the verdict. It runs date checks, a whole-word company-name check and an entity-match pass with Nemotron Super, then looks for contradictions. Anything rejected stays visible in the dossier with the reason.

Stack: FastAPI, async SQLAlchemy and Postgres, Pydantic schemas, NDJSON streaming for live progress, a plain-JS front end, and pytest for the policy gate and verification rules.

Challenges I ran into

  • Getting access from Nigeria. Setting up Nebius billing from Nigeria took time; I created a billing account and kept building against stubs while I waited.
  • Legitimate products getting flagged. Early runs marked real products as risky because of unrelated complaints, or because of model nondeterminism. I fixed this with deterministic checks in code, not prompts:
    • a red flag has to mention the company;
    • "voices" need two independent sources;
    • a missing register entry counts only if the pitch claims a licence itself. "Buy through registered stockbrokers" is a third-party mention, not a licence claim.
  • Hindsight leaking into a historical test. For the CBEX re-run I limited Tavily to sources published on or before 9 April 2025. Five post-collapse articles still came back, and some dates arrived in RFC 2822 format, which I had not parsed at first. My own date check now rejects later, undated and "mentions a later year" sources.
  • Keeping the model honest. The reasoning step sometimes produced source URLs that no investigator had found, so those are now dropped in code.

Accomplishments that I'm proud of

On a 13-case evaluation (4 real schemes named by SEC Nigeria or the press, 3 real legitimate products and 6 clearly labelled synthetic cases):

Measure Result
Legitimate products marked High risk 0
High risk verdicts that were correct 100%
Real schemes flagged High risk 4 of 4
All scams flagged High risk 7 of 8
Median time per investigation 39 s
Average model cost per investigation $0.011

The CBEX re-run: using only what was published before withdrawals froze, Crab Eyes returned Check first on the strength of the maths alone, because 100% a month compounds to 409,500% a year. The gate refused to say High risk without a second independent red flag. I'm proud of that restraint.

What I learned

  • Let the model gather and judge evidence, and let code decide the verdict. Moving the verdict into a deterministic policy gate made results stable and explainable.
  • Routing across Nemotron sizes pays off. Nano for extraction, Super for the agent loop and Ultra once for reasoning kept quality high and cost around a cent.
  • Search filters aren't guarantees. A date or domain filter is a hint; verification has to happen in your own code.
  • "Not found" isn't "fake". Absence from a search is weak evidence, which is why Prove me wrong exists.

What's next for Crab Eyes

  • A WhatsApp/Telegram bot, so people can forward a pitch without leaving the chat.
  • Converting fixed payouts ("₦15,000 a day") into a rate so the maths check catches them.
  • A nightly job that stores SEC Nigeria's list of registered operators for exact register matches.
  • An opt-in "you've seen this before" memory and a public early-warning ledger of schemes as they spread.

Built With

Share this project:

Updates

Submission history