<?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: Okeke Chukwudubem</title>
    <description>The latest articles on DEV Community by Okeke Chukwudubem (@okeke_chukwudubem_5f3bf49).</description>
    <link>https://dev.to/okeke_chukwudubem_5f3bf49</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%2F3908265%2F586841bb-154e-4de4-a539-b939b3018c48.jpeg</url>
      <title>DEV Community: Okeke Chukwudubem</title>
      <link>https://dev.to/okeke_chukwudubem_5f3bf49</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/okeke_chukwudubem_5f3bf49"/>
    <language>en</language>
    <item>
      <title>AccessBuild is done. From discovering that 100% of Nigerian banking apps are inaccessible to blind users to a live API, a public dashboard, and a full audit pipeline.

Here's the complete journey and the roadmap to scale.</title>
      <dc:creator>Okeke Chukwudubem</dc:creator>
      <pubDate>Mon, 12 Oct 2026 16:47:08 +0000</pubDate>
      <link>https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-is-done-from-discovering-that-100-of-nigerian-banking-apps-are-inaccessible-to-blind-klh</link>
      <guid>https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-is-done-from-discovering-that-100-of-nigerian-banking-apps-are-inaccessible-to-blind-klh</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-is-done-heres-the-full-journey-and-what-comes-next-7d1" class="crayons-story__hidden-navigation-link"&gt;AccessBuild Is Done. Here's the Full Journey and What Comes Next.&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/okeke_chukwudubem_5f3bf49" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3908265%2F586841bb-154e-4de4-a539-b939b3018c48.jpeg" alt="okeke_chukwudubem_5f3bf49 profile" class="crayons-avatar__image" width="800" height="735"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/okeke_chukwudubem_5f3bf49" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Okeke Chukwudubem
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Okeke Chukwudubem
                
                
              
              &lt;div id="story-author-preview-content-4839385" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/okeke_chukwudubem_5f3bf49" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3908265%2F586841bb-154e-4de4-a539-b939b3018c48.jpeg" class="crayons-avatar__image" alt="" width="800" height="735"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Okeke Chukwudubem&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-is-done-heres-the-full-journey-and-what-comes-next-7d1" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 12&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-is-done-heres-the-full-journey-and-what-comes-next-7d1" id="article-link-4839385"&gt;
          AccessBuild Is Done. Here's the Full Journey and What Comes Next.
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-is-done-heres-the-full-journey-and-what-comes-next-7d1#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>a11y</category>
      <category>buildinpublic</category>
      <category>startup</category>
    </item>
    <item>
      <title>AccessBuild Is Done. Here's the Full Journey and What Comes Next.</title>
      <dc:creator>Okeke Chukwudubem</dc:creator>
      <pubDate>Mon, 12 Oct 2026 16:46:20 +0000</pubDate>
      <link>https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-is-done-heres-the-full-journey-and-what-comes-next-7d1</link>
      <guid>https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-is-done-heres-the-full-journey-and-what-comes-next-7d1</guid>
      <description>&lt;p&gt;From one discovery to a live API, a public dashboard, and a plan for scale. Everything we built, and the roadmap to finish.&lt;/p&gt;

&lt;p&gt;AccessBuild started with a simple observation: my Phone Agent couldn't use banking apps.&lt;/p&gt;

&lt;p&gt;Not because the agent was broken. Because the apps had zero accessibility labels. No content descriptions. No screen reader support. The same reason millions of visually impaired Nigerians can't use them either.&lt;/p&gt;

&lt;p&gt;I tested 30 apps. 100% of banking apps scored F. 100% of government apps scored F. Global apps like WhatsApp and Google Maps scored A.&lt;/p&gt;

