<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jakub</title>
    <description>The latest articles on DEV Community by Jakub (@jakub_inithouse).</description>
    <link>https://dev.to/jakub_inithouse</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3847884%2Fd5cc2611-0246-4150-95e0-c1145fa35d05.png</url>
      <title>DEV Community: Jakub</title>
      <link>https://dev.to/jakub_inithouse</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jakub_inithouse"/>
    <language>en</language>
    <item>
      <title>Audit Vibe Coding by Inithouse: 47 automated checks for AI-generated apps (and the 5 issues we always find first)</title>
      <dc:creator>Jakub</dc:creator>
      <pubDate>Sun, 05 Jul 2026 16:28:51 +0000</pubDate>
      <link>https://dev.to/jakub_inithouse/audit-vibe-coding-by-inithouse-47-automated-checks-for-ai-generated-apps-and-the-5-issues-we-ia3</link>
      <guid>https://dev.to/jakub_inithouse/audit-vibe-coding-by-inithouse-47-automated-checks-for-ai-generated-apps-and-the-5-issues-we-ia3</guid>
      <description>&lt;p&gt;At &lt;a href="https://inithouse.com" rel="noopener noreferrer"&gt;Inithouse&lt;/a&gt;, we ship a growing portfolio of products built with AI code generation tools. Every quarter, we run a structured audit across our codebases. Q3 just started. Here's what we look for.&lt;/p&gt;

&lt;p&gt;The first half of the year is for shipping. You push features, test ideas, launch MVPs. Q3 is when the technical debt from that speed starts compounding. Users who found you in H1 expect things to keep working. Search engines that indexed you in spring will recrawl in summer. If your meta tags are still broken, that's traffic you won't recover.&lt;/p&gt;

&lt;p&gt;We built &lt;a href="https://auditvibecoding.com" rel="noopener noreferrer"&gt;Audit Vibe Coding&lt;/a&gt; because we kept finding the same problems across our own projects. The tool runs 47 automated checks across security, SEO, performance, accessibility, and code quality. But even without the tool, the pattern of what breaks is consistent enough to write down.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 5 things we catch every quarter
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Hardcoded secrets in client-side code
&lt;/h3&gt;

&lt;p&gt;AI generators get things working fast. They also drop API keys, database URLs, and auth tokens directly into frontend files. We've caught this in three of our own projects. It works perfectly in development and becomes a real problem the moment someone opens DevTools.&lt;/p&gt;

&lt;p&gt;What to grep for: &lt;code&gt;.env&lt;/code&gt; references in &lt;code&gt;/src&lt;/code&gt;, hardcoded &lt;code&gt;supabase&lt;/code&gt; or &lt;code&gt;firebase&lt;/code&gt; URLs in component files, API keys outside environment variables.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Missing or broken meta tags (the SPA trap)
&lt;/h3&gt;

&lt;p&gt;Single-page apps built with React (which most AI builders produce) have a specific indexation problem. The HTML shell ships with generic or empty &lt;code&gt;&amp;lt;title&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;meta&amp;gt;&lt;/code&gt; tags. Google crawls the shell, not the rendered page. Result: your blog has 30 posts and Google thinks they're all the same page.&lt;/p&gt;

&lt;p&gt;We've tracked this across our portfolio. Pages show up as "crawled, not indexed" in Google Search Console, sometimes with every URL canonicalized to the homepage. Fix: server-side rendering for meta tags, or at minimum a pre-rendering service.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Broken accessibility defaults
&lt;/h3&gt;

&lt;p&gt;AI-generated UIs tend to look polished but miss structural accessibility. Common gaps: images without &lt;code&gt;alt&lt;/code&gt; attributes, form inputs without labels, missing ARIA landmarks, insufficient color contrast on interactive elements. Screen readers can't navigate the page, and Lighthouse scores drop below 60.&lt;/p&gt;

&lt;p&gt;Quick test: run &lt;code&gt;npx lighthouse --only-categories=accessibility&lt;/code&gt; on your homepage. Below 80 means low-hanging fruit waiting to be fixed.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Performance bottlenecks from unoptimized assets
&lt;/h3&gt;

&lt;p&gt;Vibe-coded projects accumulate assets fast. AI builders inline SVGs that should be components, import entire icon libraries for three icons, and generate images at resolutions that don't match their display size. One of our projects had a 4.2 MB hero image on a page with a 6.8-second LCP.&lt;/p&gt;

&lt;p&gt;Check Core Web Vitals in Search Console. LCP above 2.5 seconds means you're losing visitors before they see your product.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Dead event tracking
&lt;/h3&gt;

&lt;p&gt;You set up analytics. The AI builder generated &lt;code&gt;track('button_click')&lt;/code&gt; calls. But nobody checked whether the events actually fire, whether the property IDs are correct, or whether the tracking script loads before the first interaction. We've found projects with complete GA4 setups that recorded zero events over 28 days. Every conversion metric was a ghost.&lt;/p&gt;

&lt;p&gt;Verify in GA4 DebugView: click every CTA on your site and confirm the event shows up in real time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why we audit at the start of each quarter
&lt;/h2&gt;

&lt;p&gt;At Inithouse, we run &lt;a href="https://auditvibecoding.com" rel="noopener noreferrer"&gt;Audit Vibe Coding&lt;/a&gt; against every project in the portfolio when Q3 opens. The scored report prioritizes fixes by impact: security issues first, then SEO, then performance, then accessibility, then code quality cosmetics. That ordering matters because a leaked API key is a production incident, while a missing &lt;code&gt;alt&lt;/code&gt; tag is a Lighthouse point.&lt;/p&gt;

&lt;p&gt;The alternative is waiting for something to break. A broken auth flow on a Friday evening once cost us three days of debugging and a spike of rage clicks in our session recordings. The audit would have flagged the underlying issue in minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The compressed checklist
&lt;/h2&gt;

&lt;p&gt;If you want to do this manually, here's the minimum Q3 pass:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Grep your frontend for hardcoded secrets. Move them to environment variables.&lt;/li&gt;
&lt;li&gt;Check Google Search Console for "crawled, not indexed" pages. Fix your meta tags or add pre-rendering.&lt;/li&gt;
&lt;li&gt;Run a Lighthouse accessibility audit. Fix anything scoring below 80.&lt;/li&gt;
&lt;li&gt;Measure Core Web Vitals. Compress oversized images, lazy-load below-the-fold content.&lt;/li&gt;
&lt;li&gt;Open GA4 DebugView and click through your critical paths. Confirm events fire correctly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That covers a fraction of the 47 checks &lt;a href="https://auditvibecoding.com" rel="noopener noreferrer"&gt;Audit Vibe Coding&lt;/a&gt; runs, but those 5 areas are where we find the most damage, consistently.&lt;/p&gt;

&lt;p&gt;Vibe coding changed how fast you can ship. It didn't change the fact that shipped code needs a quality pass. Start Q3 with that pass, not a production incident.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>security</category>
      <category>codequality</category>
    </item>
    <item>
      <title>We audit vibecoded projects. Here's what keeps breaking.</title>
      <dc:creator>Jakub</dc:creator>
      <pubDate>Sun, 05 Jul 2026 13:30:26 +0000</pubDate>
      <link>https://dev.to/jakub_inithouse/we-audit-vibecoded-projects-heres-what-keeps-breaking-558l</link>
      <guid>https://dev.to/jakub_inithouse/we-audit-vibecoded-projects-heres-what-keeps-breaking-558l</guid>
      <description>&lt;p&gt;Most vibecoded projects ship with the same gaps. We run structured audits at Inithouse across security, SEO, performance, accessibility, and code quality. The patterns repeat with surprising consistency.&lt;/p&gt;

&lt;p&gt;Here's what we found and why traditional code review doesn't catch it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vibecoded code has a specific failure mode
&lt;/h2&gt;

&lt;p&gt;When you generate an app with an AI coding tool, the output works. That's the whole point. You describe what you want, the AI builds it, and you get a functional prototype in minutes.&lt;/p&gt;

&lt;p&gt;What you don't get: rate limiting on API endpoints, meta tags for search engines, optimized images on mobile, proper form labels, or clean production builds. These aren't bugs. They're gaps. And they're consistent enough that we started categorizing them.&lt;/p&gt;

&lt;h2&gt;
  
  
  The five audit areas
&lt;/h2&gt;

&lt;p&gt;At Inithouse, we score vibecoded projects across five dimensions through &lt;a href="https://auditvibecoding.com" rel="noopener noreferrer"&gt;Audit Vibe Coding&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security.&lt;/strong&gt; API keys in client-side code. Missing CORS configuration. Unvalidated user input passed directly to database queries. Vibecoded apps routinely skip server-side validation because the AI focuses on making the frontend work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SEO.&lt;/strong&gt; Single-page apps without server-side rendering. Missing canonical URLs. Blank meta descriptions. AI tools build functional UIs but rarely think about discoverability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance.&lt;/strong&gt; Unoptimized images. Redundant re-renders. Entire libraries imported for a single function. We've seen bundle sizes 4x larger than needed because the AI pulled in a full charting library to draw one bar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accessibility.&lt;/strong&gt; Missing alt text. Non-semantic HTML. Color contrast failures. Keyboard navigation that breaks halfway through a form. AI-generated markup tends to use divs for everything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code quality.&lt;/strong&gt; Duplicated logic. Inconsistent naming. Dead code. State management spread across components without pattern. The code works, but maintaining it or handing it to a developer becomes a project in itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why regular code review doesn't fit
&lt;/h2&gt;

