<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Jobbri UK Engineering & Career Data]]></title><description><![CDATA[Jobbri UK Engineering & Career Data]]></description><link>https://jobbribri.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6ae48f7141190ba61d309ff1/7b50ee78-fc5b-455f-a3ac-822d8ac4decd.png</url><title>Jobbri UK Engineering &amp; Career Data</title><link>https://jobbribri.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 12 Nov 2026 11:05:06 GMT</lastBuildDate><atom:link href="https://jobbribri.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How we built a zero-cost UK CV ATS parser and 2026/27 PAYE tax calculator in Laravel 12 & PHP 8.4]]></title><description><![CDATA[Combining local PDF/DOCX text extraction, regex heuristics, and deterministic UK National Insurance maths before triggering expensive LLM calls.]]></description><link>https://jobbribri.hashnode.dev/how-we-built-a-zero-cost-uk-cv-ats-parser-and-2026-27-paye-tax-calculator-in-laravel-12-php-8-4</link><guid isPermaLink="true">https://jobbribri.hashnode.dev/how-we-built-a-zero-cost-uk-cv-ats-parser-and-2026-27-paye-tax-calculator-in-laravel-12-php-8-4</guid><dc:creator><![CDATA[Ivan Genov]]></dc:creator><pubDate>Wed, 04 Nov 2026 12:25:37 GMT</pubDate><content:encoded><![CDATA[<p>Running a large-scale recruitment and career intelligence platform requires processing thousands of candidate CVs and salary calculations every single week. If you pass every uploaded PDF directly to a Vision LLM on your public homepage, your cloud API bill will skyrocket — especially when bots or casual visitors test the upload dropzone.</p>
<p>At <a href="https://jobbri.co.uk"><strong>Jobbri UK</strong></a>, we solved this by engineering a two-stage hybrid architecture in <strong>Laravel 12</strong> and <strong>PHP 8.4 (Strict Mode)</strong>.</p>
<p>On the public homepage, candidates get an instant, zero-cost <strong>UK CV Structure Review &amp; Salary Benchmark</strong> that executes locally in under 45 milliseconds. Only after a candidate verifies their email and enters the full onboarding flow do we invoke <strong>Google Vertex AI (Gemini 2.5 Flash-Lite)</strong> to auto-populate their structured career profile.</p>
<p>Here is how we built the local ATS parser, the 2026/27 UK PAYE tax engine, and our programmatic salary benchmarks across 261 UK professions.</p>
<hr />
<h2>1. Local PDF &amp; DOCX extraction in under 50ms</h2>
<p>Instead of sending raw binary files over HTTP to an external AI endpoint on initial upload, our Livewire 3 component processes the document in memory on our OVHcloud Ubuntu VPS.</p>
<ul>
<li>For <strong>PDF documents</strong>, we use <code>Smalot\PdfParser\Parser</code> to extract raw text layers and metadata.</li>
<li>For <strong>DOCX files</strong>, we inspect <code>word/document.xml</code>, <code>word/header1.xml</code>, and <code>word/footer1.xml</code> directly via PHP's native <code>ZipArchive</code> class so contact details placed in document headers are never missed.</li>
</ul>
<p>Once the text is extracted, the temporary file is immediately unlinked (<code>@unlink</code>) for strict UK GDPR compliance, and our deterministic scoring engine evaluates six core UK recruitment signals:</p>
<pre><code class="language-php">&lt;?php

declare(strict_types=1);

namespace App\Services\Cv;

