<?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: Prolific Virtual Assistant</title>
    <description>The latest articles on DEV Community by Prolific Virtual Assistant (@prolific_virtualassistan).</description>
    <link>https://dev.to/prolific_virtualassistan</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%2F4055021%2F3ba4a9cf-e824-4dee-99bd-a8b48ad2a3ac.png</url>
      <title>DEV Community: Prolific Virtual Assistant</title>
      <link>https://dev.to/prolific_virtualassistan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/prolific_virtualassistan"/>
    <language>en</language>
    <item>
      <title>171 days, zero to first subscription — what actually worked</title>
      <dc:creator>Prolific Virtual Assistant</dc:creator>
      <pubDate>Tue, 08 Sep 2026 15:00:00 +0000</pubDate>
      <link>https://dev.to/prolific_virtualassistan/171-days-zero-to-first-subscription-what-actually-worked-254a</link>
      <guid>https://dev.to/prolific_virtualassistan/171-days-zero-to-first-subscription-what-actually-worked-254a</guid>
      <description>&lt;p&gt;On September 7, 2026, someone paid $12 for KweliAI Pro Monthly.&lt;br&gt;
171 days after I started building in earnest.&lt;/p&gt;

&lt;p&gt;This is the honest breakdown of what worked, what didn't, and what I'd do differently.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk9rck4eg44xur9lxetnp.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk9rck4eg44xur9lxetnp.jpeg" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What KweliAI is
&lt;/h2&gt;

&lt;p&gt;A deepfake and AI content detector for social media. Paste any public post link from X, Reddit, TikTok, YouTube, Instagram or Facebook and get a verdict — Real, AI-generated, or Deepfake — in seconds. No downloading needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backend: FastAPI on DigitalOcean behind Nginx&lt;/li&gt;
&lt;li&gt;Media extraction: yt-dlp + ffmpeg in Docker&lt;/li&gt;
&lt;li&gt;Detection: Three deepfake detection models running in parallel for image, audio, and video detection.&lt;/li&gt;
&lt;li&gt;Auth + database: Supabase&lt;/li&gt;
&lt;li&gt;Payments: Paystack&lt;/li&gt;
&lt;li&gt;Frontend: Plain HTML/CSS/JS on Vercel&lt;/li&gt;
&lt;li&gt;Emails: Resend&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What didn't work
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Waiting for organic search traffic.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I spent the first 60 days believing that if I built something useful and deployed it, people would find it. They didn't. Google takes months to rank a new domain. Without backlinks, you don't exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vanity metrics as a substitute for revenue.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ChatGPT referrals arriving. Microsoft Copilot citations. Google AI Overview appearing. These felt like progress. They were leading indicators, not outcomes.&lt;/p&gt;

&lt;p&gt;I let them fill the space where revenue should have been.&lt;/p&gt;

&lt;p&gt;The moment I noticed that — the moment I identified the pride in calling traction what was actually just noise — I changed approach.&lt;/p&gt;




&lt;h2&gt;
  
  
  What actually worked
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. GEO over SEO
&lt;/h3&gt;

&lt;p&gt;Getting cited by AI engines drove more qualified traffic than Google rankings. The playbook:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;llms.txt&lt;/code&gt; at root — tells AI crawlers exactly what the tool does, pricing, use cases&lt;/li&gt;
&lt;li&gt;Bing Webmaster Tools — Bing feeds ChatGPT, Copilot, and Perplexity simultaneously&lt;/li&gt;
&lt;li&gt;Answer-format content — direct answers to queries people type into AI tools&lt;/li&gt;
&lt;li&gt;FAQ schema markup — Google and Copilot pull FAQ answers into AI responses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Result: 12 Copilot citations for "best platforms to detect fake social media profiles" before we had significant Google rankings.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcklzk43h9kxfe5cyf2br.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcklzk43h9kxfe5cyf2br.png" alt=" " width="397" height="615"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Scenario pages over feature pages
&lt;/h3&gt;

