<?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: Air Drop</title>
    <description>The latest articles on DEV Community by Air Drop (@airdropcuan).</description>
    <link>https://dev.to/airdropcuan</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%2F4174957%2F44a47e93-35ad-480f-9b72-2b43b40b8052.png</url>
      <title>DEV Community: Air Drop</title>
      <link>https://dev.to/airdropcuan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/airdropcuan"/>
    <language>en</language>
    <item>
      <title>ListingMic Offline: A 30-Second Voice Pitch Becomes a Marketplace Listing, With No Cloud Bill</title>
      <dc:creator>Air Drop</dc:creator>
      <pubDate>Tue, 13 Oct 2026 04:21:35 +0000</pubDate>
      <link>https://dev.to/airdropcuan/listingmic-offline-a-30-second-voice-pitch-becomes-a-marketplace-listing-with-no-cloud-bill-hm0</link>
      <guid>https://dev.to/airdropcuan/listingmic-offline-a-30-second-voice-pitch-becomes-a-marketplace-listing-with-no-cloud-bill-hm0</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;The makers I know don't have a product problem. They have a listing problem.&lt;/p&gt;

&lt;p&gt;A friend who sells handmade bags can talk about a tote for ten minutes straight — the leather, the lining, why the pocket is exactly phone-sized. Then she opens the marketplace app, stares at the empty title field, and the listing takes another hour. Multiply that by a shelf of products and the "quick evening of listing" quietly becomes the job itself.&lt;/p&gt;

&lt;p&gt;So I built the tool she actually asked for, once I'd stopped suggesting things she didn't want.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ListingMic Offline&lt;/strong&gt; takes a short voice pitch — thirty seconds of you talking about the thing you're selling, recorded on your phone — and turns it into a listing draft on your own laptop:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It transcribes the pitch locally with the &lt;strong&gt;open-weight Whisper model&lt;/strong&gt;, through faster-whisper. Nothing is uploaded, ever. It forces offline mode in code.&lt;/li&gt;
&lt;li&gt;It pulls out the facts buyers actually search for: the price you mentioned, the condition, a category guess, colours, materials, feature sentences, and what you said about shipping.&lt;/li&gt;
&lt;li&gt;It writes it up as a Markdown draft: a suggested title in your own words, a facts box, feature bullets lifted from your pitch, and a short checklist to run through before the listing goes live.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No account, no subscription, no per-listing fee. You talk, it types, you check it and paste it.&lt;/p&gt;

&lt;p&gt;Who would pay for this? Honestly — the same person who currently pays with an hour per listing, or pays a cloud AI subscription and pastes her supplier prices into somebody else's server to save that hour. A one-off tool she owns, that runs in a workshop with patchy signal, is worth money to her in a way another SaaS dashboard just isn't. I haven't landed that first paying user yet, and I won't pretend otherwise in a submission post. What I can say is that the demo below is a real run, and the draft it produced is one I'd have been happy to start from.&lt;/p&gt;

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

&lt;p&gt;A spoken pitch went in — a handmade leather tote bag, described the way a seller actually describes it, price and shipping and all:&lt;/p&gt;

&lt;p&gt;The tool transcribed it locally, word for word, including the price as "$85", and produced this draft (unedited):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Suggested title&lt;/strong&gt;&lt;br&gt;
Handmade leather tote bag made by me and my small workshop&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Facts a buyer searches for&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Price mentioned: price is $85&lt;/li&gt;
&lt;li&gt;Condition: brand new&lt;/li&gt;
&lt;li&gt;Category guess: Bags &amp;amp; accessories&lt;/li&gt;
&lt;li&gt;Colours: brown, dark brown&lt;/li&gt;
&lt;li&gt;Materials: leather, full grain leather, cotton&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Feature bullets&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It is dark brown, full grain leather with a cotton lining and one inside pocket for a phone.&lt;/li&gt;
&lt;li&gt;It fits a 13 inch laptop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Shipping, as described&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The price is $85 and I can ship anywhere in the country in two to three days.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That full output is committed in this project as &lt;code&gt;demo-output.md&lt;/code&gt;, next to the sample pitch audio, so anyone can reproduce the run. The sample voice is synthetic, generated with a TTS voice, so the demo doesn't depend on my personal recordings — a real phone memo goes through exactly the same pipeline.&lt;/p&gt;