final class LocalUkCvAuditor
{
    public function evaluateText(string $rawText): array
    {
        $cleanText = trim(preg_replace('/\s+/', ' ', $rawText));
        $wordCount = str_word_count($cleanText);
        $readingTimeMinutes = round($wordCount / 200, 1);

        // 1. Check for UK mobile or landline format (+44 or 07xxx)
        $hasUkPhone = (bool) preg_match('/(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}/', $cleanText);

        // 2. Count quantifiable impact metrics (%, £, KPIs, numbers)
        preg_match_all('/(\£\d+|\d+%|\b\d{2,5}\b)/i', $cleanText, $metricMatches);
        $metricsCount = count($metricMatches[0] ?? []);

        // 3. Detect high-impact UK action verbs
        $actionVerbs = ['delivered', 'engineered', 'managed', 'spearheaded', 'reduced', 'increased', 'optimized', 'built'];
        $foundVerbs = array_filter($actionVerbs, fn (string $v) =&gt; stripos($cleanText, $v) !== false);

        return [
            'word_count' =&gt; $wordCount,
            'reading_time_min' =&gt; max(0.5, $readingTimeMinutes),
            'has_uk_phone' =&gt; $hasUkPhone,
            'metrics_count' =&gt; $metricsCount,
            'action_verbs_count' =&gt; count($foundVerbs),
        ];
    }
}
</code></pre>
<p>This instant check powers the free CV review hook on the <a href="https://jobbri.co.uk"><strong>Jobbri UK Homepage</strong></a>, giving candidates immediate feedback on missing measurable achievements (STAR method), word-count balance, and UK Equality Act 2010 formatting standards.</p>
<hr />
<h2>2. Matching CVs against 261 UK professions &amp; regional rent data</h2>
<p>Once we extract the candidate's core skills and job titles from the document, we benchmark their profile against our <code>profession_salaries</code> table, which tracks <strong>Entry-level</strong>, <strong>Mid-level</strong>, and <strong>Senior</strong> annual pay across 261 British roles and 12 major UK cities.</p>
<p>For example, when a candidate's CV matches engineering or tech keywords, we cross-reference live market data from our programmatic <a href="https://jobbri.co.uk/salaries/software-developer"><strong>UK Software Developer Salary Guide</strong></a> and compare the net monthly take-home pay against local 1-bedroom rent prices in the target postcode.</p>
<ul>
<li><strong>Entry / Junior (£28,500 gross):</strong> ~£2,005 / month net take-home (15.6% effective tax + NI)</li>
<li><strong>Mid-Level (£45,000 gross):</strong> ~£2,970 / month net take-home (20.8% effective tax + NI)</li>
<li><strong>Senior / Lead (£68,000 gross):</strong> ~£4,193 / month net take-home (26.0% effective tax + NI)</li>
</ul>
<hr />
<h2>3. Deterministic 2026/27 UK Income Tax &amp; Class 1 National Insurance engine</h2>
<p>One of the biggest frustrations for UK jobseekers — as frequently debated on MoneySavingExpert and Mumsnet — is working out whether a higher headline salary in a commuter city actually beats a lower local salary once <strong>Income Tax (20% / 40%)</strong>, <strong>Class 1 Employee National Insurance (8% / 2%)</strong>, and rail season tickets are deducted.</p>
<p>In our <a href="https://jobbri.co.uk/tools"><strong>UK Salary &amp; Tax Calculator (2026/27)</strong></a>, we calculate exact annual, monthly, weekly, and hourly net pay based on the standard <code>1257L</code> personal allowance (£12,570 tax-free threshold, 20% basic rate up to £50,270, and 8% Class 1 Employee National Insurance).</p>
<hr />
<h2>4. Connecting salary data with real-time Door-to-Door Commute routing</h2>
<p>Knowing your net monthly pay is only half the equation. On our <a href="https://jobbri.co.uk/jobs"><strong>Direct UK Jobs Board</strong></a>, every single job listing is enriched with a 10-tab <strong>Postcode Area Guide</strong> powered by our local 651,779-object OpenStreetMap database (<code>uk_master_places</code>) and OSRM routing.</p>
<p>Candidates can enter their home postcode to compare:</p>
<ol>
<li><strong>Exact door-to-door travel time</strong> (by car, public transport, and cycling/walking).</li>
<li><strong>Local 1-bed and room-share rent ratios</strong> relative to the job's net monthly salary.</li>
<li><strong>Verified employer transparency</strong> — we actively filter out recruitment agencies and reward direct British companies through our <a href="https://jobbri.co.uk/badge"><strong>Official UK Employer Verification Badge</strong></a> program.</li>
</ol>
<p>For AI agents and developer tools, our entire salary and live job index is also exposed in clean Markdown via our <a href="https://jobbri.co.uk/llms.txt"><strong>Agentic Browsing llms.txt Catalog</strong></a>.</p>
]]></content:encoded></item><item><title><![CDATA[Building a Door-to-Door UK Postcode Commute & Tax-Adjusted Rent Engine with OSRM, Leaflet, and Laravel 12]]></title><description><![CDATA[How we combined 651,779 local UK OpenStreetMap amenities with 2026/27 HMRC tax calculations to show real disposable income on every job listing.]]></description><link>https://jobbribri.hashnode.dev/building-a-door-to-door-uk-postcode-commute-tax-adjusted-rent-engine-with-osrm-leaflet-and-laravel-12</link><guid isPermaLink="true">https://jobbribri.hashnode.dev/building-a-door-to-door-uk-postcode-commute-tax-adjusted-rent-engine-with-osrm-leaflet-and-laravel-12</guid><dc:creator><![CDATA[Ivan Genov]]></dc:creator><pubDate>Fri, 30 Oct 2026 12:56:30 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6ae48f7141190ba61d309ff1/069c6ee1-26c7-4714-bfe4-aef03f762cd8.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When job seekers in the United Kingdom evaluate a new role, two practical questions immediately follow the headline salary: <em>"How long will my daily commute actually take?"</em> and <em>"How much of my net take-home pay will go towards local rent?"</em></p>
<p>At <a href="https://jobbri.co.uk">Jobbri UK</a>, we engineered an integrated relocation and financial transparency layer directly inside every job listing so candidates never have to bounce between five separate browser tabs.</p>
<h3>1. Interactive Door-to-Door Routing with OSRM &amp; <a href="http://Postcodes.io">Postcodes.io</a></h3>
<p>Inside the Transport tab on every live vacancy at <a href="https://jobbri.co.uk/jobs">https://jobbri.co.uk/jobs</a>, candidates can enter their home UK postcode. Our frontend engine queries <code>postcodes.io</code> for exact coordinates and pairs them with OpenStreetMap routing (OSRM) and our local database of 651,779 British amenities to calculate:</p>
<ul>
<li>Exact road mileage from the candidate's doorstep to the workplace postcode.</li>
<li>Interactive driving, public transit, cycling, and walking polylines rendered directly on Leaflet.js.</li>
<li>Active local bus line badges, nearest rail/tube hubs, and estimated single ticket fares (including TfL Hopper and regional rail estimates).</li>
</ul>
<h3>2. Programmatic 2026/27 UK Tax &amp; Regional Rent Benchmarks</h3>
<p>To help candidates compare purchasing power across regions, we also launched 3,393 programmatic salary and cost-of-living guides covering 261 British professions across 12 UK cities:</p>
<ul>
<li><a href="https://jobbri.co.uk/tools">UK Salary Tax Calculator &amp; 261-Profession Guide</a></li>
<li><a href="https://jobbri.co.uk/salaries/account-manager">Account Manager Salary &amp; Take-Home Pay in the UK</a></li>
<li><a href="https://jobbri.co.uk/salaries/software-developer-in-london">Software Developer Salary in London</a></li>
<li><a href="https://jobbri.co.uk/salaries/registered-nurse-in-manchester">Registered Nurse Salary in Manchester</a></li>
</ul>
<p>Each page computes 2026/27 UK Income Tax and Class 1 National Insurance deductions under the standard 1257L tax code, hourly rates (37.5h/week), and disposable monthly income after average 1-bedroom rent.</p>
<h3>3. Direct British Employers Only</h3>
<p>By filtering out recruitment agency middlemen and verifying employers via their Companies House Registration Number at <a href="https://jobbri.co.uk/employer-portal">https://jobbri.co.uk/employer-portal</a>, Jobbri UK connects candidates directly with hiring teams using 60-second Video CVs and AI Match Scores.</p>
]]></content:encoded></item></channel></rss>