&lt;p&gt;Instead of "KweliAI — AI detection tool" we built:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/i-think-im-being-catfished&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/is-this-video-real&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/i-think-this-recruiter-is-fake&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/verify-viral-news-content&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These match exactly how people describe their situation to ChatGPT. When ChatGPT searched for "I met someone online and I think their photos are fake" — it found our page.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Comparison page
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;/best-ai-deepfake-detectors-2026&lt;/code&gt; — honest comparison against Sensity AI, Reality Defender, Hive, and InVID WeVerify. This became our most cited page.&lt;/p&gt;

&lt;p&gt;When AI engines answer "what is the best deepfake detector" they look for pages that compare tools. Being on those pages is how you get recommended.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Backlinks from content worth linking to
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;code&gt;awesome-deepfake-detection&lt;/code&gt; curated list&lt;/li&gt;
&lt;li&gt;Dev.to technical article on the extraction layer&lt;/li&gt;
&lt;li&gt;Medium articles on trust and AI&lt;/li&gt;
&lt;li&gt;Quora answers on deepfake detection&lt;/li&gt;
&lt;li&gt;HackerNews Show HN post&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;6 referring domains. Not a lot. Enough to start.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Email sequences that trigger at the right moment
&lt;/h3&gt;

&lt;p&gt;Four emails via Resend:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Welcome&lt;/strong&gt; — fires on first scan&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nudge&lt;/strong&gt; — fires when &lt;code&gt;usage_today&lt;/code&gt; reaches 3&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limit reached&lt;/strong&gt; — fires when &lt;code&gt;usage_today&lt;/code&gt; reaches 5&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Re-engagement&lt;/strong&gt; — fires after 7 days inactive&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The limit reached email is the highest converting. The user just felt the pain of the limit at the exact moment they needed another scan.&lt;/p&gt;




&lt;h2&gt;
  
  
  The numbers on day 171
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Google impressions (28 days)&lt;/td&gt;
&lt;td&gt;1,100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Average position&lt;/td&gt;
&lt;td&gt;42.6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Copilot citations&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Referring domains&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Revenue&lt;/td&gt;
&lt;td&gt;$12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subscribers&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Position 42.6 means page 4-5. People don't go to page 4. The backlink work moves that number and it takes time.&lt;/p&gt;

&lt;p&gt;But Copilot citations are the leading indicator that matters. AI engine citations convert at a higher rate than organic search — the user arrives pre-convinced. The AI already told them this tool is the answer.&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;Name the tool differently.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;KweliAI — kweli means truth in Swahili. Meaningful to us. Requires explanation to everyone else. The tools AI engines recommend naturally have self-explaining names. ZeroGPT. DeepfakeDetector. The name carries the recommendation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start the content earlier.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Scenario pages and comparison pages should have been live before the product launched. Content takes 6-8 weeks to rank. I spent those weeks on features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build the email sequence before the first user.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We had users arriving for 3 months with no email follow-up. Every user who hit the limit and left without upgrading is a missed conversion we can't recover.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F64ni7lkpbfo3qh401m02.png" alt=" " width="698" height="560"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Where we're building from
&lt;/h2&gt;

&lt;p&gt;Diani, Kenya. South Coast.&lt;/p&gt;

&lt;p&gt;We are Prolific VA — building SaaS products and digital services for East Africa and beyond. KweliAI is one product. Safina MIS and Jahazi POS are others.&lt;/p&gt;

&lt;p&gt;Geography is no longer destiny. You can build software that competes globally from anywhere with power and internet.&lt;/p&gt;

