<?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: DanielNnadi</title>
    <description>The latest articles on DEV Community by DanielNnadi (@danielnnadi).</description>
    <link>https://dev.to/danielnnadi</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%2F3981516%2Fea105714-425a-457a-b9ad-30de671cd5a8.png</url>
      <title>DEV Community: DanielNnadi</title>
      <link>https://dev.to/danielnnadi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/danielnnadi"/>
    <language>en</language>
    <item>
      <title># dbt + Snowflake: From 45 Minutes to 3 Minutes Refresh</title>
      <dc:creator>DanielNnadi</dc:creator>
      <pubDate>Sat, 13 Jun 2026 11:41:37 +0000</pubDate>
      <link>https://dev.to/danielnnadi/-dbt-snowflake-from-45-minutes-to-3-minutes-refresh-16e5</link>
      <guid>https://dev.to/danielnnadi/-dbt-snowflake-from-45-minutes-to-3-minutes-refresh-16e5</guid>
      <description>&lt;p&gt;Excel reporting took 45 minutes to refresh and was error-prone. No version control. No data quality tests.&lt;/p&gt;

&lt;p&gt;I migrated to dbt + Snowflake.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;15 Excel reports → dbt models&lt;/li&gt;
&lt;li&gt;Star schema design&lt;/li&gt;
&lt;li&gt;Incremental models for 2.3M+ rows&lt;/li&gt;
&lt;li&gt;40+ automated data quality tests&lt;/li&gt;
&lt;li&gt;CI/CD with GitHub Actions&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Results
&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;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Refresh time&lt;/td&gt;
&lt;td&gt;45 minutes&lt;/td&gt;
&lt;td&gt;3 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data quality&lt;/td&gt;
&lt;td&gt;Manual&lt;/td&gt;
&lt;td&gt;40+ tests&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anomalies caught&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;td&gt;12%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;🔗 [View my portfolio]&lt;br&gt;
&lt;a href="https://danielnnadi.github.io/DanielNnadi/" rel="noopener noreferrer"&gt;https://danielnnadi.github.io/DanielNnadi/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dbt</category>
      <category>snowflake</category>
      <category>analyticsengineering</category>
      <category>data</category>
    </item>
    <item>
      <title>Lean Six Sigma: How I Cut Manual Work from 40 to 14 Hours/Week</title>
      <dc:creator>DanielNnadi</dc:creator>
      <pubDate>Sat, 13 Jun 2026 11:32:11 +0000</pubDate>
      <link>https://dev.to/danielnnadi/lean-six-sigma-how-i-cut-manual-work-from-40-to-14-hoursweek-1ham</link>
      <guid>https://dev.to/danielnnadi/lean-six-sigma-how-i-cut-manual-work-from-40-to-14-hoursweek-1ham</guid>
      <description>&lt;p&gt;Weekly manual effort was 40 hours. Supplier on-time delivery was only 87%.&lt;/p&gt;

&lt;p&gt;I applied Lean Six Sigma methodology to fix both.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;Mapped current processes (value stream mapping)&lt;/li&gt;
&lt;li&gt;Identified 7 types of waste&lt;/li&gt;
&lt;li&gt;Eliminated redundant approvals&lt;/li&gt;
&lt;li&gt;Automated manual data entry&lt;/li&gt;
&lt;li&gt;Built Power BI supplier dashboard&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Results
&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;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Weekly manual effort&lt;/td&gt;
&lt;td&gt;40 hours&lt;/td&gt;
&lt;td&gt;14 hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supplier on-time&lt;/td&gt;
&lt;td&gt;87%&lt;/td&gt;
&lt;td&gt;98%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;🔗 [View my portfolio]&lt;br&gt;
&lt;a href="https://danielnnadi.github.io/DanielNnadi/" rel="noopener noreferrer"&gt;https://danielnnadi.github.io/DanielNnadi/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>processimprovement</category>
      <category>leansixsigma</category>
      <category>operations</category>
      <category>productivity</category>
    </item>
    <item>
      <title># How I Got 95% User Adoption on a New Inventory System</title>
      <dc:creator>DanielNnadi</dc:creator>
      <pubDate>Sat, 13 Jun 2026 11:26:51 +0000</pubDate>
      <link>https://dev.to/danielnnadi/-how-i-got-95-user-adoption-on-a-new-inventory-system-1d54</link>
      <guid>https://dev.to/danielnnadi/-how-i-got-95-user-adoption-on-a-new-inventory-system-1d54</guid>
      <description>&lt;p&gt;Vendors wanted to build 50+ features. After talking to 50+ staff members, I found they just wanted accurate data.&lt;/p&gt;