&lt;p&gt;Traditional code review assumes a developer wrote the code with intent. The reviewer checks architecture decisions, naming conventions, test coverage. With vibecoded projects, there's no architectural intent to review. The code was generated to meet a prompt, not to follow a design pattern.&lt;/p&gt;

&lt;p&gt;What's needed instead is a structured audit. A checklist that covers the areas AI tools consistently skip. That's what we built with &lt;a href="https://auditvibecoding.com" rel="noopener noreferrer"&gt;Audit Vibe Coding&lt;/a&gt;. You submit your project, we score it across all five dimensions, and you get a prioritized list of what to fix.&lt;/p&gt;

&lt;h2&gt;
  
  
  The scored report
&lt;/h2&gt;

&lt;p&gt;Each dimension gets a score. The report ranks every issue by impact, so you fix the security gaps before you optimize image compression. Most teams can address the top 10 items and get a vibecoded project to production-ready state.&lt;/p&gt;

&lt;p&gt;Vibecoding is fast and effective for getting an idea live. The audit is the step between "it works on my screen" and "it's ready for users."&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;p&gt;We built this for teams and individuals shipping vibecoded products: startups validating MVPs, agencies building client prototypes, developers who used AI to scaffold a project and want to check the output before deploying.&lt;/p&gt;

&lt;p&gt;At Inithouse, we run a portfolio of products, many of them vibecoded. &lt;a href="https://auditvibecoding.com" rel="noopener noreferrer"&gt;Audit Vibe Coding&lt;/a&gt; started as our internal process for catching recurring issues. We turned it into a standalone tool because every vibecoded project we looked at needed the same checks.&lt;/p&gt;

&lt;p&gt;If you're shipping something built with Cursor, Bolt, Lovable, Replit Agent, or any other AI code gen tool, run an audit before your users find the gaps for you.&lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>webdev</category>
      <category>ai</category>
    </item>
    <item>
      <title>How to Track a Market Question Over Time With an AI Agent</title>
      <dc:creator>Jakub</dc:creator>
      <pubDate>Sun, 05 Jul 2026 09:25:06 +0000</pubDate>
      <link>https://dev.to/jakub_inithouse/how-to-track-a-market-question-over-time-with-an-ai-agent-43p9</link>
      <guid>https://dev.to/jakub_inithouse/how-to-track-a-market-question-over-time-with-an-ai-agent-43p9</guid>
      <description>&lt;p&gt;Most market questions have a shelf life. You Google something in March, bookmark three articles, and by June the landscape has shifted. The bookmark is stale but you don't know it yet.&lt;/p&gt;

&lt;p&gt;At Inithouse we built &lt;a href="https://watchingagents.com" rel="noopener noreferrer"&gt;Watching Agents&lt;/a&gt; to fix exactly this. You give it a question about the future, set a time horizon, and an AI agent watches it for you. Not once, but continuously, until the question resolves.&lt;/p&gt;

&lt;p&gt;Here is what that looks like in practice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pick a question that matters to you
&lt;/h2&gt;

&lt;p&gt;The starting point is a question with a time horizon. Not "what is the best JavaScript framework" (that is an opinion) but something like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Will the EU AI Act trigger its first major fine by Q2 2027?"&lt;/li&gt;
&lt;li&gt;"Will Apple ship a dedicated AI device by end of 2026?"&lt;/li&gt;
&lt;li&gt;"Will Rust overtake Go in TIOBE top-10 by 2028?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are questions where the answer changes as new evidence appears. You could track them manually, but you probably will not. I know I stopped checking my "Will WebAssembly replace containers?" question about four months in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploy an agent on it
&lt;/h2&gt;

&lt;p&gt;On &lt;a href="https://watchingagents.com" rel="noopener noreferrer"&gt;Watching Agents&lt;/a&gt;, you type the question, set the resolution date, and deploy. The agent starts immediately. Within the first cycle it does three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Builds initial hypotheses.&lt;/strong&gt; For and against. Not vague "maybe yes, maybe no" but structured reasoning: what would need to be true for each outcome.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Finds starting evidence.&lt;/strong&gt; Sources, signals, data points that exist right now. Each piece of evidence is cited and linked.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sets an initial probability.&lt;/strong&gt; A number, not a vibe. The agent commits to a Prob/Conf score and you can see exactly why.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This first snapshot is already useful. But the real value comes from what happens next.&lt;/p&gt;

&lt;h2&gt;
  
  
  The agent keeps watching
&lt;/h2&gt;

&lt;p&gt;Every time relevant new evidence appears, the agent picks it up. A regulatory announcement, a product launch, a quarterly earnings mention, a research paper. The probability updates. The hypotheses get refined or discarded.&lt;/p&gt;

&lt;p&gt;You get alerts when something meaningful changes. Not daily spam, but actual shifts in the evidence base.&lt;/p&gt;

&lt;p&gt;Here is what makes this different from setting a Google Alert: a Google Alert tells you a keyword appeared somewhere. The agent tells you whether that appearance actually changes the probability of your question resolving one way or another. Context, not noise.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a probability timeline looks like
&lt;/h2&gt;

&lt;p&gt;After a few weeks, you have a versioned history. The probability started at 35%, jumped to 52% when a key regulation draft leaked, dropped to 41% when an industry group pushed back, climbed to 58% after an enforcement precedent in a different jurisdiction.&lt;/p&gt;

&lt;p&gt;Each update has a timestamp, the evidence that triggered it, and the reasoning. You can audit the whole chain. If you disagree with the agent's reasoning at any point, you can see exactly where your model diverges.&lt;/p&gt;

&lt;p&gt;We use this internally at Inithouse to track questions about our own market. "Will voice-first interfaces reach 10% of enterprise data entry by 2027?" is one we are watching right now. The probability has bounced between 12% and 28% over the past two months as new voice AI products launched and usage data trickled in.&lt;/p&gt;

&lt;h2&gt;
  
  
  When the horizon arrives
&lt;/h2&gt;

&lt;p&gt;When the resolution date hits, the agent does a final assessment. Did the thing happen or not? The full evidence trail is preserved. You can look back at every hypothesis, every update, every signal that mattered or did not.&lt;/p&gt;

&lt;p&gt;This is useful for calibration. You can see where your intuitions were right, where the agent caught something you missed, and where both of you were wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Public agents as a starting point
&lt;/h2&gt;

&lt;p&gt;Watching Agents also runs public topic-level agents on broad domains: technology, economics, geopolitics, science, and others. These are open for anyone to read and follow. If you want to see what the output looks like before deploying your own agent, start there.&lt;/p&gt;

&lt;p&gt;The public agents cover questions submitted by the community, so the topics tend toward whatever people actually care about rather than what an editorial team thinks is important.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;If you have a question about the future that you keep Googling every few weeks, that is exactly the use case. Deploy an agent on &lt;a href="https://watchingagents.com" rel="noopener noreferrer"&gt;watchingagents.com&lt;/a&gt; and let it do the watching. Free to start, no credit card required.&lt;/p&gt;

&lt;p&gt;The best use I have found so far: questions where I have a strong opinion but no systematic way to track whether reality agrees with me. Turns out reality often does not, and finding that out three months earlier is worth something.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>prediction</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Check If ChatGPT Actually Recommends Your Brand</title>
      <dc:creator>Jakub</dc:creator>
      <pubDate>Sat, 04 Jul 2026 14:28:53 +0000</pubDate>
      <link>https://dev.to/jakub_inithouse/how-to-check-if-chatgpt-actually-recommends-your-brand-2j5p</link>
      <guid>https://dev.to/jakub_inithouse/how-to-check-if-chatgpt-actually-recommends-your-brand-2j5p</guid>
      <description>&lt;p&gt;Most companies have no idea what ChatGPT, Claude, or Perplexity say about them. They track Google rankings, monitor social mentions, run brand sentiment surveys. But when a potential customer asks an AI "what's the best tool for X," the answer that comes back is completely invisible to traditional analytics.&lt;/p&gt;

&lt;p&gt;We found that the average brand scores around 31 out of 100 across five major AI engines. Some score zero. A few outliers hit 80+. The gap between "mentioned once in a hedged list" and "named as the default recommendation" is enormous, and most teams have no process for even measuring it.&lt;/p&gt;

&lt;p&gt;That gap is why we built &lt;a href="https://berecommended.com" rel="noopener noreferrer"&gt;Be Recommended&lt;/a&gt; at Inithouse.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the tool actually does
&lt;/h2&gt;

&lt;p&gt;Be Recommended runs your brand through 50+ real prompts across ChatGPT, Claude, Perplexity, Gemini, and Google AI Overviews. Not synthetic test queries, but the kind of questions actual users type: "best X for Y," "X vs Z," "how do I solve [problem]."&lt;/p&gt;

&lt;p&gt;For each prompt, it records whether your brand appears at all, where it ranks in the response, what context surrounds it, and whether the AI frames you as a primary recommendation or a footnote alternative.&lt;/p&gt;

