<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Emmanuel Paul</title>
    <description>The latest articles on DEV Community by Emmanuel Paul (@paul_emmanuel).</description>
    <link>https://dev.to/paul_emmanuel</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2805211%2F44d39c43-5fc3-4e5c-8aee-6b3032f80e50.png</url>
      <title>DEV Community: Emmanuel Paul</title>
      <link>https://dev.to/paul_emmanuel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/paul_emmanuel"/>
    <language>en</language>
    <item>
      <title>Jev Explained: What If AI Didn't Need to Chat?</title>
      <dc:creator>Emmanuel Paul</dc:creator>
      <pubDate>Fri, 16 Oct 2026 06:30:56 +0000</pubDate>
      <link>https://dev.to/paul_emmanuel/jev-explained-what-if-ai-didnt-need-to-chat-231d</link>
      <guid>https://dev.to/paul_emmanuel/jev-explained-what-if-ai-didnt-need-to-chat-231d</guid>
      <description>&lt;p&gt;Hey 👋, Emmanuel here. Unless you've been living under a rock, you’ve probably heard of Jev (a new AI decision model from TypeSafe AI). It was launched in September, and although my feeds were packed with news about it, I still had no idea what exactly it was or how it differed from standard Large Language Models (LLMs) like ChatGPT and Claude.&lt;/p&gt;

&lt;p&gt;Well, until now, that is. Yep, I’ve done some research on TypeSafe AI’s "Jev," focusing mainly on what makes it different from standard LLMs. Could this actually change how we build AI-powered applications, or is it just another model being hyped?&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Jev?
&lt;/h2&gt;

&lt;p&gt;According to TypeSafe AI, Jev is a specialized non-generative AI decision model. Note that I refer to it as “non-generative,” which is due to the fact that it doesn’t write prose, chat, or generate text. Rather, Jev is a decision model that simply evaluates unstructured input data against predefined questions and returns structured probabilistic decisions. Unlike the traditional LLMs we are used to, Jev is a pure System One model.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;System One is a conceptual method of thinking that was introduced by psychologist Daniel Kahneman in his book Thinking, Fast and Slow. Rather than slow, step-by-step reasoning, System One refers to a mode of thinking that’s fast, intuitive, effortless, and automatic.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;With Jev, you don't get the usual back-and-forth conversation or a lengthy explanation containing the information you need. Instead, you get structured decisions, probability distributions, and confidence scores, all in a structured format/payload.&lt;/p&gt;

&lt;h2&gt;
  
  
  Jev vs. LLMs: What's the Difference?
&lt;/h2&gt;

&lt;p&gt;Now, as I’m sure you’re wondering, what’s the difference? I mean, Jev being a System One model sounds cool and all, but how does that compare to the standard LLMs we know?&lt;/p&gt;

&lt;p&gt;Firstly, let’s talk about the primary output. With regular LLMs, you get open-ended natural language, responses, code, or something similar. The response is in natural-language text and is generated sequentially by the model token-by-token. &lt;/p&gt;

&lt;p&gt;With Jev, however, you get zero natural-language text. Instead, the decision model returns fixed, type-safe (no wonder the company name) structures. These may be predefined choices, numerical scores from 0 to 1, or simply Yes/No probabilities.&lt;/p&gt;

&lt;p&gt;Next, the speed. LLMs usually operate autoregressively, as each generated token depends on the previous ones in a loop-like sequence. As expected, this method of token generation is relatively slow, taking from a fraction of a second to several seconds or minutes, depending on the operation.&lt;/p&gt;

