<?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: adjia mvoa ndji gabriel monfils</title>
    <description>The latest articles on DEV Community by adjia mvoa ndji gabriel monfils (@kiddsaut07).</description>
    <link>https://dev.to/kiddsaut07</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%2F4169321%2F5b249f9a-3edd-48a5-bb26-75e3100b473c.png</url>
      <title>DEV Community: adjia mvoa ndji gabriel monfils</title>
      <link>https://dev.to/kiddsaut07</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kiddsaut07"/>
    <language>en</language>
    <item>
      <title>PALABRE: An AI-Powered Cultural Treasure Hunt That Gets You Off Your Phone</title>
      <dc:creator>adjia mvoa ndji gabriel monfils</dc:creator>
      <pubDate>Fri, 09 Oct 2026 12:46:38 +0000</pubDate>
      <link>https://dev.to/kiddsaut07/palabre-an-ai-powered-cultural-treasure-hunt-that-gets-you-off-your-phone-3b00</link>
      <guid>https://dev.to/kiddsaut07/palabre-an-ai-powered-cultural-treasure-hunt-that-gets-you-off-your-phone-3b00</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge: Week 1 — Touch Grass&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  PALABRE: What If AI's Job Was to Get You Off Your Phone?
&lt;/h1&gt;

&lt;p&gt;We are getting very good at building AI that keeps us on screens.&lt;/p&gt;

&lt;p&gt;More answers.&lt;br&gt;
More recommendations.&lt;br&gt;
More generated content.&lt;br&gt;
More reasons to keep scrolling.&lt;/p&gt;

&lt;p&gt;So when I saw this week's &lt;strong&gt;Touch Grass&lt;/strong&gt; challenge, I wanted to try something deliberately backwards:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What if AI's job was not to keep you online, but to send you outside?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question became &lt;strong&gt;PALABRE&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Your phone knows the internet. Your neighborhood knows the stories.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;PALABRE is a real-world cultural treasure hunt powered by AI.&lt;/p&gt;

&lt;p&gt;It gives you a mission, sends you into your neighborhood to talk to a real person, lets you record what you hear, analyzes that testimony, preserves the resulting knowledge, and generates the next mission from the story you just collected.&lt;/p&gt;

&lt;p&gt;The screen is only the beginning.&lt;/p&gt;

&lt;p&gt;The real experience happens outside it.&lt;/p&gt;
&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;PALABRE is a &lt;strong&gt;real-world cultural treasure hunt powered by AI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of asking the user to spend more time talking to an AI, PALABRE gives them a mission that must be completed &lt;strong&gt;in the real world&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The loop is simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MISSION
   ↓
GO OUTSIDE
   ↓
TALK TO A REAL PERSON
   ↓
RECORD THE STORY
   ↓
AI ANALYSIS
   ↓
PRESERVE THE KNOWLEDGE
   ↓
NEXT MISSION
   ↓
GO OUTSIDE AGAIN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The project starts with the neighborhoods of &lt;strong&gt;Yaoundé, Cameroon&lt;/strong&gt;, where much knowledge is still passed through conversation rather than databases, websites, or formal archives.&lt;/p&gt;

&lt;p&gt;A proverb.&lt;/p&gt;

&lt;p&gt;A craft lesson.&lt;/p&gt;

&lt;p&gt;A neighborhood memory.&lt;/p&gt;

&lt;p&gt;A piece of advice from an elder.&lt;/p&gt;

&lt;p&gt;A story about work, family, migration, food, language or everyday life.&lt;/p&gt;

&lt;p&gt;PALABRE is designed to turn those conversations into a growing &lt;strong&gt;living oral archive&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And there is one important twist:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;the next mission is generated from the story that was just collected.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So the experience doesn't simply repeat the same AI prompt.&lt;/p&gt;

&lt;p&gt;It evolves.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem I Wanted to Solve
&lt;/h2&gt;

&lt;p&gt;A lot of our digital lives revolve around consuming information that already exists online.&lt;/p&gt;

&lt;p&gt;But some of the most valuable knowledge around us is not online at all.&lt;/p&gt;

&lt;p&gt;It lives in conversations.&lt;/p&gt;

&lt;p&gt;A proverb repeated by an elder.&lt;/p&gt;