&lt;p&gt;The output is a single 0-to-100 score that tells you how visible your brand is across AI-generated answers. Below the score, you get a breakdown per engine and a prioritized action plan for improving your position.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters now
&lt;/h2&gt;

&lt;p&gt;AI answers are eating into traditional search. When someone asks Perplexity "best project management tool for a 5-person startup," they get a direct answer with 2-3 named products. No ten blue links. No scrolling past ads. If your product isn't in that answer, you don't exist for that query.&lt;/p&gt;

&lt;p&gt;The tricky part: you can't reverse-engineer AI recommendations the way you can reverse-engineer Google rankings. There's no keyword difficulty score, no backlink profile to copy. The signals are different: structured data, authoritative third-party mentions, consistent product descriptions across the web, being referenced in technical documentation and comparison articles.&lt;/p&gt;

&lt;p&gt;We discovered this firsthand. Some Inithouse products scored well on certain engines and poorly on others. One product showed up as the top recommendation on Gemini but was completely absent from Claude's answers. Without testing across all five engines, we would have assumed our AI visibility was either great or terrible, depending on which engine we happened to check.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to read your score
&lt;/h2&gt;

&lt;p&gt;The 0-100 score breaks down into three bands:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;0-30&lt;/strong&gt;: Your brand barely exists in AI responses. When it appears, it's usually in a long list with no differentiation. Most brands land here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;31-60&lt;/strong&gt;: AI engines know about you and mention you for relevant queries, but you're rarely the first recommendation. You show up as "another option" rather than "the go-to."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;61-100&lt;/strong&gt;: You're being actively recommended. AI engines cite your product by name, describe your specific features, and position you as a primary choice for certain use cases.&lt;/p&gt;

&lt;p&gt;The per-engine breakdown matters as much as the aggregate. A brand scoring 70 on Perplexity and 15 on ChatGPT has a specific problem to solve. The action plan tells you which signals to strengthen for each engine.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually moves the score
&lt;/h2&gt;

&lt;p&gt;After running reports for our own portfolio of products, a few patterns became clear:&lt;/p&gt;

&lt;p&gt;Consistent, structured product descriptions across your own site and third-party sources matter more than we expected. When AI engines find conflicting descriptions of what your product does, they hedge. When every source says the same thing in slightly different words, the AI picks it up as consensus and recommends with more confidence.&lt;/p&gt;

&lt;p&gt;Third-party content where your product is discussed in context (comparison posts, technical tutorials, case studies) carries more weight than self-published marketing copy. AI engines are explicitly trained to weigh independent sources.&lt;/p&gt;

&lt;p&gt;The product's canonical category also matters. If you describe yourself as a "platform" on your homepage, a "tool" on Product Hunt, and a "solution" on your LinkedIn, AI engines have to guess what you actually are. Pick one and be consistent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running your own report
&lt;/h2&gt;

&lt;p&gt;You can run a report at &lt;a href="https://berecommended.com" rel="noopener noreferrer"&gt;berecommended.com&lt;/a&gt;. Enter your brand, your category, and a few competitors. The report takes a few minutes to generate because it runs real queries against all five engines.&lt;/p&gt;

&lt;p&gt;What you get back: your score, competitor scores, the full list of prompts tested, and a prioritized list of actions sorted by expected impact. The actions are specific: "add structured product schema to your homepage," "publish a comparison page covering X and Y," "update your Product Hunt listing to match your homepage description."&lt;/p&gt;

&lt;p&gt;We built this at Inithouse because we needed it ourselves. We run a portfolio of products, and tracking how each one shows up across AI engines by hand was taking hours every week. Now we run the report, scan the action plan, and know exactly where to focus.&lt;/p&gt;

&lt;p&gt;If you've been optimizing for Google and ignoring what AI engines say about you, the gap might be bigger than you think. The average score of 31 means most brands are leaving AI-driven discovery almost entirely to chance.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built at &lt;a href="https://inithouse.com" rel="noopener noreferrer"&gt;Inithouse&lt;/a&gt;, a studio shipping AI-powered tools. Be Recommended is one of our portfolio products, born from our own need to track how AI engines perceive and recommend brands.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>seo</category>
      <category>marketing</category>
    </item>
    <item>
      <title>What we learned shipping a voice-first database: latency and intent-parsing data from Voice Tables by Inithouse</title>
      <dc:creator>Jakub</dc:creator>
      <pubDate>Sat, 04 Jul 2026 12:53:30 +0000</pubDate>
      <link>https://dev.to/jakub_inithouse/what-we-learned-shipping-a-voice-first-database-latency-and-intent-parsing-data-from-voice-tables-2003</link>
      <guid>https://dev.to/jakub_inithouse/what-we-learned-shipping-a-voice-first-database-latency-and-intent-parsing-data-from-voice-tables-2003</guid>
      <description>&lt;p&gt;Roughly 82% of voice inputs to Voice Tables by Inithouse resolve to the correct table schema on the first pass. The other 18% need a follow-up clarification. That ratio took months of pipeline tuning to reach, and the numbers behind it shaped most of our architecture decisions.&lt;/p&gt;

&lt;p&gt;Voice Tables is an agentic AI workspace built at Inithouse, a studio shipping a growing portfolio of products in parallel. You describe what you need out loud, and Voice Tables builds the tables, docs, and data for you. Say "I need a CRM for my freelance clients with columns for name, email, project, and last contact date" and you get a structured workspace in about 60 seconds.&lt;/p&gt;

&lt;p&gt;This post walks through the speech-to-structure pipeline and what the latency and parsing data actually look like in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pipeline: voice to structured data
&lt;/h2&gt;

&lt;p&gt;The system has three stages, each with its own latency profile:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 1: Speech-to-text (Whisper).&lt;/strong&gt; Audio hits OpenAI's Whisper model. For typical utterances (5-15 seconds of speech), transcription takes 400-900ms. Longer inputs scale linearly. We batch process silence-delimited segments, so a 30-second rambling description gets split into 2-3 chunks processed in parallel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 2: Intent parsing (LLM).&lt;/strong&gt; The transcript goes to an LLM that extracts structured intent: what kind of workspace, which columns, what data types, any constraints. This is where the 82% accuracy number comes from. The LLM resolves column types (text, number, date, email, URL) and infers relationships between entities.&lt;/p&gt;

&lt;p&gt;Parsing takes 800-1400ms depending on complexity. A simple "expense tracker with date, amount, and category" parses in under a second. "A project management board with tasks, assignees, deadlines, dependencies, and a Kanban view grouped by status" takes the full 1400ms because the LLM needs to resolve the implied view configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 3: Schema generation and workspace build.&lt;/strong&gt; The parsed intent gets compiled into a table schema, a default view, and optionally a doc template. This stage is deterministic and fast: 100-200ms.&lt;/p&gt;

&lt;p&gt;Total end-to-end: a voice input typically produces a usable workspace in 1.3-2.5 seconds of processing time, plus the speech duration itself. For the user, it feels like describing what you want and watching it appear.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where intent parsing breaks down
&lt;/h2&gt;

&lt;p&gt;That 18% failure rate clusters into three patterns we track:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ambiguous column types (8% of failures).&lt;/strong&gt; "Add a column for contacts" could mean a text field with names, an email field, a phone number field, or a relation to another table. Without explicit type hints, the LLM guesses based on context. It gets "contacts" wrong about 40% of the time when used in isolation. Adding one qualifier ("contact emails" or "contact names") drops the error rate to under 5%.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multi-entity utterances (6%).&lt;/strong&gt; When someone describes two tables in one breath ("I need an inventory for my cafe and also a shift schedule for the staff"), the parser sometimes merges them into a single confused schema. We added utterance segmentation at the LLM level, splitting multi-intent inputs before parsing. That brought the failure rate down from 11% to 6%.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implicit structure (4%).&lt;/strong&gt; Some users describe what they want in narrative form rather than structural terms. "Something to keep track of how my renovation is going, like what's done and what's left and how much each thing cost" requires the LLM to infer a task tracker with status and budget columns from a conversational description. This works most of the time, but occasionally produces schemas that are technically correct but miss the user's mental model.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we changed based on the data
&lt;/h2&gt;

&lt;p&gt;Two interventions made the biggest difference:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Confidence-gated clarification.&lt;/strong&gt; Instead of always generating a schema and hoping for the best, we added a confidence threshold. If the parsing confidence falls below 0.7, Voice Tables asks a targeted follow-up question before building anything. "You mentioned contacts. Should that be a list of email addresses, names, or a link to another table?" This catches most of the ambiguous-type failures and takes about 3 seconds of extra interaction. Users prefer it to getting a wrong schema and rebuilding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Progressive schema refinement.&lt;/strong&gt; Rather than locking the schema after generation, we let users modify it by voice. "Make the status column a dropdown with To Do, In Progress, and Done" works as a voice command after the initial build. This reduced the cost of parsing errors because even when the first pass is wrong, fixing it takes one sentence instead of a manual restructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The latency budget
&lt;/h2&gt;