&lt;p&gt;One detail I like: the title is a bit clumsy, because Whisper heard "made by me and my small workshop" and the tool refused to tidy it into something the seller never said. That refusal is a feature, and I'll come back to it.&lt;/p&gt;

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

&lt;p&gt;The whole thing is one Python file, plus ffmpeg. The demo output above sits in the project as &lt;code&gt;demo-output.md&lt;/code&gt;, alongside the sample audio, so the run is reproducible end to end.&lt;/p&gt;

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

&lt;p&gt;Three steps, all local, deliberately boring:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Decode.&lt;/strong&gt; ffmpeg turns whatever the phone produced into 16 kHz mono WAV, which is what Whisper expects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transcribe.&lt;/strong&gt; faster-whisper runs Whisper's open weights on CPU (&lt;code&gt;int8&lt;/code&gt;, CTranslate2) from a local model folder. As in my Week 1 build, I feed the model the audio as a NumPy array of samples rather than a file path — it sidesteps a class of container-decoding errors that real phone files love to trigger.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extract.&lt;/strong&gt; The transcript is split into sentences and matched against small, explicit patterns and lists: a handful of price patterns, condition words, category keywords, colours, materials, feature hints, shipping phrases. No LLM at this step, on purpose.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last choice is the one people push back on, so let me defend it. A generative model writing your listing can invent a claim — a size you never said, a material you never used — and a seller who pastes it inherits the angry buyer and the return. ListingMic is not allowed to invent a price, or anything else. It files what you said, shows you the exact phrase it heard for the price, and puts "confirm the price you meant to say out loud" at the top of the checklist. For a tool someone might build a small business on, predictable beats clever.&lt;/p&gt;

&lt;p&gt;It runs on an ordinary laptop CPU. The pitch in the demo took well under a minute, start to finish, with no network involved at any point.&lt;/p&gt;

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

&lt;p&gt;Three reasons, and they're all commercial, which feels right for a Side Hustle week.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The margins test.&lt;/strong&gt; A cloud transcription or copywriting API charges per minute or per listing. For one listing, that's nothing. For a seller listing forty items a week on thin margins, it's a tax on every single sale, forever. An open-weight model running locally costs nothing per listing. That difference isn't a discount — it's whether the side hustle's numbers work at all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The privacy test, commercial edition.&lt;/strong&gt; A pitch isn't small talk. It contains your price, your stock ("I only made ten of these"), where you ship from, sometimes what you paid for materials. Sent to a cloud service, that's business intelligence leaving the building. With a local open model, there's no server in the story at all. My friend doesn't have to trust a privacy policy; she has to trust that her laptop is hers, which she already does.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The swap test.&lt;/strong&gt; Because Whisper's weights are open (MIT License), the tool isn't rented from anyone's roadmap. &lt;code&gt;small&lt;/code&gt; is today's sweet spot on a laptop CPU. If a better model, or a fine-tune for her language, turns up next year, it drops into the same slot. A side hustle built on an open model can't be re-priced out from under her — and I've watched enough API price changes to know that's not a theoretical risk.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest Limitations
&lt;/h2&gt;

&lt;p&gt;I'd rather show the seams than hide them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The extractor is &lt;strong&gt;heuristics, not understanding&lt;/strong&gt;. Short keyword lists, a few regexes. It will miss a category it doesn't know and it can mis-hear a price said too fast. The facts box shows the phrase it heard precisely so a human can catch that in seconds.&lt;/li&gt;
&lt;li&gt;The suggested title is your first product sentence, lightly cleaned. Searchable and honest, but nobody's copywriting award is in danger.&lt;/li&gt;
&lt;li&gt;One pitch in, one draft out. No photos, no posting to any marketplace. That boundary is deliberate: what goes live under a seller's name should be a decision the seller makes, not a script.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Price normalisation with a proper confirm step (spoken prices are the riskiest field in the draft, and they deserve the most care), output shapes matched to specific marketplaces — title limits and bullet counts differ — and keyword packs sellers can edit in a plain text file for their own market and language. Then the real test for a Side Hustle submission: putting it in front of that friend with the bags, watching her list a shelf of products with it, and finding out what she'd actually pay. I'll update this post with what she says, good or bad.&lt;/p&gt;

