<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Matt Cretzman</title>
    <description>The latest articles on Forem by Matt Cretzman (@mattcretzman).</description>
    <link>https://forem.com/mattcretzman</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3785891%2Fec823b82-38ed-45ac-a7da-de8d282ef154.jpg</url>
      <title>Forem: Matt Cretzman</title>
      <link>https://forem.com/mattcretzman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mattcretzman"/>
    <language>en</language>
    <item>
      <title>Karpathy Just Described the Future of Knowledge Delivery. We Already Built It.</title>
      <dc:creator>Matt Cretzman</dc:creator>
      <pubDate>Sat, 04 Apr 2026 17:24:20 +0000</pubDate>
      <link>https://forem.com/mattcretzman/karpathy-just-described-the-future-of-knowledge-delivery-we-already-built-it-3f0m</link>
      <guid>https://forem.com/mattcretzman/karpathy-just-described-the-future-of-knowledge-delivery-we-already-built-it-3f0m</guid>
      <description>&lt;p&gt;Yesterday, Andrej Karpathy posted a breakdown of how he's using LLMs to build "LLM Knowledge Bases." Raw documents go into a directory. An LLM compiles them into structured, interlinked markdown. The LLM maintains the knowledge base. Health checks catch inconsistencies. Queries get filed back. Knowledge compounds.&lt;/p&gt;

&lt;p&gt;Then he said: "I think there is room here for an incredible new product instead of a hacky collection of scripts."&lt;/p&gt;

&lt;p&gt;I've been building that product. It's called &lt;a href="https://skillrefinery.ai" rel="noopener noreferrer"&gt;Skill Refinery&lt;/a&gt;. Here's the technical story of what it takes to go from personal wiki to production platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  Same Thesis, Different Architecture
&lt;/h2&gt;

&lt;p&gt;Karpathy's insight: LLMs are knowledge compilers, not answer machines. Use them to process raw source material into structured knowledge they can reason over.&lt;/p&gt;

&lt;p&gt;Our extraction engine does exactly this. Books, courses, training recordings, coaching frameworks, technical manuals — any format. The engine processes raw expert IP into structured skill cards. But going from Obsidian on one machine to a multi-tenant, multi-platform production system introduces five architectural problems a personal wiki never faces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 1: IP Protection at the Architecture Level
&lt;/h2&gt;

&lt;p&gt;Karpathy's wiki contains public research. Nobody's livelihood depends on it. When you extract knowledge from published authors or proprietary enterprise IP, the architecture has to enforce protection by design.&lt;/p&gt;

&lt;p&gt;Our approach: source documents are processed by the extraction engine to produce skill cards. After extraction, source files are done — they never re-enter an AI context window during delivery. Skill cards enter context transiently during MCP calls but are excluded from model training under enterprise API contracts.&lt;/p&gt;

&lt;p&gt;This isn't a policy. It's an architectural constraint. The system physically cannot serve source material after extraction is complete.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 2: Multi-Platform Delivery via MCP
&lt;/h2&gt;

&lt;p&gt;Karpathy's output is markdown files in Obsidian. For a product, knowledge needs to reach users wherever they work.&lt;/p&gt;

&lt;p&gt;We deliver through MCP (Model Context Protocol) — the open standard supported by Anthropic, OpenAI, and Microsoft. One extraction produces skill cards that work inside Claude, ChatGPT, and Microsoft Copilot. The MCP server handles authentication, skill resolution, and access control per request.&lt;/p&gt;

&lt;p&gt;Internal members authenticate with &lt;code&gt;sk_org_&lt;/code&gt; prefixed key-based identity resolution. External clients use static &lt;code&gt;client_&lt;/code&gt; prefixed keys. No OAuth sessions needed for internal delivery — the key resolves identity and permissions on every call.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 3: Multi-Tenant Access Control
&lt;/h2&gt;

&lt;p&gt;One user, one wiki, no permissions needed. An enterprise with seven business units, each with different knowledge scopes, needs granular access.&lt;/p&gt;

&lt;p&gt;We just shipped division-level skill visibility. Business unit assignments on skill cards control which teams see which knowledge. Changes take effect on the next MCP call — no reconnect required. The middleware resolves the requesting user's organization and division, then filters the skill response accordingly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 4: Monetization Infrastructure
&lt;/h2&gt;

&lt;p&gt;Expert knowledge has value. Karpathy's system is free because it's personal. A platform needs payment rails.&lt;/p&gt;

&lt;p&gt;We use Stripe Connect with the platform as merchant of record. Experts set pricing on Creator Storefronts. Subscribers pay through the platform. Revenue splits are automated. The skill card itself carries the monetization metadata — tier, pricing, access level — so the MCP server can enforce paid vs. free at the protocol level.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 5: Extraction That Scales
&lt;/h2&gt;

&lt;p&gt;Karpathy manually feeds documents into his &lt;code&gt;raw/&lt;/code&gt; directory and prompts the LLM to compile. That works for 100 articles.&lt;/p&gt;

&lt;p&gt;At 50 experts with hundreds of skill cards each, you need a pipeline. Our extraction engine processes source material in under 10 minutes per source. The pipeline identifies frameworks, decision trees, and expert reasoning patterns, then structures them into modular skill cards with metadata for classification, audience tagging, and tier assignment.&lt;/p&gt;

&lt;p&gt;The extraction methodology itself is institutional knowledge — refined through processing 125+ books from a single expert. Each extraction improves the pipeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Category
&lt;/h2&gt;

&lt;p&gt;I coined the term Knowledge Delivery System (KDS) months ago. The LMS manages courses. The KMS manages documents. The KDS delivers answers.&lt;/p&gt;