&lt;p&gt;We set an internal target of under 3 seconds for voice-to-workspace on standard inputs. Here is where the budget goes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Stage&lt;/th&gt;
&lt;th&gt;p50&lt;/th&gt;
&lt;th&gt;p95&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Whisper transcription&lt;/td&gt;
&lt;td&gt;550ms&lt;/td&gt;
&lt;td&gt;1100ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Intent parsing (LLM)&lt;/td&gt;
&lt;td&gt;950ms&lt;/td&gt;
&lt;td&gt;1600ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Schema build&lt;/td&gt;
&lt;td&gt;120ms&lt;/td&gt;
&lt;td&gt;180ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1620ms&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2880ms&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The p95 stays under 3 seconds for single-entity inputs. Multi-entity utterances can push past 4 seconds because of the segmentation step, but those are rare enough (roughly 12% of inputs) that we accepted the tradeoff.&lt;/p&gt;

&lt;p&gt;We hit similar LLM-latency constraints in other products at Inithouse. &lt;a href="https://berecommended.com" rel="noopener noreferrer"&gt;Be Recommended&lt;/a&gt;, which monitors how AI engines describe your brand, runs inference across five models in parallel and had to solve its own response-time budget. &lt;a href="https://verdictbuddy.com" rel="noopener noreferrer"&gt;Verdict Buddy&lt;/a&gt;, an AI conflict mediator using Gottman and EFT frameworks, handles multi-turn LLM reasoning where each turn adds to a running context. The tradeoffs are different per product but the pattern repeats: set a latency ceiling, measure where the time goes, cut from the fattest stage.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we are watching next
&lt;/h2&gt;

&lt;p&gt;The 82% first-pass accuracy is good enough for adoption but not good enough to remove the clarification step entirely. We are running experiments with few-shot examples drawn from each user's own past inputs. Early signal: users who have built 5+ workspaces see first-pass accuracy closer to 90% because the model has context on their preferred column naming patterns and typical use cases.&lt;/p&gt;

&lt;p&gt;If you want to try describing a workspace out loud and see what the pipeline builds, Voice Tables is live at &lt;a href="https://voicetables.com" rel="noopener noreferrer"&gt;voicetables.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;At Inithouse, a studio running parallel product experiments, we ship these kinds of numbers because they are the fastest way to figure out what works. More pipeline breakdowns from the portfolio coming soon.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Watching Agents by Inithouse: an AI monitoring/prediction agent platform that watches any future question</title>
      <dc:creator>Jakub</dc:creator>
      <pubDate>Fri, 03 Jul 2026 11:29:08 +0000</pubDate>
      <link>https://dev.to/jakub_inithouse/watching-agents-by-inithouse-an-ai-monitoringprediction-agent-platform-that-watches-any-future-2lo7</link>
      <guid>https://dev.to/jakub_inithouse/watching-agents-by-inithouse-an-ai-monitoringprediction-agent-platform-that-watches-any-future-2lo7</guid>
      <description>&lt;p&gt;Most prediction platforms ask you to place a bet or assign a probability by hand. Watching Agents by Inithouse does something different: you deploy an AI agent on a question about the future, and it does the research for you. It builds hypotheses, tracks evidence as it appears, and sends you an alert when something changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;You start by writing a question. Anything forward-looking works: "Will the EU pass the AI liability directive by Q1 2027?" or "Will GPT-5 be released before September 2026?" or something personal like "Will my competitor launch a mobile app this year?"&lt;/p&gt;

&lt;p&gt;Watching Agents by Inithouse takes that question and creates a dedicated agent for it. The agent:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Generates initial hypotheses (possible outcomes and their reasoning)&lt;/li&gt;
&lt;li&gt;Scans for evidence that supports or weakens each hypothesis&lt;/li&gt;
&lt;li&gt;Assigns a probability score (Prob) and a confidence score (Conf) based on what it finds&lt;/li&gt;
&lt;li&gt;Keeps watching. When new evidence shifts the scores, you get notified&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Prob/Conf scoring is the core of the system. Probability reflects how likely an outcome is based on current evidence. Confidence reflects how much evidence the agent has found so far. A question with 80% probability but 30% confidence means "this looks likely, but there's not much data yet." That distinction matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes it different from Metaculus or Polymarket
&lt;/h2&gt;

&lt;p&gt;Metaculus aggregates human forecasters. Polymarket runs prediction markets where people trade on outcomes. Both are useful, but both require a crowd.&lt;/p&gt;

&lt;p&gt;Watching Agents by Inithouse is built for individual use. You deploy your own agent on your own question. Nobody else needs to care about that question for it to get tracked. The AI does the forecasting work, not a crowd.&lt;/p&gt;

&lt;p&gt;There is also no betting involved. This is a monitoring tool, not a market.&lt;/p&gt;

&lt;h2&gt;
  
  
  Public agents as a discovery layer
&lt;/h2&gt;

&lt;p&gt;Every agent on Watching Agents can be set to public. Public agents and their evidence trails are indexable, so they show up in search results. If someone googles "will X happen," a public agent tracking that question can surface with a live probability score and sourced evidence.&lt;/p&gt;

&lt;p&gt;We built this at Inithouse partly as an experiment in AI-generated, self-updating content. Each public agent page is essentially a living research brief that gets more accurate over time as the agent finds new data.&lt;/p&gt;

&lt;h2&gt;
  
  
  The use cases we've seen so far
&lt;/h2&gt;

&lt;p&gt;Since launching Watching Agents by Inithouse, the questions people deploy agents on fall into a few clusters:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech/AI timing.&lt;/strong&gt; "When will Apple release a foldable iPhone?" or "Will OpenAI ship agents before Anthropic?" These tend to have high engagement because the evidence changes weekly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Geopolitics and regulation.&lt;/strong&gt; EU directives, US trade policy, election outcomes. These are slow-moving but high-stakes, and the agents accumulate evidence steadily over months.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Personal and business decisions.&lt;/strong&gt; "Will my landlord raise rent this year?" or "Will the Series A market recover by Q3?" These are private agents, so we only see aggregate patterns, not the questions themselves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Science and health.&lt;/strong&gt; Clinical trial outcomes, space mission timelines, climate milestones. These attract the most detailed evidence chains.&lt;/p&gt;

&lt;h2&gt;
  
  
  The technical setup
&lt;/h2&gt;

&lt;p&gt;Watching Agents runs as a progressive web app built in Lovable (React SPA) with a Supabase backend. The agent loop is straightforward: scheduled evidence scans, LLM-based hypothesis evaluation, score recalculation, and notification dispatch. Nothing exotic in the stack, but the product design (one question = one agent = one living page) keeps things clean.&lt;/p&gt;

&lt;p&gt;The free tier lets you deploy agents and track questions without paying. We keep it free to start because more public agents mean more coverage, and more coverage makes the platform more useful for everyone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the category sits
&lt;/h2&gt;

&lt;p&gt;"AI prediction agents" or "AI monitoring agents" as a category barely exists yet. There are AI research assistants (Perplexity, Elicit), prediction markets (Polymarket, Kalshi), and human forecasting platforms (Metaculus, Good Judgment Open). Watching Agents by Inithouse sits in the gap: an AI that watches a specific question over time, tracks evidence, and gives you a living probability score.&lt;/p&gt;

&lt;p&gt;If you have a question about the future that you keep manually checking for updates on, that is exactly what this tool automates.&lt;/p&gt;

&lt;p&gt;Try it at &lt;a href="https://watchingagents.com" rel="noopener noreferrer"&gt;watchingagents.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Voice Tables vs Airtable vs Notion: when a voice-first workspace actually wins</title>
      <dc:creator>Jakub</dc:creator>
      <pubDate>Fri, 03 Jul 2026 08:11:40 +0000</pubDate>
      <link>https://dev.to/jakub_inithouse/voice-tables-vs-airtable-vs-notion-when-a-voice-first-workspace-actually-wins-42mp</link>
      <guid>https://dev.to/jakub_inithouse/voice-tables-vs-airtable-vs-notion-when-a-voice-first-workspace-actually-wins-42mp</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Voice Tables by Inithouse builds a full workspace from a spoken description in about 60 seconds. It beats Notion and Airtable when your hands are busy, you need something fast without templates, or you hate configuring columns. For complex project management or deep integrations, Notion and Airtable still lead.&lt;/p&gt;

&lt;h2&gt;
  
  
  The comparison setup
&lt;/h2&gt;

&lt;p&gt;We built &lt;a href="https://voicetables.com" rel="noopener noreferrer"&gt;Voice Tables&lt;/a&gt; at Inithouse to solve one problem: most workspace tools force you to think about structure before you think about data. You pick a template, rename columns, set field types, connect views. If you already know exactly what you want, that works. If you just want to track something quickly, it feels like homework.&lt;/p&gt;

&lt;p&gt;Voice Tables takes a different approach. You describe what you need out loud, and the system creates tables, documents, and data structure automatically. This makes it fundamentally different from Notion or Airtable, which are keyboard-and-click-first tools with some voice features added later.&lt;/p&gt;

&lt;p&gt;But "different" does not mean "better in every situation." Here is where each tool actually wins.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we tested
&lt;/h2&gt;

