1. Data source
  2. Decision schema
  3. Model inference
  4. Structured result
2 Decision schema 4 typed questions
  • ad_anglechoicediscountsocial_proofpain_pointfeature_demourgencybrand_story
  • funnel_stagechoiceawarenessconsiderationconversion
  • has_offernoulprobability 0–1
  • hook_strengthscoreweakaveragestrongstandout

3 Model inference typesafe/jev-1.13

Waiting for a run.

4 Structured result

Run the demo to see the JSON answers, the highlighted pick and the final action.

Call Jev yourselfSame data and schema, straight to Flatkey. Set FLATKEY_API_KEY and run.
curl -sS https://router.flatkey.ai/api/alpha/decisions \
  -H "Authorization: Bearer $FLATKEY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "typesafe/jev-1.13",
  "state": "Brand: Lumen Skincare (Meta Ad Library, active since Sep 2, 3 variants)\nHeadline: \"12,000+ five-star reviews can'\''t be wrong\"\nPrimary text: \"Rated 4.8/5 by over 12,000 customers. '\''My skin has never looked this clear'\'' (Jess, verified buyer). See why dermatologists keep recommending our barrier serum.\"\nCTA: Shop now\n\nTask: ad_angle, funnel_stage, has_offer, hook_strength.",
  "questions": {
    "ad_angle": {
      "type": "choice",
      "instructions": "Which creative angle is this ad mainly built on?",
      "criteria": {
        "discount": "Leads with a price cut, coupon, sale or bundle deal",
        "social_proof": "Leads with reviews, ratings, customer counts, testimonials or press mentions",
        "pain_point": "Leads with a problem or frustration the reader has and agitates it",
        "feature_demo": "Shows how the product works or what a specific feature does",
        "urgency": "Leads with a deadline, limited stock or a countdown",
        "brand_story": "Leads with founder story, mission, values or lifestyle mood"
      }
    },
    "funnel_stage": {
      "type": "choice",
      "instructions": "Which stage of the funnel is this ad most likely written for?",
      "criteria": {
        "awareness": "Cold audience who may not know the brand or the problem yet",
        "consideration": "People comparing options who need reasons to trust or prefer the brand",
        "conversion": "Warm or retargeted people who are close to buying and need a final push"
      }
    },
    "has_offer": {
      "type": "noul",
      "instructions": "The ad states a concrete offer such as a discount, coupon code, free gift, free trial, bundle price or free shipping."
    },
    "hook_strength": {
      "type": "score",
      "instructions": "How strong is the opening hook of this ad for stopping a scroll and making the reader keep going?",
      "criteria": [
        "weak",
        "average",
        "strong",
        "standout"
      ]
    }
  }
}'

No Flatkey key yet? Get one for Jev 1.13 →

Run with real Jev

Sign in and connect a key

  1. Sign in with Google.
  2. Connect your Flatkey or OpenRouter key on the next screen. Get a Flatkey key for Jev 1.13.
  3. Come straight back here and press Run again.

This site is for researching, sharing and cataloguing Jev use cases. Your key is only there to make trying Jev convenient: it is stored encrypted, used only for runs you trigger, never used for anything else, and you can delete it anytime.

About this use case

Use Jev to scan competitor ads: incoming state, Jev decision, routed outcome

Who / when

Audience

  • performance marketers and media buyers researching competitors before a new campaign
  • creative strategists who keep a swipe file of winning hooks and angles
  • agencies running competitive ad audits for many clients
  • tool builders adding ad-library analysis to a marketing intelligence product

Triggers

  • a competitor has hundreds of live ads in the Meta Ad Library and nobody has time to read them all
  • you want to know which angle (discount, social proof, pain point, demo) each brand leans on this month
  • an LLM summary of an ad library is a wall of prose you cannot count or chart
  • the quarterly competitor review is stale by the time it ships

The workflow

  1. 01
    Ad copyBrand, headline, primary text, CTA and run dates per ad from the ad library exportInput
  2. 02
    Angle + stageWhich creative angle and funnel stage is this ad built for?Jev
  3. 03
    Offer + strengthDoes it carry a concrete offer, and how strong is the hook?Jev
  4. 04
    Angle mapCode counts angles per brand and saves standouts to the swipe fileYour code

Question shape