&lt;p&gt;Karpathy just validated the thesis from the research side. The technical community is going to build toward this whether we exist or not. The question is whether the infrastructure is purpose-built or cobbled together from scripts.&lt;/p&gt;

&lt;p&gt;If you're interested in the architecture: &lt;a href="https://skillrefinery.ai" rel="noopener noreferrer"&gt;skillrefinery.ai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Full KDS framework: &lt;a href="https://blog.mattcretzman.com/the-lms-is-dead-long-live-the-kds" rel="noopener noreferrer"&gt;The LMS Is Dead. Long Live the KDS.&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://blog.mattcretzman.com/karpathy-just-described-the-future-of-knowledge-delivery" rel="noopener noreferrer"&gt;blog.mattcretzman.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About the author:&lt;/strong&gt; Matt Cretzman builds AI agent systems through &lt;a href="https://stormbreakerdigital.com" rel="noopener noreferrer"&gt;Stormbreaker Digital&lt;/a&gt;. Ventures include &lt;a href="https://skillrefinery.ai" rel="noopener noreferrer"&gt;Skill Refinery&lt;/a&gt;. Writing at &lt;a href="https://mattcretzman.com" rel="noopener noreferrer"&gt;mattcretzman.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>knowledgemanagement</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Building In-Context Messaging Into MCP Tool Responses</title>
      <dc:creator>Matt Cretzman</dc:creator>
      <pubDate>Sun, 22 Mar 2026 23:20:24 +0000</pubDate>
      <link>https://forem.com/mattcretzman/building-in-context-messaging-into-mcp-tool-responses-40kb</link>
      <guid>https://forem.com/mattcretzman/building-in-context-messaging-into-mcp-tool-responses-40kb</guid>
      <description>&lt;p&gt;MCP (Model Context Protocol) is pull-based. The client — Claude, ChatGPT via custom Actions, Copilot — initiates every request. There's no server-push mechanism.&lt;/p&gt;

&lt;p&gt;That means if you want to deliver a message to a user inside their AI tool, you can't push it. You need to wait for them to show up.&lt;/p&gt;

&lt;p&gt;At &lt;a href="https://skillrefinery.ai" rel="noopener noreferrer"&gt;Skill Refinery&lt;/a&gt;, we built a message queue layer that does exactly this. When an expert broadcasts a message, it enters a queue. The next time a subscriber's AI tool makes any tool call to our MCP server, pending messages are appended to the response.&lt;/p&gt;

&lt;p&gt;From the subscriber's side, it feels like getting a notification the moment they open their AI. Here's the architecture pattern and the design decisions that make it work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Knowledge platforms are passive. Subscribers ask, the platform answers. Experts have no way to reach their subscribers except through saturated external channels — email (121 messages per day for the average worker), push notifications (46 per day per smartphone user), or social media (algorithm-dependent reach).&lt;/p&gt;

&lt;p&gt;If your MCP server is already handling tool calls from subscribers, you already have a delivery channel. You just need to build the plumbing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Architecture Pattern
&lt;/h2&gt;

&lt;p&gt;Four components:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Message queue table.&lt;/strong&gt; Stores pending broadcasts with sender info, message type, content, expiration timestamp, and a &lt;code&gt;dismissable&lt;/code&gt; boolean.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Delivery tracking table.&lt;/strong&gt; Records which subscribers received which messages, keyed by a SHA-256 hash of the subscriber's MCP key — never the raw key. Tracks delivery count per subscriber-message pair.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Middleware layer.&lt;/strong&gt; Sits between the tool call handler and the response. On every tool call: query pending messages for this subscriber, filter by rate limits and delivery caps, append qualifying messages to the response payload, insert delivery records in batch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Subscriber control tool.&lt;/strong&gt; A dedicated MCP tool that lets subscribers manage their preferences through natural language — dismiss a message, opt out of a sender, opt out of a message type, or nuclear opt-out of all broadcasts.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Design Decisions
&lt;/h2&gt;

&lt;p&gt;These aren't technical afterthoughts. They define the product experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Knowledge answer first, messages after.&lt;/strong&gt; The subscriber asked a question. Answer it. Then append messages. Messages never hijack the primary interaction. This is the foundational principle — flip the order and you destroy the core product experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pull-based delivery, not push.&lt;/strong&gt; True server-push doesn't exist in MCP today. Rather than waiting for Streamable HTTP transport to mature and for client implementations to support server-initiated notifications, build on what works now. The infrastructure is the same either way — when push arrives, you flip the delivery channel without rebuilding the queue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Max 2 messages per tool call.&lt;/strong&gt; Regardless of how many senders are active for a given subscriber. A subscriber with 10 expert subscriptions doesn't get hit with 10 messages at once.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Daily cap per subscriber.&lt;/strong&gt; Even across multiple sessions and multiple tool calls, a subscriber sees a maximum number of unique messages in a 24-hour window. The system protects the experience at the subscriber level, not the sender level.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Auto-dismiss after 3 deliveries.&lt;/strong&gt; If a subscriber has seen the same message across three separate tool calls and hasn't engaged (clicked, responded, or explicitly dismissed), the message is automatically marked dismissed. This prevents stale-message pile-up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SHA-256 hashed keys for delivery tracking.&lt;/strong&gt; Delivery records need to associate messages with subscribers, but storing raw MCP keys in a delivery table is a security risk. Hash the key, use the hash for lookup, never persist the raw value.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cross-Platform Rendering
&lt;/h2&gt;

&lt;p&gt;This is the biggest unknown. Claude, ChatGPT, and Copilot all handle appended text in tool responses differently. Some render it cleanly. Some truncate. Some prioritize the "answer" portion and collapse additional content.&lt;/p&gt;