&lt;p&gt;171 days. One subscriber. Enough to keep going.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Try KweliAI free: &lt;a href="https://kweliai.com" rel="noopener noreferrer"&gt;kweliai.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Follow the build: &lt;a href="https://x.com/prolificVA" rel="noopener noreferrer"&gt;@prolificVA&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>ai</category>
      <category>saas</category>
      <category>startup</category>
    </item>
    <item>
      <title>How I built a free deepfake detector that works directly from social media URLs</title>
      <dc:creator>Prolific Virtual Assistant</dc:creator>
      <pubDate>Thu, 30 Jul 2026 12:28:01 +0000</pubDate>
      <link>https://dev.to/prolific_virtualassistan/how-i-built-a-free-deepfake-detector-that-works-directly-from-social-media-urls-2g2b</link>
      <guid>https://dev.to/prolific_virtualassistan/how-i-built-a-free-deepfake-detector-that-works-directly-from-social-media-urls-2g2b</guid>
      <description>&lt;p&gt;I built &lt;a href="https://kweliai.com" rel="noopener noreferrer"&gt;KweliAI&lt;/a&gt; — a free tool that checks whether &lt;br&gt;
images and videos on social media are real, AI-generated, or deepfakes. &lt;br&gt;
The thing that makes it different from every other detector I found: &lt;br&gt;
you paste the post URL and it works. No downloading. No file upload. &lt;br&gt;
Just paste and get a verdict.&lt;/p&gt;

&lt;p&gt;This is how I built it.&lt;/p&gt;
&lt;h2&gt;
  
  
  The problem I was solving
&lt;/h2&gt;

&lt;p&gt;Every deepfake detection tool I found required you to download the file &lt;br&gt;
first. That sounds simple until you try to download a TikTok video or &lt;br&gt;
an X post video — platforms deliberately make this difficult. &lt;/p&gt;

&lt;p&gt;People who suspect they're being catfished, or who want to verify a &lt;br&gt;
viral video before sharing it, don't want to fight with download tools. &lt;br&gt;
They want to paste a link and get an answer.&lt;/p&gt;
&lt;h2&gt;
  
  
  Media extraction with yt-dlp
&lt;/h2&gt;

&lt;p&gt;The core of KweliAI is yt-dlp — the most comprehensive media extraction &lt;br&gt;
library available. It supports X, Reddit, TikTok, YouTube, Instagram, &lt;br&gt;
and Facebook out of the box.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;yt_dlp&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;download_media&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;output_path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;ydl_opts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;outtmpl&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;output_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;format&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;best[ext=mp4]/best&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;quiet&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;no_warnings&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;yt_dlp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;YoutubeDL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ydl_opts&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;ydl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;ydl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;download&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The tricky parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each platform has different rate limits and URL structures&lt;/li&gt;
&lt;li&gt;Videos need ffmpeg to merge audio and video streams&lt;/li&gt;
&lt;li&gt;Private posts return authentication errors that need clear user messaging&lt;/li&gt;
&lt;li&gt;yt-dlp updates weekly to keep up with platform changes — pin loosely&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Three detection models running in parallel
&lt;/h2&gt;

&lt;p&gt;Once the media is extracted, three models run simultaneously:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. AI image detection&lt;/strong&gt; — trained to identify images from Midjourney, &lt;br&gt;
DALL·E, Stable Diffusion, and Adobe Firefly. Looks for GAN fingerprints &lt;br&gt;
and diffusion model artifacts in pixel frequency patterns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Deepfake detection&lt;/strong&gt; — analyses facial boundary consistency, &lt;br&gt;
blinking patterns, skin texture coherence, and temporal frame consistency &lt;br&gt;
across video frames.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. AI audio detection&lt;/strong&gt; — checks whether voices in video content are &lt;br&gt;
cloned or synthetic. Analyses spectral patterns and prosodic naturalness.&lt;/p&gt;