&lt;p&gt;A lesson learned through years of work.&lt;/p&gt;

&lt;p&gt;A neighborhood memory.&lt;/p&gt;

&lt;p&gt;A craft technique.&lt;/p&gt;

&lt;p&gt;A family story.&lt;/p&gt;

&lt;p&gt;An expression that only makes sense when someone explains where it came from.&lt;/p&gt;

&lt;p&gt;That knowledge can disappear without ever becoming searchable.&lt;/p&gt;

&lt;p&gt;And there is an interesting contradiction here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI can generate enormous amounts of new information, while millions of real human stories remain uncaptured.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;PALABRE explores a different use of AI:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;not generating another story, but helping preserve a story that already exists.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The PALABRE Loop
&lt;/h2&gt;

&lt;p&gt;The entire product is built around one physical loop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MISSION
   ↓
GO OUTSIDE
   ↓
TALK TO A REAL PERSON
   ↓
RECORD THE STORY
   ↓
AI ANALYSIS
   ↓
CULTURAL MEMORY
   ↓
NEXT MISSION
   ↓
GO OUTSIDE AGAIN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is the last step.&lt;/p&gt;

&lt;p&gt;PALABRE does not simply analyze a conversation and end the experience.&lt;/p&gt;

&lt;p&gt;The next mission is generated from the testimony that was just collected.&lt;/p&gt;

&lt;p&gt;That means the quest can evolve through actual human encounters.&lt;/p&gt;

&lt;p&gt;A conversation creates a new question.&lt;/p&gt;

&lt;p&gt;A new question creates another conversation.&lt;/p&gt;

&lt;p&gt;The archive grows through people, not through endless AI chat.&lt;/p&gt;




&lt;h2&gt;
  
  
  What the Explorer Actually Does
&lt;/h2&gt;

&lt;p&gt;A PALABRE mission might ask the explorer to return to their neighborhood and ask a merchant, neighbor, craftsperson or elder a meaningful question.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;What is a piece of advice you were given by your elders that still guides your work today?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The application then gets out of the way.&lt;/p&gt;

&lt;p&gt;You leave the screen.&lt;/p&gt;

&lt;p&gt;You find someone.&lt;/p&gt;

&lt;p&gt;You ask.&lt;/p&gt;

&lt;p&gt;You listen.&lt;/p&gt;

&lt;p&gt;You record.&lt;/p&gt;

&lt;p&gt;You come back.&lt;/p&gt;

&lt;p&gt;That is intentional product design.&lt;/p&gt;

&lt;p&gt;For PALABRE, a successful session should end with &lt;strong&gt;less screen time&lt;/strong&gt;, not more.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building a Real Voice-Recording Experience
&lt;/h2&gt;

&lt;p&gt;The audio layer is implemented directly in the browser using the Web Audio API and &lt;code&gt;MediaRecorder&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I wanted recording to feel like a proper part of the product rather than a file-upload form.&lt;/p&gt;

&lt;p&gt;PALABRE handles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;microphone permissions&lt;/li&gt;
&lt;li&gt;supported recording formats&lt;/li&gt;
&lt;li&gt;real-time audio-level feedback&lt;/li&gt;
&lt;li&gt;recording duration limits&lt;/li&gt;
&lt;li&gt;invalid or empty recordings&lt;/li&gt;
&lt;li&gt;file-size validation&lt;/li&gt;
&lt;li&gt;re-recording&lt;/li&gt;
&lt;li&gt;server-side upload validation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The current maximum recording duration is three minutes, with a 25 MB upload limit.&lt;/p&gt;

&lt;p&gt;The flow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser microphone
      ↓
Audio recording
      ↓
FormData upload
      ↓
Express API
      ↓
Speech-to-text / AI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  AI That Listens Instead of Talking
&lt;/h2&gt;

&lt;p&gt;This is where PALABRE becomes more than a recording app.&lt;/p&gt;

&lt;p&gt;The AI pipeline separates speech recognition from cultural analysis.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AUDIO
  ↓
SPEECH-TO-TEXT
  ↓
TRANSCRIPT
  ↓
AI ORCHESTRATOR
  ↓