&lt;p&gt;Talking is easy for sellers. Typing the listing is the tax. With an open model on their own machine, that tax can just... stop being charged.&lt;/p&gt;

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

&lt;p&gt;&lt;em&gt;Category: Overall. Built with open-source/open-weight AI: Whisper (MIT) via faster-whisper (MIT), ffmpeg. No partner technology used.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>Trail Journal Offline: Field Notes That Transcribe Themselves Where There's No Signal</title>
      <dc:creator>Air Drop</dc:creator>
      <pubDate>Sat, 10 Oct 2026 09:21:59 +0000</pubDate>
      <link>https://dev.to/airdropcuan/trail-journal-offline-field-notes-that-transcribe-themselves-where-theres-no-signal-4gnp</link>
      <guid>https://dev.to/airdropcuan/trail-journal-offline-field-notes-that-transcribe-themselves-where-theres-no-signal-4gnp</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;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;The best field notes are spoken. When you're halfway up a ridge with binoculars in one hand and a deer in front of you, you don't type — you talk to your phone for twenty seconds and move on.&lt;/p&gt;

&lt;p&gt;The problem is what happens next. Those voice memos pile up, unsearchable and unwritten, and the cloud transcription services that could fix that all share one flaw: they need the internet. The places worth writing about — ridgelines, deep forest, river valleys, the far end of the garden in a storm — are exactly where the internet isn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trail Journal Offline&lt;/strong&gt; is a small command-line tool that turns a spoken field note into a written Markdown journal entry, entirely on your own machine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It transcribes the recording with the &lt;strong&gt;open-weight Whisper model&lt;/strong&gt;, running locally via faster-whisper.&lt;/li&gt;
&lt;li&gt;It then highlights the &lt;strong&gt;observation points&lt;/strong&gt; — sentences where you mentioned a creature, a place, or the weather — and files them into a tidy journal entry with the full transcript attached.&lt;/li&gt;
&lt;li&gt;No account. No upload. No signal required. The tool forces offline mode in code, so an accidental network fetch isn't just unlikely — it's impossible by construction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's built for hikers, birders, gardeners, rangers, and community scientists: anyone who observes things outdoors and would rather spend their attention on the deer than on a note-taking app.&lt;/p&gt;

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

