<?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: Harshavardhan Surisetty</title>
    <description>The latest articles on DEV Community by Harshavardhan Surisetty (@harshaiiiv).</description>
    <link>https://dev.to/harshaiiiv</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%2F427613%2F90260cf3-2142-446e-beb2-92b98a1e20b5.jpeg</url>
      <title>DEV Community: Harshavardhan Surisetty</title>
      <link>https://dev.to/harshaiiiv</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/harshaiiiv"/>
    <language>en</language>
    <item>
      <title>How I Built a Pipeline That Turns Any Website URL Into a Narrated 16:9, 9:16 &amp; 4:5 Launch Video in 10 Minutes</title>
      <dc:creator>Harshavardhan Surisetty</dc:creator>
      <pubDate>Fri, 16 Oct 2026 06:42:58 +0000</pubDate>
      <link>https://dev.to/harshaiiiv/how-i-built-a-pipeline-that-turns-any-website-url-into-a-narrated-169-916-45-launch-video-in-4b11</link>
      <guid>https://dev.to/harshaiiiv/how-i-built-a-pipeline-that-turns-any-website-url-into-a-narrated-169-916-45-launch-video-in-4b11</guid>
      <description>&lt;p&gt;Every founder knows the feeling: you spend months building a real product, shipping the backend, and polishing the landing page—and then launch day arrives and you realize you don't have a 60-second launch video for Product Hunt, LinkedIn, or X.&lt;/p&gt;

&lt;p&gt;Hiring a studio takes 2–4 weeks and $2,000+. Opening CapCut or After Effects eats an entire weekend.&lt;/p&gt;

&lt;p&gt;After maintaining &lt;code&gt;openapi-mcp-generator&lt;/code&gt; (589,000+ npm downloads), I kept seeing solo builders and small teams launch quietly because video production was the bottleneck. So I built &lt;strong&gt;&lt;a href="https://crossloop.ai" rel="noopener noreferrer"&gt;CrossLoop&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What CrossLoop does from a single URL
&lt;/h3&gt;

&lt;p&gt;You paste any public product URL into &lt;a href="https://crossloop.ai" rel="noopener noreferrer"&gt;crossloop.ai&lt;/a&gt;, and in about 10 minutes the pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Reads your live DOM &amp;amp; brand tokens&lt;/strong&gt;: Extracts your headline hierarchy, proof points, UI visuals, and brand color palette.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writes a structured 60-second launch script&lt;/strong&gt;: Follows a proven 5-part arc (0–5s Hook, 5–20s Product in action, 20–45s Three proof points, 45–52s Social proof, 52–60s CTA).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Synthesizes voiceover + word-by-word &lt;code&gt;.srt&lt;/code&gt; timing&lt;/strong&gt;: Records a clean narration and aligns frame transitions to word timestamps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Renders all 3 social formats simultaneously&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;16:9&lt;/code&gt; (1920×1080) for YouTube, homepage hero, and Product Hunt gallery&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;4:5&lt;/code&gt; (1080×1350) for LinkedIn and Instagram feed posts&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;9:16&lt;/code&gt; (1080×1920) for Reels, TikTok, and YouTube Shorts&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generates platform-native post copy&lt;/strong&gt;: Ready-to-post LinkedIn and Instagram captions tailored to your product.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Why we skipped subscriptions ($9 per film)
&lt;/h3&gt;

&lt;p&gt;Founders don't want another $49/month recurring SaaS bill just to ship a launch video. CrossLoop is flat per-film pricing starting at &lt;strong&gt;$9&lt;/strong&gt; (or &lt;strong&gt;$19&lt;/strong&gt; for a Studio film, with a 7-day 100% money-back guarantee).&lt;/p&gt;