&lt;p&gt;The approach: keep messages plain text, self-contained, and short. No markdown formatting assumptions. No HTML. Each message should be legible as a standalone paragraph even if the AI wraps it differently than expected.&lt;/p&gt;

&lt;p&gt;As a fallback, build a dedicated &lt;code&gt;check_messages&lt;/code&gt; tool. If a platform consistently drops appended content, subscribers on that platform can explicitly ask their AI to check for pending messages. It's a less elegant experience but a reliable backup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fan-Out at Scale
&lt;/h2&gt;

&lt;p&gt;An org admin broadcasting to 16,000 members needs to insert 16,000 delivery records. Doing this synchronously on the broadcast call would time out.&lt;/p&gt;

&lt;p&gt;The approach: batch inserts of 500 rows per transaction. Queue the fan-out asynchronously. Analytics updates (delivery counts, open tracking) happen in background jobs that never block the tool response.&lt;/p&gt;

&lt;p&gt;The tool call response path must stay fast. Any work that doesn't directly affect the subscriber's current response goes async.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rate Limiting as Product Design
&lt;/h2&gt;

&lt;p&gt;Rate limits on this system aren't about server protection. They're product design decisions that define the subscriber experience.&lt;/p&gt;

&lt;p&gt;Experts get a limited number of sends per day. Org admins get more, because internal operational messages have higher urgency. The per-subscriber caps (messages per tool call, messages per day) override sender limits — the subscriber experience is always the ceiling.&lt;/p&gt;

&lt;p&gt;Getting these numbers wrong in either direction is a product failure, not a technical one. Too restrictive and senders can't reach their audience. Too permissive and subscribers opt out of everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Message Types and Expiration
&lt;/h2&gt;

&lt;p&gt;Different message types have different lifespans. Announcements expire quickly — they're time-sensitive by nature. Compliance or action-required messages persist longer. Content notifications sit in between.&lt;/p&gt;

&lt;p&gt;Org compliance messages support a &lt;code&gt;dismissable: false&lt;/code&gt; flag. The message keeps delivering until its expiration date, regardless of how many times the subscriber has seen it. This directly supports use cases where a company needs confirmation that staff received a critical update.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Reusable Pattern
&lt;/h2&gt;

&lt;p&gt;This pattern generalizes to any MCP server:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add a message queue table to your database&lt;/li&gt;
&lt;li&gt;Build middleware that checks for pending messages on every tool call&lt;/li&gt;
&lt;li&gt;Append qualifying messages to the response, after the primary content&lt;/li&gt;
&lt;li&gt;Track deliveries with hashed subscriber keys&lt;/li&gt;
&lt;li&gt;Expose a subscriber-control tool for preference management&lt;/li&gt;
&lt;li&gt;Rate limit at the subscriber level, not just the sender level&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The infrastructure is lightweight — four database tables, a middleware function, and one additional MCP tool. No external services required.&lt;/p&gt;

&lt;p&gt;The harder part isn't the code. It's the product decisions: what are the right rate limits? When does a message become stale? How do you balance sender value against subscriber trust? Those decisions are the product.&lt;/p&gt;

&lt;p&gt;If you're building MCP servers and delivering knowledge to subscribers, you already have the delivery channel. The message queue just makes it a communication channel.&lt;/p&gt;

&lt;p&gt;We're building this at &lt;a href="https://skillrefinery.ai" rel="noopener noreferrer"&gt;Skill Refinery&lt;/a&gt; right now. If you're an expert, coach, or consultant who wants to deliver knowledge — and soon, messages — through your subscribers' AI tools, that's where you set up. If you're building in the MCP space and want to talk integration or partnership, &lt;a href="https://mattcretzman.com/schedule-meeting" rel="noopener noreferrer"&gt;grab time on my calendar&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;I'm Matt Cretzman. I build AI agent systems through &lt;a href="https://stormbreakerdigital.com" rel="noopener noreferrer"&gt;Stormbreaker Digital&lt;/a&gt;. Ventures include &lt;a href="https://skillrefinery.ai" rel="noopener noreferrer"&gt;Skill Refinery&lt;/a&gt;, &lt;a href="https://textevidence.ai" rel="noopener noreferrer"&gt;TextEvidence&lt;/a&gt;, &lt;a href="https://leadstormai.com" rel="noopener noreferrer"&gt;LeadStorm AI&lt;/a&gt;. Writing at &lt;a href="https://mattcretzman.com" rel="noopener noreferrer"&gt;mattcretzman.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://blog.mattcretzman.com/what-if-chatgpt-could-text-you-back" rel="noopener noreferrer"&gt;blog.mattcretzman.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>82% of B2B Buyers Think Your Reps Are Unprepared. Here's the AI Stack That Fixes It.</title>
      <dc:creator>Matt Cretzman</dc:creator>
      <pubDate>Sat, 07 Mar 2026 22:28:39 +0000</pubDate>
      <link>https://forem.com/mattcretzman/82-of-b2b-buyers-think-your-reps-are-unprepared-heres-the-ai-stack-that-fixes-it-3aeg</link>
      <guid>https://forem.com/mattcretzman/82-of-b2b-buyers-think-your-reps-are-unprepared-heres-the-ai-stack-that-fixes-it-3aeg</guid>
      <description>&lt;p&gt;Your reps are walking into calls underprepared. Not because they're lazy — because doing pre-call research right takes one to two hours minimum. Most reps don't have that time, so they do ten minutes on LinkedIn and call it done.&lt;/p&gt;