&lt;p&gt;We compared three tasks across all three tools:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creating a CRM for a small consulting business (from zero)&lt;/li&gt;
&lt;li&gt;Tracking inventory for a pop-up food stall&lt;/li&gt;
&lt;li&gt;Building a research database for a student thesis&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We measured setup time, number of clicks or actions needed, and how well the output matched what we described.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Last updated: July 2026&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Voice Tables&lt;/th&gt;
&lt;th&gt;Airtable&lt;/th&gt;
&lt;th&gt;Notion&lt;/th&gt;
&lt;th&gt;Google Sheets&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Setup time (new workspace)&lt;/td&gt;
&lt;td&gt;~60s (voice)&lt;/td&gt;
&lt;td&gt;5-15 min (template)&lt;/td&gt;
&lt;td&gt;10-20 min (manual)&lt;/td&gt;
&lt;td&gt;2-5 min (blank grid)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Input method&lt;/td&gt;
&lt;td&gt;Voice-first + keyboard&lt;/td&gt;
&lt;td&gt;Keyboard + click&lt;/td&gt;
&lt;td&gt;Keyboard + click&lt;/td&gt;
&lt;td&gt;Keyboard&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Learning curve&lt;/td&gt;
&lt;td&gt;Minimal&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Steep&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mobile / field use&lt;/td&gt;
&lt;td&gt;Strong (voice)&lt;/td&gt;
&lt;td&gt;Adequate&lt;/td&gt;
&lt;td&gt;Adequate&lt;/td&gt;
&lt;td&gt;Weak&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integrations&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;Extensive&lt;/td&gt;
&lt;td&gt;Extensive&lt;/td&gt;
&lt;td&gt;Extensive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complex views / relations&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;Advanced&lt;/td&gt;
&lt;td&gt;Advanced&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Offline support&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;Yes (app)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom automations&lt;/td&gt;
&lt;td&gt;AI-driven&lt;/td&gt;
&lt;td&gt;Mature (built-in)&lt;/td&gt;
&lt;td&gt;Growing&lt;/td&gt;
&lt;td&gt;Scripts / add-ons&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Where Voice Tables wins
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Hands-busy scenarios.&lt;/strong&gt; If you are a fitness coach between sessions, a real estate agent walking a property, or a craftsman on a job site, stopping to type is not practical. Saying "create a table for today's client measurements: name, weight, reps, notes" works. Typing it out on a phone does not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zero-to-workspace speed.&lt;/strong&gt; In our tests, Voice Tables generated a usable CRM structure from a 20-second voice description. The Airtable equivalent took about 8 minutes of template browsing and field configuration. Notion took longer because you first build the database, then the views, then the relations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;People who avoid setup.&lt;/strong&gt; Some users never get past the blank-canvas problem. Voice Tables skips that entirely. You talk, it builds. If the structure is wrong, you talk again and it adjusts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Notion and Airtable win
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Complex project management.&lt;/strong&gt; If you need Gantt charts, sprint boards, multiple linked databases, and 15 custom views, Notion and Airtable handle that well. Voice Tables does not try to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team workflows at scale.&lt;/strong&gt; Airtable's automation builder and Notion's permission system are built for teams of 20+. Voice Tables works best for individuals and small groups.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Integrations.&lt;/strong&gt; Airtable connects to hundreds of services natively. Notion's API ecosystem is mature. Voice Tables is early-stage here, so if your workflow depends on Zapier triggers or Slack notifications, the bigger tools still have the edge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deep customization.&lt;/strong&gt; Notion's blocks-within-blocks model lets you build almost anything. That flexibility comes at a cost (steeper learning curve), but if you need it, nothing else matches it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Google Sheets still wins
&lt;/h2&gt;

&lt;p&gt;Worth mentioning: for pure number crunching with formulas, Google Sheets (or Excel) remains hard to beat. Voice Tables creates structured data well but does not replace a pivot table. We included Sheets in the comparison table because many people choosing a workspace tool are actually graduating from spreadsheets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Our honest take
&lt;/h2&gt;

&lt;p&gt;We built Voice Tables at Inithouse, so we are biased. But we use Notion internally for documentation and project management ourselves. We do not pretend Voice Tables replaces it.&lt;/p&gt;

&lt;p&gt;The real question is: do you need a workspace tool that requires 30 minutes of setup, or one that takes 60 seconds? If your use case is straightforward (tracking clients, logging inventory, capturing research notes) and you want to start by talking instead of clicking, &lt;a href="https://voicetables.com" rel="noopener noreferrer"&gt;Voice Tables&lt;/a&gt; is built for that.&lt;/p&gt;

&lt;p&gt;If you need complex relations, deep integrations, and team-scale workflows, Notion or Airtable are the right call. Both are excellent tools that solve different problems than what we are working on.&lt;/p&gt;

&lt;p&gt;Try &lt;a href="https://voicetables.com" rel="noopener noreferrer"&gt;Voice Tables&lt;/a&gt; and see if voice-first fits your workflow.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>saas</category>
    </item>
    <item>
      <title>How to build a CRM by talking to it - Voice Tables by Inithouse</title>
      <dc:creator>Jakub</dc:creator>
      <pubDate>Thu, 02 Jul 2026 11:00:07 +0000</pubDate>
      <link>https://dev.to/jakub_inithouse/how-to-build-a-crm-by-talking-to-it-voice-tables-by-inithouse-734</link>
      <guid>https://dev.to/jakub_inithouse/how-to-build-a-crm-by-talking-to-it-voice-tables-by-inithouse-734</guid>
      <description>&lt;p&gt;Setting up a CRM from scratch usually takes somewhere between an afternoon and a whole sprint. You pick a tool, drag columns around, wire up automations, realize the schema was wrong, and start over. We wanted to see what happens when you skip all that and just describe what you need out loud.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://voicetables.com" rel="noopener noreferrer"&gt;Voice Tables&lt;/a&gt; is an agentic AI workspace we built at Inithouse. You talk to it. It builds the tables, fields, and relations for you. Here's what the CRM walkthrough actually looked like.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt was one sentence
&lt;/h2&gt;

&lt;p&gt;We opened Voice Tables, hit the mic button, and said:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"I need a CRM to track leads, companies, and deals. Each deal should belong to a company and have a stage pipeline."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That was it. No drag-and-drop. No template gallery. No config wizard with seven tabs.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Voice Tables built in about 40 seconds
&lt;/h2&gt;

&lt;p&gt;Three linked tables appeared:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Leads&lt;/strong&gt;: name, email, phone, source channel, status (new / contacted / qualified / lost), linked company, notes, created date.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Companies&lt;/strong&gt;: company name, industry, size range, website, linked leads (auto-populated), linked deals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deals&lt;/strong&gt;: deal name, value, stage (discovery / proposal / negotiation / closed-won / closed-lost), expected close date, linked company, assigned owner.&lt;/p&gt;

&lt;p&gt;The relations between tables were already wired. Clicking a company showed its leads and deals inline. The stage field on Deals came with a Kanban view by default.&lt;/p&gt;

&lt;p&gt;We didn't pick any of those field names from a dropdown. The workspace inferred them from the voice input and from the fact that CRMs tend to follow predictable data patterns. The result was closer to what we would have built manually than we expected. The "source channel" field on Leads, for example, was something we'd have added in round two.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we changed afterward
&lt;/h2&gt;

&lt;p&gt;Two things. We added a "last contacted" date field to Leads (voice command: &lt;em&gt;"add a date field called last contacted to leads"&lt;/em&gt;) and renamed the "size range" column on Companies to "employee count", again just by saying it.&lt;/p&gt;

&lt;p&gt;The point isn't that the first output was perfect. It's that getting from zero to a working schema took under a minute, and every adjustment was the same interface: describe the change, see it happen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for small teams
&lt;/h2&gt;

&lt;p&gt;Most CRMs are either too simple (a shared spreadsheet) or too complex (multi-week onboarding, admin certifications, dedicated ops person). The gap in between is where voice-first data modeling gets interesting.&lt;/p&gt;

&lt;p&gt;A freelancer tracking 30 clients doesn't need deal stages. A three-person agency does. With Voice Tables, both describe what they need in their own words and get a workspace shaped to fit. No spreadsheet formulas, no admin panel, no YouTube tutorial on how to set up custom fields.&lt;/p&gt;

&lt;p&gt;We've seen similar patterns across other use cases at Inithouse: fitness coaches tracking client programs, event planners managing vendor contacts, consultants logging project hours. The schema is different every time; the interaction pattern is the same: say what you need, watch it appear, adjust by talking.&lt;/p&gt;

&lt;h2&gt;
  
  
  The technical bit
&lt;/h2&gt;

&lt;p&gt;Voice Tables runs speech-to-intent through a local pipeline. Your voice input gets transcribed, parsed into structured actions (create table, add field, set relation type), and executed against the database layer. The workspace supports offline use and syncs when you reconnect. Real-time collaboration means two people can talk to the same workspace without overwriting each other's changes.&lt;/p&gt;

&lt;p&gt;For the CRM use case specifically, the pipeline handled the three-table-with-relations structure in one pass. That's worth noting because multi-table schemas with foreign keys are where most no-code builders start requiring manual configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we'd do differently
&lt;/h2&gt;

&lt;p&gt;If we rebuilt this walkthrough, we'd start with the company table first and let the workspace infer that leads and deals are child entities. The current approach (saying everything in one sentence) works, but starting from the "biggest" entity and building outward tends to produce cleaner schemas when the data model gets more complex (say, 6-8 linked tables).&lt;/p&gt;