STRUCTURED CULTURAL ANALYSIS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of asking an LLM for an arbitrary paragraph, PALABRE expects a structured result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"transcript"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"theme"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"extracted"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"summary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"culturalSignificance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"nextMission"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That output becomes the bridge between the human conversation and the next physical action.&lt;/p&gt;




&lt;h2&gt;
  
  
  I Was Careful About Cultural Hallucinations
&lt;/h2&gt;

&lt;p&gt;This part mattered more than I expected.&lt;/p&gt;

&lt;p&gt;If an AI is analyzing a cultural testimony, inventing a plausible-sounding proverb is not a harmless mistake.&lt;/p&gt;

&lt;p&gt;It becomes misinformation about someone's culture.&lt;/p&gt;

&lt;p&gt;So PALABRE's analysis instructions explicitly tell the model to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;stay grounded in the testimony&lt;/li&gt;
&lt;li&gt;preserve what was actually said&lt;/li&gt;
&lt;li&gt;avoid inventing names, dates or traditions&lt;/li&gt;
&lt;li&gt;distinguish direct information from inference&lt;/li&gt;
&lt;li&gt;avoid unsupported anthropological claims&lt;/li&gt;
&lt;li&gt;mark unclear speech instead of pretending to understand it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The objective is not to make the result sound impressive.&lt;/p&gt;

&lt;p&gt;The objective is to make it &lt;strong&gt;faithful&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That distinction matters when dealing with oral history.&lt;/p&gt;




&lt;h2&gt;
  
  
  From One Human Voice to a Preserved Memory
&lt;/h2&gt;

&lt;p&gt;The result turns the recording into a structured cultural artifact.&lt;/p&gt;

&lt;p&gt;PALABRE can surface:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What was shared&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The core content of the testimony.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The AI heard&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The main insight extracted from the story.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A cautious explanation of its significance for community memory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Preserved voice recording&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The original recording can remain attached to the story.&lt;/p&gt;

&lt;p&gt;That last part is important.&lt;/p&gt;

&lt;p&gt;An oral archive containing only transcripts loses something fundamental.&lt;/p&gt;

&lt;p&gt;You lose the voice.&lt;/p&gt;

&lt;p&gt;The rhythm.&lt;/p&gt;

&lt;p&gt;The pauses.&lt;/p&gt;

&lt;p&gt;The personality.&lt;/p&gt;

&lt;p&gt;PALABRE therefore treats the original recording as part of the memory itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Next Mission Is Generated From the Story
&lt;/h2&gt;

&lt;p&gt;This is the part I care about most.&lt;/p&gt;

&lt;p&gt;Imagine that someone tells you how an older relative taught them a craft.&lt;/p&gt;

&lt;p&gt;PALABRE can use that testimony to create a new mission that asks you to find another person related to that theme and ask another meaningful question.&lt;/p&gt;

&lt;p&gt;The product therefore forms a chain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HUMAN STORY
     ↓
AI UNDERSTANDING
     ↓
CULTURAL MEMORY
     ↓
NEXT PHYSICAL QUESTION
     ↓
ANOTHER HUMAN STORY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI is not the destination.&lt;/p&gt;

&lt;p&gt;It is the mechanism that keeps the human experience moving.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The next mission comes from the story you just heard.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's what makes PALABRE different from simply putting an LLM behind a form.&lt;/p&gt;




&lt;h2&gt;
  
  
  Field Proof: Did the Digital Mission Actually Lead Outside?
&lt;/h2&gt;

&lt;p&gt;I wanted the project to take the challenge literally.&lt;/p&gt;

&lt;p&gt;So PALABRE includes &lt;strong&gt;Field Proof&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At the beginning of a mission, the app records the starting time and can request a best-effort location.&lt;/p&gt;

&lt;p&gt;At submission, it can calculate an approximate straight-line distance using the Haversine formula.&lt;/p&gt;

&lt;p&gt;Only derived values are sent to the server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;time outside
distance
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Raw coordinates are not stored.&lt;/p&gt;

&lt;p&gt;And the mechanism is deliberately non-blocking.&lt;/p&gt;

&lt;p&gt;No location?&lt;/p&gt;

&lt;p&gt;The mission still works.&lt;/p&gt;