&lt;p&gt;The traditional alternatives are expensive: a dedicated research analyst runs $50–$150 an hour. Enterprise sales intelligence platforms run $15,000–$40,000 a year. Most companies don't invest there. So the gap stays wide, call after call.&lt;/p&gt;

&lt;p&gt;Here's the question worth sitting with: how much more revenue could your sales team close if every rep had a full AI-powered intelligence briefing before every call — delivered in four minutes?&lt;/p&gt;

&lt;p&gt;That's not hypothetical. The system exists. Here's the full stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem Is Bigger Than Most Teams Admit
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;82% of B2B decision-makers believe sales reps are often unprepared for their calls.&lt;/strong&gt; Only 16% of reps met quota in 2024, down from 53% in 2012. And 63% of B2B losses happen before needs assessment — in discovery, before the rep has even gotten to pitch.&lt;/p&gt;

&lt;p&gt;The intelligence gap is where deals go to die.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the System Delivers
&lt;/h2&gt;

&lt;p&gt;A structured PDF briefing in the rep's inbox in under four minutes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Company overview, subsidiary map, tech stack analysis&lt;/li&gt;
&lt;li&gt;Contact verification with CRM conflict detection (Apollo vs HubSpot cross-reference)&lt;/li&gt;
&lt;li&gt;Org map and decision-maker hypothesis&lt;/li&gt;
&lt;li&gt;Commercial triggers — facility expansions, leadership changes, regulatory filings&lt;/li&gt;
&lt;li&gt;Hiring signal analysis and what it signals about operational priorities&lt;/li&gt;
&lt;li&gt;Verbatim, account-specific discovery questions (not generic frameworks)&lt;/li&gt;
&lt;li&gt;Objection prep for this account type&lt;/li&gt;
&lt;li&gt;CRM data quality flags and pre-meeting action items&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Clay&lt;/strong&gt; — Enrichment layer. Pulls from Apollo and Hunter.io, runs waterfalls, flags conflicts between data sources. When Apollo says "Director of Planning and Inventory" and your CRM says "Plant Manager," Clay surfaces that conflict before it costs you the meeting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;n8n&lt;/strong&gt; — Orchestration engine. Workflow logic, data routing, error handling when a source returns null versus bad data. The connective tissue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exa&lt;/strong&gt; — Real-time web intelligence. Recent news, press releases, company announcements from the last 90 days. Multiple source confirmation before treating something as a verified trigger.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Perplexity&lt;/strong&gt; — Synthesized company research. The 30-minute analyst writeup, automated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Regulatory databases&lt;/strong&gt; — FDA enforcement records pulled programmatically via the public API. USDA/FSIS flagged as manual action item when dairy or meat processing is involved.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude&lt;/strong&gt; — Synthesis layer. Not formatting — analysis. Every enriched source feeds a structured prompt that produces account-specific discovery questions, objection prep, and interpretive analysis of hiring patterns and tech stack signals. This is the layer that turns data into a usable briefing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HubSpot&lt;/strong&gt; — Existing relationship context. CRM data cross-referenced against external sources. CRM data is almost always partially wrong — the system catches that before the rep walks in.&lt;/p&gt;

&lt;h2&gt;
  
  
  The On-Demand Layer
&lt;/h2&gt;

&lt;p&gt;Initial version: automated briefings for scheduled HubSpot meetings. Useful, but it missed all the calls where reps were most likely to wing it — cold outreach, inbound callbacks, trade show follow-ups.&lt;/p&gt;

&lt;p&gt;The on-demand fix: a form. Company name, domain, contact name. Submit. Four minutes later the briefing is in the inbox.&lt;/p&gt;

&lt;p&gt;This is the architectural decision that changes actual field behavior. Automated-only systems improve preparation for meetings reps were already planning carefully. On-demand changes preparation for the calls where reps were going to skip it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Form-to-Workflow Trigger
&lt;/h2&gt;

&lt;p&gt;One thing worth noting for anyone building similar systems: the form field names must match the downstream workflow exactly.&lt;/p&gt;

&lt;p&gt;When I wired the on-demand form to the n8n pipeline, the product spec listed five field names that had changed during development of the underlying workflow. None of those mismatches would have thrown an error. The system would have run, the PDF would have delivered, and every data-dependent section would have populated with &lt;code&gt;[DATA GAP]&lt;/code&gt; because all the queries were empty strings.&lt;/p&gt;

&lt;p&gt;The failure mode that looks like success is the most dangerous one.&lt;/p&gt;

&lt;p&gt;Before writing the submission handler, I pulled the live workflow and read the actual field names from the source. Two minutes. That's the check.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Numbers
&lt;/h2&gt;

&lt;p&gt;Personalized outreach gets &lt;strong&gt;32% higher response rates&lt;/strong&gt; than generic. &lt;strong&gt;52% of sales teams using AI tools report 10–25% pipeline growth.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Direct math: average B2B win rate is 21%. A 5-point improvement from better pre-call intelligence = 24% relative increase in closed revenue from the same pipeline. On a $5M target, that's $1.2M without a single new lead.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation
&lt;/h2&gt;

&lt;p&gt;Stack is off the shelf. The value is in the wiring and the synthesis prompt architecture — getting Claude to generate verbatim, account-specific questions rather than generic frameworks requires prompt iteration.&lt;/p&gt;