{
  "ad_angle": {
    "type": "choice",
    "instructions": "Which creative angle is this ad mainly built on?",
    "criteria": {
      "discount": "Leads with a price cut, coupon, sale or bundle deal",
      "social_proof": "Leads with reviews, ratings, customer counts, testimonials or press mentions",
      "pain_point": "Leads with a problem or frustration the reader has and agitates it",
      "feature_demo": "Shows how the product works or what a specific feature does",
      "urgency": "Leads with a deadline, limited stock or a countdown",
      "brand_story": "Leads with founder story, mission, values or lifestyle mood"
    }
  },
  "funnel_stage": {
    "type": "choice",
    "instructions": "Which stage of the funnel is this ad most likely written for?",
    "criteria": {
      "awareness": "Cold audience who may not know the brand or the problem yet",
      "consideration": "People comparing options who need reasons to trust or prefer the brand",
      "conversion": "Warm or retargeted people who are close to buying and need a final push"
    }
  },
  "has_offer": {
    "type": "noul",
    "instructions": "The ad states a concrete offer such as a discount, coupon code, free gift, free trial, bundle price or free shipping."
  },
  "hook_strength": {
    "type": "score",
    "instructions": "How strong is the opening hook of this ad for stopping a scroll and making the reader keep going?",
    "criteria": [
      "weak",
      "average",
      "strong",
      "standout"
    ]
  }
}

Gate policy

≥ 0.90

Tag in code: write ad_angle, funnel_stage and has_offer to the ad row and count it in the per-brand angle map; standout hooks go straight to the swipe file.

0.60–0.90

Tag the ad but mark it low confidence; exclude it from angle-share charts until a strategist skims the batch.

< 0.60

Leave it untagged and add it to a human review sample; mixed signals often mean a new angle worth adding to the list.

Failure modes

Pre-launch checks before you trust auto-routing:

  • Sending only the image URL; Jev reads text, so pass the headline, primary text, CTA and a one-line description of the visual or transcript;
  • Asking Jev to write new ad copy; it only decides, a writing model or your creative team produces the variants;
  • Treating hook_strength as performance data; ad libraries do not show spend or CTR, so long run time is the only proxy and it stays in code;
  • Letting the angle list sprawl; keep five to eight angles so counts per brand stay comparable month to month;
  • Scanning once; ads rotate weekly, so re-run on new ad IDs and diff the angle map;
Keep exact work in code: pulling ads from the ad library or your scraper, de-duplicating variants by ad ID, run-date math, the confidence thresholds, counting angles and offers per brand, and saving standouts to the swipe file stay deterministic. Jev only answers the meaning-level questions per ad (which angle, which funnel stage, is there an offer, how strong is the hook) with calibrated probabilities.

FAQ

Why use Jev to scan an ad library instead of a chat model?

An ad library scan is hundreds or thousands of small, repeated judgments. Jev answers all four questions about an ad in one parallel pass and returns probabilities instead of prose, so code can count angles per brand, chart them and set thresholds. A chat model summary is slower, costs more per ad and gives you text you still have to parse.

Where do the ads come from?

From your own source: the Meta Ad Library, TikTok Creative Center, Google Ads Transparency Center, a scraper or a paid ad-intelligence tool. Jev has no ad index of its own. Export brand, headline, primary text, CTA and run dates per ad and send that as the state.

Can Jev look at the ad image or video?

No, Jev reads text only. For image and video ads, add the on-image text, a transcript or a one-line description of the visual to the state, or run a captioning model first and pass its output to Jev.

Which angles should I use?

Start with the six on this page (discount, social proof, pain point, feature demo, urgency, brand story) and adjust the criteria text to your market. Keep the list short and stable so month-over-month counts mean something, and review the low-confidence pile to spot new angles.

Can Jev tell me which ads perform best?

Not directly. Ad libraries do not expose spend, clicks or conversions. hook_strength is Jev's read of the copy, not a performance metric. Combine it in code with run time (ads that keep running are often the ones that work) and your own test results.

What does the Flatkey call look like?

POST https://router.flatkey.ai/api/alpha/decisions with Authorization: Bearer …, Content-Type: application/json, and a body of state, model (typesafe/jev-1.13), and questions (choice / score / noul). This is not an OpenAI-compatible /v1 chat endpoint.

Can I bring my own API key?

Yes. Try the free demo above without signing in. To run it live on your own text, sign in with Google and connect a Flatkey or OpenRouter key (a quick test call runs when you save it). Manage or delete it anytime under Dashboard → BYOK. Keys are stored encrypted on the server, used only for runs you trigger, and never sent back to the browser. Need a Flatkey key? Get one for Jev 1.13 on Flatkey.

Is this the official TypeSafe Jev product page?

No. jev-llm.com is an independent research and practice site. Verify pricing, models and terms at the original TypeSafe sources.

Sources

Seen on X
Independent-site note: jev-llm.com is an independent research and practice site. It is not the TypeSafe AI official site. Verify models, pricing and terms at the original source.