&lt;p&gt;No GPS fix?&lt;/p&gt;

&lt;p&gt;The mission still works.&lt;/p&gt;

&lt;p&gt;The feature is there to acknowledge the physical world, not to turn PALABRE into a tracking application.&lt;/p&gt;




&lt;h2&gt;
  
  
  Under the Hood: An AI Orchestrator Instead of a Single Vendor
&lt;/h2&gt;

&lt;p&gt;I also did not want the application permanently tied to one AI provider.&lt;/p&gt;

&lt;p&gt;So the server contains a provider abstraction and an &lt;strong&gt;AI Orchestrator&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The current architecture supports:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ollama
Qwen
DeepSeek
GLM
Gemini
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first four provide paths toward open-weight or local inference, while Gemini can remain available as a fallback depending on deployment configuration.&lt;/p&gt;

&lt;p&gt;The application can inspect provider configuration and health, route requests according to capabilities, and fall back between configured providers.&lt;/p&gt;

&lt;p&gt;The high-level architecture is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                         ┌── Ollama
                         ├── Qwen
VOICE → STT → TRANSCRIPT → AI ORCHESTRATOR ──┼── DeepSeek
                         ├── GLM
                         └── Gemini
                                  ↓
                       STRUCTURED ANALYSIS
                                  ↓
                         CULTURAL MEMORY
                                  ↓
                           NEXT MISSION
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means the rest of PALABRE does not need to know which model is doing the reasoning.&lt;/p&gt;

&lt;p&gt;The intelligence layer can evolve independently.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Open Innovation Matters Here
&lt;/h2&gt;

&lt;p&gt;This challenge could have been solved with a simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser → one closed AI API → response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That would work.&lt;/p&gt;

&lt;p&gt;But it would also make the intelligence layer much harder to replace.&lt;/p&gt;

&lt;p&gt;PALABRE instead keeps the AI layer modular.&lt;/p&gt;

&lt;p&gt;That creates room to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;swap models&lt;/li&gt;
&lt;li&gt;test different providers&lt;/li&gt;
&lt;li&gt;run local inference&lt;/li&gt;
&lt;li&gt;reduce vendor lock-in&lt;/li&gt;
&lt;li&gt;choose different inference strategies&lt;/li&gt;
&lt;li&gt;move more processing closer to the user over time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This matters especially for a project starting in Cameroon.&lt;/p&gt;

&lt;p&gt;A product designed for real communities cannot assume unlimited bandwidth, expensive hardware, permanent connectivity, or identical access to cloud services.&lt;/p&gt;

&lt;p&gt;The longer-term architecture I want for PALABRE looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AUDIO
  ↓
LOCAL SPEECH-TO-TEXT
  ↓
LOCAL OPEN-WEIGHT MODEL
  ↓
CULTURAL ANALYSIS
  ↓
ARCHIVE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is a direction rather than a claim that every deployed component is already fully local today.&lt;/p&gt;

&lt;p&gt;The important thing is that the architecture does not make that future impossible.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Technology Behind the Experience
&lt;/h2&gt;

&lt;p&gt;The user sees a relatively simple product.&lt;/p&gt;

&lt;p&gt;Underneath, there is quite a bit going on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Frontend
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;React 19&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Vite&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;li&gt;Web Audio API&lt;/li&gt;
&lt;li&gt;MediaRecorder&lt;/li&gt;
&lt;li&gt;browser geolocation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Backend
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;Express&lt;/li&gt;
&lt;li&gt;multipart audio handling with Multer&lt;/li&gt;
&lt;li&gt;rate limiting&lt;/li&gt;
&lt;li&gt;server-side AI orchestration&lt;/li&gt;
&lt;li&gt;structured output validation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Data
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;persistent story metadata&lt;/li&gt;
&lt;li&gt;optional Firestore synchronization&lt;/li&gt;
&lt;li&gt;original voice recordings when available&lt;/li&gt;
&lt;li&gt;public collective oral archive&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  AI Layer
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;provider abstraction&lt;/li&gt;
&lt;li&gt;capability detection&lt;/li&gt;
&lt;li&gt;provider health checks&lt;/li&gt;
&lt;li&gt;automatic fallback&lt;/li&gt;
&lt;li&gt;speech-to-text abstraction&lt;/li&gt;
&lt;li&gt;strict JSON validation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is a fairly simple user experience sitting on top of an intentionally decoupled architecture.&lt;/p&gt;