&lt;p&gt;That discovery became a project. Today, AccessBuild is built. And we're ready for the next phase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What AccessBuild Is&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An AI-powered accessibility audit tool that scans mobile apps, checks whether interactive elements have proper accessibility labels, and scores them from A to F.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A:&lt;/strong&gt; 90%+ labeled. Fully accessible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;B:&lt;/strong&gt; 70-89% labeled. Mostly accessible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;C:&lt;/strong&gt; 50-69% labeled. Needs work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;D:&lt;/strong&gt; 25-49% labeled. Mostly inaccessible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;F:&lt;/strong&gt; Below 25% labeled. Completely inaccessible.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The API is live. The dashboard is live. Every audit saves to Supabase. The scoring engine works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What We Built (Day by Day)&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Day&lt;/th&gt;
&lt;th&gt;What Shipped&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Day 1&lt;/td&gt;
&lt;td&gt;FastAPI backend, &lt;code&gt;/audit&lt;/code&gt; endpoint, A-F scoring engine, deployed on Render&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Day 2&lt;/td&gt;
&lt;td&gt;Supabase integration, &lt;code&gt;/scan&lt;/code&gt; endpoint for Android UI tree XML, &lt;code&gt;/stats&lt;/code&gt; and &lt;code&gt;/audits/recent&lt;/code&gt; endpoints&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Day 3&lt;/td&gt;
&lt;td&gt;Public dashboard showing all audited apps, scores, and recommendations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Day 4&lt;/td&gt;
&lt;td&gt;Phone Agent bridge connecting real-time UI dumps to AccessBuild&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The pipeline is now fully automatic: Phone Agent dumps the UI tree from any screen, AccessBuild parses it, scores it, and saves it to the database.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; FastAPI (Python)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; Supabase (PostgreSQL)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI:&lt;/strong&gt; Google Gemini&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosting:&lt;/strong&gt; Render (free tier)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dashboard:&lt;/strong&gt; HTML/CSS/JS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parsing:&lt;/strong&gt; Android UI Automator XML&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What We Proved&lt;/strong&gt;&lt;/p&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;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Apps audited&lt;/td&gt;
&lt;td&gt;30+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Banking apps scoring F&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Government apps scoring F&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Global apps scoring A&lt;/td&gt;
&lt;td&gt;100% (WhatsApp, Google Maps)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API response time&lt;/td&gt;
&lt;td&gt;Under 2 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Why This Matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Over 1 billion people globally have some form of disability. In Nigeria alone, millions of visually impaired users are locked out of banking, government services, healthcare, and telecom apps.&lt;/p&gt;

&lt;p&gt;The same neglect that locks out blind users also locks out AI agents. Accessibility is not a feature. It is infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Roadmap to the Final Goal&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The goal: make African apps accessible to everyone. Here is how we get there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 1: Data Collection (Now)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scan 100+ Nigerian apps across banking, government, telecom, health, and education&lt;/li&gt;
&lt;li&gt;Build the first public accessibility score database for Africa&lt;/li&gt;
&lt;li&gt;Publish findings as open data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 2: Awareness (Next)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reach out to journalists and regulators with the data&lt;/li&gt;
&lt;li&gt;Partner with disability advocacy groups&lt;/li&gt;
&lt;li&gt;Pressure banks and government agencies to fix their apps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 3: Developer Tools (With Funding)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build a self-serve audit portal where developers submit their app and get a report&lt;/li&gt;
&lt;li&gt;Add fix recommendations with code snippets&lt;/li&gt;
&lt;li&gt;Create a public scoreboard with rankings by industry&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 4: Compliance &amp;amp; Certification (Scale)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Partner with regulators to make accessibility scores mandatory&lt;/li&gt;
&lt;li&gt;Offer certification for apps that pass&lt;/li&gt;
&lt;li&gt;Provide ongoing monitoring for enterprises&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 5: Continental Expansion&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expand to Ghana, Kenya, South Africa, and beyond&lt;/li&gt;
&lt;li&gt;Become the standard for accessibility auditing across Africa&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What We Need&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AccessBuild is built and working. To move from prototype to scale, we need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Grant funding&lt;/strong&gt; to support full-time development&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Partnerships&lt;/strong&gt; with disability advocacy groups and regulators&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visibility&lt;/strong&gt; through media and developer communities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Until funding arrives, we continue scanning apps, publishing data, and building in public.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Repo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 github.com/Dexter2344/accessbuild-api&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The API&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 accessbuild-api.onrender.com&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Dashboard&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 accessbuild-api.onrender.com/dashboard&lt;/p&gt;

&lt;p&gt;AccessBuild is done for now. The foundation is solid. The data is real. The mission is clear.&lt;/p&gt;

&lt;p&gt;When funding comes, we scale. Until then, we keep building.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Day 3 of AccessBuild: Auto-scanning is live. The API now parses real Android UI trees, scores them A-F, and saves every audit to Supabase.

First real scan: a test banking login scored D 40% accessible.

