<?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: Gabriele Monti</title>
    <description>The latest articles on DEV Community by Gabriele Monti (@gabriele_monti_32e3e11bd1).</description>
    <link>https://dev.to/gabriele_monti_32e3e11bd1</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3838167%2Fdb94e3c1-dd88-4f95-b53f-49e36c747d2f.jpg</url>
      <title>DEV Community: Gabriele Monti</title>
      <link>https://dev.to/gabriele_monti_32e3e11bd1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gabriele_monti_32e3e11bd1"/>
    <language>en</language>
    <item>
      <title>I built an AI tool to rank 200+ CVs in seconds (FastAPI + embeddings)</title>
      <dc:creator>Gabriele Monti</dc:creator>
      <pubDate>Sun, 22 Mar 2026 09:34:56 +0000</pubDate>
      <link>https://dev.to/gabriele_monti_32e3e11bd1/i-built-an-ai-tool-to-rank-200-cvs-in-seconds-fastapi-embeddings-999</link>
      <guid>https://dev.to/gabriele_monti_32e3e11bd1/i-built-an-ai-tool-to-rank-200-cvs-in-seconds-fastapi-embeddings-999</guid>
      <description>&lt;h1&gt;
  
  
  I built an AI tool to rank 200+ CVs in seconds (FastAPI + embeddings)
&lt;/h1&gt;

&lt;p&gt;Small businesses post a job, get 200+ CVs and spend days reading them manually.&lt;/p&gt;

&lt;p&gt;Most end up skimming the first 50 and hoping for the best.&lt;/p&gt;

&lt;p&gt;I kept seeing this problem, so I built a simple tool to fix it.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://cvbambam.com" rel="noopener noreferrer"&gt;Try it here&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;Upload a batch of CVs (PDF or DOCX), describe the role in plain English, and get a ranked shortlist in seconds.&lt;/p&gt;

&lt;p&gt;No filters, no complex setup.&lt;/p&gt;

&lt;p&gt;Just:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upload CVs
&lt;/li&gt;
&lt;li&gt;Paste job description
&lt;/li&gt;
&lt;li&gt;Get ranked candidates
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;I’ve worked with small teams and founders who don’t have HR departments.&lt;/p&gt;

&lt;p&gt;They don’t need another ATS.&lt;/p&gt;

&lt;p&gt;They just need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a quick way to &lt;strong&gt;not miss good candidates&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;a way to &lt;strong&gt;avoid reading 200 PDFs manually&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Each CV is converted into an embedding.&lt;/p&gt;

&lt;p&gt;The job description is also converted into an embedding.&lt;/p&gt;

&lt;p&gt;Then I calculate similarity between them and rank candidates.&lt;/p&gt;

&lt;p&gt;No keyword matching. No rules engine.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tech stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;FastAPI
&lt;/li&gt;
&lt;li&gt;SQLite
&lt;/li&gt;
&lt;li&gt;Hugging Face Inference API (BGE embeddings)
&lt;/li&gt;
&lt;li&gt;Tailwind CSS
&lt;/li&gt;
&lt;li&gt;Hosted on Render
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Code is open here:&lt;br&gt;&lt;br&gt;
👉 &lt;a href="https://github.com/sedici16/cvbambam2" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;&lt;/p&gt;


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


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://cvbambam.com" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;cvbambam.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  Things that surprised me
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Embeddings outperform keyword matching by a lot
&lt;/li&gt;
&lt;li&gt;CV parsing is messy (PDFs are chaos)
&lt;/li&gt;
&lt;li&gt;Users don’t want features — they want results fast
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What I’m exploring next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Handling very large batches efficiently
&lt;/li&gt;
&lt;li&gt;Adding explainability (why a CV ranks higher)
&lt;/li&gt;
&lt;li&gt;Whether recruiters would use something this simple
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;👉 &lt;a href="https://cvbambam.com" rel="noopener noreferrer"&gt;https://cvbambam.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Would love feedback from developers or anyone involved in hiring.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>python</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