&lt;p&gt;If you want to build this, the architecture decisions are all here. If you want it installed, reach out.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://mattcretzman.com" rel="noopener noreferrer"&gt;mattcretzman.com&lt;/a&gt; | &lt;a href="https://stormbreakerdigital.com" rel="noopener noreferrer"&gt;Stormbreaker Digital&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://blog.mattcretzman.com/ai-sales-briefing-on-demand" rel="noopener noreferrer"&gt;blog.mattcretzman.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About the author:&lt;/strong&gt; Matt Cretzman builds AI agent systems through &lt;a href="https://stormbreakerdigital.com" rel="noopener noreferrer"&gt;Stormbreaker Digital&lt;/a&gt;. Ventures include &lt;a href="https://textevidence.ai" rel="noopener noreferrer"&gt;TextEvidence&lt;/a&gt;, &lt;a href="https://leadstormai.com" rel="noopener noreferrer"&gt;LeadStorm AI&lt;/a&gt;, &lt;a href="https://skillrefinery.ai" rel="noopener noreferrer"&gt;Skill Refinery&lt;/a&gt;. Writing at &lt;a href="https://mattcretzman.com" rel="noopener noreferrer"&gt;mattcretzman.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>n8n</category>
      <category>clay</category>
    </item>
    <item>
      <title>CigarSnap: From $1.08 Reddit Scrape to Live App in 48 Hours</title>
      <dc:creator>Matt Cretzman</dc:creator>
      <pubDate>Sat, 07 Mar 2026 20:32:18 +0000</pubDate>
      <link>https://forem.com/mattcretzman/cigarsnap-from-108-reddit-scrape-to-live-app-in-48-hours-35if</link>
      <guid>https://forem.com/mattcretzman/cigarsnap-from-108-reddit-scrape-to-live-app-in-48-hours-35if</guid>
      <description>&lt;p&gt;On December 27, 2024, I heard Greg Isenberg break down mobile apps generating $50K+ in monthly recurring revenue using AI. By the time the episode ended, I had a thesis. Seventy-two hours later, I had a production app with 15+ features.&lt;/p&gt;

&lt;p&gt;This is how CigarSnap went from a podcast moment to a live platform — and why the real money isn't where you'd expect.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Isenberg Framework: Five Criteria Before a Single Line of Code
&lt;/h2&gt;

&lt;p&gt;I don't build things because they sound cool. I build things that survive contact with a framework. Isenberg's five-criteria filter for AI mobile app opportunities is how I evaluate ideas before writing anything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The audience actively spends money.&lt;/li&gt;
&lt;li&gt;A repeating problem exists.&lt;/li&gt;
&lt;li&gt;The solution involves photo or video input.&lt;/li&gt;
&lt;li&gt;Accuracy matters enough to pay for.&lt;/li&gt;
&lt;li&gt;Existing tools are weak.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cigars scored on all five.&lt;/p&gt;

&lt;p&gt;Premium cigar enthusiasts — mostly men, 35 to 65, high disposable income — already spend hundreds on their hobby. They buy cigars repeatedly, visit lounges regularly, and want to know what they're smoking. A photo-based identification tool solves a real, recurring problem. And the existing apps? Manual databases where you type in what you're smoking. No AI. No image recognition. Desktop-first designs from a decade ago.&lt;/p&gt;

&lt;p&gt;The market was begging for something modern.&lt;/p&gt;

&lt;h2&gt;
  
  
  $1.08 for 3,522 Qualified Leads
&lt;/h2&gt;

&lt;p&gt;Before building anything, I needed to know the audience was real and reachable. So I ran an Apify scrape on Reddit's r/cigars community — 221,000+ members, actively posting, deeply engaged.&lt;/p&gt;

&lt;p&gt;Total cost: $1.08.&lt;/p&gt;

&lt;p&gt;That scrape returned 3,522 qualified users. Real people talking about cigars daily, recommending brands, sharing humidor photos, reviewing blends. Not emails purchased from a list broker. Actual enthusiasts who'd raised their hand by participating in the community.&lt;/p&gt;

&lt;p&gt;Market validation doesn't have to be expensive. It has to be honest.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 48-Hour Sprint
&lt;/h2&gt;

&lt;p&gt;With the framework validated and the audience confirmed, I went to Replit Agent and started building.&lt;/p&gt;

&lt;p&gt;I wrote approximately 12 complete, copy-paste-ready prompts — each one a full feature specification with database schemas, API routes, UI components, and integration points. Not vague descriptions. Production-ready specs that an AI coding assistant could execute without guessing.&lt;/p&gt;

&lt;p&gt;In 48 hours, I shipped:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI cigar identification via Claude Vision API&lt;/li&gt;
&lt;li&gt;A digital humidor with collection tracking&lt;/li&gt;
&lt;li&gt;A smoking journal with the "Three Thirds" flavor education system — the app calculates smoke time based on ring gauge and length, then prompts tasting notes at 33% and 66% to teach flavor transitions&lt;/li&gt;
&lt;li&gt;A social community feed&lt;/li&gt;
&lt;li&gt;A lounge finder with 138+ Texas venues mapped&lt;/li&gt;
&lt;li&gt;A gamification system with 47 achievement badges across 10 categories&lt;/li&gt;
&lt;li&gt;Daily leaderboards with a "Scan of the Day" algorithm&lt;/li&gt;
&lt;li&gt;Shareable cards for social media&lt;/li&gt;
&lt;li&gt;A referral engine&lt;/li&gt;
&lt;li&gt;RevenueCat subscription integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's not a prototype. That's a product.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don Carlos: The AI Concierge Who Remembers Your Humidor
&lt;/h2&gt;

&lt;p&gt;Most AI integrations in consumer apps feel like an afterthought — a chatbot bolted onto the side. I wanted something different.&lt;/p&gt;

&lt;p&gt;Don Carlos is a branded AI persona powered by Claude Sonnet. Named after the Arturo Fuente Don Carlos line, he's a distinguished gentleman who greets you with Spanish time-of-day greetings — "Buenas tardes, señor" — and has full visibility into your humidor and tasting history.&lt;/p&gt;

