Decide with Jev Ep 3: AI Answers → PHP Decision Rules | Mohamed Said       [Skip to content](#main)  [ ![](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png) Mohamed SaidLaravel Backend Engineer ](https://msaied.com) - [Home](https://msaied.com)
- [Projects](https://msaied.com/projects)
- [Articles](https://msaied.com/articles)
- [Certificates](https://msaied.com/certificates)
- [About](https://msaied.com#about)

           [  Contact](https://msaied.com#contact) Menu 

Menu
----

Close 

 - [HomeStart here](https://msaied.com)
- [ProjectsCase studies](https://msaied.com/projects)
- [ArticlesEngineering notes](https://msaied.com/articles)
- [CertificatesCredentials](https://msaied.com/certificates)
- [AboutHow I work](https://msaied.com#about)
- [ContactGet in touch](https://msaied.com#contact)

  [Start a conversation](https://msaied.com#contact) [WhatsApp](https://wa.me/201094619204) [Email](mailto:hello@msaied.com) 

 1. [Home](https://msaied.com)
2. /
3. [Articles](https://msaied.com/articles)
4. /
5. [AI](https://msaied.com/articles?category=ai)
6. /
7. Decide with Jev Episode 3: Turn AI Answers into Decisions with PHP Rules

   [AI](https://msaied.com/articles?category=ai) [PHP](https://msaied.com/articles?category=php) 

 Decide with Jev Episode 3: Turn AI Answers into Decisions with PHP Rules
=========================================================================

 Episode 3 of the Decide with Jev series introduces a PHP PreflightPolicy class that translates AI-generated answers about a draft into one of three actionable labels — keeping humans firmly in control of every publishing decision.

 ![](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp) [Mohamed Said](https://msaied.com#person) Published 23 Oct 2026 · Updated 25 Oct 2026 · 3 min read

ShareCopy linkCopied

 ![Decide with Jev Episode 3: Turn AI Answers into Decisions with PHP Rules](https://cdn.msaied.com/805/a4dfa0e7c7e3c01fb99f0f970866675b.png) 

  On this page +1. [Episode 3 of Decide with Jev Is Out](#episode-3-of-decide-with-jev-is-out)
2. [What PreflightPolicy Does](#what-preflightpolicy-does)
3. [Key Design Decisions Explained in the Episode](#key-design-decisions-explained-in-the-episode)
4. [Missing Answers Are Not the Same as "No"](#missing-answers-are-not-the-same-as-quotnoquot)
5. [Zero Confidence vs. No Confidence](#zero-confidence-vs-no-confidence)
6. [The Two Thresholds: 0.85 and 1.6](#the-two-thresholds-085-and-16)
7. [Order of Checks Matters](#order-of-checks-matters)
8. [What "Ready" Means — and What It Does Not](#what-quotreadyquot-means-and-what-it-does-not)
9. [Trying It in Tinkerwell](#trying-it-in-tinkerwell)
10. [Where to Find the Code](#where-to-find-the-code)
11. [Takeaways](#takeaways)

 Episode 3 of Decide with Jev Is Out
-----------------------------------

The third episode of the *Decide with Jev* video series (roughly seven minutes) tackles one of the most important questions in AI-assisted workflows: **who — or what — makes the final call?** The answer Harris Raftopoulos lands on is clear: your PHP code does, not the model.

By this point in the series, Jev can answer three questions about a draft. Episode 3 takes those answers and routes them through a small, purpose-built PHP class called `PreflightPolicy`.

What PreflightPolicy Does
-------------------------

`PreflightPolicy` reads Jev's answers and returns exactly one of three labels:

- `ready for editor`
- `revise`
- `needs review`

None of these labels publish a draft automatically. Even a draft that earns the `ready for editor` label still goes to a human being. The policy is a routing mechanism, not an autopilot.

```php
// Conceptual shape of PreflightPolicy
class PreflightPolicy
{
    public function evaluate(array $answers): string
    {
        // Missing answers, zero confidence, and low scores
        // each take a distinct path before reaching the thresholds.
        // ...
    }
}

```

Key Design Decisions Explained in the Episode
---------------------------------------------

### Missing Answers Are Not the Same as "No"

If Jev returns no answer at all for a question, that is treated differently from a confident negative response. Collapsing the two cases would silently discard information about *why* a draft failed the check.

### Zero Confidence vs. No Confidence

Similarly, a confidence score of `0` and an absent confidence value follow separate code paths. A score of zero is a signal the model evaluated the question and found nothing; a missing value means the evaluation did not run at all.

### The Two Thresholds: 0.85 and 1.6

The episode introduces two numbers a draft must reach to be labelled `ready for editor`:

- **0.85** — the minimum per-question confidence score
- **1.6** — a combined score across questions

Harris is explicit that these are starting points chosen for the course, not universal rules. Every application will need to calibrate its own thresholds based on its risk tolerance and editorial standards.

### Order of Checks Matters

The sequence in which `PreflightPolicy` runs its checks is intentional. Early exits for missing data and zero-confidence answers prevent misleading results further down the chain.

### What "Ready" Means — and What It Does Not

The `ready for editor` label means the draft has cleared the automated bar. It does **not** mean the draft is approved for publication. A person still reviews it. This distinction is the philosophical core of the episode.

Trying It in Tinkerwell
-----------------------

At the end of the video, Harris loads the policy in Tinkerwell and adjusts an example score by hand. Watching the returned label flip as the number crosses the threshold makes the logic immediately concrete — a useful technique for demoing rule-based systems to stakeholders or teammates.

Where to Find the Code
----------------------

The full implementation lives on the `episode-3` branch of the [Decide with Jev repository](https://github.com/harris21/decide-with-jev/tree/episode-3). The complete playlist is available on YouTube if you want to follow the series from the beginning.

Takeaways
---------

- Keep routing logic in PHP classes, not inside the AI model's output.
- Distinguish between a missing answer and a negative answer — they signal different problems.
- Treat confidence thresholds as tunable parameters, not hard constants.
- The order of conditional checks in a policy class affects correctness; plan it deliberately.
- "Ready for editor" and "approved to publish" are two different states; always keep a human in the loop.

---

*Source: [Decide with Jev: Turn AI Answers into Decisions with PHP Rules — Laravel News](https://laravel-news.com/decide-with-jev-turn-ai-answers-into-decisions-with-php-rules)*

- [AI](https://msaied.com/articles?search=AI)
- [PHP](https://msaied.com/articles?search=PHP)
- [Laravel](https://msaied.com/articles?search=Laravel)
- [Decision Logic](https://msaied.com/articles?search=Decision%20Logic)
- [Tinkerwell](https://msaied.com/articles?search=Tinkerwell)

 Frequently asked questions 
---------------------------

  What does the PreflightPolicy class actually return?It returns one of three string labels: 'ready for editor', 'revise', or 'needs review'. None of these labels trigger automatic publishing — every path still routes the draft to a human reviewer.

   Why are a confidence score of zero and a missing confidence value handled differently?A score of zero means the model ran the evaluation and found nothing to support the answer. A missing value means the evaluation did not run at all. Treating them the same would hide the reason a draft failed its preflight check.

   Are the 0.85 and 1.6 thresholds meant to be used in production applications?No. Harris explicitly frames them as starting points chosen for the course. Real applications should calibrate their own thresholds based on their specific risk tolerance and editorial requirements.

   ![Mohamed Said](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp)About the author
----------------

[Mohamed Said](https://msaied.com#person)Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

[About](https://msaied.com#about) [GitHub ↗](https://github.com/EG-Mohamed) [LinkedIn ↗](https://www.linkedin.com/in/msaiedm/) [WhatsApp ↗](https://wa.me/201094619204) [Email Address ↗](mailto:hello@msaied.com) [My CV ↗](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)  

   [Previous articleSkuul: Open-Source School Management Built on Laravel 13 and Livewire 4](https://msaied.com/articles/skuul-open-source-school-management-built-on-laravel-13-and-livewire-4)  

   On this page
-------------

1. [Episode 3 of Decide with Jev Is Out](#episode-3-of-decide-with-jev-is-out)
2. [What PreflightPolicy Does](#what-preflightpolicy-does)
3. [Key Design Decisions Explained in the Episode](#key-design-decisions-explained-in-the-episode)
4. [Missing Answers Are Not the Same as "No"](#missing-answers-are-not-the-same-as-quotnoquot)
5. [Zero Confidence vs. No Confidence](#zero-confidence-vs-no-confidence)
6. [The Two Thresholds: 0.85 and 1.6](#the-two-thresholds-085-and-16)
7. [Order of Checks Matters](#order-of-checks-matters)
8. [What "Ready" Means — and What It Does Not](#what-quotreadyquot-means-and-what-it-does-not)
9. [Trying It in Tinkerwell](#trying-it-in-tinkerwell)
10. [Where to Find the Code](#where-to-find-the-code)
11. [Takeaways](#takeaways)

 ###  Have a technical challenge?

 Tell me what you’re building. I reply within two working days.

[Start a conversation](https://msaied.com#contact) 

   Related articles
-----------------

 [ ![](https://cdn.msaied.com/804/adc0feaa0650d379192acac1e92a111e.png) Laravel · 4 min read### Skuul: Open-Source School Management Built on Laravel 13 and Livewire 4

21 Oct 2026 ](https://msaied.com/articles/skuul-open-source-school-management-built-on-laravel-13-and-livewire-4) [ ![](https://cdn.msaied.com/802/4b381a7cf7b496975aa9775d2454494f.png) Laravel · 4 min read### Screenshot: Capture Images and PDFs from Blade Views and URLs in Laravel

21 Oct 2026 ](https://msaied.com/articles/screenshot-capture-images-and-pdfs-from-blade-views-and-urls-in-laravel) [ ![](https://cdn.msaied.com/803/29aa0b15365e1c360240c5160e8fa81f.png) Laravel · 3 min read### PHP Critical Vulnerability Response: What Laravel Developers Must Do Now

21 Oct 2026 ](https://msaied.com/articles/php-critical-vulnerability-response-what-laravel-developers-must-do-now) 

  Have a technical challenge?
----------------------------

Tell me what you’re building. I reply within two working days.

 [Discuss your project ↗](https://msaied.com#contact) 

  © 2026 Mohamed Said · Built with Laravel, meant to last.Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

 - [Home](https://msaied.com)
- [Articles](https://msaied.com/articles)
- [Certificates](https://msaied.com/certificates)
- [GitHub](https://github.com/EG-Mohamed)
- [LinkedIn](https://www.linkedin.com/in/msaiedm/)
- [WhatsApp](https://wa.me/201094619204)
- [Email Address](mailto:hello@msaied.com)
- [My CV](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)
- [Sitemap](https://msaied.com/sitemap.xml)