Full build log on Dev.to.</title>
      <dc:creator>Okeke Chukwudubem</dc:creator>
      <pubDate>Tue, 06 Oct 2026 12:54:06 +0000</pubDate>
      <link>https://dev.to/okeke_chukwudubem_5f3bf49/day-3-of-accessbuild-auto-scanning-is-live-the-api-now-parses-real-android-ui-trees-scores-them-4in5</link>
      <guid>https://dev.to/okeke_chukwudubem_5f3bf49/day-3-of-accessbuild-auto-scanning-is-live-the-api-now-parses-real-android-ui-trees-scores-them-4in5</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-day-3-auto-scanning-is-live-heres-what-i-learned-59h8" class="crayons-story__hidden-navigation-link"&gt;AccessBuild Day 3: Auto-Scanning Is Live. Here's What I Learned.&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/okeke_chukwudubem_5f3bf49" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3908265%2F586841bb-154e-4de4-a539-b939b3018c48.jpeg" alt="okeke_chukwudubem_5f3bf49 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/okeke_chukwudubem_5f3bf49" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Okeke Chukwudubem
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Okeke Chukwudubem
                
                
              
              &lt;div id="story-author-preview-content-4806852" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/okeke_chukwudubem_5f3bf49" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3908265%2F586841bb-154e-4de4-a539-b939b3018c48.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Okeke Chukwudubem&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-day-3-auto-scanning-is-live-heres-what-i-learned-59h8" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 6&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-day-3-auto-scanning-is-live-heres-what-i-learned-59h8" id="article-link-4806852"&gt;
          AccessBuild Day 3: Auto-Scanning Is Live. Here's What I Learned.
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/python"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;python&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-day-3-auto-scanning-is-live-heres-what-i-learned-59h8" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-day-3-auto-scanning-is-live-heres-what-i-learned-59h8#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>a11y</category>
      <category>android</category>
      <category>buildinpublic</category>
      <category>database</category>
    </item>
    <item>
      <title>AccessBuild Day 3: Auto-Scanning Is Live. Here's What I Learned.</title>
      <dc:creator>Okeke Chukwudubem</dc:creator>
      <pubDate>Tue, 06 Oct 2026 12:53:16 +0000</pubDate>
      <link>https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-day-3-auto-scanning-is-live-heres-what-i-learned-59h8</link>
      <guid>https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-day-3-auto-scanning-is-live-heres-what-i-learned-59h8</guid>
      <description>&lt;p&gt;Day 3 of AccessBuild. The API is no longer just a calculator. It has a memory now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Built Today&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yesterday, the API could only score elements you pasted in manually. Today, it parses real Android UI tree XML, extracts every interactive element, scores it, and saves the result to Supabase.&lt;/p&gt;

&lt;p&gt;The new &lt;code&gt;/scan&lt;/code&gt; endpoint accepts a raw UI tree dump. It walks through every node, classifies each element as button/input/icon/link, checks for accessibility labels, and returns a grade from A to F. Then it writes the audit to the database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Stack Grew Up&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Day 1&lt;/th&gt;
&lt;th&gt;Day 3&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FastAPI&lt;/td&gt;
&lt;td&gt;FastAPI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;In-memory only&lt;/td&gt;
&lt;td&gt;Supabase PostgreSQL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manual element list&lt;/td&gt;
&lt;td&gt;Android UI tree XML&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One-off test&lt;/td&gt;
&lt;td&gt;Persistent, repeatable audits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No history&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/audits/recent&lt;/code&gt; endpoint&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No stats&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/stats&lt;/code&gt; endpoint&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;The First Real Scan&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I ran the first auto-scan on a test banking login screen. Five interactive elements. Only two had labels.&lt;/p&gt;

&lt;p&gt;Result: &lt;strong&gt;D — 40% accessible&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Recommendation: &lt;em&gt;"Urgent. Most elements are invisible to screen readers. Immediate fixes required."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That's the point. A real banking app with that score would be unusable by blind customers. And now the audit is saved in the database for future reference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Broke&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The deploy failed multiple times. First, Render couldn't find the port. Then it couldn't find &lt;code&gt;models.py&lt;/code&gt;. Then the build cache held onto old code. Each error taught me something about how Render handles deployments.&lt;/p&gt;

&lt;p&gt;The fix: update the start command to use &lt;code&gt;$PORT&lt;/code&gt;, create the missing files, clear the build cache, and redeploy. Three hours of debugging. Ten minutes of actual feature work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Works Now&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/scan&lt;/code&gt; — Auto-scan from Android UI tree XML&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/stats&lt;/code&gt; — Aggregate statistics from Supabase&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/audits/recent&lt;/code&gt; — Recent audit history&lt;/li&gt;
&lt;li&gt;Supabase persistence — Every audit saved&lt;/li&gt;
&lt;li&gt;Full pipeline: request → parse → score → save → respond&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What's Next (Day 4)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build a public dashboard showing audited apps and scores&lt;/li&gt;
&lt;li&gt;Connect real app scanning to my Phone Agent's UI tree output&lt;/li&gt;
&lt;li&gt;Start scanning Nigerian banking apps for real&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Repo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 github.com/Dexter2344/accessbuild-api&lt;/p&gt;

&lt;p&gt;Day 3 is done. The API has a memory now.&lt;/p&gt;

