<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[CuriousEngineer's Substack]]></title><description><![CDATA[My personal Substack]]></description><link>https://verycuriousengineer.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!SQxU!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c6b45-3e71-4398-b306-f33fb99bcb0f_144x144.png</url><title>CuriousEngineer&apos;s Substack</title><link>https://verycuriousengineer.substack.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 24 Apr 2026 05:21:22 GMT</lastBuildDate><atom:link href="https://verycuriousengineer.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[CuriousEngineer]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[verycuriousengineer@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[verycuriousengineer@substack.com]]></itunes:email><itunes:name><![CDATA[VeryCuriousEngineer]]></itunes:name></itunes:owner><itunes:author><![CDATA[VeryCuriousEngineer]]></itunes:author><googleplay:owner><![CDATA[verycuriousengineer@substack.com]]></googleplay:owner><googleplay:email><![CDATA[verycuriousengineer@substack.com]]></googleplay:email><googleplay:author><![CDATA[VeryCuriousEngineer]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[A Stream Deck You Talk To — Voice-Control Your Computer in Under a Second ]]></title><description><![CDATA[StreamVoice turns "open Figma," "deploy," or "close tab" into automated workflows. Free trial, high accuracy, safety first, on-device option. No memorizing forty shortcuts. Mac today, Windows soon.]]></description><link>https://verycuriousengineer.substack.com/p/a-stream-deck-you-talk-to-voice-control</link><guid isPermaLink="false">https://verycuriousengineer.substack.com/p/a-stream-deck-you-talk-to-voice-control</guid><dc:creator><![CDATA[VeryCuriousEngineer]]></dc:creator><pubDate>Mon, 06 Apr 2026 21:09:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!n1mb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e325664-d910-4172-9c1a-8d2980104749_2326x1282.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!n1mb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e325664-d910-4172-9c1a-8d2980104749_2326x1282.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n1mb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e325664-d910-4172-9c1a-8d2980104749_2326x1282.png 424w, https://substackcdn.com/image/fetch/$s_!n1mb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e325664-d910-4172-9c1a-8d2980104749_2326x1282.png 848w, https://substackcdn.com/image/fetch/$s_!n1mb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e325664-d910-4172-9c1a-8d2980104749_2326x1282.png 1272w, https://substackcdn.com/image/fetch/$s_!n1mb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e325664-d910-4172-9c1a-8d2980104749_2326x1282.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!n1mb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e325664-d910-4172-9c1a-8d2980104749_2326x1282.png" width="2326" height="1282" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e325664-d910-4172-9c1a-8d2980104749_2326x1282.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1282,&quot;width&quot;:2326,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:209490,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://verycuriousengineer.substack.com/i/193399983?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6843d6c6-39d1-468f-9e0b-cb7979c2658c_2350x1300.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!n1mb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e325664-d910-4172-9c1a-8d2980104749_2326x1282.png 424w, https://substackcdn.com/image/fetch/$s_!n1mb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e325664-d910-4172-9c1a-8d2980104749_2326x1282.png 848w, https://substackcdn.com/image/fetch/$s_!n1mb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e325664-d910-4172-9c1a-8d2980104749_2326x1282.png 1272w, https://substackcdn.com/image/fetch/$s_!n1mb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e325664-d910-4172-9c1a-8d2980104749_2326x1282.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you&#8217;ve ever bought a Stream Deck, you know the appeal: one button, one action, no thinking. The downside? It&#8217;s fifteen physical keys on your desk and you still have to look at it.</p><p>StreamVoice is the same idea, minus the hardware. You hold a hotkey, say what you want, and it fires the same keystrokes, scripts, and shell commands a Stream Deck would &#8212; with effectively unlimited &#8220;buttons,&#8221; because each one is just a phrase you make up.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://verycuriousengineer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading CuriousEngineer's Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>What It Does</h2><p>Press your hotkey from anywhere, speak, release. Your machine runs the action almost instantly. Builtin commands like &#8220;close tab&#8221; or &#8220;copy&#8221; run locally with zero network round-trips, and your own custom mappings &#8212; &#8220;deploy,&#8221; &#8220;deep focus,&#8221; &#8220;open the dashboard&#8221; &#8212; runs much faster too and in some cases with zero network costs.</p><p>Under the hood it&#8217;s tiered for speed:</p><ul><li><p><strong>Builtin</strong> &#8212; Dozens of common actions: copy, paste, scroll, tab and window management, media keys. Instant.</p></li><li><p><strong>Custom Mapping</strong> &#8212; Your own phrases mapped to keystrokes, scripts, URLs, automation scripts (AppleScript on Mac), or shell commands. Instant.</p></li><li><p><strong>Cache</strong> &#8212; Previously resolved phrases, served from local memory.</p></li><li><p><strong>AI</strong> &#8212; Novel commands resolved by a language model on the server, only when nothing local matches.</p></li></ul><h2>Why It&#8217;s Different</h2><ul><li><p><strong>A Stream Deck with infinite buttons</strong> &#8212; Define as many voice mappings as you want in the Automation tab. Each one binds one or more trigger phrases to a chain of actions: keyboard shortcuts, AppleScript, shell commands, opening URLs, or scripts from the reusable Script Library.</p></li><li><p><strong>AI Autonomy slider</strong> &#8212; A real safety dial: Off (only builtins + exact mappings), Mappings Only (AI may fuzzy-match &#8220;ship it&#8221; to your &#8220;deploy&#8221; mapping but cannot invent new actions), Restricted (AI only acts in categories you allow), or Full. Predictable when you want it, smart when you don&#8217;t.</p></li><li><p><strong>On-device transcription option</strong> &#8212; On Mac, pick Apple&#8217;s built-in Speech Recognition as your STT provider and your audio never leaves the laptop. No cloud, no API key, fully offline. Or stick with the hosted Whisper option for maximum accuracy &#8212; switchable anytime in Settings.</p></li><li><p><strong>Honest about the network</strong> &#8212; When you&#8217;re using the hosted STT or the AI resolver, those run on <a href="https://www.streamvoice.ai/">streamvoice.ai</a>&#8217;s server with API keys kept server-side so you don&#8217;t manage them. Builtins, custom mappings, cached commands, and on-device STT run entirely on your machine with zero network calls &#8212; which for most workflows is the majority of what you say.</p></li><li><p><strong>Customizable hotkey</strong> &#8212; A sensible default ships out of the box, but you can rebind it to any combo. Push-to-talk (hold to record) or toggle mode (press twice) &#8212; your call.</p></li><li><p><strong>Push-to-talk, not always-listening</strong> &#8212; No wake word, no mic constantly hot. The mic only opens while you&#8217;re holding the key.</p></li><li><p><strong>Confirm before execute</strong> &#8212; Optional system dialog shows the resolved actions before they fire. Great while you&#8217;re tuning new mappings.</p></li><li><p><strong>Local-first storage</strong> &#8212; Mappings, scripts, command history, and settings all live in a local SQLite DB. Nothing about your automations leaves your machine.</p></li><li><p><strong>Cross-platform</strong> &#8212; macOS is shipping today, signed and notarized. Windows support is on the way &#8212; same hotkey, same mappings, same workflow.</p></li><li><p><strong>Free trial, real subscription</strong> &#8212; Install app and use it, see if it sticks before you pay.</p></li></ul><h2>Who It&#8217;s For</h2><p>Stream Deck owners who want more buttons. Developers tired of memorizing every IDE shortcut. Writers and designers who context-switch between five apps a day. Anyone whose hands are full &#8212; coffee, baby, mouse &#8212; and who&#8217;d rather just <em>say</em> the thing.</p><h2>Try It Now</h2><p>Head to <a href="https://www.streamvoice.ai/">streamvoice.ai</a>, sign up, and download the Mac build. Drag to Applications, grant mic + accessibility, sign in from the app, and press your hotkey. You&#8217;ll be talking to your computer in under a minute. Windows users &#8212; sign up anyway and you&#8217;ll be the first to know when the build drops.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://verycuriousengineer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading CuriousEngineer's Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Stop Doing Bill Math — VoiceSplitr Splits It For You]]></title><description><![CDATA[The iOS app that turns a photo of your receipt into a fair split in seconds]]></description><link>https://verycuriousengineer.substack.com/p/stop-doing-bill-math-voicesplitr</link><guid isPermaLink="false">https://verycuriousengineer.substack.com/p/stop-doing-bill-math-voicesplitr</guid><dc:creator><![CDATA[VeryCuriousEngineer]]></dc:creator><pubDate>Thu, 19 Mar 2026 21:43:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SQxU!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c6b45-3e71-4398-b306-f33fb99bcb0f_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You&#8217;re at dinner with friends. The check arrives. Someone pulls out a calculator. Someone else squints at the receipt trying to remember what they ordered. Ten minutes later, you&#8217;re still arguing about who had the extra side.</p><p><strong>VoiceSplitr fixes this.</strong></p><h3>How It Works</h3><p><strong>1. Snap a photo of the receipt.</strong> VoiceSplitr uses AI to read every line item &#8212; names, quantities, prices &#8212; automatically. No manual entry.</p><p><strong>2. Review and edit.</strong> See exactly what the AI parsed. Prices wrong? Tap to fix them. The subtotal updates live. You can pinch-to-zoom on the receipt image to double-check anything.</p><p><strong>3. Assign items to people &#8212; your way.</strong> You have two options:</p><ul><li><p><strong>Voice input:</strong> Just say who had what. <em>&#8220;Sarah had the pasta and we split the appetizer.&#8221;</em> Natural language. No forms.</p></li><li><p><strong>Manual assignment:</strong> Type in everyone&#8217;s names and check off who had what from the item list. Simple, visual, no talking required.</p></li></ul><p><strong>4. Get the split.</strong> Tax and tip are divided proportionally based on what each person ordered. No more &#8220;let&#8217;s just split it evenly&#8221; when someone only had a salad.</p><h3>The Details That Matter</h3><ul><li><p><strong>Prices are line totals</strong> &#8212; exactly what&#8217;s printed on your receipt. No confusing per-unit math.</p></li><li><p><strong>Tax and tip scale fairly</strong> &#8212; the person who ordered the steak pays a proportionally larger share of tax and tip than the person who had water.</p></li><li><p><strong>Rounding is handled</strong> &#8212; no missing pennies. The math always adds up to the exact total.</p></li><li><p><strong>Unassigned items get split equally</strong> &#8212; forgot to assign the bread basket? It&#8217;s automatically shared among everyone.</p></li><li><p><strong>Edit everything</strong> &#8212; rename people, add or remove them, reassign items, all before finalizing.</p></li></ul><h3>Why Not Just Venmo Request?</h3><p>Venmo tells you <em>how much</em> to request. It doesn&#8217;t tell you <em>what</em> to request. VoiceSplitr does the hard part &#8212; figuring out the fair number &#8212; so you can send the right amount with confidence.</p><h3>Who It&#8217;s For</h3><ul><li><p>The friend who always ends up doing the math</p></li><li><p>Groups that eat out together regularly</p></li><li><p>Anyone who&#8217;s ever overpaid on a &#8220;just split it evenly&#8221; check</p></li><li><p>People who want fairness without awkwardness</p></li></ul><h3>Try It</h3><p>VoiceSplitr is free on iOS. Snap, speak (or tap), split, done.</p><p>Download on the <a href="https://apps.apple.com/us/app/voicesplitr/id6760597558">AppStore</a></p>]]></content:encoded></item><item><title><![CDATA[Introducing TelePrompt AI]]></title><description><![CDATA[A smart teleprompter and speech coach for iOS]]></description><link>https://verycuriousengineer.substack.com/p/introducing-teleprompt-ai</link><guid isPermaLink="false">https://verycuriousengineer.substack.com/p/introducing-teleprompt-ai</guid><dc:creator><![CDATA[VeryCuriousEngineer]]></dc:creator><pubDate>Thu, 05 Mar 2026 03:17:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SQxU!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c6b45-3e71-4398-b306-f33fb99bcb0f_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most people don&#8217;t practice their speeches. They write something, maybe read it over once, and then wing it. The result? Rushed pacing, filler words everywhere, and zero confidence behind the podium.</p><p>I built TelePrompt AI to fix that &#8212; an app that helps you go from a handful of talking points to a polished, practiced speech.</p><h3>How it works</h3><p>The workflow is simple:</p><ol><li><p><strong>Enter your talking points.</strong> Just the key ideas &#8212; a few bullet points about what you want to say.</p></li><li><p><strong>Pick a style.</strong> Formal, casual, motivational &#8212; whatever fits your audience.</p></li><li><p><strong>Set your target duration.</strong> Two minutes? Five? Ten? The AI tailors the length.</p></li><li><p><strong>Generate.</strong> The app writes a complete speech from your input, ready to edit.</p></li><li><p><strong>Practice.</strong> Read it on the built-in teleprompter while the app listens, tracks, and coaches you in real time.</p></li></ol><h3>The teleprompter that follows you</h3><p>TelePrompt AI isn&#8217;t a dumb auto-scrolling screen. It uses on-device speech recognition to track where you are in your speech and highlights the current word as you speak. If you pause to take a breath or ad-lib a line, the teleprompter waits. You never lose your place.</p><h3>Live coaching while you speak</h3><p>While you practice, a coaching engine runs in the background analyzing your delivery. It tracks four things in real time:</p><ul><li><p><strong>Words per minute</strong> &#8212; Are you rushing or dragging? A live WPM gauge tells you, and if your pacing drifts too far from target, you&#8217;ll see a gentle &#8220;Slow down&#8221; or &#8220;Pick up the pace&#8221; alert.</p></li><li><p><strong>Filler words</strong> &#8212; Every &#8220;um,&#8221; &#8220;uh,&#8221; &#8220;like,&#8221; and &#8220;you know&#8221; gets counted. You&#8217;ll see the total tick up as you go. It&#8217;s a surprisingly effective way to break the habit.</p></li><li><p><strong>Energy</strong> &#8212; The app measures vocal energy from your audio input. Low energy? It nudges you to project more.</p></li><li><p><strong>Progress</strong> &#8212; A progress bar shows how far through the speech you are, plus a percentage and word count.</p></li></ul><p>These stats appear in a non-intrusive bar at the bottom of the screen while coaching alerts slide in from the top. When things are going well, you get positive reinforcement (&#8221;Good pace!&#8221;). When they&#8217;re not, the feedback is constructive, not judgmental.</p><h3>Session summaries and progress tracking</h3><p>After each practice session, you get a detailed breakdown:</p><ul><li><p><strong>Overall score</strong> &#8212; A single number that captures your performance.</p></li><li><p><strong>Pace analysis</strong> &#8212; Average WPM vs. your target, with an assessment of whether you were too fast, too slow, or on point.</p></li><li><p><strong>Filler word count</strong> &#8212; How many you used and which ones.</p></li><li><p><strong>Energy score</strong> &#8212; How dynamic your delivery was.</p></li><li><p><strong>Clarity score</strong> &#8212; How clearly you spoke.</p></li></ul><p>Over time, the Progress tab shows your improvement with charts and trends. The app also generates personalized suggestions based on patterns it notices across your sessions.</p><h3>Choose your AI</h3><p>TelePrompt AI gives you four options for speech generation:</p><ul><li><p><strong>Apple Intelligence</strong> &#8212; Runs entirely on-device. No data leaves your phone. Requires a compatible device with iOS 18+.</p></li><li><p><strong>Claude (Anthropic)</strong> &#8212; High-quality generation via Anthropic&#8217;s API. You provide your own API key.</p></li><li><p><strong>OpenAI (GPT-4)</strong> &#8212; Generation via OpenAI&#8217;s API. Bring your own key.</p></li><li><p><strong>Offline mode</strong> &#8212; Basic on-device generation that works without internet.</p></li></ul><p>Pro users can also customize the AI prompts to personalize how speeches are generated &#8212; useful if you have a specific speaking style or audience in mind.</p><h3>Privacy by design</h3><p>Your voice never leaves your device. All speech recognition happens on-device using Apple&#8217;s Speech framework. Audio recordings from practice sessions are stored locally and never uploaded anywhere.</p><p>When you use a third-party AI provider for speech generation, the app asks for your explicit consent before sending any data. It tells you exactly what will be shared (your title, talking points, style, and duration) and what won&#8217;t (your voice, recordings, and personal information). You can revoke consent at any time.</p><h3>The tech</h3><p>Built entirely in SwiftUI with SwiftData for local persistence. API keys are stored in the iOS Keychain. The coaching engine uses Combine for real-time reactive updates. Charts are rendered with Swift Charts.</p><h3>Try it</h3><p><a href="https://apps.apple.com/us/app/teleprompt-ai/id6759222849">TelePrompt AI</a> is available now on the App Store. Free users can create one speech. TelePrompt AI Pro unlocks unlimited speeches, custom AI prompts, and full access to all features.</p><p>If you&#8217;ve got a presentation, a wedding toast, or just want to get better at speaking &#8212; give it a try.</p>]]></content:encoded></item><item><title><![CDATA[I Built a Daily Weather Bot for My Group Chat — No Code, No App, Just iOS Shortcuts]]></title><description><![CDATA[A free, 2-minute setup that texts your friends whether to grab an umbrella every morning]]></description><link>https://verycuriousengineer.substack.com/p/i-built-a-daily-weather-bot-for-my</link><guid isPermaLink="false">https://verycuriousengineer.substack.com/p/i-built-a-daily-weather-bot-for-my</guid><dc:creator><![CDATA[VeryCuriousEngineer]]></dc:creator><pubDate>Tue, 03 Mar 2026 01:15:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SQxU!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c6b45-3e71-4398-b306-f33fb99bcb0f_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every morning my group chat gets a text: either &#8220;Grab an umbrella today&#8221; or &#8220;No umbrella needed.&#8221; Nobody asked for it. Everyone loves it.</p><p>No app. No server. No code. It runs entirely on iOS Shortcuts using a free weather API and takes about 2 minutes to set up.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://verycuriousengineer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading CuriousEngineer's Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Here&#8217;s how it works and how to build your own.</p><h2>The idea</h2><p>I wanted a bot in my group chat that checks the rain forecast every morning and texts the group if we need an umbrella. Simple.</p><p>I went down a rabbit hole &#8212; pypush for iMessage automation (broken), custom iOS apps (overkill), third-party automation tools (expensive). Then I realized iOS Shortcuts already does everything I need, for free, built into the phone.</p><h2>How it works</h2><p>Every morning at 7am, an automation on my phone:</p><ol><li><p>Calls a free weather API (Open-Meteo &#8212; no API key needed)</p></li><li><p>Checks if rain probability is above 30%</p></li><li><p>Texts my group chat the result</p></li></ol><p>That&#8217;s it. Runs even when the phone is locked. No app needs to be open.</p><h2>Get the shortcut</h2><p>I published the shortcut so you can install it directly:</p><p><a href="https://www.icloud.com/shortcuts/35888af910f1474b81c80bab754735ca">Download the Weather Bot shortcut</a></p><p>After installing, you&#8217;ll need to:</p><ul><li><p>Set the <strong>recipients</strong> to your group chat members</p></li><li><p>Optionally change the coordinates from New York (40.71, -74.01) to your city</p></li></ul><p>To find your city&#8217;s coordinates, Google &#8220;[your city] latitude longitude.&#8221;</p><h2>Set it to run daily</h2><p>Once the shortcut is installed:</p><ol><li><p>Open <strong>Shortcuts</strong> app &#8594; <strong>Automation</strong> tab</p></li><li><p>Tap <strong>+</strong> &#8594; <strong>Time of Day</strong></p></li><li><p>Set to <strong>7:00 AM</strong> (or whenever you wake up)</p></li><li><p>Set to <strong>Daily</strong></p></li><li><p>Turn on <strong>Run Immediately</strong></p></li><li><p>Choose <strong>Run Shortcut</strong> &#8594; select <strong>Weather Bot</strong></p></li></ol><p>Done. Every morning, your group chat gets a weather update.</p><h2>How I built it (step by step)</h2><p>The shortcut is 10 actions chained together. Each one feeds its output to the next, like a pipeline:</p><p><strong>1. URL</strong> &#8212; Points to the Open-Meteo forecast API</p><p><strong>2. Get Contents of URL</strong> &#8212; Fetches the weather JSON data</p><p><strong>3. Get Dictionary Value</strong> &#8212; Extracts the <code>daily</code> object</p><p><strong>4. Get Dictionary Value</strong> &#8212; Extracts <code>precipitation_probability_max</code></p><p><strong>5. Get Item from List</strong> &#8212; Gets today&#8217;s value (first item in the array)</p><p><strong>6. Number</strong> &#8212; Converts it to a number so we can compare it</p><p><strong>7. If greater than 30</strong> &#8212; Checks if rain chance is above 30%</p><p><strong>8. Send Message</strong> &#8212; &#8220;Grab an umbrella today&#8221;</p><p><strong>9. Otherwise</strong> &#8212; (if rain chance is 30% or below)</p><p><strong>10. Send Message</strong> &#8212; &#8220;No umbrella needed today&#8221;</p><p>The API is <strong>Open-Meteo</strong> &#8212; completely free, no signup, no API key. It returns precipitation probability as a percentage.</p><h2>What I tried before this</h2><p>Before landing on Shortcuts, I tried building this as a &#8220;real&#8221; bot:</p><ul><li><p><strong>pypush</strong> (Python iMessage library): Apple locked down the authentication endpoints after the Beeper Mini incident. Can&#8217;t register new devices anymore.</p></li><li><p><strong>Custom iOS app</strong>: iOS kills background apps aggressively. No reliable way to keep a local server running 24/7.</p></li><li><p><strong>Pushcut</strong> ($30/year): Works, but paying for something this simple felt wrong.</p></li></ul><p>Turns out the best tool was already on my phone.</p><h2>What&#8217;s next</h2><p>I&#8217;m working on a <code>!remind</code> command &#8212; someone texts &#8220;!remind in 30m check the oven&#8221; and the bot texts back a reminder 30 minutes later. That one uses a Message automation trigger instead of a time trigger.</p><p>If you build something with this, let me know. The whole point of a group chat bot is that your friends don&#8217;t know how easy it was.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://verycuriousengineer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading CuriousEngineer's Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Format Your App Store Screenshots in Seconds — Free, Private, No Sign-Up]]></title><description><![CDATA[A free browser-based tool that formats your screenshots for the App Store and Google Play &#8212; no uploads, no accounts, no hassle.]]></description><link>https://verycuriousengineer.substack.com/p/format-your-app-store-screenshots</link><guid isPermaLink="false">https://verycuriousengineer.substack.com/p/format-your-app-store-screenshots</guid><dc:creator><![CDATA[VeryCuriousEngineer]]></dc:creator><pubDate>Sat, 28 Feb 2026 21:24:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SQxU!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c6b45-3e71-4398-b306-f33fb99bcb0f_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;ve ever submitted an app to the App Store or Google Play, you know the pain: each device size needs screenshots at exact dimensions, and getting them right is tedious.</p><p><strong><a href="https://appstoreformatter.com/">App Store Screenshot Formatter</a></strong> makes it effortless.</p><h3>What It Does</h3><p>Drop in your screenshots and instantly get them formatted for every device size you need &#8212; iPhone, iPad, Apple Watch, Mac, and Android phones and tablets. No more fiddling with image editors or guessing pixel dimensions.</p><h3>Why It&#8217;s Different</h3><ul><li><p><strong>100% browser-based</strong> &#8212; Your images never leave your device. There&#8217;s no upload, no server processing, and no storage. Everything happens locally in your browser.</p></li><li><p><strong>Completely free</strong> &#8212; No sign-up, no watermarks, no usage limits.</p></li><li><p><strong>Supports all major platforms</strong> &#8212; Apple App Store (iPhone 6.9&#8221;, 6.7&#8221;, 6.5&#8221;, 6.1&#8221;, 5.5&#8221;, iPad, iPad Pro, Apple Watch, Mac) and Google Play (phone &amp; tablet).</p></li><li><p><strong>Batch processing</strong> &#8212; Format multiple screenshots at once and download them as a ZIP.</p></li><li><p><strong>Custom backgrounds</strong> &#8212; Add solid colors or gradients behind your screenshots for a polished, professional look.</p></li></ul><h3>Who It&#8217;s For</h3><p>Solo developers, indie studios, small teams &#8212; anyone who needs App Store-ready screenshots without paying for expensive design tools or subscriptions.</p><h3>Try It Now</h3><p>Head to <strong><a href="https://appstoreformatter.com/">appstoreformatter.com</a></strong> and have your screenshots ready in minutes. No account needed &#8212; just drag, drop, and download.</p>]]></content:encoded></item><item><title><![CDATA[Stop Drawing Circuits by Hand — Let AI Design Them for You]]></title><description><![CDATA[Introducing KeliCAD: AI-powered circuit design and simulation in your browser]]></description><link>https://verycuriousengineer.substack.com/p/stop-drawing-circuits-by-hand-let</link><guid isPermaLink="false">https://verycuriousengineer.substack.com/p/stop-drawing-circuits-by-hand-let</guid><dc:creator><![CDATA[VeryCuriousEngineer]]></dc:creator><pubDate>Sat, 28 Feb 2026 21:08:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SQxU!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c6b45-3e71-4398-b306-f33fb99bcb0f_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;ve ever spent hours wiring up a SPICE netlist only to realize you had a diode backwards, this is for you.</p><p><strong>KeliCAD</strong> is a web-based platform that lets you describe a circuit in plain English and get a working, simulatable SPICE netlist in seconds &#8212; powered by Claude AI.</p><h2>What can it do?</h2><p><strong>Describe it. Build it. Simulate it.</strong></p><p>Tell the AI what you want &#8212; &#8220;a low-pass filter with a 1kHz cutoff&#8221; or &#8220;a bridge rectifier for 10V DC output&#8221; &#8212; and KeliCAD generates a complete, ready-to-simulate circuit with correct component values, analysis commands, and output monitoring.</p><p><strong>Cloud simulation, no installs.</strong> Run ngspice simulations directly in your browser. Results render as interactive charts &#8212; transient, AC, and DC sweep analyses all supported. No local toolchain required.</p><p><strong>Local LTspice support.</strong> Prefer LTspice? The KeliCAD Agent desktop app connects your local LTspice installation to the web editor via WebSocket. Full simulation power, zero EULA headaches.</p><p><strong>Python signal generation.</strong> Need a custom waveform? Write Python code to generate arbitrary PWL signals, calculated component values, or noise profiles &#8212; and inject them directly into your netlist with <code>${VAR}</code> placeholders.</p><p><strong>AI that actually understands circuits.</strong> This isn&#8217;t a generic chatbot. KeliCAD&#8217;s AI knows diode polarity conventions, rectifier voltage drops, proper biasing, simulator-specific syntax differences, and when to use <code>.tran</code> vs <code>.ac</code> vs <code>.dc</code>. It explains its designs and can fix, improve, or optimize existing circuits on request.</p><p><strong>BOM generation.</strong> Export a bill of materials for your design &#8212; useful for moving from simulation to prototype.</p><h2>Who is this for?</h2><ul><li><p><strong>Students</strong> learning analog/digital electronics</p></li><li><p><strong>Hobbyists</strong> prototyping circuits without a full EDA suite</p></li><li><p><strong>Engineers</strong> who want to quickly validate an idea before opening a heavyweight tool</p></li><li><p><strong>Anyone</strong> who&#8217;s ever stared at a SPICE error message and wished someone would just fix it</p></li></ul><h2>Pricing</h2><p><strong>Free tier</strong> gets you started &#8212; 1 circuit, 50 AI generations/month, 200 simulations/month. <strong>Pro is $4.99/month</strong> with a 7-day free trial &#8212; unlimited circuits, unlimited AI, private designs, and BOM export.</p><h2>Try it now</h2><p>Go to <a href="https://kelicad.com/">kelicad.com</a> and describe your first circuit. No signup required to explore.</p><p>Circuit design shouldn&#8217;t be a barrier to building things. Let the AI handle the syntax &#8212; you focus on the ideas.</p>]]></content:encoded></item><item><title><![CDATA[How to Add AI Customer Support to Your iOS App in 10 Minutes]]></title><description><![CDATA[Stop answering the same support emails. Let AI handle it.]]></description><link>https://verycuriousengineer.substack.com/p/how-to-add-ai-customer-support-to</link><guid isPermaLink="false">https://verycuriousengineer.substack.com/p/how-to-add-ai-customer-support-to</guid><dc:creator><![CDATA[VeryCuriousEngineer]]></dc:creator><pubDate>Sat, 28 Feb 2026 15:20:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SQxU!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c6b45-3e71-4398-b306-f33fb99bcb0f_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;re an indie iOS developer or a small team, you know the pain: your app gets traction, and suddenly your inbox is flooded with the same questions over and over.</p><p>&#8220;How do I reset my password?&#8221;<br>&#8220;Does this work offline?&#8221;<br>&#8220;How do I cancel my subscription?&#8221;</p><p>You spend hours answering these instead of building features. You look into Zendesk or Intercom, but they&#8217;re built for enterprise &#8212; complex, expensive, and none of them have a native iOS SDK that doesn&#8217;t look like it was designed in 2015.</p><p>That&#8217;s why I built <strong>SupportKit</strong>.</p><h2>What is SupportKit?</h2><p>SupportKit is an AI-powered customer support SDK for iOS apps. You upload your FAQs and help docs to a dashboard, drop the SDK into your app, and your users get instant, accurate answers &#8212; powered by AI, grounded in your actual knowledge base.</p><p>No hallucinations. No generic chatbot nonsense. It only answers from the content you provide.</p><h2>The Integration is 3 Lines of Code</h2><p>I&#8217;m not exaggerating. Here&#8217;s the full setup:</p><pre><code><code>import SupportKit

// In your App init
SupportKit.configure(apiKey: "sk_live_...")

// Present the chat
.sheet(isPresented: $showChat) {
    SupportKit.chatView()
}
</code></code></pre><p>That&#8217;s it. You get a beautiful, native SwiftUI chat interface that supports dark mode, accessibility, and feels like it belongs in your app.</p><h2>How It Works</h2><ol><li><p><strong>Sign up</strong> at <a href="https://www.appsupportsdk.com/">appsupportsdk.com</a> and create an organization for your app</p></li><li><p><strong>Add your knowledge base</strong> &#8212; upload FAQs, help articles, troubleshooting guides</p></li><li><p><strong>Install via SPM</strong> &#8212; add the package in Xcode with one URL</p></li><li><p><strong>Configure and present</strong> &#8212; two lines of code and you&#8217;re live</p></li></ol><p>When a user asks a question, the AI searches your knowledge base and gives them an accurate, helpful answer instantly. If it can&#8217;t answer, it gracefully escalates to you.</p><h2>Why Not Just Use ChatGPT / Build It Yourself?</h2><p>You could wire up the OpenAI API yourself. I&#8217;ve done it. Here&#8217;s what you&#8217;ll spend your time on:</p><ul><li><p>Building a chat UI that doesn&#8217;t look terrible</p></li><li><p>Setting up RAG (retrieval-augmented generation) so the AI answers from your docs</p></li><li><p>Preventing hallucinations</p></li><li><p>Handling streaming responses</p></li><li><p>Building a dashboard to manage your knowledge base</p></li><li><p>Dealing with rate limits, error handling, retries</p></li><li><p>Making it work offline</p></li></ul><p>Or you could add SupportKit and ship the feature today.</p><h2>Pricing</h2><p>There&#8217;s a <strong>free tier</strong> &#8212; 100 AI conversations per month, no credit card required. That&#8217;s enough to try it out and see if it works for your app.</p><p>The <strong>Pro plan</strong> is $5/month with a 7-day free trial. Unlimited conversations, unlimited organizations, unlimited knowledge articles.</p><p>That&#8217;s less than the cost of one hour spent answering support emails.</p><h2>Try It</h2><p>Head to <a href="https://www.appsupportsdk.com/">appsupportsdk.com</a>, sign up, and you can have AI support in your app before lunch.</p><p>If you have questions or feedback, hit me up at the <a href="https://www.appsupportsdk.com/contact">contact page</a> or reply to this post.</p>]]></content:encoded></item><item><title><![CDATA[Coming soon]]></title><description><![CDATA[This is CuriousEngineer&#39;s Substack.]]></description><link>https://verycuriousengineer.substack.com/p/coming-soon</link><guid isPermaLink="false">https://verycuriousengineer.substack.com/p/coming-soon</guid><dc:creator><![CDATA[VeryCuriousEngineer]]></dc:creator><pubDate>Sat, 28 Feb 2026 15:16:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SQxU!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c6b45-3e71-4398-b306-f33fb99bcb0f_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is CuriousEngineer&#39;s Substack.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://verycuriousengineer.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://verycuriousengineer.substack.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item></channel></rss>