&lt;p&gt;All three run in parallel using Python's &lt;code&gt;concurrent.futures&lt;/code&gt;. The &lt;br&gt;
results are combined into a single clarity score and a plain-English &lt;br&gt;
verdict.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; FastAPI on a DigitalOcean droplet behind Nginx&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detection:&lt;/strong&gt; Hive Moderation API for the three model calls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Media extraction:&lt;/strong&gt; yt-dlp + ffmpeg inside Docker&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auth + database:&lt;/strong&gt; Supabase&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payments:&lt;/strong&gt; Paystack (we're based in Kenya — Stripe wasn't an option)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Plain HTML/CSS/JS on Vercel&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Emails:&lt;/strong&gt; Resend for transactional sequences&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Dockerfile
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; python:3.11-slim&lt;/span&gt;

&lt;span class="k"&gt;RUN &lt;/span&gt;apt-get update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nt"&gt;--no-install-recommends&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;    ffmpeg curl &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; /var/lib/apt/lists/&lt;span class="k"&gt;*&lt;/span&gt;

&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /app&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; requirements.txt .&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--no-cache-dir&lt;/span&gt; &lt;span class="nt"&gt;--timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;300 &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; . .&lt;/span&gt;

&lt;span class="k"&gt;RUN &lt;/span&gt;useradd &lt;span class="nt"&gt;-m&lt;/span&gt; appuser &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;chown&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; appuser /app
&lt;span class="k"&gt;USER&lt;/span&gt;&lt;span class="s"&gt; appuser&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /tmp/kweliai

&lt;span class="k"&gt;EXPOSE&lt;/span&gt;&lt;span class="s"&gt; 8000&lt;/span&gt;
&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "2"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key thing here is ffmpeg — yt-dlp needs it to merge video and audio &lt;br&gt;
streams for most platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  What surprised me
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The use case I didn't expect.&lt;/strong&gt; I built this for journalists and &lt;br&gt;
fact-checkers. The actual users are people who met someone online and &lt;br&gt;
want to verify their photos before getting emotionally invested. &lt;br&gt;
Romance scam victims and people who've been catfished before. That &lt;br&gt;
realization changed how I write about the tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;yt-dlp breaks constantly.&lt;/strong&gt; Platforms change their APIs and &lt;br&gt;
authentication flows regularly. TikTok and Instagram are the worst. &lt;br&gt;
I use &lt;code&gt;&amp;gt;=&lt;/code&gt; version pinning for yt-dlp instead of &lt;code&gt;==&lt;/code&gt; so it always &lt;br&gt;
installs the latest version on build.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GEO matters more than SEO for tools like this.&lt;/strong&gt; Getting indexed &lt;br&gt;
by Bing feeds ChatGPT, Copilot, and Perplexity simultaneously. &lt;br&gt;
ChatGPT started recommending KweliAI to users asking about deepfake &lt;br&gt;
detection within three weeks of launch — before we had significant &lt;br&gt;
Google rankings.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons for anyone building detection tools
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Work from URLs not file uploads — removes the biggest friction point&lt;/li&gt;
&lt;li&gt;Run multiple models in parallel — single model accuracy is never enough&lt;/li&gt;
&lt;li&gt;Return plain English — "AI-generated with high confidence" not a score&lt;/li&gt;
&lt;li&gt;Handle platform errors gracefully — private posts, rate limits, and 
unsupported URLs all need clear user-facing messages&lt;/li&gt;
&lt;li&gt;Pin yt-dlp loosely — &lt;code&gt;&amp;gt;=2026.1.1&lt;/code&gt; not &lt;code&gt;==2026.3.17&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;KweliAI is free to use — 5 scans per day on X and Reddit with no &lt;br&gt;
credit card required: &lt;a href="https://kweliai.com" rel="noopener noreferrer"&gt;kweliai.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The awesome-deepfake-detection resource list I maintain is here: &lt;br&gt;
&lt;a href="https://github.com/MohammadNyundo/awesome-deepfake-detection" rel="noopener noreferrer"&gt;github.com/MohammadNyundo/awesome-deepfake-detection&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy to answer questions about the detection approach, the yt-dlp &lt;br&gt;
extraction layer, or the Paystack integration.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>socialmedia</category>
      <category>python</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