&lt;p&gt;— Dexter&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>python</category>
    </item>
    <item>
      <title>One codebase. Two products.

AccessBuild and AgriMind share the same FastAPI + Supabase + Gemini architecture. Built the foundation once, applied it twice.

AgriMind backend is live. Meta sandbox is the only blocker.</title>
      <dc:creator>Okeke Chukwudubem</dc:creator>
      <pubDate>Fri, 02 Oct 2026 11:12:08 +0000</pubDate>
      <link>https://dev.to/okeke_chukwudubem_5f3bf49/one-codebase-two-products-accessbuild-and-agrimind-share-the-same-fastapi-supabase-gemini-1dik</link>
      <guid>https://dev.to/okeke_chukwudubem_5f3bf49/one-codebase-two-products-accessbuild-and-agrimind-share-the-same-fastapi-supabase-gemini-1dik</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/one-codebase-two-products-heres-how-i-built-both-at-once-5agg" class="crayons-story__hidden-navigation-link"&gt;One Codebase. Two Products. Here's How I Built Both at Once.&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/okeke_chukwudubem_5f3bf49" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3908265%2F586841bb-154e-4de4-a539-b939b3018c48.jpeg" alt="okeke_chukwudubem_5f3bf49 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/okeke_chukwudubem_5f3bf49" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Okeke Chukwudubem
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Okeke Chukwudubem
                
                
              
              &lt;div id="story-author-preview-content-4787101" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/okeke_chukwudubem_5f3bf49" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3908265%2F586841bb-154e-4de4-a539-b939b3018c48.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Okeke Chukwudubem&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/one-codebase-two-products-heres-how-i-built-both-at-once-5agg" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 2&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/one-codebase-two-products-heres-how-i-built-both-at-once-5agg" id="article-link-4787101"&gt;
          One Codebase. Two Products. Here's How I Built Both at Once.
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/one-codebase-two-products-heres-how-i-built-both-at-once-5agg" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/one-codebase-two-products-heres-how-i-built-both-at-once-5agg#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>backend</category>
      <category>buildinpublic</category>
      <category>python</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>One Codebase. Two Products. Here's How I Built Both at Once.</title>
      <dc:creator>Okeke Chukwudubem</dc:creator>
      <pubDate>Fri, 02 Oct 2026 11:11:36 +0000</pubDate>
      <link>https://dev.to/okeke_chukwudubem_5f3bf49/one-codebase-two-products-heres-how-i-built-both-at-once-5agg</link>
      <guid>https://dev.to/okeke_chukwudubem_5f3bf49/one-codebase-two-products-heres-how-i-built-both-at-once-5agg</guid>
      <description>&lt;p&gt;AccessBuild taught me the pattern. AgriMind is applying it. Both are live.&lt;/p&gt;

&lt;p&gt;If you've been following my build logs, you know the rhythm.&lt;/p&gt;

&lt;p&gt;I was deep into AccessBuild—an AI-powered accessibility audit tool that scores mobile apps from A to F. Day 2 shipped: Supabase integration, UI tree parsing, auto-scanning. The API was live. The scoring engine worked.&lt;/p&gt;

&lt;p&gt;Then I paused it.&lt;/p&gt;

&lt;p&gt;Not because it failed. Because I saw the pattern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Pattern&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AccessBuild and AgriMind share the exact same architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FastAPI backend&lt;/li&gt;
&lt;li&gt;Supabase database&lt;/li&gt;
&lt;li&gt;Google Gemini AI&lt;/li&gt;
&lt;li&gt;Render hosting&lt;/li&gt;
&lt;li&gt;API-first design&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every line of code I wrote for AccessBuild's backend was directly reusable for AgriMind. So instead of finishing one and starting the other from scratch, I built the shared foundation once and applied it to both.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What AgriMind Is&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AgriMind is an AI-powered farm advisor on WhatsApp. Farmers send text or photos of sick crops and livestock. The AI replies with diagnosis and treatment advice in their own language.&lt;/p&gt;

&lt;p&gt;Free for 3 questions. ₦8,000/month for unlimited.&lt;/p&gt;