&lt;h2&gt;
  
  
  Testing the Failure Paths
&lt;/h2&gt;

&lt;p&gt;A demo that works once is not enough.&lt;/p&gt;

&lt;p&gt;I added tests around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;provider configuration&lt;/li&gt;
&lt;li&gt;AI routing&lt;/li&gt;
&lt;li&gt;fallback behavior&lt;/li&gt;
&lt;li&gt;JSON sanitization&lt;/li&gt;
&lt;li&gt;provider health&lt;/li&gt;
&lt;li&gt;capability detection&lt;/li&gt;
&lt;li&gt;speech-to-text routing&lt;/li&gt;
&lt;li&gt;health monitoring&lt;/li&gt;
&lt;li&gt;debug tooling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The repository currently reports:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;48 tests passing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The goal was to make failure predictable rather than invisible.&lt;/p&gt;

&lt;p&gt;For example, if a configured provider becomes unavailable, the orchestrator can move to the next available provider instead of forcing the entire explorer experience to stop immediately.&lt;/p&gt;




&lt;h2&gt;
  
  
  Design Was Part of the Experiment
&lt;/h2&gt;

&lt;p&gt;I deliberately avoided the usual "AI startup" visual language.&lt;/p&gt;

&lt;p&gt;No:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;glassmorphism&lt;/li&gt;
&lt;li&gt;purple-blue gradients&lt;/li&gt;
&lt;li&gt;floating AI brains&lt;/li&gt;
&lt;li&gt;giant dashboards&lt;/li&gt;
&lt;li&gt;excessive cards&lt;/li&gt;
&lt;li&gt;futuristic holograms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PALABRE uses a much more editorial direction:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#090909  → background
#141414  → surfaces
#242220  → borders
#FF6B35  → signal / accent
#F2EEE8  → primary text
#77736D  → muted text
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The typography combines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Syne&lt;/strong&gt; for display headlines&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fraunces&lt;/strong&gt; for editorial and oral-story moments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plus Jakarta Sans&lt;/strong&gt; for interface text&lt;/li&gt;
&lt;li&gt;a monospace style for technical metadata&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The design is intentionally restrained.&lt;/p&gt;

&lt;p&gt;The irony is important:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;an application about leaving the screen should not try to maximize your attention on the screen.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Built in Yaoundé, Designed to Travel
&lt;/h2&gt;

&lt;p&gt;PALABRE starts in &lt;strong&gt;Yaoundé, Cameroon&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That starting point matters to me because oral knowledge is not some abstract historical concept.&lt;/p&gt;

&lt;p&gt;It exists in ordinary conversations.&lt;/p&gt;

&lt;p&gt;In neighborhoods.&lt;/p&gt;

&lt;p&gt;At workshops.&lt;/p&gt;

&lt;p&gt;In markets.&lt;/p&gt;

&lt;p&gt;In families.&lt;/p&gt;

&lt;p&gt;On the street.&lt;/p&gt;

&lt;p&gt;The initial use case is local, but the model is broader.&lt;/p&gt;

&lt;p&gt;The same interaction could preserve community memory in another city, another country, or another language.&lt;/p&gt;

&lt;p&gt;The system is designed around a universal action:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;go meet someone and listen.&lt;/strong&gt;&lt;/p&gt;




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

&lt;p&gt;The biggest lesson was that the hard part of AI product development is often not the model call.&lt;/p&gt;

&lt;p&gt;It is everything surrounding the model.&lt;/p&gt;

&lt;p&gt;How do you capture audio reliably?&lt;/p&gt;

&lt;p&gt;What happens when the microphone fails?&lt;/p&gt;

&lt;p&gt;What happens when the model returns malformed JSON?&lt;/p&gt;

&lt;p&gt;What happens when an AI provider is unavailable?&lt;/p&gt;

&lt;p&gt;How do you keep the AI grounded in what a person actually said?&lt;/p&gt;

&lt;p&gt;How do you prevent a cultural archive from turning hallucinations into "facts"?&lt;/p&gt;