&lt;p&gt;On the other hand, Jev is non-autoregressive and evaluates independent decisions in parallel in a single pass. Instead of writing out a paragraph or parsing JSON, Jev directly maps the input state against predefined choices, scores, or probabilities in one unified evaluation. Hence, it’s quite fast (40x to 200x faster), taking around 70-500 ms (at least according to &lt;a href="https://typesafe.ai/blog/introducing-system-one-models-and-jev" rel="noopener noreferrer"&gt;reports from TypeSafe AI&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Lastly, and perhaps most importantly, cost. Standard LLMs charge for both input tokens that are processed and output tokens that are generated. For instance, a lightweight model like GPT-4o Mini offers a pricing structure of about $0.15 per 1M input tokens and $0.60 per 1M output tokens ($0.15 / $0.60).&lt;/p&gt;

&lt;p&gt;Now, as I’ve mentioned quite a few times already, Jev doesn’t generate output tokens, so that’s a part of the pricing you don’t have to worry about. For inputs, you get charged $0.042 per 1M tokens processed, making the final pricing structure about ($0.042 / $0.00).&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's Put It to Work
&lt;/h2&gt;

&lt;p&gt;One great way to truly understand how Jev works is by an example I found online: classifying customer support tickets. Now, forgive me for being unoriginal, but if it works, it works.&lt;/p&gt;

&lt;p&gt;Imagine you're building a customer support system for an e-commerce store. Customers submit complaints every day, and someone has to read each one, figure out what it's about, determine its urgency, and route it to the right team. Now, you decide to automate the whole classification process using an AI model to be more efficient as your business grows.&lt;/p&gt;

&lt;p&gt;Consider this ticket:&lt;/p&gt;

&lt;p&gt;"I've been trying to pay for my order since yesterday, but checkout keeps failing. I've also been charged twice, and nobody has responded to my email!"&lt;/p&gt;

&lt;p&gt;With a standard LLM, you send it this ticket alongside a prompt like “You must return valid JSON. Do not include markdown formatting…" or something similar. Then you might need to add a lot more output constraints and validation to get the required information. Plus, the AI might hallucinate more ticket categories or mess up the exact wording, like using “Billing Error” instead of the predefined category “Payment Issue."&lt;/p&gt;

&lt;p&gt;Now with Jev, you get direct classification from a decision model. During setup, you configure Jev with a strictly-typed question schema (using question types such as Choice, Score, or Noul). For our example, we might go with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Category (Choice): “Payment Issue” - “Technical Issue” - “Shipping Delay” - “Account Lockout” - “Other”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Urgency Score (Score): 1 to 5 (Routine to Critical)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sentiment (Choice): “Positive” - “Neutral” - “Angry”&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Note that this is just a rough template from the top of my head (Don’t judge me)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;With that, Jev returns structured results that fit the schema we've defined. Since the available choices are predefined, Jev can't return a new category outside the options we've specified for that question. It can still make the wrong classification, though, which is why we need to consider its probabilities and confidence level rather than blindly trusting every result.&lt;/p&gt;

&lt;p&gt;Now, I’m not writing this because normal LLMs can’t stick to strict schemas or always hallucinate. The difference is that Jev is designed around predefined decisions from the start. You're defining the possible answers beforehand, and Jev returns its decision alongside probability information that can help your application handle uncertainty.&lt;/p&gt;

&lt;h2&gt;
  
  
  Are LLMs Becoming Obsolete?
&lt;/h2&gt;

&lt;p&gt;So, are Large Language Models done? Truth be told, that’s what I was thinking about when I first heard of a pure System One AI model that’s significantly faster and cheaper. However, that’s not actually the case.&lt;/p&gt;

&lt;p&gt;Instead, the major shift here is how we separate generative tasks from decision tasks. Using a standard LLM for evaluating data and making decisions from a predefined list can be overkill, especially when we consider speed, cost, and accuracy. As a decision model, Jev is faster, cheaper, and simply better at classification and routing according to strictly set schemas.&lt;/p&gt;

&lt;p&gt;However, Jev isn’t a generative model, so you don’t get anything new like text, prose, or anything like that. For instance, it can’t be used to automatically draft an email to send to customers whose tickets have been analyzed. Obviously, we need standard LLMs for such generative tasks.&lt;/p&gt;

&lt;p&gt;Therefore, the future might be hybrid systems. Decision models can be used to efficiently filter and sort data in a pipeline. A model like Jev could classify incoming requests, filter spam, or determine which workflow should handle a particular task. &lt;/p&gt;

&lt;p&gt;When a request actually needs a human-readable response, a traditional LLM could take over and generate one. It can also be used as some sort of router to determine which tool is best suited to a task, depending on the input provided and the range of available options.&lt;/p&gt;

&lt;p&gt;Rather than treating Jev and traditional LLMs as direct replacements for one another, we can think of them as different components that may work better together.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;This is probably my longest piece yet, though I consider it worth the effort. What are my key takeaways? Well, now I understand the differences between generative and decision tasks, as I’ve been naively mashing them together. What truly separates Jev from regular models is that it’s configured around our predefined decisions, so we get structured decisions, classifications, and probability scores.&lt;/p&gt;

&lt;p&gt;Keep in mind, though, most of these claims are based on information from TypeSafe AI’s reports. It’s probably best to take them with a pinch of salt until independent benchmarks are available.&lt;/p&gt;

&lt;p&gt;Although AI models keep getting better, it’s quite clear that the brute force approach has its limits. Building specialized models for specific tasks and combining them into a single pipeline could be a more efficient approach, depending on the use case.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>healthydebate</category>
      <category>software</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Monolith or Microservices: One App or Many?</title>
      <dc:creator>Emmanuel Paul</dc:creator>
      <pubDate>Fri, 09 Oct 2026 08:39:30 +0000</pubDate>
      <link>https://dev.to/paul_emmanuel/monolith-or-microservices-one-app-or-many-gid</link>
      <guid>https://dev.to/paul_emmanuel/monolith-or-microservices-one-app-or-many-gid</guid>
      <description>&lt;p&gt;As someone who’s still fairly new to the software industry, I’ve heard a lot of people throw terms like “Monoliths” and “Microservices” left and right. Truth be told, I’ve mostly pretended to know what these words mean, well, until now.&lt;/p&gt;

&lt;p&gt;After spending some time on Google and checking out a few well-written articles, I’ve decided to just write my take on it. Keep in mind, I’m not some expert, so I’m always open to constructive criticisms (not random hole poking) in my logic.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Monolith
&lt;/h2&gt;

&lt;p&gt;Monolithic architecture is pretty much a traditional approach to software development where the entire application is built as a single unified program. Every part of the application, whether it’s the UI, the business logic, or database access, is written within one codebase.&lt;/p&gt;

&lt;p&gt;Based on what I’ve learned, this means the different parts of the application are tightly coupled and typically deployed as one unit. While mixing multiple frameworks or languages is technically possible, doing so can introduce much complexity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then There's Microservices
&lt;/h2&gt;

&lt;p&gt;If monoliths mean joining everything in one codebase, microservices seem to be the exact opposite. The large application is broken into small, independent services that communicate over a network (APIs, I believe). Each service handles a specific task, which may be processing payments, sending notifications, or simply authentication.&lt;/p&gt;

&lt;p&gt;As services are independent units that simply communicate, they can be written in different languages, depending on their use. For instance, using Python for a service that requires a decent amount of data manipulation and Node.js for a real-time chat service. Plus, if one service fails, the others keep functioning, rather than taking every part of the app down alongside it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s The Catch?
&lt;/h2&gt;

&lt;p&gt;If either one of these approaches was perfect, there wouldn’t be much debate between the two. Whether you go for monoliths or microservices, there are a few downsides to consider.&lt;/p&gt;

&lt;p&gt;With monoliths, scaling can eventually become inefficient. Horizontal scaling requires cloning the entire application stack instead of just the limited features, which wastes server resources. Changing the framework or programming language is also nearly impossible once a monolith reaches a massive size. Furthermore, working in one codebase can easily become a nightmare as the engineering team grows, leading to constant git merge conflicts, slow build times, and a slow development cycle.&lt;/p&gt;

&lt;p&gt;When it comes to microservices, you get far more complexity in terms of infrastructure. You may need container orchestration (e.g., with tools like Kubernetes), service meshes, and automated CI/CD pipelines. Besides that, you have to consider network latency, connectivity issues, and securing connections, as various services need to communicate to run the application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't Overengineer It
&lt;/h2&gt;

&lt;p&gt;I have quickly become what I call an “expert” in the whole “Monolith vs. Microservices” debate, and here’s my take: Don’t overengineer it. The best software development approach depends on your current needs. If you’re building some kind of MVP or startup project, then just stick to a monolithic architecture, as it is modular and supports rapid early development and simple deployment.&lt;/p&gt;

&lt;p&gt;On the other hand, if you’re scaling an enterprise application, with large distributed teams across several domains, microservices may make more sense. You get the fault isolation, independent scaling capability, and much more flexibility.&lt;/p&gt;

&lt;p&gt;At the end of the day, there’s no universal winner here. Start with what solves your current problem, and let your architecture change as the problem gets bigger.&lt;/p&gt;

</description>
      <category>software</category>
      <category>webdev</category>
      <category>programming</category>
      <category>healthydebate</category>
    </item>
    <item>
      <title>🐾 PawSafe: An AI-Powered Food Safety Checker for Dogs</title>
      <dc:creator>Emmanuel Paul</dc:creator>
      <pubDate>Mon, 17 Aug 2026 00:18:35 +0000</pubDate>
      <link>https://dev.to/paul_emmanuel/pawsafe-an-ai-powered-food-safety-checker-for-dogs-53o8</link>
      <guid>https://dev.to/paul_emmanuel/pawsafe-an-ai-powered-food-safety-checker-for-dogs-53o8</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-08-13"&gt;Weekend Challenge: Dog Days Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;PawSafe is an AI-powered web application that helps dog owners answer a simple but important question:&lt;/p&gt;

&lt;p&gt;"Can my dog eat this?"&lt;/p&gt;

&lt;p&gt;Users can enter the name of a food, upload a photo, or provide both. PawSafe then analyzes the information using Google's Gemini API and provides a simple safety assessment.&lt;/p&gt;

&lt;p&gt;The result is categorized into four levels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🟢 Generally Safe&lt;/li&gt;
&lt;li&gt;🟡 Use Caution&lt;/li&gt;
&lt;li&gt;🔴 Not Safe&lt;/li&gt;
&lt;li&gt;⚪ Unable to Determine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Along with the result, PawSafe provides explanations, potential warnings, and safer alternatives when appropriate.&lt;/p&gt;

&lt;p&gt;My goal was to build something that was useful, simple to understand, and approachable for dog owners rather than making users search through multiple sources every time they encounter an unfamiliar food.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://pawsafe-1.onrender.com/" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/PaulEmmanuel8888/PawSafe" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;PawSafe is a full-stack application built with:&lt;/p&gt;

&lt;h3&gt;
  
  
  Frontend
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Vite&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;li&gt;Lucide React&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Backend
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;Express&lt;/li&gt;
&lt;li&gt;Multer&lt;/li&gt;
&lt;li&gt;CORS&lt;/li&gt;
&lt;li&gt;Google Gemini API&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Deployment
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Render&lt;/li&gt;
&lt;li&gt;GitHub&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The basic flow looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User
  ↓
Food name / Image / Both
  ↓
React Frontend
  ↓
Express API
  ↓
Google Gemini
  ↓
Structured Analysis
  ↓
PawSafe Result Card
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One of the main technical decisions I made was to keep the Gemini API integration on the backend rather than exposing the API key in the frontend.&lt;/p&gt;

&lt;p&gt;The frontend sends the user's food information to the Express API. The backend then communicates with Gemini and returns the structured analysis to the frontend.&lt;/p&gt;

&lt;p&gt;I also wanted the application to support both text and images independently, while still allowing users to provide both when additional context is useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Best Use of Google AI
&lt;/h3&gt;

&lt;p&gt;PawSafe is submitted for the Best Use of Google AI prize category.&lt;/p&gt;

&lt;p&gt;Google's Gemini API is the core intelligence behind the application. It is used to analyze both text-based and image-based food information and generate a structured safety assessment.&lt;/p&gt;

&lt;p&gt;The AI response is then presented through PawSafe's interface as an easy-to-understand result rather than exposing users to a raw AI response.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>gemini</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
