<?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: Alex Quach</title>
    <description>The latest articles on DEV Community by Alex Quach (@vytrox).</description>
    <link>https://dev.to/vytrox</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%2F3951100%2F41cdbee4-6a83-412f-99db-d6e019a2b6fe.jpg</url>
      <title>DEV Community: Alex Quach</title>
      <link>https://dev.to/vytrox</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vytrox"/>
    <language>en</language>
    <item>
      <title>Flunes: turning 'it's broken' into real GitHub issues, via one link</title>
      <dc:creator>Alex Quach</dc:creator>
      <pubDate>Mon, 25 May 2026 17:02:15 +0000</pubDate>
      <link>https://dev.to/vytrox/flunes-turning-its-broken-into-real-github-issues-via-one-link-kim</link>
      <guid>https://dev.to/vytrox/flunes-turning-its-broken-into-real-github-issues-via-one-link-kim</guid>
      <description>&lt;h2&gt;
  
  
  The problem that wouldn't go away
&lt;/h2&gt;

&lt;p&gt;Every client project I shipped ended the same way: a flood of bug reports &lt;br&gt;
arriving as Slack screenshots, half-finished emails, voice memos, and the &lt;br&gt;
classic "the button is broken on my phone."&lt;/p&gt;

&lt;p&gt;None of it was actionable. Every Friday I'd burn 2-3 hours translating &lt;br&gt;
fuzzy human feedback into proper GitHub issues a developer could pick up &lt;br&gt;
Monday morning.&lt;/p&gt;

&lt;p&gt;I tried the usual suspects — Linear forms, Canny, Notion intake docs, a &lt;br&gt;
Typeform piped through Zapier. They all had the same failure mode: my &lt;br&gt;
non-technical clients didn't want to fill them out. Too many fields, too &lt;br&gt;
much process, "where do I click again?"&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://flunes.com" rel="noopener noreferrer"&gt;Flunes&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;One link. That's the whole pitch to a collaborator.&lt;/p&gt;

&lt;p&gt;They open it, write what's wrong in plain English, attach a screenshot &lt;br&gt;
if they feel like it, hit submit. On the other side:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An LLM reads the submission against the connected repo's context&lt;/li&gt;
&lt;li&gt;It produces a structured issue — summary, observed vs expected, 
reproduction steps, impact, likely-affected areas of the codebase&lt;/li&gt;
&lt;li&gt;The issue lands in GitHub with appropriate labels (bug, priority, area)&lt;/li&gt;
&lt;li&gt;The collaborator gets a confirmation. They never see GitHub. They 
never create an account. They never see anything you or I would call 
"technical."&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The bet: the bottleneck isn't &lt;em&gt;getting&lt;/em&gt; feedback. It's getting feedback &lt;br&gt;
in a shape a developer can act on without 20 minutes of triage.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the repo-awareness works (the part I want to talk about)
&lt;/h2&gt;

&lt;p&gt;The naive approach is "embed every file in the repo, retrieve top-k at &lt;br&gt;
submission time." I tried it. It was noisy and expensive.&lt;/p&gt;

&lt;p&gt;What actually worked:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Index file paths and directory structure on repo connect&lt;/li&gt;
&lt;li&gt;Generate a one-paragraph summary per top-level directory&lt;/li&gt;
&lt;li&gt;Pull recent commit messages and open issues for vocabulary&lt;/li&gt;
&lt;li&gt;At submission time, do a single LLM call with the submission + that 
compact repo manifest as context&lt;/li&gt;
&lt;li&gt;Output a structured issue with a &lt;code&gt;likely-affected areas&lt;/code&gt; section that 
references actual paths in the repo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gives the collaborator's report &lt;em&gt;grounding&lt;/em&gt; without dragging full &lt;br&gt;
file contents into the prompt. A bug report saying "the login screen is &lt;br&gt;
slow on Safari" comes out the other side referencing &lt;br&gt;
&lt;code&gt;apps/web/features/auth/&lt;/code&gt; instead of guessing.&lt;/p&gt;

&lt;p&gt;It's not magic. It's wrong sometimes. The AI disclaimer on every &lt;br&gt;
generated issue is real, not theater.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 15&lt;/strong&gt; on &lt;strong&gt;Cloudflare Workers&lt;/strong&gt; (OpenNext). Cheap to run, 
fast cold starts, scales to zero.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supabase&lt;/strong&gt; for auth + Postgres. Worth every cent of the free tier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub App&lt;/strong&gt; for repo access — never asked for a personal token, 
scoped per-install.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Polar&lt;/strong&gt; for billing, routed through &lt;strong&gt;Hookdeck&lt;/strong&gt; for webhook 
reliability. Stripe-tax-style headaches without the Stripe price tag.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tiptap&lt;/strong&gt; for the editor on the submission page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;next-intl&lt;/strong&gt; because the second user who tried it was in Germany.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's free vs paid
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Free: 1 repo, unlimited collaborators, unlimited submissions, AI 
structuring, GitHub issue creation.&lt;/li&gt;
&lt;li&gt;Starter / Pro add more repos, screenshot quotas, and higher AI usage 
caps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Free tier is not a trial. It's a working product. I'd rather have you &lt;br&gt;
use it than churn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons from building this
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The submission form is the product.&lt;/strong&gt; I spent more time on the 
collaborator-facing page than the dashboard. If a non-dev quits after 
10 seconds, nothing else matters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI output needs an obvious "this was machine-generated" tag.&lt;/strong&gt; 
Devs reviewing issues want to know what to trust.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Webhook reliability is its own product surface.&lt;/strong&gt; Polar webhooks 
dropping silently cost me a week. Hookdeck in front of them was the 
fix.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare Workers + Next.js is genuinely good now.&lt;/strong&gt; A year ago I 
would not have recommended it. Today, yes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I want from you
&lt;/h2&gt;

&lt;p&gt;If you ship to non-technical users — clients, internal stakeholders, &lt;br&gt;
beta testers, your mom — I'd love to hear:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What's your current flow for turning their feedback into something 
a developer can act on?&lt;/li&gt;
&lt;li&gt;Where would Flunes break down for your team?&lt;/li&gt;
&lt;li&gt;What kind of bug report would you throw at the AI to see it fail?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Drop a comment, or &lt;a href="https://flunes.com" rel="noopener noreferrer"&gt;try it&lt;/a&gt; and break it. Free &lt;br&gt;
tier covers everything you'd need to evaluate it.&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>saas</category>
      <category>ai</category>
      <category>github</category>
    </item>
  </channel>
</rss>