&lt;p&gt;I cut the feature list by 30% before writing any code.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;User research with 50+ staff members&lt;/li&gt;
&lt;li&gt;Cut vendor feature list by 30%&lt;/li&gt;
&lt;li&gt;Defined API contracts before development&lt;/li&gt;
&lt;li&gt;Built SQL architecture and Power BI dashboards&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Result
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;95% user adoption&lt;/strong&gt; within 30 days&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;82% faster queries&lt;/strong&gt; (45s → 8s)&lt;/li&gt;
&lt;li&gt;On-time delivery&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Key Takeaway
&lt;/h2&gt;

&lt;p&gt;Data consistency matters more to users than feature quantity. Research before building.&lt;/p&gt;




&lt;p&gt;🔗 [View my portfolio]&lt;br&gt;
&lt;a href="https://danielnnadi.github.io/DanielNnadi/" rel="noopener noreferrer"&gt;https://danielnnadi.github.io/DanielNnadi/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productmanagement</category>
      <category>ux</category>
      <category>project</category>
      <category>management</category>
    </item>
    <item>
      <title>How I Migrated 10,000+ Records with Zero Downtime</title>
      <dc:creator>DanielNnadi</dc:creator>
      <pubDate>Sat, 13 Jun 2026 11:21:24 +0000</pubDate>
      <link>https://dev.to/danielnnadi/how-i-migrated-10000-records-with-zero-downtime-4dpp</link>
      <guid>https://dev.to/danielnnadi/how-i-migrated-10000-records-with-zero-downtime-4dpp</guid>
      <description>&lt;p&gt;At the Federal Ministry of Works, I led a data migration across 4 government directorates. The requirement: zero data loss, zero downtime, zero audit findings.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Challenge
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;10,000+ records&lt;/li&gt;
&lt;li&gt;4 different directorates&lt;/li&gt;
&lt;li&gt;No system downtime allowed&lt;/li&gt;
&lt;li&gt;Government audit requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Saturday Cutover Plan:&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;Time&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;6:00 AM&lt;/td&gt;
&lt;td&gt;Start migration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7:00 AM&lt;/td&gt;
&lt;td&gt;Backup source data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11:00 AM&lt;/td&gt;
&lt;td&gt;Load to new system&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2:00 PM&lt;/td&gt;
&lt;td&gt;Switch over&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Rollback ready at every step.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Zero data loss&lt;/li&gt;
&lt;li&gt;Zero downtime&lt;/li&gt;
&lt;li&gt;Zero audit findings&lt;/li&gt;
&lt;li&gt;Audit prep: 3 weeks → 3 days&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;🔗 [View my portfolio]&lt;br&gt;
 &lt;a href="https://danielnnadi.github.io/DanielNnadi/" rel="noopener noreferrer"&gt;https://danielnnadi.github.io/DanielNnadi/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>database</category>
      <category>sql</category>
      <category>dataengineering</category>
      <category>goverment</category>
    </item>
    <item>
      <title># How I Cut SQL Query Time from 45 Seconds to 8 Seconds</title>
      <dc:creator>DanielNnadi</dc:creator>
      <pubDate>Sat, 13 Jun 2026 11:18:13 +0000</pubDate>
      <link>https://dev.to/danielnnadi/-how-i-cut-sql-query-time-from-45-seconds-to-8-seconds-cba</link>
      <guid>https://dev.to/danielnnadi/-how-i-cut-sql-query-time-from-45-seconds-to-8-seconds-cba</guid>
      <description>&lt;p&gt;When I joined the data team at an automotive parts company, the inventory query everyone relied on took 45 seconds to run. Real-time reporting was impossible.&lt;/p&gt;