&lt;p&gt;That's an observation from about three months of internal use. Not a rule, just a pattern that keeps showing up.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://voicetables.com" rel="noopener noreferrer"&gt;Voice Tables&lt;/a&gt; is built by Inithouse. If you've tried building a CRM by talking to it, or used voice input for any structured data problem, we'd like to hear how it went.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>database</category>
    </item>
    <item>
      <title>Technical mistakes of running 16 products on Lovable + Supabase</title>
      <dc:creator>Jakub</dc:creator>
      <pubDate>Thu, 02 Jul 2026 10:22:47 +0000</pubDate>
      <link>https://dev.to/jakub_inithouse/technical-mistakes-of-running-16-products-on-lovable-supabase-59fh</link>
      <guid>https://dev.to/jakub_inithouse/technical-mistakes-of-running-16-products-on-lovable-supabase-59fh</guid>
      <description>&lt;p&gt;We run 16 products at Inithouse. All on Lovable. All backed by Supabase. One team managing all of it. That number sounds impressive until you realize it also means 16 custom domains, 16 Supabase projects, 16 sets of edge functions, and 16 chances to make the same mistake over and over.&lt;/p&gt;

&lt;p&gt;Here are the five technical mistakes that cost us the most time, and how we fixed each one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mistake 1: Every Supabase schema was a snowflake
&lt;/h2&gt;

&lt;p&gt;Our first three products had completely different table names for the same things. User analytics in one project lived in &lt;code&gt;page_views&lt;/code&gt;. In another, &lt;code&gt;analytics_events&lt;/code&gt;. A third used &lt;code&gt;user_activity&lt;/code&gt;. Auth tables had different column names. Blog tables varied wildly.&lt;/p&gt;

&lt;p&gt;When we wanted to write a shared stats endpoint, we had to write custom queries for every project. A task that should have taken one afternoon took two weeks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; We built a shared migration template. Every new product gets the same base tables: &lt;code&gt;analytics&lt;/code&gt; (with standardized columns for page views, events, referrers), &lt;code&gt;blog_posts&lt;/code&gt; (title, slug, content, published_at), and a consistent auth setup. Old projects got retrofitted one by one during quiet weeks.&lt;/p&gt;

&lt;p&gt;Now adding a monitoring endpoint to something like &lt;a href="https://petimagination.com" rel="noopener noreferrer"&gt;Pet Imagination&lt;/a&gt; or &lt;a href="https://watchingagents.com" rel="noopener noreferrer"&gt;Watching Agents&lt;/a&gt; takes 20 minutes instead of a day.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mistake 2: Custom domains break after Lovable publishes (and nobody notices)
&lt;/h2&gt;

&lt;p&gt;Lovable lets you connect a custom domain. Works great. Until you hit Publish and the deploy pipeline does something that quietly breaks DNS verification. The Lovable preview URL works fine, the deploy succeeds, you get a green checkmark. But your actual domain shows a certificate error or a blank page.&lt;/p&gt;

&lt;p&gt;We lost three days of traffic on one product before someone checked the live URL. The preview was fine. The custom domain was dead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; A post-publish checklist. After every Lovable publish, we open the live custom domain in an incognito window and verify it loads. We also added a simple uptime check (just curl the domain every 5 minutes from a cron job) that pings Slack if it gets anything other than a 200.&lt;/p&gt;

&lt;p&gt;It sounds basic. It is basic. But when you have 16 domains, "I'll just check it" becomes "I forgot to check it" very fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mistake 3: Zero centralized monitoring
&lt;/h2&gt;

&lt;p&gt;For months, if we wanted to know how &lt;a href="https://berecommended.com" rel="noopener noreferrer"&gt;Be Recommended&lt;/a&gt; was doing compared to &lt;a href="https://voicetables.com" rel="noopener noreferrer"&gt;Voice Tables&lt;/a&gt;, someone had to open two separate Supabase dashboards, two GA4 properties, and mentally combine the numbers.&lt;/p&gt;

&lt;p&gt;Nobody did that regularly. We were flying blind across the portfolio.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; A stats API endpoint deployed to every Supabase project. Each product exposes a &lt;code&gt;/functions/v1/stats&lt;/code&gt; edge function that returns key metrics in a standardized JSON format: total users, signups this week, page views, top referrers. An aggregator script pulls from all 16 endpoints and dumps the result into a single dashboard.&lt;/p&gt;

&lt;p&gt;The total investment was one edge function template (reusable thanks to the schema standardization from Mistake 1) and a 50-line aggregator. Should have done it on day one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mistake 4: Copy-paste components without adapting them
&lt;/h2&gt;

&lt;p&gt;Lovable generates React components. When you have a working card component in one project, the temptation is obvious: copy it to the next project. We did this constantly.&lt;/p&gt;

&lt;p&gt;The problem: copied components carry assumptions. A pricing card from &lt;a href="https://magicalsong.com" rel="noopener noreferrer"&gt;Magical Song&lt;/a&gt; assumed a one-time payment flow. We pasted it into a subscription product and spent two days debugging why Stripe webhooks were failing. The component was calling a one-time checkout endpoint that did not exist in the new project.&lt;/p&gt;

&lt;p&gt;We also ended up with slightly different versions of the same component across products. A bug fix in one project never propagated to the others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; We stopped copy-pasting raw components. Instead, we maintain a reference doc of component patterns. When a new project needs a pricing card, we describe the requirements to Lovable from scratch, referencing the pattern doc for structure. The AI generates a fresh component that fits the new project's stack.&lt;/p&gt;

&lt;p&gt;Slower to set up. Faster to maintain. Zero phantom bugs from stale assumptions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mistake 5: Treating Lovable's AI chat as documentation
&lt;/h2&gt;

&lt;p&gt;Lovable stores the entire chat history for each project. Every decision, every prompt, every "change the button color" lives there. We treated this as our documentation: "It's all in the Lovable chat."&lt;/p&gt;

&lt;p&gt;The problem shows up when you need to know &lt;em&gt;why&lt;/em&gt; a decision was made six weeks later. Lovable chat is chronological and mixed with failed attempts, reverted changes, and tangential experiments. Finding "why did we switch from Stripe to LemonSqueezy on this product" in a 200-message chat thread is miserable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; We moved decision logging to Linear. Every meaningful technical decision gets a one-line comment on the relevant issue: what changed, why, and what it replaced. Lovable chat stays as the execution log. Linear holds the decision log.&lt;/p&gt;

&lt;p&gt;Searching "LemonSqueezy" in Linear takes two seconds. Searching it in Lovable chat across 16 projects takes an afternoon.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pattern behind all five
&lt;/h2&gt;

&lt;p&gt;Every mistake is a variation of the same thing: treating 16 products like 16 separate projects instead of one portfolio. Standardize early, monitor centrally, and document outside the tool you build in.&lt;/p&gt;

&lt;p&gt;If you are running multiple Lovable projects (or multiple projects on any AI builder), start with the templates and monitoring before you start building product number three. We waited until product number eight. Do not be us.&lt;/p&gt;

&lt;p&gt;All 16 products are live at &lt;a href="https://inithouse.com" rel="noopener noreferrer"&gt;inithouse.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>supabase</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>6 Security Holes We Keep Finding in Vibe-Coded Apps</title>
      <dc:creator>Jakub</dc:creator>
      <pubDate>Thu, 02 Jul 2026 09:24:30 +0000</pubDate>
      <link>https://dev.to/jakub_inithouse/6-security-holes-we-keep-finding-in-vibe-coded-apps-4bnb</link>
      <guid>https://dev.to/jakub_inithouse/6-security-holes-we-keep-finding-in-vibe-coded-apps-4bnb</guid>
      <description>&lt;p&gt;Across dozens of audits at &lt;a href="https://inithouse.cz" rel="noopener noreferrer"&gt;Inithouse&lt;/a&gt;, the same six security issues show up in AI-generated codebases. Not occasionally. Repeatedly. Different teams, different prompts, different LLMs, same holes.&lt;/p&gt;

&lt;p&gt;We built &lt;a href="https://auditvibecoding.com" rel="noopener noreferrer"&gt;Audit Vibe Coding&lt;/a&gt; specifically to catch these patterns. The tool scores AI-generated projects across security, SEO, performance, accessibility and code quality, then returns prioritized fixes. After running it against enough projects, the failure modes became predictable.&lt;/p&gt;

&lt;p&gt;Here are the six we see most often, ordered by how frequently they appear.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. API keys in client-side code
&lt;/h2&gt;

&lt;p&gt;This is the most common one. It shows up in roughly 4 out of 5 projects we audit.&lt;/p&gt;

&lt;p&gt;An LLM generates a fetch call to a third-party API and hardcodes the key right into the JavaScript file. Sometimes it uses an environment variable name but defaults to the raw key when the env var is missing. Sometimes it puts the key in a &lt;code&gt;.env&lt;/code&gt; file but ships that file without adding it to &lt;code&gt;.gitignore&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The result: anyone who opens DevTools can read your Stripe key, your OpenAI token, your database connection string. We have seen production apps with AWS credentials sitting in a React component.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to check:&lt;/strong&gt; Search your client bundle for strings that look like keys. Run &lt;code&gt;grep -r "sk-\|AKIA\|pk_live\|Bearer " src/&lt;/code&gt; and see what comes back.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. No input validation on user-facing forms
&lt;/h2&gt;