&lt;p&gt;The goal: instant expert advice for farmers anywhere in the world. No app. No internet beyond WhatsApp. Just a conversation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Built&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FastAPI backend&lt;/td&gt;
&lt;td&gt;✅ Live on Render&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supabase database&lt;/td&gt;
&lt;td&gt;✅ Connected&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini AI brain&lt;/td&gt;
&lt;td&gt;✅ Integrated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Paystack payment logic&lt;/td&gt;
&lt;td&gt;✅ Built&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meta WhatsApp webhook&lt;/td&gt;
&lt;td&gt;✅ Verified&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Messages subscription&lt;/td&gt;
&lt;td&gt;✅ Active&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The backend is live at: agrimind-api-xm7p.onrender.com&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Shared Stack&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;AccessBuild&lt;/th&gt;
&lt;th&gt;AgriMind&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;FastAPI&lt;/td&gt;
&lt;td&gt;FastAPI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;Supabase&lt;/td&gt;
&lt;td&gt;Supabase&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;Gemini&lt;/td&gt;
&lt;td&gt;Gemini&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hosting&lt;/td&gt;
&lt;td&gt;Render&lt;/td&gt;
&lt;td&gt;Render&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API Design&lt;/td&gt;
&lt;td&gt;REST&lt;/td&gt;
&lt;td&gt;REST&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Same bones. Different problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Wall I Hit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Meta's test number. It works differently than expected:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can't just message it like a contact&lt;/li&gt;
&lt;li&gt;You must receive a template first, then reply to that template&lt;/li&gt;
&lt;li&gt;Only then does the 24-hour conversation window open&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm still debugging this. The backend is ready. The AI is ready. The only blocker is Meta's sandbox restrictions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's Next&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get the Meta test flow working end-to-end&lt;/li&gt;
&lt;li&gt;Register a real WhatsApp Business number&lt;/li&gt;
&lt;li&gt;Complete Meta business verification&lt;/li&gt;
&lt;li&gt;Launch AgriMind with real farmers&lt;/li&gt;
&lt;li&gt;Return to AccessBuild with the same infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why I'm Sharing This&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because this is what real building looks like. You pause one thing to finish another. You hit walls that have nothing to do with your code. You keep going.&lt;/p&gt;

&lt;p&gt;AccessBuild will be finished. AgriMind is almost there. Both share the same bones.&lt;/p&gt;

&lt;p&gt;That's the advantage of building systems, not just projects.&lt;/p&gt;

&lt;p&gt;Dexter&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>AccessBuild Day 2: From Manual Testing to Real App Scanning</title>
      <dc:creator>Okeke Chukwudubem</dc:creator>
      <pubDate>Thu, 24 Sep 2026 14:58:21 +0000</pubDate>
      <link>https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-day-2-from-manual-testing-to-real-app-scanning-5b90</link>
      <guid>https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-day-2-from-manual-testing-to-real-app-scanning-5b90</guid>
      <description>&lt;p&gt;Added Supabase. Added auto-scanning. Parsed my first real Android UI tree. It scored D.&lt;/p&gt;

&lt;p&gt;Day 2 of AccessBuild. I've been on this chair for hours.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Built Today&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yesterday, AccessBuild could only score elements you pasted in manually. Today, it can scan a real Android app.&lt;/p&gt;

&lt;p&gt;The new &lt;code&gt;/scan&lt;/code&gt; endpoint accepts a raw Android UI tree XML dump. It parses every node, identifies interactive elements, extracts accessibility labels, and scores the screen automatically. Then it saves the result to Supabase.&lt;/p&gt;

&lt;p&gt;No more manual data entry. Real apps. Real screens. Real scores.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Stack Grew Up&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Day 1&lt;/th&gt;
&lt;th&gt;Day 2&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FastAPI&lt;/td&gt;
&lt;td&gt;FastAPI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;In-memory only&lt;/td&gt;
&lt;td&gt;Supabase database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manual element list&lt;/td&gt;
&lt;td&gt;Android UI tree XML&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One-off test&lt;/td&gt;
&lt;td&gt;Persistent, repeatable audits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No history&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/audits/recent&lt;/code&gt; endpoint&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No stats&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/stats&lt;/code&gt; endpoint&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;The First Real Scan&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I ran the first auto-scan on a test banking app login screen. Five interactive elements. Only two had labels.&lt;/p&gt;

&lt;p&gt;Result: &lt;strong&gt;D — 40% accessible&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Recommendation: &lt;em&gt;"Urgent. Most elements are invisible to screen readers. Immediate fixes required."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That's the entire point. A real banking app with that score would be unusable by blind customers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Broke&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The deploy failed multiple times. First, Render couldn't find the port. Then it couldn't find &lt;code&gt;models.py&lt;/code&gt;. Then the build cache held onto old code. Each error taught me something about how Render handles deployments. I fixed the start command to use &lt;code&gt;$PORT&lt;/code&gt;, created the missing files, cleared the build cache, and redeployed.&lt;/p&gt;