&lt;p&gt;If you're shipping a product, feature update, or open-source tool this month, check out the &lt;a href="https://crossloop.ai/blog/product-hunt-launch-video" rel="noopener noreferrer"&gt;Product Hunt Launch Video 60s Script Guide&lt;/a&gt; or try it on your own URL at &lt;strong&gt;&lt;a href="https://crossloop.ai" rel="noopener noreferrer"&gt;https://crossloop.ai&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>saas</category>
      <category>showdev</category>
    </item>
    <item>
      <title>License Referee — a compatibility ruling agent backed by Sanity Context</title>
      <dc:creator>Harshavardhan Surisetty</dc:creator>
      <pubDate>Sat, 19 Sep 2026 22:57:53 +0000</pubDate>
      <link>https://dev.to/harshaiiiv/license-referee-a-compatibility-ruling-agent-backed-by-sanity-context-4a28</link>
      <guid>https://dev.to/harshaiiiv/license-referee-a-compatibility-ruling-agent-backed-by-sanity-context-4a28</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/sanity-2026-09-16"&gt;Sanity Challenge, Path One: Ship an Agent That Queries Real Content&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;License Referee&lt;/strong&gt; — paste a &lt;code&gt;package.json&lt;/code&gt;, a GitHub repo URL, or an npm package name, and it rules on whether every dependency's license can legally combine with your project's, in which direction, under what conditions, and who said so.&lt;/p&gt;

&lt;p&gt;"Can I use this?" is usually answered by glancing at a license badge, which is wrong in ways that matter. Compatibility is &lt;strong&gt;directional&lt;/strong&gt; (Apache-2.0 code may go into a GPLv3 work; GPLv3 code may not go into an Apache-2.0 work — same two licenses, opposite answer). It's &lt;strong&gt;version-exact&lt;/strong&gt; (Apache-2.0 is compatible with GPLv3 and incompatible with GPLv2, per both the Apache Software Foundation and the FSF). And &lt;strong&gt;authorities disagree with each other&lt;/strong&gt; — the OSI approves licenses the FSF doesn't call free software; CC0 is FSF-recommended for software but was withdrawn from OSI review.&lt;/p&gt;

&lt;p&gt;None of that survives a keyword search. It needs a graph: license → directional ruling → authority → obligation, with the disagreements kept visible instead of averaged away.&lt;/p&gt;

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