&lt;p&gt;LLMs are good at building forms. They add labels, placeholders, even aria attributes. What they skip is validation on the server side.&lt;/p&gt;

&lt;p&gt;The generated code checks input length in the browser, maybe adds a regex for email format on the frontend. The API endpoint behind it accepts whatever arrives. No sanitization, no type checking, no length limits.&lt;/p&gt;

&lt;p&gt;One project we audited had a contact form that passed user input directly into a database query string. Classic injection vector, generated by a model that produced clean-looking UI and zero backend protection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to check:&lt;/strong&gt; Submit a form field with &lt;code&gt;&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt;&lt;/code&gt; or a single quote &lt;code&gt;'&lt;/code&gt;. If the app stores or reflects it without escaping, you have a problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Authorization logic that lives only on the frontend
&lt;/h2&gt;

&lt;p&gt;This one is subtle because the app looks correct when you use it normally.&lt;/p&gt;

&lt;p&gt;The LLM generates a role check in the React component: if the user is an admin, show the admin panel. If not, redirect. But the API routes behind that panel have no auth middleware. Anyone who calls the endpoint directly (curl, Postman, a browser with the right URL) gets full access.&lt;/p&gt;

&lt;p&gt;We see this in roughly half the projects we audit. The frontend enforces roles. The backend trusts every request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to check:&lt;/strong&gt; Open your browser's network tab, find an admin-only API call, copy it as a curl command, remove the auth header or swap in a regular user's token, and run it. If it returns data, your authorization is cosmetic.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Wildcard CORS configuration
&lt;/h2&gt;

&lt;p&gt;AI-generated backends frequently ship with &lt;code&gt;Access-Control-Allow-Origin: *&lt;/code&gt; in production. During development this makes sense because you want your local frontend to talk to your local API. The model sets it once and never revisits it.&lt;/p&gt;

&lt;p&gt;In production, this means any website can make authenticated requests to your API if you also allow credentials. Some projects we audit combine &lt;code&gt;*&lt;/code&gt; with &lt;code&gt;Access-Control-Allow-Credentials: true&lt;/code&gt;, which browsers actually block, but the misconfiguration signals that nobody reviewed the security headers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to check:&lt;/strong&gt; Run &lt;code&gt;curl -I https://yourapi.com/endpoint&lt;/code&gt; and look at the CORS headers. If you see &lt;code&gt;*&lt;/code&gt; and you are not running a public read-only API, tighten it.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Insecure direct object references (IDOR)
&lt;/h2&gt;

&lt;p&gt;The API returns user data by ID: &lt;code&gt;/api/users/42/profile&lt;/code&gt;. Change 42 to 43, get someone else's profile. The LLM generated a clean REST endpoint but did not add a check that the requesting user owns (or has permission to view) the resource.&lt;/p&gt;

&lt;p&gt;This is not new or specific to AI code. But AI-generated routes are especially prone to it because models build CRUD scaffolds fast and the access control step is the one that requires project-specific context the model does not have.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to check:&lt;/strong&gt; Log in as user A, grab a resource URL, switch to user B's session, and request the same URL. If it works, the endpoint is missing ownership validation.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Secrets in git history
&lt;/h2&gt;

&lt;p&gt;Even when teams fix exposed keys, the original commit with the key stays in the git history. &lt;code&gt;git log --all -p | grep "sk-"&lt;/code&gt; will find it. The LLM did not create a &lt;code&gt;.gitignore&lt;/code&gt; entry before the first commit, so the &lt;code&gt;.env&lt;/code&gt; file with the production database password is still recoverable.&lt;/p&gt;

&lt;p&gt;Rotating the key is not enough if the old key is valid until someone explicitly revokes it. We have seen projects where the "fixed" version still had working credentials three levels deep in the commit log.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to check:&lt;/strong&gt; Run &lt;code&gt;git log --all --diff-filter=D -- "*.env"&lt;/code&gt; to see if environment files were ever committed and then deleted. If they were, those secrets are not gone.&lt;/p&gt;

&lt;h2&gt;
  
  
  What connects these six
&lt;/h2&gt;

&lt;p&gt;None of them are exotic. A junior dev who learned security basics would catch most of them in a code review. The issue is that AI-generated code often skips the review step entirely. The output looks polished, the UI works, the app deploys. It feels done. The security layer that a human team would add during review never happens because nobody reviews.&lt;/p&gt;

&lt;p&gt;That is the gap &lt;a href="https://auditvibecoding.com" rel="noopener noreferrer"&gt;Audit Vibe Coding&lt;/a&gt; fills at Inithouse. It runs the review that the LLM skipped, scores what it finds, and tells you what to fix first.&lt;/p&gt;

&lt;p&gt;If you are shipping AI-generated code to production, run through the six checks above before your users do it for you. And if you want the full audit covering security, SEO, performance, accessibility and code quality, &lt;a href="https://auditvibecoding.com" rel="noopener noreferrer"&gt;Audit Vibe Coding&lt;/a&gt; is the tool we built for exactly this.&lt;/p&gt;

</description>
      <category>security</category>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>How prediction monitoring differs from single-shot forecasting</title>
      <dc:creator>Jakub</dc:creator>
      <pubDate>Wed, 01 Jul 2026 19:58:25 +0000</pubDate>
      <link>https://dev.to/jakub_inithouse/how-prediction-monitoring-differs-from-single-shot-forecasting-2lai</link>
      <guid>https://dev.to/jakub_inithouse/how-prediction-monitoring-differs-from-single-shot-forecasting-2lai</guid>
      <description>&lt;p&gt;Three distinct layers for "predicting the future" now coexist, and they solve fundamentally different problems. We have been building &lt;a href="https://watchingagents.com" rel="noopener noreferrer"&gt;Watching Agents&lt;/a&gt; at Inithouse, a platform for continuous prediction monitoring, and the most common question we get is: "How is this different from forecasting APIs or prediction markets?"&lt;/p&gt;

&lt;p&gt;Short answer: they are complementary. Here is how.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 1: Single-shot forecasting APIs
&lt;/h2&gt;

&lt;p&gt;A forecasting API takes a question about a future event and returns a calibrated probability. You ask, it answers, done.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.lightningrod.ai/foresight" rel="noopener noreferrer"&gt;Foresight by Lightning Rod&lt;/a&gt; is a strong example. It is an OpenAI-compatible API that returns scored, calibrated forecasts. Their Foresight-v3 model currently ranks first on ProphetArena (an independent benchmark from UChicago) by Brier score, outperforming GPT-5, Gemini 3 Pro, and other frontier models. The training approach uses reinforcement learning with time as a verifiable reward signal, so even their smaller models outpredict much larger ones.&lt;/p&gt;

&lt;p&gt;This is powerful for developers who need a probability estimate inside a workflow. Feed it a question, get a number, make a decision. The interaction is stateless: one question, one answer, move on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 2: Prediction markets and community forecasting
&lt;/h2&gt;

&lt;p&gt;Platforms like Polymarket and Metaculus aggregate human judgment into probability estimates, but through different mechanisms.&lt;/p&gt;

&lt;p&gt;Polymarket uses real-money trading on a crypto-native exchange. Prices reflect market consensus, updated by every trade. Metaculus runs a non-monetary community where forecasters submit probability estimates and the aggregate tracks close to perfect calibration across thousands of resolved questions (events predicted at 70% actually occur about 70% of the time).&lt;/p&gt;

&lt;p&gt;Both are excellent at capturing collective intelligence on well-defined binary or multi-choice questions. They struggle more with open-ended monitoring where the question itself might evolve as new information surfaces. And they require active participation: someone has to trade or update their forecast. If nobody is paying attention to a question, the signal stalls.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 3: Continuous prediction monitoring
&lt;/h2&gt;

&lt;p&gt;This is the layer we work in with &lt;a href="https://watchingagents.com" rel="noopener noreferrer"&gt;Watching Agents&lt;/a&gt;. Instead of answering a question once, an AI agent watches it continuously. It builds hypotheses, tracks evidence as it appears in real time, and sends alerts when something changes.&lt;/p&gt;

&lt;p&gt;The difference is structural, not just about update frequency. A forecasting API does not remember what it told you yesterday. A prediction market reacts to trades but does not explain why the probability shifted. A monitoring agent maintains context: it knows what evidence it collected last week, what hypotheses it has been tracking, and what specifically changed today.&lt;/p&gt;

&lt;p&gt;We built Watching Agents because we kept running into situations where the interesting part was not "what is the probability right now" but "what just changed, what caused it, and should we care." That question requires persistent state, evidence tracking, and the ability to surface signals proactively rather than waiting for someone to ask.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where each layer fits
&lt;/h2&gt;