&lt;p&gt;Three hours of debugging. Ten minutes of actual feature work. That's real engineering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Works Now&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/scan&lt;/code&gt; — Auto-scan from Android UI tree XML&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/stats&lt;/code&gt; — Aggregate statistics from Supabase&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/audits/recent&lt;/code&gt; — Recent audit history&lt;/li&gt;
&lt;li&gt;Supabase persistence — Every audit saved&lt;/li&gt;
&lt;li&gt;Full pipeline — Request → Parse → Score → Save → Respond&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What's Next (Day 3)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build a public dashboard showing all audited apps and scores&lt;/li&gt;
&lt;li&gt;Connect real app scanning to my Phone Agent's UI tree output&lt;/li&gt;
&lt;li&gt;Start scanning Nigerian banking apps for real&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Repo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 github.com/Dexter2344/accessbuild-api&lt;/p&gt;

&lt;p&gt;Day 2 is done. The API has a memory now.&lt;/p&gt;

&lt;p&gt;— Dexter&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>python</category>
      <category>automation</category>
    </item>
    <item>
      <title>Day 1 of AccessBuild: I built and deployed a working accessibility audit API from scratch. No grant. No funding. Just code.

It scans apps, scores them A-F based on accessibility labels, and shows exactly how inaccessible they are to blind users.</title>
      <dc:creator>Okeke Chukwudubem</dc:creator>
      <pubDate>Wed, 16 Sep 2026 22:58:41 +0000</pubDate>
      <link>https://dev.to/okeke_chukwudubem_5f3bf49/day-1-of-accessbuild-i-built-and-deployed-a-working-accessibility-audit-api-from-scratch-no-57l5</link>
      <guid>https://dev.to/okeke_chukwudubem_5f3bf49/day-1-of-accessbuild-i-built-and-deployed-a-working-accessibility-audit-api-from-scratch-no-57l5</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-day-1-i-built-an-accessibility-audit-api-from-scratch-2ema" class="crayons-story__hidden-navigation-link"&gt;AccessBuild Day 1: I Built an Accessibility Audit API From Scratch&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/okeke_chukwudubem_5f3bf49" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3908265%2F586841bb-154e-4de4-a539-b939b3018c48.jpeg" alt="okeke_chukwudubem_5f3bf49 profile" class="crayons-avatar__image" width="800" height="735"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/okeke_chukwudubem_5f3bf49" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Okeke Chukwudubem
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Okeke Chukwudubem
                
                
              
              &lt;div id="story-author-preview-content-4670810" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/okeke_chukwudubem_5f3bf49" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3908265%2F586841bb-154e-4de4-a539-b939b3018c48.jpeg" class="crayons-avatar__image" alt="" width="800" height="735"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Okeke Chukwudubem&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-day-1-i-built-an-accessibility-audit-api-from-scratch-2ema" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 16&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-day-1-i-built-an-accessibility-audit-api-from-scratch-2ema" id="article-link-4670810"&gt;
          AccessBuild Day 1: I Built an Accessibility Audit API From Scratch
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-day-1-i-built-an-accessibility-audit-api-from-scratch-2ema#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>a11y</category>
      <category>api</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>AccessBuild Day 1: I Built an Accessibility Audit API From Scratch</title>
      <dc:creator>Okeke Chukwudubem</dc:creator>
      <pubDate>Wed, 16 Sep 2026 22:58:01 +0000</pubDate>
      <link>https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-day-1-i-built-an-accessibility-audit-api-from-scratch-2ema</link>
      <guid>https://dev.to/okeke_chukwudubem_5f3bf49/accessbuild-day-1-i-built-an-accessibility-audit-api-from-scratch-2ema</guid>
      <description>&lt;p&gt;No grant. No funding. Just a working API deployed in one day.&lt;/p&gt;

&lt;p&gt;I've been waiting on grant funding for AccessBuild for weeks.&lt;/p&gt;

&lt;p&gt;The deadline passed. The emails went unanswered. So I made a decision: build with what I have.&lt;/p&gt;

&lt;p&gt;Today is Day 1.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What AccessBuild Is&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AccessBuild is an AI-powered accessibility audit tool for mobile apps. It scans an app's interface, checks whether interactive elements have proper accessibility labels, and scores the app from A to F.&lt;/p&gt;

&lt;p&gt;If an app scores F, it means visually impaired users literally cannot use it. Screen readers can't read unlabeled buttons. Blind users are locked out.&lt;/p&gt;