&lt;p&gt;He doesn't just answer questions. He knows what you've smoked, what you rated highly, and what's sitting in your humidor right now. He suggests pairings, identifies cigars from photos when direct scanning fails, and delivers recommendations with butler-like hospitality: "Welcome home, sir. Your collection awaits."&lt;/p&gt;

&lt;p&gt;The goal was to make Don Carlos feel like a knowledgeable friend at a premium lounge — warm, opinionated, genuinely helpful. Not a generic chatbot. A character.&lt;/p&gt;

&lt;p&gt;Branded AI personas are the future of consumer apps. If your AI layer doesn't have a personality, you're leaving engagement on the table.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Trojan Horse: Why the Consumer App Isn't the Business
&lt;/h2&gt;

&lt;p&gt;Here's where most people get the CigarSnap story wrong. They think it's a consumer app. It is — on the surface. But the consumer app is the tip of the spear.&lt;/p&gt;

&lt;p&gt;The real revenue comes from B2B lounge partnerships.&lt;/p&gt;

&lt;p&gt;Think about it from a lounge owner's perspective. CigarSnap's lounge finder is driving foot traffic to their venue. Users are checking in, scanning cigars, leaving reviews, sharing experiences. That data — which lounges are getting traffic, what cigars people are smoking there, when they visit — is incredibly valuable to the lounge operator.&lt;/p&gt;

&lt;p&gt;I built a Partner Portal where lounge owners can claim their profile, manage inventory, post offers to nearby users, and access analytics. Pricing tiers run from free to $149/month.&lt;/p&gt;

&lt;p&gt;The consumer app creates the audience. The B2B portal monetizes it. I call it the Trojan Horse Strategy — the free consumer experience generates the foot traffic data that lounges can't ignore, converting free listings into paid subscriptions at $49 to $149 per month.&lt;/p&gt;

&lt;p&gt;The consumer app is the moat. The B2B revenue is the castle.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Self-Building Asset Library
&lt;/h2&gt;

&lt;p&gt;One more thing that makes CigarSnap defensible: when a user scans a cigar that doesn't have an image in the database, the system calls Google's Gemini to generate a photorealistic product photo. Studio lighting, wood background, accurate band details. That image gets stored and served to every future user who scans the same cigar.&lt;/p&gt;

&lt;p&gt;The community is unknowingly building a premium image library that would cost thousands to replicate manually. Cost to us: approximately $20 to $80 per 1,000 photorealistic images.&lt;/p&gt;

&lt;p&gt;Every scan makes the platform better. Every user adds to an asset that competitors would need significant investment to match.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current State and What's Next
&lt;/h2&gt;

&lt;p&gt;The iOS app has been submitted to the Apple App Store. The web platform is live at web.cigarsnap.app. The B2B Partner Portal is operational. Go-to-market is underway with Reddit community targeting, influencer outreach, and a DFW hyper-local launch playbook.&lt;/p&gt;

&lt;p&gt;Total elapsed time from podcast inspiration to production platform: under 30 days. Solo founder.&lt;/p&gt;

&lt;p&gt;The web platform also runs on Stripe instead of Apple's in-app purchases — which means capturing 97% of subscription revenue versus 70% through the App Store. That's not a minor detail when you're building a real business.&lt;/p&gt;

&lt;p&gt;CigarSnap started as a hypothesis tested against a framework, validated with a $1.08 scrape, and built in a 48-hour sprint. The consumer app is live. The B2B model is ready. And every user who scans a cigar makes the whole thing more valuable.&lt;/p&gt;

&lt;p&gt;That's the kind of flywheel I like building.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://mattcretzman.com/blog/cigarsnap-from-reddit-scrape-to-live-app-48-hours.html" rel="noopener noreferrer"&gt;mattcretzman.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>startup</category>
      <category>saas</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>I Built a 15-Feature AI App in 48 Hours as a Solo Founder. Here's the Exact Method.</title>
      <dc:creator>Matt Cretzman</dc:creator>
      <pubDate>Mon, 23 Feb 2026 06:12:25 +0000</pubDate>
      <link>https://forem.com/mattcretzman/i-built-a-15-feature-ai-app-in-48-hours-as-a-solo-founder-heres-the-exact-method-4hdi</link>
      <guid>https://forem.com/mattcretzman/i-built-a-15-feature-ai-app-in-48-hours-as-a-solo-founder-heres-the-exact-method-4hdi</guid>
      <description>&lt;p&gt;On December 27, 2024, I heard Greg Isenberg break down AI mobile apps generating $50K+ MRR on his podcast. He laid out five criteria for picking a market: (1) audience actively spends money, (2) repeating problem, (3) solution involves photo/video input, (4) accuracy matters enough to pay for, (5) existing tools are weak.&lt;/p&gt;

&lt;p&gt;I immediately thought: cigars.&lt;/p&gt;

&lt;p&gt;$57 billion global market. 5–7% annual growth. The top competitor — Cigar Scanner, 150K users — had been pulled from the App Store. Cigar Dojo had 29K members on a desktop-first platform with zero AI. Every existing app was basically a manual database where you type in what you're smoking.&lt;/p&gt;

&lt;p&gt;By December 28, I had a functional app with AI-powered cigar identification, a digital humidor, tasting journal, smoke session tracker, social feed, achievement badges, subscription billing, and a referral engine. Fifteen major features. Forty-eight hours. One person.&lt;/p&gt;