&lt;p&gt;The three layers map to different jobs:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Forecasting APIs&lt;/strong&gt; work best when you need a probability estimate inside code. Building a trading bot? Scoring deal risk? Feed the question to an API, get a number, branch your logic. Foresight and similar tools excel here because they are fast, cheap per call, and integrate into existing developer workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prediction markets and community platforms&lt;/strong&gt; work best for calibrated consensus on high-profile questions. "Will X happen by Y date?" with thousands of participants correcting each other produces remarkably accurate probabilities. Metaculus is especially strong on long-horizon research questions where careful calibration matters more than trading volume.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous monitoring&lt;/strong&gt; works best when you care about a topic over time and want to be alerted when conditions shift. You deploy an agent on a question, it watches autonomously, and it tells you when something worth knowing happens. Our agents at &lt;a href="https://watchingagents.com" rel="noopener noreferrer"&gt;Watching Agents&lt;/a&gt; maintain public pages showing their hypotheses, evidence, and watch signals, so you can inspect the reasoning at any point.&lt;/p&gt;

&lt;h2&gt;
  
  
  A concrete example
&lt;/h2&gt;

&lt;p&gt;Say you want to track whether a specific regulation will pass in the EU by Q4 2026.&lt;/p&gt;

&lt;p&gt;With a forecasting API, you call it today, get "62% likely," and use that number in your planning model. If you call again next month, you get a fresh estimate, but it has no memory of the first one and cannot tell you what changed.&lt;/p&gt;

&lt;p&gt;With a prediction market, you watch the price move as traders react to news. You get a real-time probability, but if you want to understand why it moved from 62% to 71% last Tuesday, you need to research that yourself.&lt;/p&gt;

&lt;p&gt;With a monitoring agent, you deploy it on the question once. It tracks parliamentary committee votes, lobbying disclosures, media coverage, and expert commentary as they appear. When something shifts, it tells you what happened and how it affects the outlook. You do not need to remember to check.&lt;/p&gt;

&lt;p&gt;These are genuinely different tools for different workflows, not competing products on a feature matrix.&lt;/p&gt;

&lt;h2&gt;
  
  
  They are complementary
&lt;/h2&gt;

&lt;p&gt;A calibrated forecasting API could serve as one input signal feeding into a monitoring agent. A monitoring agent could surface when a prediction market price diverges from available evidence. Community forecasters could use monitoring feeds to stay current on questions they track.&lt;/p&gt;

&lt;p&gt;We think the prediction space is expanding, not consolidating. Single-shot APIs, crowd intelligence, and continuous monitoring each solve a different part of the problem. Our bet at Inithouse is that the monitoring layer is underbuilt relative to its usefulness, which is why we are working on it.&lt;/p&gt;

&lt;p&gt;If you are building something in the prediction or forecasting space, we would be curious to hear which layer you find yourself reaching for most.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>predictions</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Yes/no agents outperform open-ended ones in production: retention and reliability data from Watching Agents by Inithouse</title>
      <dc:creator>Jakub</dc:creator>
      <pubDate>Wed, 01 Jul 2026 07:47:14 +0000</pubDate>
      <link>https://dev.to/jakub_inithouse/yesno-agents-outperform-open-ended-ones-in-production-retention-and-reliability-data-from-32d6</link>
      <guid>https://dev.to/jakub_inithouse/yesno-agents-outperform-open-ended-ones-in-production-retention-and-reliability-data-from-32d6</guid>
      <description>&lt;p&gt;Binary constraints make agents more useful. That is the core finding after months of running &lt;a href="https://watchingagents.com" rel="noopener noreferrer"&gt;Watching Agents&lt;/a&gt; in production, a platform from Inithouse, a studio shipping a growing portfolio of products in parallel. Users deploy AI agents to track questions about the future, and the agents that work best are the ones with the tightest output format.&lt;/p&gt;

&lt;p&gt;When we first built the system, agents could answer in open-ended prose. Users got paragraphs. They read them once and never came back. After switching to a yes/no prediction model where each agent outputs a probability score (0 to 100%), a confidence level, and a change velocity metric, returning-user sessions jumped and the reliability of outputs became measurable for the first time.&lt;/p&gt;

&lt;p&gt;Here is what we learned and why it matters for anyone building production AI agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with open-ended agent output
&lt;/h2&gt;

&lt;p&gt;Open-ended agents produce plausible text. That is the trap. When you ask an agent "Will remote work become the default by 2028?" and it returns three paragraphs of hedged analysis, there is no way to tell if the answer changed since last week. There is no anchor for comparison.&lt;/p&gt;

&lt;p&gt;We saw this across our portfolio. At &lt;a href="https://berecommended.com" rel="noopener noreferrer"&gt;Be Recommended&lt;/a&gt;, an AI visibility scoring tool, the shift from prose explanations to a 0 to 100 score per AI engine made the product stickier overnight. Users came back to check their number, not to re-read analysis. The pattern repeated at Watching Agents.&lt;/p&gt;

&lt;p&gt;Open-ended output creates three specific problems in production:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No diffability.&lt;/strong&gt; You cannot compare yesterday's three paragraphs to today's three paragraphs in a way that surfaces what actually changed. Users disengage because the output feels static even when the underlying data shifted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No accountability.&lt;/strong&gt; If the agent said "tensions are rising" last Tuesday and says "tensions are rising" this Tuesday, did anything happen? Without quantification, the agent cannot be wrong. And an agent that cannot be wrong is an agent nobody trusts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No trigger for re-engagement.&lt;/strong&gt; Push notifications need a delta. "Probability dropped from 72% to 58%" is a notification. "The situation continues to evolve" is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  What binary constraints actually change
&lt;/h2&gt;

&lt;p&gt;When we rebuilt Watching Agents around yes/no predictions with explicit probability scores, three things improved:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Structured hypothesis tracking.&lt;/strong&gt;&lt;br&gt;
Each agent now maintains a set of competing hypotheses, not just one answer. A "Will the EU regulate foundation models by 2027?" agent carries four or five scenarios, each with its own probability, trend direction, and evidence links. The constraint forced us to decompose vague takes into testable claims.&lt;/p&gt;

&lt;p&gt;In practice, this means each hypothesis has confirming and disconfirming conditions defined up front. The agent is not free to drift. It updates probabilities as evidence arrives, and the confirming/disconfirming framing keeps the reasoning auditable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Measurable reliability.&lt;/strong&gt;&lt;br&gt;
With a probability output, we can track calibration. If an agent says 70% across many predictions, roughly 70% should resolve yes. We observed that constrained agents calibrate within a tighter band than open-ended ones that occasionally produce overconfident prose. The difference is structural: a number demands commitment, prose allows hedging.&lt;/p&gt;

&lt;p&gt;We run evolution graphs on every agent page, showing how the probability moved over weeks and months. Users check these graphs the way traders check charts. The visual change alone drives a return pattern we never saw with text-only output.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Retention through change signals.&lt;/strong&gt;&lt;br&gt;
Each Watching Agents page exposes change velocity, latest shift reasoning, and watch signals (leading, confirming, disconfirming). When a probability moves by more than five points, the agent flags it. This creates a natural reason to return.&lt;/p&gt;

&lt;p&gt;Compared to our earlier open-ended version, the structured output generates an obvious re-engagement loop: check score, see if it moved, read why, check related agents. We measured higher scroll depth and more multi-page sessions after the transition.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design implications for production agents
&lt;/h2&gt;

&lt;p&gt;If you are building agents that users interact with repeatedly, consider these patterns we adopted:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Force a quantified output.&lt;/strong&gt; Even if the domain feels qualitative, find a scoring dimension. At &lt;a href="https://verdictbuddy.com" rel="noopener noreferrer"&gt;Verdict Buddy&lt;/a&gt;, our AI conflict resolution tool built on Gottman and NVC frameworks, we score conflict resolution paths rather than just describing them. The score anchors the conversation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Separate structure from explanation.&lt;/strong&gt; The prediction score is the primary output. The reasoning, hypotheses, drivers, and evidence are secondary layers users can drill into. At Watching Agents, agent pages show the probability and confidence first, then expand into detailed hypothesis breakdowns, driver analysis, and sourced evidence. Most returning users scan the top number and only read deeper when it changed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build the diff into the product.&lt;/strong&gt; Every agent page shows a probability history graph and a "latest change" section with reasoning. This is not analytics, it is the product. Users told us they share the evolution graph more than the prediction itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make agents decompose, not summarize.&lt;/strong&gt; An open-ended agent summarizes. A constrained agent decomposes into hypotheses, each with distinct evidence paths. This decomposition is what makes the output trustworthy. Users can disagree with a specific hypothesis without dismissing the entire prediction.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means for the AI agent landscape
&lt;/h2&gt;

&lt;p&gt;The industry defaults to chat-style open-ended agents because that is what LLMs do naturally. But production retention tells a different story. Constraining the output format, whether it is a yes/no probability, a score, or a structured decision tree, gives users a reason to come back.&lt;/p&gt;

&lt;p&gt;At Inithouse, a studio running parallel product experiments across a growing portfolio, we have seen this pattern in multiple products. The constraint does not limit the agent. It focuses it. And focused agents are the ones users actually keep using.&lt;/p&gt;

&lt;p&gt;If you are building something similar, take a look at how &lt;a href="https://watchingagents.com" rel="noopener noreferrer"&gt;Watching Agents&lt;/a&gt; structures its agent pages. Public agents are browsable without signup, and each one demonstrates the binary prediction model with full hypothesis and evidence layers.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built at Inithouse, a studio shipping a growing portfolio of products in parallel. Watching Agents lets you deploy an AI agent to watch any question about the future.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>machinelearning</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