&lt;p&gt;I discovered this problem while building my Phone Agent. I tested 30 Nigerian apps. 100% of banking apps scored F.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Built Today&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A working FastAPI backend, live on Render.&lt;/p&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;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;/audit&lt;/code&gt; endpoint&lt;/td&gt;
&lt;td&gt;✅ Live&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;/grades&lt;/code&gt; endpoint&lt;/td&gt;
&lt;td&gt;✅ Live&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A-F scoring logic&lt;/td&gt;
&lt;td&gt;✅ Working&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Accessibility percentage calculation&lt;/td&gt;
&lt;td&gt;✅ Working&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recommendation engine&lt;/td&gt;
&lt;td&gt;✅ Working&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;How It Works&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You send a list of UI elements from any app screen. Each element has a type (button, input, icon) and an optional accessibility label. The API:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Filters out non-interactive elements&lt;/li&gt;
&lt;li&gt;Counts how many interactive elements have labels&lt;/li&gt;
&lt;li&gt;Calculates the accessibility percentage&lt;/li&gt;
&lt;li&gt;Assigns a grade (A through F)&lt;/li&gt;
&lt;li&gt;Returns a recommendation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The Test&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I ran the first audit. A fake banking app with 5 interactive elements. Only 2 had labels.&lt;/p&gt;

&lt;p&gt;Result: &lt;strong&gt;D — 40% accessible&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Recommendation: &lt;em&gt;"Urgent. Most elements are invisible to screen readers. Immediate fixes required."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That's the entire point. A real banking app with that score would be unusable by blind customers.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;FastAPI backend&lt;/li&gt;
&lt;li&gt;Deployed on Render (free tier)&lt;/li&gt;
&lt;li&gt;No environment variables needed&lt;/li&gt;
&lt;li&gt;Pure Python logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What's Next (Day 2)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auto-extract UI elements from real apps&lt;/li&gt;
&lt;li&gt;Store audit results in Supabase&lt;/li&gt;
&lt;li&gt;Build a public dashboard showing app scores&lt;/li&gt;
&lt;li&gt;Expand element types&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why I'm Building This Without Funding&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because the problem is real. 100% of Nigerian banking apps are inaccessible to visually impaired users. That's millions of people locked out of their own money.&lt;/p&gt;

&lt;p&gt;I can't wait for a grant to fix that.&lt;/p&gt;

&lt;p&gt;Day 1 is done. The API is live. Day 2 starts tomorrow.&lt;/p&gt;

&lt;p&gt;— Dexter&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I Got Tired of Waiting for Funding. So I Shipped a Live Product.</title>
      <dc:creator>Okeke Chukwudubem</dc:creator>
      <pubDate>Wed, 09 Sep 2026 23:01:06 +0000</pubDate>
      <link>https://dev.to/okeke_chukwudubem_5f3bf49/i-got-tired-of-waiting-for-funding-so-i-shipped-a-live-product-f66</link>
      <guid>https://dev.to/okeke_chukwudubem_5f3bf49/i-got-tired-of-waiting-for-funding-so-i-shipped-a-live-product-f66</guid>
      <description>&lt;p&gt;I planned to be building AccessBuild right now.&lt;/p&gt;

&lt;p&gt;AccessBuild is my AI-powered accessibility audit tool—born from a discovery that hit me hard during the Phone Agent build: 100% of Nigerian banking apps are completely inaccessible to visually impaired users. Not one. Not some. All of them scored F.&lt;/p&gt;

&lt;p&gt;I drafted the business plan. Mapped the revenue model. Defined the target audience. Wrote grant applications. Sent them out.&lt;/p&gt;

&lt;p&gt;And now I wait.&lt;/p&gt;

&lt;p&gt;Here's the plan I set for myself: if funding isn't available by next week, I build with what I have. No more waiting. No more "when the money comes."&lt;/p&gt;

&lt;p&gt;That deadline is almost here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Built While Waiting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ApexSignal—a premium multi-page trading dashboard.&lt;/p&gt;

&lt;p&gt;It's not directly related to accessibility. It's not my life's mission. But it's proof of work. It's me refusing to sit still.&lt;/p&gt;

&lt;p&gt;The architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A FastAPI backend deployed on Render&lt;/li&gt;
&lt;li&gt;A multi-page frontend deployed on Vercel&lt;/li&gt;
&lt;li&gt;Full API integration via fetch()&lt;/li&gt;
&lt;li&gt;Real-time WAT clock&lt;/li&gt;
&lt;li&gt;Pair analysis interface&lt;/li&gt;
&lt;li&gt;Market scan endpoint&lt;/li&gt;
&lt;li&gt;Chart upload support&lt;/li&gt;
&lt;li&gt;Premium dark gold aesthetic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two live URLs. A working system. Shipped while waiting for an email that hasn't come.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Lesson&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Funding doesn't define you. Motion does.&lt;/p&gt;

&lt;p&gt;I could have spent these weeks refreshing my inbox, waiting for a grant committee to decide my future. Instead, I built something. It's not perfect. The AI brain still needs wiring. The analysis is placeholder. But the infrastructure is real.&lt;/p&gt;