&lt;p&gt;This post breaks down exactly how I did it — the architecture, the methodology, and the prompt engineering approach that made the speed possible.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mobile:&lt;/strong&gt; React Native / Expo (iOS + Android)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web:&lt;/strong&gt; Next.js 14&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Supabase (PostgreSQL + Row Level Security + Auth + Storage)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI — Cigar Identification:&lt;/strong&gt; Claude Vision API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI — Concierge Chat:&lt;/strong&gt; Claude Sonnet&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI — Image Generation:&lt;/strong&gt; Gemini / Imagen 3.0&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payments:&lt;/strong&gt; RevenueCat (mobile), Stripe (web)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Development:&lt;/strong&gt; Replit Agent + Claude for architecture/prompts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One database. One API. Three interfaces (mobile app, web app, B2B partner portal).&lt;/p&gt;




&lt;h2&gt;
  
  
  The Method: AI-Prompt Sequencing
&lt;/h2&gt;

&lt;p&gt;Here's the thing that made 48 hours possible. I didn't build features one by one. I didn't even write code directly for the first several hours.&lt;/p&gt;

&lt;p&gt;Instead, I used Claude to architect the entire product — market validation, feature specs for every screen, database schema, monetization model, and go-to-market strategy. That gave me a comprehensive blueprint.&lt;/p&gt;

&lt;p&gt;Then came the part that changed how I build everything: &lt;strong&gt;I had Claude design a series of complete, sequenced prompts that I could feed directly to Replit Agent.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each prompt was a self-contained module. Not "build me a social feed." Each one included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database schema (exact tables, columns, types, RLS policies)&lt;/li&gt;
&lt;li&gt;API routes (endpoints, request/response shapes, error handling)&lt;/li&gt;
&lt;li&gt;UI components (screens, state management, user flows)&lt;/li&gt;
&lt;li&gt;Integration points with previously built modules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Approximately 12 prompts. Ordered by dependency — authentication first, then core data models, then features that depend on those models, then features that depend on other features.&lt;/p&gt;

&lt;p&gt;The key insight: &lt;strong&gt;each prompt assumed the previous ones were already implemented.&lt;/strong&gt; So prompt #7 (badges system) could reference the database tables created in prompt #3 (humidor) and prompt #5 (smoke sessions) without re-specifying them.&lt;/p&gt;

&lt;p&gt;I fed each prompt to Replit Agent in sequence, tested, fixed edge cases, and moved to the next one.&lt;/p&gt;




&lt;h2&gt;
  
  
  The AI Integration Layer
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Cigar Identification (Claude Vision)
&lt;/h3&gt;

&lt;p&gt;The core feature. User photographs a cigar band. The image goes to Claude Vision with a structured prompt requesting JSON output:&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;"brand"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Arturo Fuente"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"product_line"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Don Carlos"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"vitola"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Robusto"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"country_of_origin"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Dominican Republic"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"wrapper_type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Cameroon"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"ring_gauge"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"length_inches"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;5.25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"strength"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Medium-Full"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"price_range_single"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$12-18"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"price_range_box"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$180-240"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.92&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;Confidence scores determine the UX path. High confidence → show results directly. Lower confidence → suggest manual verification or route to the AI concierge for a second opinion.&lt;/p&gt;

&lt;h3&gt;
  
  
  Don Carlos AI Concierge (Claude Sonnet)
&lt;/h3&gt;

&lt;p&gt;This is where it gets interesting. Don Carlos is a branded AI persona — a distinguished gentleman with deep cigar knowledge, warmth, and cultural sophistication. But the real power is context injection.&lt;/p&gt;

&lt;p&gt;Every conversation receives:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The user's complete humidor inventory&lt;/li&gt;
&lt;li&gt;Their tasting history and ratings&lt;/li&gt;
&lt;li&gt;Previous smoke sessions&lt;/li&gt;
&lt;li&gt;Their stated flavor preferences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So when a user asks "what should I smoke tonight?" Don Carlos isn't giving generic recommendations. He's looking at what's actually in your humidor, what you've rated highly, and what you haven't tried yet.&lt;/p&gt;

&lt;p&gt;He can also identify cigars from photos when direct scanning is inconclusive, suggest drink pairings based on flavor profiles, and maintain conversation persistence across sessions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Self-Building Image Library (Gemini/Imagen 3.0)
&lt;/h3&gt;

&lt;p&gt;This one's my favorite piece of architecture. When a scan identifies a cigar that doesn't have an existing image in the database, the system generates a photorealistic product photo using Gemini.&lt;/p&gt;

&lt;p&gt;The prompt specifies studio lighting, dark wood background, accurate band details, and elegant composition. The image gets stored in Supabase Storage and cached for all future users who scan the same cigar.&lt;/p&gt;

&lt;p&gt;Users unknowingly build a premium image database. Cost: roughly $20–80 per 1,000 photorealistic images. Competitors would need to photograph thousands of cigars manually to replicate what the community builds for us passively.&lt;/p&gt;

&lt;p&gt;A generation logging table tracks requests, success rates, costs, and provides a premium gating option — free users see existing images, premium users trigger generation for cigars not yet in the library.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Feature That Came From a Dumb Observation
&lt;/h2&gt;

&lt;p&gt;Here's a product insight that had nothing to do with AI.&lt;/p&gt;

&lt;p&gt;Cigar smoking is a 45–90 minute ritual where people are literally just sitting there. That's an insanely long potential session time that most consumer apps would kill for.&lt;/p&gt;

&lt;p&gt;This led to &lt;strong&gt;Smoke Session Mode&lt;/strong&gt; — a companion experience with a real-time animated burning cigar that progresses as time passes, complete with ash buildup and smoke wisps.&lt;/p&gt;

