<?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>Forem: Eric Mariasis</title>
    <description>The latest articles on Forem by Eric Mariasis (@eric_mariasis_39a2ea00e17).</description>
    <link>https://forem.com/eric_mariasis_39a2ea00e17</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%2F2969218%2Fb8354dc5-85b7-4c86-943f-05522f17ad90.png</url>
      <title>Forem: Eric Mariasis</title>
      <link>https://forem.com/eric_mariasis_39a2ea00e17</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/eric_mariasis_39a2ea00e17"/>
    <language>en</language>
    <item>
      <title>Data Science Resume Feedback and Semantic Job Recommendation System</title>
      <dc:creator>Eric Mariasis</dc:creator>
      <pubDate>Fri, 08 Aug 2025 22:04:18 +0000</pubDate>
      <link>https://forem.com/eric_mariasis_39a2ea00e17/data-science-resume-feedback-and-semantic-job-recommendation-system-3fma</link>
      <guid>https://forem.com/eric_mariasis_39a2ea00e17/data-science-resume-feedback-and-semantic-job-recommendation-system-3fma</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/redis-2025-07-23"&gt;Redis AI Challenge&lt;/a&gt;: Real-Time AI Innovators&lt;/em&gt;.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Career Code Advisor&lt;/strong&gt; is a Redis‑powered, AI‑augmented job search app. It matches candidates to roles using &lt;strong&gt;hybrid search (full‑text + vectors)&lt;/strong&gt;, provides &lt;strong&gt;résumé‑aware recommendations&lt;/strong&gt;, and surfaces &lt;strong&gt;real‑time engagement&lt;/strong&gt; (live favorites + a rolling 60‑minute trend).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi32cmku7bmta35mqt8ty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi32cmku7bmta35mqt8ty.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Highlights&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paste or upload your résumé → instant matches + short coaching feedback.&lt;/li&gt;
&lt;li&gt;Faceted filters (location, company, skills) that feel instant.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autocomplete &amp;amp; &lt;code&gt;Ctrl+K&lt;/code&gt;&lt;/strong&gt; quick launcher for speedy navigation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic fallback&lt;/strong&gt; when text search returns few/no results.&lt;/li&gt;
&lt;li&gt;Save jobs (⭐) and see &lt;strong&gt;live favorites&lt;/strong&gt; in the upper right as well as real time increases in decreases in a grafana dashboard.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpf47w4uotkg6rdg6tuzm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpf47w4uotkg6rdg6tuzm.png" alt=" " width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://careercodeadvisor.com" rel="noopener noreferrer"&gt;https://careercodeadvisor.com&lt;/a&gt;
&lt;em&gt;(The UI exposes &lt;code&gt;Ctrl+K&lt;/code&gt;, Saved Jobs, “Live favorites” and “60min trend”, plus a Résumé Matcher.)&lt;/em&gt; :contentReference[oaicite:6]{index=6}&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href="https://github.com/ericmariasis/ai-career-advisor" rel="noopener noreferrer"&gt;https://github.com/ericmariasis/ai-career-advisor&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I Used Redis 8
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RedisJSON&lt;/strong&gt; as primary store for job docs:

&lt;ul&gt;
&lt;li&gt;Example shape: &lt;code&gt;{ title, company, location, skills[], text, embedding }&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;RediSearch&lt;/strong&gt; for full‑text + faceted filters:

&lt;ul&gt;
&lt;li&gt;Title/company as TEXT, &lt;code&gt;skills&lt;/code&gt; and &lt;code&gt;location&lt;/code&gt; as TAG, salary as NUMERIC.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7n4ofwxkqnfdq5bjhhy8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7n4ofwxkqnfdq5bjhhy8.png" alt=" " width="800" height="263"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vector KNN&lt;/strong&gt; for semantic search &amp;amp; “more‑like‑this”:

&lt;ul&gt;
&lt;li&gt;Embedding dim: &lt;strong&gt;[fill: e.g., 1536]&lt;/strong&gt;, metric: &lt;strong&gt;COSINE&lt;/strong&gt;, algorithm: &lt;strong&gt;[HNSW or FLAT]&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Semantic cache&lt;/strong&gt; for résumé feedback/skill extraction:

&lt;ul&gt;
&lt;li&gt;Cache key: embedding of input; &lt;strong&gt;reuse if similarity ≥ [fill threshold, e.g., 0.90]&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Real‑time UI&lt;/strong&gt; surfaced via live favorites and a 60‑minute trend on Dashboard.&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚡ Try It Now (60 seconds)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;strong&gt;&lt;a href="https://careercodeadvisor.com" rel="noopener noreferrer"&gt;https://careercodeadvisor.com&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Type a natural query like: &lt;code&gt;python&lt;/code&gt; and toggle a filter (e.g., Location).&lt;/li&gt;
&lt;li&gt;Try a quirky query (typo or rare phrase) to see &lt;strong&gt;semantic fallback&lt;/strong&gt; suggestions.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fziz0zpy562abzabsas5t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fziz0zpy562abzabsas5t.png" alt=" " width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;Résumé Matcher&lt;/strong&gt;, paste 6–8 lines from your résumé, and hit &lt;strong&gt;Match &amp;amp; Advise&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flsclzihmqmkz317csyfy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flsclzihmqmkz317csyfy.png" alt=" " width="800" height="690"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;⭐ Save a job, then open &lt;strong&gt;Dashboard&lt;/strong&gt; to see &lt;strong&gt;Live favorites&lt;/strong&gt; and the &lt;strong&gt;60‑minute trend&lt;/strong&gt; update. A green line will go up as you save favorites and go down as you remove favorites.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  🛣️ What’s Next
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Profile‑aware ranking (learn from saves/clicks).&lt;/li&gt;
&lt;li&gt;Alerts (new roles matching saved skills).&lt;/li&gt;
&lt;li&gt;Multi‑embedding backends; offline batch re‑indexer.&lt;/li&gt;
&lt;li&gt;Deeper analytics: Redis Streams → dashboard panels.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why Redis?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
With Redis 8 as the real‑time data layer, one stack powers search, vectors, caching, and live activity — keeping responses snappy and the UX visibly real‑time.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Solo project by **Eric Mariasis&lt;/em&gt;* (@ericmariasis).*&lt;/p&gt;

</description>
      <category>redischallenge</category>
      <category>devchallenge</category>
      <category>database</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