&lt;p&gt;This is how I brought that query down to 8 seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;The database had an inventory table with 2.3M+ rows. The query was doing full table scans on every execution.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Fix
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Read the execution plan&lt;/strong&gt; - Found correlated subqueries running 500+ times&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Replaced subquery with CTE:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://danielnnadi.github.io/DanielNnadi/article-1-sql-optimization.html" rel="noopener noreferrer"&gt;Project Link&lt;/a&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
sql
- Before: 45 seconds
SELECT * FROM inventory i
WHERE (SELECT MAX(date) FROM orders o 
       WHERE o.sku_id = i.sku_id) IS NOT NULL
 - After: 8 seconds
WITH latest_orders AS (
    SELECT sku_id, MAX(date) as last_order
    FROM orders GROUP BY sku_id
)
SELECT i.* FROM inventory i
JOIN latest_orders lo ON i.sku_id = lo.sku_id

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>sql</category>
      <category>database</category>
      <category>performance</category>
      <category>dataengineering</category>
    </item>
    <item>
      <title>How I Built a Python Demand Forecasting Model That Saved $18,000</title>
      <dc:creator>DanielNnadi</dc:creator>
      <pubDate>Sat, 13 Jun 2026 10:58:46 +0000</pubDate>
      <link>https://dev.to/danielnnadi/how-i-built-a-python-demand-forecasting-model-that-saved-18000-3000</link>
      <guid>https://dev.to/danielnnadi/how-i-built-a-python-demand-forecasting-model-that-saved-18000-3000</guid>
      <description>&lt;p&gt;Emergency procurement was happening 23 times per month at the automotive parts company where I work. The purchasing team was reactive rather than proactive, causing stockouts and premium shipping costs.&lt;/p&gt;

&lt;p&gt;I built a demand forecasting model that reduced emergency procurement by 65% and saved $18,000 annually.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;The team was restocking after stock hit zero rather than before. By the time they noticed, supplier lead times meant there was already a gap. Emergency orders cost more and disrupted operations.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Data Collection
&lt;/h3&gt;

&lt;p&gt;I pulled 13 months of stock movement data from our SQL inventory database — roughly 195,000 rows across 512 SKUs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Feature Engineering
&lt;/h3&gt;

&lt;p&gt;I engineered features including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rolling average consumption (7-day and 30-day)&lt;/li&gt;
&lt;li&gt;Days of stock remaining&lt;/li&gt;
&lt;li&gt;Stock buffer ratio&lt;/li&gt;
&lt;li&gt;Seasonal indicators (month, day of week)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Model Selection
&lt;/h3&gt;

&lt;p&gt;I tested three approaches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simple threshold rule (too many false positives)&lt;/li&gt;
&lt;li&gt;Gradient Boosting (good but lower precision)&lt;/li&gt;
&lt;li&gt;Random Forest (best balance)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Random Forest gave 78% precision and 76% recall.&lt;/p&gt;




&lt;h2&gt;
  
  
  Deployment
&lt;/h2&gt;

&lt;p&gt;The model runs daily at 7 AM and outputs a prioritized reorder list directly to the operations team as an Excel report.&lt;/p&gt;




&lt;h2&gt;
  
  
  Results
&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;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Emergency orders/month&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reduction&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;65%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Annual savings&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;$18,000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Key Takeaway
&lt;/h2&gt;

&lt;p&gt;The model's accuracy mattered less than the cross-functional review process. Consistent weekly meetings between procurement and data teams drove the real behavior change.&lt;br&gt;
&lt;a href="https://danielnnadi.github.io/DanielNnadi/article-2-demand-forecasting.html" rel="noopener noreferrer"&gt;project link&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect With Me
&lt;/h2&gt;

&lt;p&gt;📊 &lt;strong&gt;Portfolio:&lt;/strong&gt; &lt;br&gt;
(&lt;a href="https://danielnnadi.github.io/DanielNnadi/" rel="noopener noreferrer"&gt;https://danielnnadi.github.io/DanielNnadi/&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;💼 &lt;strong&gt;LinkedIn:&lt;/strong&gt; &lt;a href="https://linkedin.com/in/danielnnadi" rel="noopener noreferrer"&gt;linkedin.com/in/danielnnadi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🐙 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/danielnnadi" rel="noopener noreferrer"&gt;github.com/danielnnadi&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>machinelearning</category>
      <category>datascience</category>
    </item>
  </channel>
</rss>