&lt;p&gt;Backend. Frontend. Deployment. Connection. All done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Next&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AccessBuild still gets built—with or without funding. If the grant comes, I scale faster. If it doesn't, I build the MVP myself and bootstrap from there.&lt;/p&gt;

&lt;p&gt;ApexSignal continues too. The next phase is wiring in real AI analysis logic. Then chart screenshot reading. Then possibly auto-execution.&lt;/p&gt;

&lt;p&gt;I'm not waiting anymore.&lt;/p&gt;

&lt;p&gt;— Dexter&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I asked AI to audit my shipped code. It found a silent bug in 2 minutes that I'd missed for months
No crash. No error. Just wrong output in one edge case
AI isn't just for building faster it's for catching what tired eyes miss
When did a bug last humble u?</title>
      <dc:creator>Okeke Chukwudubem</dc:creator>
      <pubDate>Fri, 04 Sep 2026 21:38:15 +0000</pubDate>
      <link>https://dev.to/okeke_chukwudubem_5f3bf49/i-asked-ai-to-audit-my-shipped-code-it-found-a-silent-bug-in-2-minutes-that-id-missed-for-months-4906</link>
      <guid>https://dev.to/okeke_chukwudubem_5f3bf49/i-asked-ai-to-audit-my-shipped-code-it-found-a-silent-bug-in-2-minutes-that-id-missed-for-months-4906</guid>
      <description></description>
    </item>
    <item>
      <title>Back from Exam Season. Now I'm Building Something Bigger.</title>
      <dc:creator>Okeke Chukwudubem</dc:creator>
      <pubDate>Tue, 25 Aug 2026 21:25:04 +0000</pubDate>
      <link>https://dev.to/okeke_chukwudubem_5f3bf49/back-from-exam-season-now-im-building-something-bigger-2jo</link>
      <guid>https://dev.to/okeke_chukwudubem_5f3bf49/back-from-exam-season-now-im-building-something-bigger-2jo</guid>
      <description>&lt;p&gt;Exams are done. To the glory of God. Now the real work begins — AccessBuild.&lt;/p&gt;

&lt;p&gt;I've been quiet again. But this time, it was for a good reason.&lt;/p&gt;

&lt;p&gt;Exams are finished. To the glory of God.&lt;/p&gt;

&lt;p&gt;If you've been following my build logs, you know the pattern: I build, I disappear for exams, I come back, I build again. This semester was brutal. Multiple courses. Long nights. The usual stress of being a software engineering student who's also trying to ship real projects.&lt;/p&gt;

&lt;p&gt;But I made it through. And now I have space again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Break Wasn't a Pause on Everything&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Even during exam season, I was building in the background. I remade several portfolio sites:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A luxury restaurant site (Onyx Dining)&lt;/li&gt;
&lt;li&gt;A premium law firm site (Meridian Law Chambers)&lt;/li&gt;
&lt;li&gt;A car dealership site (AutoLux Motors)&lt;/li&gt;
&lt;li&gt;A salon site (Dexter Salon)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each one a full multi-page build. Each one with working forms, professional design, and real attention to detail. My portfolio is sharper now than it was before the break.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's Coming Next: AccessBuild&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You might remember my accessibility audit from the Phone Agent build logs. I discovered something that's been sitting in my chest since then:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;100% of Nigerian banking apps are completely inaccessible to visually impaired users.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not one. Not most. ALL of them. Scored F on my audit. Invisible to screen readers. Unusable by millions of people.&lt;/p&gt;

&lt;p&gt;That discovery became an idea. The idea became a plan. And now that exams are done, I have the space to build it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AccessBuild&lt;/strong&gt; is an AI-powered accessibility audit tool for mobile apps. It automatically tests apps, scores them from A to F, and tells developers exactly what to fix. The goal: make African apps accessible to everyone—not just the ones who can see.&lt;/p&gt;

&lt;p&gt;I've already drafted the business plan. The revenue model. The target audience. The grant application. The foundation is ready.&lt;/p&gt;

&lt;p&gt;Now it's time to build.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to Expect&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'll be documenting the AccessBuild journey the same way I documented the Phone Agent—public build logs, honest challenges, real progress. No hype. Just building.&lt;/p&gt;

&lt;p&gt;The first step: turning the manual audit methodology into an automated engine. The Phone Agent already has the vision system. AccessBuild repurposes it from automation to auditing.&lt;/p&gt;

&lt;p&gt;If you're interested in accessibility, AI, or just watching someone build something meaningful from scratch—stick around. This one's going to be bigger.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Repo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Phone Agent is still here: github.com/Dexter2344/phone-agent&lt;/p&gt;

&lt;p&gt;AccessBuild gets its own repo soon. I'll share when it's live.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
