<?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: Samson Balogun</title>
    <description>The latest articles on DEV Community by Samson Balogun (@samson_balogun_2257f77709).</description>
    <link>https://dev.to/samson_balogun_2257f77709</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%2F4218059%2Fc7b71a3a-542d-4a51-90d1-156d383a973c.png</url>
      <title>DEV Community: Samson Balogun</title>
      <link>https://dev.to/samson_balogun_2257f77709</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/samson_balogun_2257f77709"/>
    <language>en</language>
    <item>
      <title>Altar Archive: A Voice Recording Becomes a Memorial Card</title>
      <dc:creator>Samson Balogun</dc:creator>
      <pubDate>Fri, 30 Oct 2026 23:58:37 +0000</pubDate>
      <link>https://dev.to/samson_balogun_2257f77709/altar-archive-a-voice-recording-becomes-a-memorial-card-5fo1</link>
      <guid>https://dev.to/samson_balogun_2257f77709/altar-archive-a-voice-recording-becomes-a-memorial-card-5fo1</guid>
      <description>&lt;p&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Altar Archive&lt;/strong&gt; is a local, CPU-only tool that turns a voice recording into a printable memorial card an ofrenda for the digital age.&lt;/p&gt;

&lt;p&gt;You drop in an audio file. It transcribes every word the person said, breaks it into lines, and shows them to you on screen. You tap the ones that feel right to keep. A small open-source AI called &lt;strong&gt;TabPFN&lt;/strong&gt; learns from your choices and picks five more lines it thinks you'd want — lines you never even marked. The result is a single printable HTML file: five things they actually said, with the timestamps of when they said them, framed like a memorial card.&lt;/p&gt;

&lt;p&gt;The audio never leaves your machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The theme:&lt;/strong&gt; Most people read "Ghost in the Machine" as: build something spooky, generate something eerie. I read it differently. The ghost in this machine is not generated it is retrieved. The voice was already recorded. The words were already said. The machine just listens carefully enough to find the ones worth keeping.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://youtu.be/GcSZPIslutg?si=PZ8rThsMDl2LFVc1" rel="noopener noreferrer"&gt;https://youtu.be/GcSZPIslutg?si=PZ8rThsMDl2LFVc1&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/Sayo-codes/altar-archive" rel="noopener noreferrer"&gt;https://github.com/Sayo-codes/altar-archive&lt;/a&gt; &lt;/p&gt;

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

&lt;p&gt;The pipeline has five stages:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Stage&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hear&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;faster-whisper&lt;/code&gt; transcribes the audio on CPU — no cloud, no GPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Describe&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;14 text features extracted per line (speed, pauses, position, emotional keywords)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Choose&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;You label ~10 lines keep/skip; TabPFN ranks the rest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Shape&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;card.py&lt;/code&gt; renders a self-contained HTML file with the painting embedded&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Speak&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Optional ElevenLabs narration (sends card text only, not audio)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On top of that I built a local Flask web UI three screens: upload, choose lines, see the card. Plain HTML, no frameworks, binds to &lt;code&gt;127.0.0.1&lt;/code&gt; only. The leave-one-out check is honest: for each label I gave, the model fits on everything else and predicts that one. That number appears on the card footer exactly as computed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt; Honesty is a design decision. Every number on the card is computed by the code. When the demo showed "18/20 agreed," I went back and checked. Human labels gave 13/18. I changed the number. A hackathon is not worth a false claim.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenges:&lt;/strong&gt; TabPFN's licence probe fires at fit time, not import time I had to wrap the fit call. Short recordings fail gracefully with a plain message. The card art is a 1.9 MB SVG wrapping a single base64 PNG I extracted it, compressed it to WebP at ~91 KB, and embedded it as a data URI so the card stays one self-contained offline file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Open-source AI tools like TabPFN and faster-whisper made this possible on a regular laptop with no GPU and no subscription. A closed tool would have sent the audio to a server. An open one let me guarantee it never leaves the machine.&lt;/p&gt;

&lt;p&gt;That guarantee is not a feature it is the point. When the recording is someone's last words, where the audio goes is not a small question. Open innovation meant I could answer it honestly.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Spirit of It
&lt;/h2&gt;

&lt;p&gt;The first time I ran the full pipeline on a real recording and the card came out five lines, timestamps, printed on paper it felt like something had been rescued. Not created. Rescued.&lt;/p&gt;

&lt;p&gt;That is what the ofrenda is for.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;TabPFN&lt;/li&gt;
&lt;li&gt;ElevenLabs&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