&lt;p&gt;Live app: &lt;a href="https://license-referee.vercel.app" rel="noopener noreferrer"&gt;https://license-referee.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Video: &lt;a href="https://youtu.be/-cBBpuPs8IU" rel="noopener noreferrer"&gt;https://youtu.be/-cBBpuPs8IU&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Try it with a real project: paste&lt;br&gt;
{"license":"GPL-2.0-only","dependencies":{"@grpc/grpc-js":"^1"}}&lt;br&gt;
and watch it explain, correctly, why that combination isn't allowed — and what would fix it.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/harsha-iiiv/license-referee" rel="noopener noreferrer"&gt;https://github.com/harsha-iiiv/license-referee&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used Sanity
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Sanity project:&lt;/strong&gt; &lt;code&gt;9qqt8rm4&lt;/code&gt;, dataset &lt;code&gt;production&lt;/code&gt;. Schema: &lt;code&gt;license&lt;/code&gt; (SPDX id, category, OSI/FSF flags, permissions/conditions/limitations), &lt;code&gt;compatibilityRuling&lt;/code&gt; (directional &lt;code&gt;from&lt;/code&gt; → &lt;code&gt;into&lt;/code&gt;, verdict, combination kind, verbatim quote, source URL, optional &lt;code&gt;dissent&lt;/code&gt; when authorities disagree), &lt;code&gt;obligation&lt;/code&gt; (what to do, per license per trigger), &lt;code&gt;source&lt;/code&gt; (the authorities, ranked by what they're authoritative for).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Knowledge Base:&lt;/strong&gt; indexed from that dataset — every ruling carries a quote and source URL checked live against the authority itself (FSF, GNU, Apache, Mozilla, Eclipse, OSI, choosealicense.com) during verification.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sanity Context tools used:&lt;/strong&gt; &lt;code&gt;initial_context&lt;/code&gt; and &lt;code&gt;knowledge_base_read&lt;/code&gt; against the Knowledge Base endpoint for explanations, obligations, and cross-source reconciliation; &lt;code&gt;groq_query&lt;/code&gt; and &lt;code&gt;schema_explorer&lt;/code&gt; against a GROQ endpoint over the same dataset for exact, deterministic verdict lookups.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the agent does with what it retrieves:&lt;/strong&gt; resolves every dependency's declared license from the npm registry, normalizes it to an SPDX expression, looks up an exact ruling for each (dependency license → project license) pair, falls back to the Knowledge Base for conditions and edge cases when no direct ruling exists, and never guesses — an unmapped pair comes back "unknown," not a fabricated verdict.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did structure matter?&lt;/strong&gt; I ran a 22-question golden set through three configurations: this agent, a keyword-search baseline over the identical source pages, and a no-retrieval baseline.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mode&lt;/th&gt;
&lt;th&gt;Pass&lt;/th&gt;
&lt;th&gt;Avg score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sanity Context (this agent)&lt;/td&gt;
&lt;td&gt;21/22&lt;/td&gt;
&lt;td&gt;98%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keyword search&lt;/td&gt;
&lt;td&gt;21/22&lt;/td&gt;
&lt;td&gt;98%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No retrieval&lt;/td&gt;
&lt;td&gt;16/22&lt;/td&gt;
&lt;td&gt;93%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The telling case: an obscure license (BlueOak-1.0.0) into a GPL-3.0-only project. All three modes reached the correct verdict, but in one no-retrieval run the model backed it with a citation that doesn't exist — a fabricated FSF license-list entry, checked live against the real page. Both retrieval-backed modes correctly said no FSF ruling exists for it instead. A right verdict with an invented authority is worse than a right verdict with an honest "no ruling exists."&lt;/p&gt;

&lt;h2&gt;
  
  
  Sanity Project Details
&lt;/h2&gt;

&lt;p&gt;Project ID: 9qqt8rm4, dataset production&lt;br&gt;
Studio: &lt;a href="https://license-referee.sanity.studio/" rel="noopener noreferrer"&gt;https://license-referee.sanity.studio/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Agent Session
&lt;/h2&gt;

&lt;p&gt;The build started with a design pass: what would make this trustworthy rather than just plausible? The answer was a typed graph instead of prose — license, compatibilityRuling, obligation, and source as separate Sanity document types, with &lt;code&gt;from&lt;/code&gt;/&lt;code&gt;into&lt;/code&gt; as distinct fields so the direction of a ruling could never get silently inverted by a model reading too casually.&lt;/p&gt;

&lt;p&gt;The dataset itself went through an adversarial verification pass: every ruling's quote and source URL was checked against the live page it cited. That pass caught 16 quotes that were paraphrased rather than verbatim, one wrong verdict (CC-BY-4.0 into GPL was marked incompatible; the FSF's actual position is the opposite), and a structural gap — zero rulings for a copyleft dependency going into a permissive or closed-source project, the single most consequential direction for a real npm tree. All of that got fixed and the ruling set grew from 70 to 138 entries.&lt;/p&gt;

&lt;p&gt;The last mile was proving the thesis instead of asserting it: a golden set of 22 real questions and project audits, run through the production agent, a keyword-search baseline over the identical source pages, and a no-retrieval baseline. The gap that mattered wasn't the score — it was a no-retrieval run inventing an FSF citation that doesn't exist on the real page, while both retrieval-backed modes correctly said no such ruling exists. That's the whole argument for structured content in one example: a right answer with a fabricated source is worse than a right answer with an honest gap.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>sanitychallenge</category>
      <category>sanity</category>
      <category>ai</category>
    </item>
    <item>
      <title>THE WORLD'S FIRST HACKATHON FOR VOICE-ENABLED APPLICATIONS</title>
      <dc:creator>Harshavardhan Surisetty</dc:creator>
      <pubDate>Thu, 09 Jul 2020 08:30:03 +0000</pubDate>
      <link>https://dev.to/harshaiiiv/the-world-s-first-hackathon-for-voice-enabled-applications-3g55</link>
      <guid>https://dev.to/harshaiiiv/the-world-s-first-hackathon-for-voice-enabled-applications-3g55</guid>
      <description>&lt;p&gt;We’re hosting our very first virtual #hackathon! Join as an individual or team &amp;amp; create a voice assistant with the Alan Platform 🗣Mobile phone #AlanVoiceAIHackathon&lt;/p&gt;

&lt;p&gt;Learn more here  &lt;a href="https://hackathon.alan.app"&gt;https://hackathon.alan.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Submissions are due by July 15th&lt;/p&gt;

&lt;h1&gt;
  
  
  webdev #100daysofcode #JavaScript
&lt;/h1&gt;

</description>
    </item>
  </channel>
</rss>