&lt;p&gt;Here's a real, unedited run. A 26-second spoken note went in:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Field note, Saturday morning. I am hiking the ridge trail above the valley, and the weather is clear and sunny with a light breeze. Near the creek I saw two deer drinking, and a red squirrel ran across the path in front of me. I heard an eagle calling somewhere over the forest. In the meadow there were butterflies everywhere, and the river below is loud after the rain last night. No signal up here at all, so this note stays on my phone until I get home."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And a journal entry came out — word-for-word transcript, plus the observation points the tool pulled from it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creatures &amp;amp; wildlife&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Near the creek I saw two deer drinking, and a red squirrel ran across the path in front of me.&lt;/li&gt;
&lt;li&gt;I heard an eagle calling somewhere over the forest.&lt;/li&gt;
&lt;li&gt;In the meadow there were butterflies everywhere, and the river below is loud after the rain last night.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Weather &amp;amp; conditions&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I am hiking the ridge trail above the valley, and the weather is clear and sunny with a light breeze.&lt;/li&gt;
&lt;li&gt;In the meadow there were butterflies everywhere, and the river below is loud after the rain last night.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That output is committed in this project as &lt;code&gt;demo-output.md&lt;/code&gt;, alongside the sample audio, so anyone can reproduce the run exactly. (The sample voice is synthetic, generated with a TTS voice, purely so the demo doesn't depend on my personal recordings — feed it a real phone memo and the pipeline is identical.)&lt;/p&gt;

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

&lt;p&gt;The whole thing is one Python file, plus ffmpeg, as described in How I Built It below. The demo output described above is committed in this project as &lt;code&gt;demo-output.md&lt;/code&gt;, alongside the sample audio, so anyone can reproduce the run exactly.&lt;/p&gt;

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

&lt;p&gt;The pipeline is deliberately boring — three steps, all local:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Decode.&lt;/strong&gt; ffmpeg converts whatever the phone produced (mp3, m4a, wav) into 16 kHz mono WAV, which is what Whisper eats natively.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transcribe.&lt;/strong&gt; faster-whisper runs Whisper's open weights on CPU (&lt;code&gt;int8&lt;/code&gt;, CTranslate2) from a local model folder. One implementation detail worth sharing: I feed the model the audio as a NumPy array of samples rather than a file path. In my environment, the audio-decoding library underneath threw a &lt;code&gt;TypeError&lt;/code&gt; on some files; reading the WAV samples directly sidestepped the whole class of problem and made the tool more robust in the field, where "the file is weird" is normal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Highlight.&lt;/strong&gt; The transcript is split into sentences, and each sentence is matched against three small, explicit keyword lists — creatures, places, weather. No ML here, on purpose: the lists are plain Python that any birder can extend with their local species in seconds.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The whole thing is one Python file, plus ffmpeg. It ran the demo transcription on an ordinary laptop CPU in about thirteen seconds for a 26-second note.&lt;/p&gt;

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

&lt;p&gt;This project only exists because Whisper's weights are open (MIT License) — and I don't mean that as a slogan. Three concrete things depend on it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The backcountry test.&lt;/strong&gt; A cloud API fails the moment the trail leaves coverage, which is precisely where the observations happen. An open model runs on the device that's already in your pocket or backpack. "Touch grass" and "works offline" turn out to be the same requirement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The privacy test.&lt;/strong&gt; Field notes can be sensitive: nesting sites of rare birds, the location of a vulnerable species, your own movements through wild places. With a local open model, no audio, transcript, or accidental location hint ever leaves the device. There's no server to trust because there's no server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The swap test.&lt;/strong&gt; Because the weights are open, the tool isn't married to one model. &lt;code&gt;small&lt;/code&gt; is today's sweet spot for a laptop CPU; &lt;code&gt;large-v3&lt;/code&gt;, a fine-tune for another language, or a future model drops into the same slot without touching the tool. Open weights turn a product into a platform anyone can improve — including the birders who'll add species my keyword lists have never heard of.&lt;/p&gt;

&lt;p&gt;And the quiet fourth one: &lt;strong&gt;cost&lt;/strong&gt;. Rangers, volunteers, and community science projects record hundreds of notes a season. Zero per-minute billing isn't a discount; it's the difference between a tool they can use and one they can't.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limitations
&lt;/h2&gt;

&lt;p&gt;This is an MVP, and I'd rather show the seams:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The observation extractor is &lt;strong&gt;keyword heuristics, not NLP&lt;/strong&gt;. It's transparent and predictable, but crude — it cheerfully files "Field note, Saturday morning" under &lt;em&gt;Places&lt;/em&gt; because "field" is on the list. It demonstrates the idea honestly; a small local NER model is the obvious upgrade.&lt;/li&gt;
&lt;li&gt;Wind noise still trips up the &lt;code&gt;small&lt;/code&gt; model. A voice-activity-detection pass is next on the list.&lt;/li&gt;
&lt;li&gt;One file in, one journal out. No live recording, no database, no app — yet.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;Batch mode for a whole season of notes with a species index, region-specific keyword packs (a birder's list is not a gardener's list), and — keeping the offline faith — an optional summary step using a small open-weight language model, still entirely on-device.&lt;/p&gt;

&lt;p&gt;The trail doesn't have Wi-Fi. With open models, it doesn't need any.&lt;/p&gt;

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

&lt;p&gt;&lt;em&gt;Category: Overall. Built with open-source/open-weight AI: Whisper (MIT) via faster-whisper (MIT), ffmpeg. No partner technology used.&lt;/em&gt;&lt;/p&gt;

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