&lt;p&gt;And perhaps the most important question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What should the human do after the AI finishes?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For PALABRE, the answer is intentionally not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Keep chatting."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Go find someone else to talk to."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;PALABRE is an MVP, not a finished cultural infrastructure.&lt;/p&gt;

&lt;p&gt;The next iterations I want to explore are:&lt;/p&gt;

&lt;h3&gt;
  
  
  More local inference
&lt;/h3&gt;

&lt;p&gt;A complete local voice → open-weight model pipeline for environments with limited connectivity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Better multilingual support
&lt;/h3&gt;

&lt;p&gt;Especially for the linguistic reality of Cameroon, including French, English, Pidgin, Camfranglais and eventually more local languages where reliable speech data and models permit it.&lt;/p&gt;

&lt;h3&gt;
  
  
  A stronger oral archive
&lt;/h3&gt;

&lt;p&gt;Better browsing and discovery of collected stories while preserving the context in which they were recorded.&lt;/p&gt;

&lt;h3&gt;
  
  
  Better field interactions
&lt;/h3&gt;

&lt;p&gt;More meaningful ways to connect missions to real locations and communities without turning the product into a surveillance system.&lt;/p&gt;

&lt;p&gt;The larger idea is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;use open AI to strengthen human memory instead of replacing human interaction.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why PALABRE Fits "Touch Grass"
&lt;/h2&gt;

&lt;p&gt;The challenge asks us to build with open-source AI/open-weight AI in a way that gets people &lt;strong&gt;off the screen and into the world&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;PALABRE takes that literally.&lt;/p&gt;

&lt;p&gt;The best version of the product is the one where:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SCREEN TIME
     ↓
MISSION
     ↓
SCREEN OFF
     ↓
REAL CONVERSATION
     ↓
VOICE
     ↓
AI
     ↓
MEMORY
     ↓
NEXT MISSION
     ↓
SCREEN OFF AGAIN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The technology is important.&lt;/p&gt;

&lt;p&gt;But the technology is not the point.&lt;/p&gt;

&lt;p&gt;The point is the person standing outside the application.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try PALABRE
&lt;/h2&gt;

&lt;p&gt;🌍 &lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://palabre.onrender.com" rel="noopener noreferrer"&gt;palabre.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 &lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;a href="https://github.com/kiddsaut07/palabre" rel="noopener noreferrer"&gt;github.com/kiddsaut07/palabre&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PALABRE is open source under the Apache-2.0 license.&lt;/p&gt;

&lt;p&gt;Try the mission.&lt;/p&gt;

&lt;p&gt;Then do the part the application cannot do for you:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;put your phone down.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go talk to someone.&lt;/p&gt;

&lt;p&gt;Listen.&lt;/p&gt;

&lt;p&gt;Come back.&lt;/p&gt;

&lt;p&gt;Bring a story with you.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;We are entering an era where AI can generate almost anything on demand.&lt;/p&gt;

&lt;p&gt;Maybe that makes the things AI cannot generate for us even more valuable.&lt;/p&gt;

&lt;p&gt;A person's memory.&lt;/p&gt;

&lt;p&gt;A voice.&lt;/p&gt;

&lt;p&gt;A neighborhood story.&lt;/p&gt;

&lt;p&gt;A lesson passed from one human being to another.&lt;/p&gt;

&lt;p&gt;PALABRE is my small experiment in using AI not to replace that interaction, but to &lt;strong&gt;send us back toward it.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Your phone knows the internet.&lt;br&gt;
Your neighborhood knows the stories.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;🌍 &lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://palabre.onrender.com" rel="noopener noreferrer"&gt;https://palabre.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/kiddsaut07/palabre" rel="noopener noreferrer"&gt;https://github.com/kiddsaut07/palabre&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  AI Assistance Disclosure
&lt;/h3&gt;

&lt;p&gt;I used AI tools during development and while drafting and refining this article. I reviewed the final version and kept the technical claims grounded in the actual PALABRE repository and implementation.&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #hf26challenge #Hacktoberfest #OpenSource #AI #TouchGrass #Render
&lt;/h1&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flvdzanu9994m2l53m3hz.jpeg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flvdzanu9994m2l53m3hz.jpeg" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

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