&lt;p&gt;The session timer isn't arbitrary. It uses a formula:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;baseTime = ringGauge × lengthInches / 30
adjustedTime = baseTime × strengthMultiplier
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So a thick, long, full-bodied cigar gets a longer estimated session than a slim mild one. Personalized to the exact cigar you scanned.&lt;/p&gt;

&lt;p&gt;At 33% and 66% through the session, the app prompts you with &lt;strong&gt;Three Thirds&lt;/strong&gt; flavor education — explaining how the flavor profile shifts as you smoke through the first, second, and third portions. Most cigar smokers don't know this. Now they learn it in real time, while smoking.&lt;/p&gt;

&lt;p&gt;Ambient mode dims the UI to show just the burning cigar and timer. Haptic feedback fires at phase transitions. Session history tracks everything with ratings and notes.&lt;/p&gt;

&lt;p&gt;No competitor has anything like this. And it emerged from a simple observation about session length, not from a feature spec.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Gamification Layer
&lt;/h2&gt;

&lt;p&gt;47 badges across 10 categories. This sounds excessive until you understand the retention strategy.&lt;/p&gt;

&lt;p&gt;The design principle: &lt;strong&gt;every celebration should feel earned.&lt;/strong&gt; Confetti for logging in is cringe. Confetti for breaking a 30-day smoking streak? That hits different.&lt;/p&gt;

&lt;p&gt;Badge categories span collection milestones (humidor size), exploration (trying cigars from different countries), social engagement (sharing, reviewing), session commitment (completing full smoke sessions), and knowledge (identifying cigars correctly on first scan).&lt;/p&gt;

&lt;p&gt;The leaderboard runs a "Scan of the Day" algorithm that surfaces interesting scans — rare cigars, high-confidence identifications, first-time-scanned brands — rather than just ranking by volume.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Business Model Nobody Sees
&lt;/h2&gt;

&lt;p&gt;The consumer app is a Trojan horse. The real revenue is B2B.&lt;/p&gt;

&lt;p&gt;Consumer subscriptions ($6.99/week or $49.99/year on mobile, $9.99/month or $79.99/year on web) provide baseline revenue. But the real play is lounge partnerships.&lt;/p&gt;

&lt;p&gt;CigarSnap drives foot traffic to lounges through the lounge finder with check-ins and foot traffic analytics. Free listings prove value. Once a lounge sees 50 check-ins a month from CigarSnap users, the conversation about a $49–149/month Preferred Partner listing sells itself.&lt;/p&gt;

&lt;p&gt;138 Texas lounges mapped at launch. B2B revenue projections for DFW alone: $2,470/month conservative, $7,920/month aggressive.&lt;/p&gt;

&lt;p&gt;The consumer app is top of funnel. B2B is the real money.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'd Do Differently
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Testing between prompts.&lt;/strong&gt; I should have written integration tests after each prompt module instead of doing a big QA pass at the end. Some dependency issues between modules would've been caught earlier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The web rebuild.&lt;/strong&gt; The initial build was mobile-first through Replit Agent. The Next.js web app came later as a separate prompt sequence. I should have designed both interfaces from the start with a shared component library rather than rebuilding UI components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scope discipline.&lt;/strong&gt; I almost built a CRM inside CigarSnap because a lounge owner told me about her $25K/year CRM spend. I had to physically stop myself. CigarSnap is a lead &lt;em&gt;source&lt;/em&gt; that feeds into a CRM — it's not a CRM itself. Knowing what NOT to build is harder than building.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Numbers
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Idea to functional MVP&lt;/td&gt;
&lt;td&gt;~48 hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Features at launch&lt;/td&gt;
&lt;td&gt;15+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Full ecosystem build (mobile + web + B2B portal)&lt;/td&gt;
&lt;td&gt;Under 30 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Texas lounges mapped&lt;/td&gt;
&lt;td&gt;138+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reddit leads scraped for validation&lt;/td&gt;
&lt;td&gt;3,522 at $1.08 total cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Achievement badges&lt;/td&gt;
&lt;td&gt;47 across 10 categories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI image generation cost&lt;/td&gt;
&lt;td&gt;$20–80 per 1,000 images&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Global cigar market&lt;/td&gt;
&lt;td&gt;$57B+&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;I'm Matt Cretzman. I build AI agent systems that run entire business functions — and companies that depend on them working.&lt;/p&gt;

&lt;p&gt;CigarSnap is one of seven ventures I'm currently running. The others span legal tech (&lt;a href="https://textevidence.ai" rel="noopener noreferrer"&gt;TextEvidence&lt;/a&gt;), AI coaching (&lt;a href="https://skillrefinery.ai" rel="noopener noreferrer"&gt;Skill Refinery&lt;/a&gt;), B2B lead generation (&lt;a href="https://leadstorm.ai" rel="noopener noreferrer"&gt;LeadStorm AI&lt;/a&gt;), EdTech (&lt;a href="https://heybaddie.app" rel="noopener noreferrer"&gt;HeyBaddie&lt;/a&gt;), meeting management (&lt;a href="https://myprq.com" rel="noopener noreferrer"&gt;MyPRQ&lt;/a&gt;), and the AI marketing agency that started it all (&lt;a href="https://stormbreakerdigital.com" rel="noopener noreferrer"&gt;Stormbreaker Digital&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;I write about the technical side of building these at &lt;a href="https://mattcretzman.com" rel="noopener noreferrer"&gt;mattcretzman.com&lt;/a&gt; and share the less-filtered version on &lt;a href="https://mattcretzman.substack.com" rel="noopener noreferrer"&gt;Substack&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you're building with AI agents, I'd love to hear what your stack looks like. Drop a comment or find me on &lt;a href="https://www.linkedin.com/in/mattcretzman" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; or &lt;a href="https://github.com/mcretzman15" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
