<?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>Forem: Ebikara Spiff ᴀɪᴄᴍᴄ</title>
    <description>The latest articles on Forem by Ebikara Spiff ᴀɪᴄᴍᴄ (@spiff).</description>
    <link>https://forem.com/spiff</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1392055%2F2b41052c-d618-4ca8-9376-961db9b38af9.png</url>
      <title>Forem: Ebikara Spiff ᴀɪᴄᴍᴄ</title>
      <link>https://forem.com/spiff</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/spiff"/>
    <language>en</language>
    <item>
      <title>10 Ways Loan Apps Can Be Unfair Without Meaning To.</title>
      <dc:creator>Ebikara Spiff ᴀɪᴄᴍᴄ</dc:creator>
      <pubDate>Thu, 07 May 2026 15:48:30 +0000</pubDate>
      <link>https://forem.com/spiff/10-ways-loan-apps-can-be-unfair-without-meaning-to-33gp</link>
      <guid>https://forem.com/spiff/10-ways-loan-apps-can-be-unfair-without-meaning-to-33gp</guid>
      <description>&lt;p&gt;A market trader in Lagos and a banker in London may both be financially responsible.&lt;/p&gt;

&lt;p&gt;But an automated lending system could still treat one of them as “riskier” before either person ever speaks to a human being.&lt;/p&gt;

&lt;p&gt;That is one of the hidden problems with AI-driven lending systems.&lt;/p&gt;

&lt;p&gt;Many digital loan platforms now use automated models to help decide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;who gets approved&lt;/li&gt;
&lt;li&gt;who gets rejected&lt;/li&gt;
&lt;li&gt;who receives higher interest rates&lt;/li&gt;
&lt;li&gt;who qualifies for larger loans&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These systems are often designed to improve speed, reduce fraud, and predict repayment risk.&lt;/p&gt;

&lt;p&gt;But fairness becomes complicated when AI systems are trained on incomplete, biased, or poorly contextualized data.&lt;/p&gt;

&lt;p&gt;And in countries like Nigeria, where millions of people work outside highly formal financial systems, this problem becomes even more important.&lt;/p&gt;

&lt;p&gt;Not all lenders use the same methods, and not all digital lenders rely heavily on AI. However, alternative data scoring and automated risk analysis have become increasingly common in digital lending.&lt;/p&gt;

&lt;p&gt;Here are some ways unfairness can quietly appear.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Location Can Become a Proxy for Financial Risk
&lt;/h2&gt;

&lt;p&gt;Some credit models use location-related signals during risk assessment.&lt;/p&gt;

&lt;p&gt;The problem is that location can become a &lt;strong&gt;proxy variable&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A proxy variable is when a system uses one signal to indirectly estimate something else.&lt;/p&gt;

&lt;p&gt;For example, if historical repayment data shows higher default rates in certain areas, a model may begin associating those locations with elevated risk.&lt;/p&gt;

&lt;p&gt;This can create problems for responsible individuals living in those same areas.&lt;/p&gt;

&lt;p&gt;The system may be statistically optimized, yet still produce unfair outcomes for specific groups of people.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Limited Banking History Can Reduce Financial Visibility
&lt;/h2&gt;

&lt;p&gt;Many automated lending systems rely heavily on formal financial records.&lt;/p&gt;

&lt;p&gt;People with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;long banking histories&lt;/li&gt;
&lt;li&gt;regular salary payments&lt;/li&gt;
&lt;li&gt;stable employment records&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;often appear less risky to predictive models.&lt;/p&gt;

&lt;p&gt;But millions of Nigerians earn money differently.&lt;/p&gt;

&lt;p&gt;Some people:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;run cash businesses&lt;/li&gt;
&lt;li&gt;work informal jobs&lt;/li&gt;
&lt;li&gt;combine multiple income sources&lt;/li&gt;
&lt;li&gt;use cooperative savings groups instead of traditional banking systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A person with limited formal banking data is not automatically financially irresponsible.&lt;/p&gt;

&lt;p&gt;The issue is that AI systems can struggle when they are designed mainly around highly digitized financial behavior.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Device Type Can Influence Predictive Models
&lt;/h2&gt;

&lt;p&gt;Some digital lenders experiment with device metadata as part of alternative credit scoring.&lt;/p&gt;

&lt;p&gt;This may include signals related to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;device age&lt;/li&gt;
&lt;li&gt;operating system&lt;/li&gt;
&lt;li&gt;phone model&lt;/li&gt;
&lt;li&gt;device stability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In some cases, these variables may statistically correlate with repayment patterns or purchasing power.&lt;/p&gt;

&lt;p&gt;But predictive correlation is not the same thing as fairness.&lt;/p&gt;

&lt;p&gt;A responsible borrower using an older phone could still be financially reliable, while a person using an expensive device may still struggle financially.&lt;/p&gt;

&lt;p&gt;This is one reason why technically accurate predictions can still create ethical concerns.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Contact Data Raises Serious Ethical Questions
&lt;/h2&gt;

&lt;p&gt;Some lenders have historically collected contact data for purposes such as debt recovery, identity verification, or behavioral analysis.&lt;/p&gt;

&lt;p&gt;This has raised concerns around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;privacy&lt;/li&gt;
&lt;li&gt;consent&lt;/li&gt;
&lt;li&gt;proportionality&lt;/li&gt;
&lt;li&gt;relevance of data collection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Importantly, collecting contact data does not automatically mean it is directly used in machine learning models.&lt;/p&gt;

&lt;p&gt;However, large-scale collection of highly personal information can still create ethical and regulatory concerns, especially when users do not fully understand how their data is being used.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Behavioral Data Can Be Misinterpreted
&lt;/h2&gt;

&lt;p&gt;Some digital lending systems experiment with behavioral and device metadata as part of risk analysis.&lt;/p&gt;

&lt;p&gt;Examples may include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;app activity&lt;/li&gt;
&lt;li&gt;device usage patterns&lt;/li&gt;
&lt;li&gt;digital engagement behavior&lt;/li&gt;
&lt;li&gt;account stability signals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The challenge is that human behavior is highly contextual.&lt;/p&gt;

&lt;p&gt;A student, trader, freelancer, remote worker, or night-shift employee may all use technology differently for perfectly legitimate reasons.&lt;/p&gt;

&lt;p&gt;Without sufficient local context, predictive systems may incorrectly interpret normal behavior as elevated risk.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Younger Borrowers May Face Structural Disadvantages
&lt;/h2&gt;

&lt;p&gt;Some predictive systems associate younger age groups with higher uncertainty because younger users often have shorter credit histories.&lt;/p&gt;

&lt;p&gt;This can make it harder for financially responsible young adults to build credibility within formal lending systems.&lt;/p&gt;

&lt;p&gt;The problem is not necessarily direct discrimination.&lt;/p&gt;

&lt;p&gt;Often, the system is simply learning historical patterns from existing financial data.&lt;/p&gt;

&lt;p&gt;But historical patterns do not always represent fair opportunity.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Historical Data Can Reproduce Existing Inequality
&lt;/h2&gt;

&lt;p&gt;Machine learning systems learn from historical data.&lt;/p&gt;

&lt;p&gt;If previous lending decisions already reflected unequal access, exclusion, or structural bias, AI systems may unintentionally reproduce those same patterns at scale.&lt;/p&gt;

&lt;p&gt;This is one of the most widely discussed concerns in AI fairness research.&lt;/p&gt;

&lt;p&gt;Importantly, this does not require malicious intent.&lt;/p&gt;

&lt;p&gt;A model can still produce unfair outcomes even when developers believe they are building a neutral system.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Existing Borrowers Often Have an Advantage
&lt;/h2&gt;

&lt;p&gt;People with established financial records are generally easier for systems to evaluate.&lt;/p&gt;

&lt;p&gt;Meanwhile, first-time borrowers may have very limited digital financial history available.&lt;/p&gt;

&lt;p&gt;This can create a cycle where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;financially visible users become easier to trust&lt;/li&gt;
&lt;li&gt;financially invisible users remain difficult to assess&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Over time, this can widen financial inclusion gaps rather than reduce them.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. AI Systems Can Misunderstand Informal Economies
&lt;/h2&gt;

&lt;p&gt;Many predictive financial systems are built around assumptions common in highly formal economies.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;stable monthly salaries&lt;/li&gt;
&lt;li&gt;fixed residential addresses&lt;/li&gt;
&lt;li&gt;continuous banking activity&lt;/li&gt;
&lt;li&gt;extensive digital financial records&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But millions of Nigerians operate within informal economic systems.&lt;/p&gt;

&lt;p&gt;This includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;market traders&lt;/li&gt;
&lt;li&gt;artisans&lt;/li&gt;
&lt;li&gt;rural entrepreneurs&lt;/li&gt;
&lt;li&gt;freelancers&lt;/li&gt;
&lt;li&gt;small cash-based business owners&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Imagine two traders earning similar income levels.&lt;/p&gt;

&lt;p&gt;One regularly uses digital banking apps and owns a newer smartphone.&lt;/p&gt;

&lt;p&gt;The other mainly operates in cash, shares devices with family members, and has limited digital records.&lt;/p&gt;

&lt;p&gt;An automated system trained heavily on digital behavioral data may incorrectly treat the second trader as riskier, even if both individuals are equally capable of repayment.&lt;/p&gt;

&lt;p&gt;This is one reason localization matters in AI system design.&lt;/p&gt;




&lt;h2&gt;
  
  
  10. Digital Behavior Is Not Universal
&lt;/h2&gt;

&lt;p&gt;Behavioral prediction systems rely on patterns.&lt;/p&gt;

&lt;p&gt;But patterns are influenced by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;culture&lt;/li&gt;
&lt;li&gt;infrastructure&lt;/li&gt;
&lt;li&gt;internet access&lt;/li&gt;
&lt;li&gt;electricity stability&lt;/li&gt;
&lt;li&gt;work conditions&lt;/li&gt;
&lt;li&gt;shared technology usage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A system trained mainly on users from one environment may perform poorly when applied to populations living under very different social and economic conditions.&lt;/p&gt;

&lt;p&gt;This is not only a technical issue.&lt;/p&gt;

&lt;p&gt;It is also a contextual one.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters Beyond Technology
&lt;/h2&gt;

&lt;p&gt;Automated lending systems can influence:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;access to credit&lt;/li&gt;
&lt;li&gt;entrepreneurship&lt;/li&gt;
&lt;li&gt;business growth&lt;/li&gt;
&lt;li&gt;financial inclusion&lt;/li&gt;
&lt;li&gt;economic opportunity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because these systems operate at scale, even small design flaws can affect large numbers of people.&lt;/p&gt;

&lt;p&gt;The issue is not that AI is automatically harmful.&lt;/p&gt;

&lt;p&gt;The issue is that predictive systems can produce unfair outcomes when they are built without enough understanding of the people they are evaluating.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Developers and Fintech Teams Should Consider
&lt;/h2&gt;

&lt;p&gt;Better systems are possible.&lt;/p&gt;

&lt;p&gt;Some important safeguards include:&lt;/p&gt;

&lt;h3&gt;
  
  
  Audit training data regularly
&lt;/h3&gt;

&lt;p&gt;Check whether certain communities are being unfairly excluded or misrepresented.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reduce dependence on weak proxy variables
&lt;/h3&gt;

&lt;p&gt;Not every statistically useful signal should influence financial decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Include local economic realities
&lt;/h3&gt;

&lt;p&gt;Systems designed for African users should reflect African financial behavior, not only Western financial assumptions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Allow human review and appeals
&lt;/h3&gt;

&lt;p&gt;Users should have meaningful ways to challenge automated decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Improve transparency
&lt;/h3&gt;

&lt;p&gt;People deserve understandable explanations for important financial outcomes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test systems across different populations
&lt;/h3&gt;

&lt;p&gt;A model that performs well in one environment may fail badly in another.&lt;/p&gt;




&lt;h2&gt;
  
  
  My Final Thought On This
&lt;/h2&gt;

&lt;p&gt;One of the biggest risks in AI is not always intentional discrimination.&lt;/p&gt;

&lt;p&gt;Sometimes the bigger problem is systems built without enough understanding of the people they affect.&lt;/p&gt;

&lt;p&gt;And when those systems influence access to money, opportunity, and financial survival, fairness stops being only a technical discussion.&lt;/p&gt;

&lt;p&gt;It becomes a social one.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>loan</category>
      <category>webdev</category>
      <category>nigeria</category>
    </item>
    <item>
      <title>Which global AI principles fail in weak-regulation countries like Nigeria and why ?</title>
      <dc:creator>Ebikara Spiff ᴀɪᴄᴍᴄ</dc:creator>
      <pubDate>Sun, 03 May 2026 17:39:07 +0000</pubDate>
      <link>https://forem.com/spiff/which-global-ai-principles-fail-in-weak-regulation-countries-like-nigeria-and-why--49ee</link>
      <guid>https://forem.com/spiff/which-global-ai-principles-fail-in-weak-regulation-countries-like-nigeria-and-why--49ee</guid>
      <description>&lt;p&gt;&lt;strong&gt;AI is being “regulated” on paper. But in reality? It is operating in the dark.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Global AI frameworks from the OECD, UNESCO, and the World Economic Forum promise a future built on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Transparency&lt;/li&gt;
&lt;li&gt;Accountability&lt;/li&gt;
&lt;li&gt;Human oversight&lt;/li&gt;
&lt;li&gt;Risk-based regulation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It sounds solid and reassuring.&lt;/p&gt;

&lt;p&gt;But the uncomfortable truth is &lt;strong&gt;These principles start to break the moment they hit environments like Nigeria.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  ⚠️ Transparency: The Promise That Rarely Shows Up
&lt;/h3&gt;

&lt;p&gt;You are told AI systems should be explainable.&lt;/p&gt;

&lt;p&gt;But let's imagine this:&lt;/p&gt;

&lt;p&gt;You apply for a digital loan.&lt;br&gt;
You get rejected.&lt;br&gt;
You get no explanation, clarity or appeal.&lt;/p&gt;

&lt;p&gt;Just a silent algorithm.&lt;/p&gt;

&lt;p&gt;Now in theory, transparency means you deserve to know &lt;em&gt;why&lt;/em&gt;.&lt;br&gt;
But in practice, companies protect their models and data because that’s their competitive advantage.&lt;/p&gt;

&lt;p&gt;And without strong AI regulation in Nigeria forcing disclosure then &lt;strong&gt;Transparency becomes optional and optional transparency is no transparency at all.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  ⚠️ Accountability: When Harm Has No Owner
&lt;/h3&gt;

&lt;p&gt;Now let’s go a little deeper.&lt;/p&gt;

&lt;p&gt;An AI system flags you incorrectly or worse, financially excludes you.&lt;/p&gt;

&lt;p&gt;Who takes responsibility? is it :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The developer?&lt;/li&gt;
&lt;li&gt;The company?&lt;/li&gt;
&lt;li&gt;The data provider?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In strong regulatory systems, this question has answers.&lt;/p&gt;

&lt;p&gt;But in many African markets, including Nigeria, AI accountability struggles because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enforcement is weak&lt;/li&gt;
&lt;li&gt;Responsibility is blurred&lt;/li&gt;
&lt;li&gt;Legal consequences are inconsistent&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So when harm happens, it doesn’t just hurt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It disappears into the system, unanswered and unresolved.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  ⚠️ The Real Problem: Imported Principles, Local Reality
&lt;/h3&gt;

&lt;p&gt;Here’s what most people miss:&lt;/p&gt;

&lt;p&gt;Global AI governance frameworks were designed for countries with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strong institutions&lt;/li&gt;
&lt;li&gt;Active regulators&lt;/li&gt;
&lt;li&gt;Enforceable legal systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now apply that same model to fast-growing ecosystems like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fintech&lt;/li&gt;
&lt;li&gt;Digital lending&lt;/li&gt;
&lt;li&gt;Automated decision systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What do you get?  &lt;strong&gt;A dangerous illusion.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On paper → Responsible AI exists&lt;br&gt;
In practice → Oversight is weak or missing&lt;/p&gt;




&lt;h3&gt;
  
  
  🚨 The Risk No One Is Talking About
&lt;/h3&gt;

&lt;p&gt;This is not just a policy gap. It’s actually a &lt;strong&gt;trust gap&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And in places like my country Nigeria, where millions rely on digital financial tools daily, this gap can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exclude people unfairly&lt;/li&gt;
&lt;li&gt;Reinforce hidden bias&lt;/li&gt;
&lt;li&gt;Scale harm faster than regulation can catch up&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AI is not just scaling innovation. It is scaling decisions about people’s lives.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  💡 The Way Forward
&lt;/h3&gt;

&lt;p&gt;If we’re serious about ethical AI in Africa, we must move beyond copying global principles.&lt;/p&gt;

&lt;p&gt;We need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Context-aware AI regulation in Nigeria&lt;/li&gt;
&lt;li&gt;Stronger enforcement, not just guidelines&lt;/li&gt;
&lt;li&gt;Clear accountability frameworks for AI systems&lt;/li&gt;
&lt;li&gt;Real transparency that users can actually understand&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because without this, then &lt;strong&gt;“Responsible AI” will remain a well-written promise and not a lived reality.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The real question is:&lt;br&gt;
Are we building AI systems people can trust…&lt;br&gt;
or systems they are forced to accept?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aigovernance</category>
      <category>nigeria</category>
      <category>responsibleai</category>
    </item>
    <item>
      <title>The Sovereign Safety Gap: Why AI Alignment Must be Contextual.</title>
      <dc:creator>Ebikara Spiff ᴀɪᴄᴍᴄ</dc:creator>
      <pubDate>Sat, 02 May 2026 21:52:31 +0000</pubDate>
      <link>https://forem.com/spiff/the-sovereign-safety-gap-why-ai-alignment-must-be-contextual-14b0</link>
      <guid>https://forem.com/spiff/the-sovereign-safety-gap-why-ai-alignment-must-be-contextual-14b0</guid>
      <description>&lt;p&gt;As the global community converges on London and Washington to debate the existential risks of frontier AI, a dangerous assumption has taken root: that AI safety is a universal constant.&lt;/p&gt;

&lt;p&gt;The prevailing belief is that if a model is "aligned" in a lab in San Francisco or London, it is safe for the rest of the world. My experience as a Systems Engineer and AI governance practitioner in Nigeria suggests otherwise.&lt;/p&gt;

&lt;p&gt;We are currently facing a "Socio-Technical Gap" that threatens to undermine global alignment efforts, leaving emerging markets as the "blind spots" of AI safety.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Engineering Lens:&lt;/strong&gt; From Chemical Plants to Neural Networks&lt;br&gt;
My perspective is shaped by my background in Chemical Engineering. In industrial safety, we rely on the "Precautionary Principle." &lt;br&gt;
When designing a chemical plant, we don’t assume a system is safe because it passed a simulation; we conduct rigorous Hazard and Operability (HAZOP) studies to identify site-specific failure modes.We understand that a system’s stability is inseparable from its environment.&lt;/p&gt;

&lt;p&gt;AI safety currently lacks this industrial rigor. We are deploying frontier models, systems of immense complexity and potential volatility, without the "contextual pressure valves" necessary to ensure they remain aligned when they hit diverse, real-world data environments.&lt;br&gt;
I view model auditing not as a bureaucratic hurdle, but as a critical engineering fail-safe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt; Safety Degradation and "Safety Dumping"&lt;br&gt;
Current safety benchmarks, such as MMLU or TruthfulQA, are overwhelmingly Western-centric.&lt;br&gt;
They test for bias, truthfulness, and refusal behaviors within a narrow cultural and linguistic corridor.&lt;br&gt;
However, safety is not a static property of the weights and biases of a model; it is a dynamic interaction between the model and the user’s context.&lt;/p&gt;

&lt;p&gt;Through my work on the Governly AI Policy Map, which tracks regulatory readiness across 54 nations, I have observed a phenomenon I call "Safety Degradation." In my preliminary analysis, I found that while 54 nations are rushing to adopt AI, fewer than 5% have the technical infrastructure required to verify the safety claims of the models they are importing.&lt;/p&gt;

&lt;p&gt;When frontier models are prompted in regional dialects (such as Nigerian Pidgin) or within local socio-economic scenarios, standard RLHF filters often degrade.&lt;/p&gt;

&lt;p&gt;This leads to "safety dumping," where models are deployed in non-Western markets with a fraction of the contextual testing required to ensure robustness. If a model is misaligned in Lagos, the global system is not safe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Proposal for Technical Governance:&lt;/strong&gt; Contextual Red-Teaming&lt;br&gt;
To bridge this gap, we must move beyond high-level policy and into verifiable technical governance. I propose the adoption of Mandatory Contextual Red-Teaming Reports (CRRs) for international AI deployment.&lt;/p&gt;

&lt;p&gt;A CRR should not just be a narrative report; it must include quantitative benchmarks comparing refusal rates across different linguistic dialects and socio-economic prompts to identify specific failure modes.&lt;/p&gt;

&lt;p&gt;By making these reports a prerequisite for a "License to Operate," governments can force companies to move from generic "System Cards" to verifiable, contextual alignment. This empowers "Middle Powers" to use their market access as a lever to force a race to the top in safety standards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt; Toward Truly Global Alignment. If the goal of AI Safety is to prevent catastrophic misalignment, then that safety must be inclusive. We cannot claim to have solved the alignment problem if our models are only aligned with a fraction of the human population.&lt;/p&gt;

&lt;p&gt;I seek to use the Pivotal Research Fellowship to transform these high-level frameworks into a technical "safety toolkit" that can be piloted within the UK’s research ecosystem.&lt;/p&gt;

&lt;p&gt;By integrating Systems Engineering rigor with context-aware governance, we can ensure that frontier AI remains a tool for empowerment rather than a source of global instability.&lt;/p&gt;

</description>
      <category>aisafety</category>
      <category>ai</category>
      <category>aigovernance</category>
      <category>globalsouth</category>
    </item>
    <item>
      <title>Why an Accurate Loan Model Can Still Be Unfair in Nigeria</title>
      <dc:creator>Ebikara Spiff ᴀɪᴄᴍᴄ</dc:creator>
      <pubDate>Mon, 06 Apr 2026 09:08:19 +0000</pubDate>
      <link>https://forem.com/spiff/why-an-accurate-loan-model-can-still-be-unfair-in-nigeria-2ncn</link>
      <guid>https://forem.com/spiff/why-an-accurate-loan-model-can-still-be-unfair-in-nigeria-2ncn</guid>
      <description>&lt;p&gt;A loan model can be 95% accurate and still be unfair in Nigeria.&lt;/p&gt;

&lt;p&gt;AI loan systems make decisions using patterns from historical data.&lt;/p&gt;

&lt;p&gt;They look at things like:&lt;/p&gt;

&lt;p&gt;➖ transaction history&lt;/p&gt;

&lt;p&gt;➖ location&lt;/p&gt;

&lt;p&gt;➖ phone activity&lt;/p&gt;

&lt;p&gt;➖ financial behaviour&lt;/p&gt;

&lt;p&gt;On paper, this works pretty well.&lt;/p&gt;

&lt;p&gt;But the problem is Many Nigerians are invisible in that data.&lt;/p&gt;

&lt;p&gt;👉 The informal workers. &lt;br&gt;
👉 The unbanked individuals.&lt;br&gt;
👉 People operating in cash-based systems.&lt;/p&gt;

&lt;p&gt;Take a skilled carpenter who gets paid mostly in cash for example&lt;/p&gt;

&lt;p&gt;He has no strong transaction history. No formal credit trail.&lt;/p&gt;

&lt;p&gt;To the model?&lt;/p&gt;

&lt;p&gt;That looks like risk.&lt;/p&gt;

&lt;p&gt;But in reality, it’s just missing data.&lt;/p&gt;

&lt;p&gt;It gets more subtle.&lt;/p&gt;

&lt;p&gt;Location also can quietly influence outcomes.&lt;/p&gt;

&lt;p&gt;Someone from a high-activity area like Lagos Island may be favored over someone from the mainland, not because they’re more creditworthy, but because of patterns in the data.&lt;/p&gt;

&lt;p&gt;This is how bias hides.&lt;/p&gt;

&lt;p&gt;The model can be highly accurate overall…&lt;/p&gt;

&lt;p&gt;While consistently failing certain groups.&lt;/p&gt;

&lt;p&gt;Accuracy isn’t the problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Representation&lt;/strong&gt; is.&lt;/p&gt;

&lt;p&gt;If the data is incomplete, the decisions will be too.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>nigeria</category>
      <category>ailoanmodel</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Not What AI Does, But How It Decides: Anthropic’s Claude Constitution Explained.</title>
      <dc:creator>Ebikara Spiff ᴀɪᴄᴍᴄ</dc:creator>
      <pubDate>Sun, 25 Jan 2026 20:21:43 +0000</pubDate>
      <link>https://forem.com/spiff/not-what-ai-does-but-how-it-decides-anthropics-claude-constitution-explained-408o</link>
      <guid>https://forem.com/spiff/not-what-ai-does-but-how-it-decides-anthropics-claude-constitution-explained-408o</guid>
      <description>&lt;p&gt;I didn’t really understand why enterprises care so much about AI governance until I saw what Anthropic just did with Claude.&lt;/p&gt;

&lt;p&gt;In 2023, Claude had a constitution.&lt;br&gt;
Basically: a long list of rules telling the model what not to do.&lt;/p&gt;

&lt;p&gt;It worked.&lt;br&gt;
But rules break when reality gets messy.&lt;/p&gt;

&lt;p&gt;So on Jan 21, Anthropic rewrote the whole thing.&lt;/p&gt;

&lt;p&gt;This new Claude Constitution isn’t just rules anymore.&lt;br&gt;
It’s principles.&lt;/p&gt;

&lt;p&gt;A 4-tier priority system around safety, ethics, compliance, and usefulness and more importantly, why those rules exist.&lt;/p&gt;

&lt;p&gt;That shift matters.&lt;/p&gt;

&lt;p&gt;Because enterprises already assume something most people don’t want to say out loud:&lt;br&gt;
Every AI model has bias.&lt;br&gt;
It’s shaped by training data and the values baked into it.&lt;/p&gt;

&lt;p&gt;Anthropic isn’t pretending otherwise.&lt;br&gt;
They’re saying: this is how our model reasons when things get weird.&lt;/p&gt;

&lt;p&gt;And things will get weird.&lt;/p&gt;

&lt;p&gt;Especially in enterprise use cases where edge cases are guaranteed.&lt;/p&gt;

&lt;p&gt;This is the real difference:&lt;br&gt;
Not what the model should do,&lt;br&gt;
but how it decides what to do when no one predicted the scenario.&lt;/p&gt;

&lt;p&gt;Compare that to models that still allow obviously inappropriate behavior.&lt;/p&gt;

&lt;p&gt;One approach builds trust.&lt;br&gt;
The other creates risk.&lt;/p&gt;

&lt;p&gt;Transparency isn’t about feeling safe.&lt;br&gt;
It’s about knowing where the boundaries actually are.&lt;/p&gt;

&lt;p&gt;And even then, no constitution replaces human judgment.&lt;br&gt;
Domain expertise still matters.&lt;br&gt;
Oversight still matters.&lt;/p&gt;

&lt;p&gt;Claude’s new constitution doesn’t make AI perfect.&lt;br&gt;
It just makes its bias visible.&lt;/p&gt;

&lt;p&gt;And for enterprises, that visibility is the real product.&lt;/p&gt;

</description>
      <category>anthropic</category>
      <category>ai</category>
      <category>transparency</category>
      <category>webdev</category>
    </item>
    <item>
      <title>#ai_documentation.</title>
      <dc:creator>Ebikara Spiff ᴀɪᴄᴍᴄ</dc:creator>
      <pubDate>Tue, 06 Jan 2026 11:55:19 +0000</pubDate>
      <link>https://forem.com/spiff/-4e2n</link>
      <guid>https://forem.com/spiff/-4e2n</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/spiff" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1392055%2F2b41052c-d618-4ca8-9376-961db9b38af9.png" alt="spiff"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/spiff/translating-a-complex-object-detection-model-for-sales-teams-an-ai-documentation-case-study-46ao" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Translating a Complex Object Detection Model for Sales Teams: An AI Documentation Case Study&lt;/h2&gt;
      &lt;h3&gt;Ebikara Spiff ᴀɪᴄᴍᴄ ・ Jan 5&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#writing&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#documentation&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>ai</category>
      <category>writing</category>
      <category>documentation</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Translating a Complex Object Detection Model for Sales Teams: An AI Documentation Case Study</title>
      <dc:creator>Ebikara Spiff ᴀɪᴄᴍᴄ</dc:creator>
      <pubDate>Mon, 05 Jan 2026 14:50:00 +0000</pubDate>
      <link>https://forem.com/spiff/translating-a-complex-object-detection-model-for-sales-teams-an-ai-documentation-case-study-46ao</link>
      <guid>https://forem.com/spiff/translating-a-complex-object-detection-model-for-sales-teams-an-ai-documentation-case-study-46ao</guid>
      <description>&lt;p&gt;AI models are powerful, but their technical descriptions are often incomprehensible to non-engineers. Sales teams especially struggle to explain AI capabilities to clients without oversimplifying or misrepresenting them.  &lt;/p&gt;

&lt;p&gt;In this case study, I translated a highly technical object detection model description into clear, actionable language for a sales audience — demonstrating how to bridge the gap between engineering complexity and business communication.&lt;/p&gt;




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

&lt;p&gt;Here’s the &lt;strong&gt;original technical paragraph from the engineers&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Our proprietary detection framework implements a multi-scale feature pyramid network with deformable convolutions and focal loss optimization. The backbone utilizes an EfficientNet-B4 architecture pretrained on ImageNet, fine-tuned using mixed precision training with the AdamW optimizer. We've achieved state-of-the-art mean Average Precision (mAP) of 0.87 on the internal benchmark dataset, with inference latency of 17ms on our edge hardware, making it suitable for real-time detection tasks in constrained computational environments.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As you can see, this paragraph is &lt;strong&gt;dense with jargon and metrics&lt;/strong&gt; — accurate but completely inaccessible to a sales team.&lt;/p&gt;




&lt;h2&gt;
  
  
  My Approach
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Identify the audience:&lt;/strong&gt; Sales team members needing clarity and confidence to explain AI to clients.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Focus on key aspects:&lt;/strong&gt; Accuracy, speed, and real-world limitations.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Translate step by step:&lt;/strong&gt; Rewrite each sentence in plain, conversational language without losing meaning.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add a visual analogy:&lt;/strong&gt; Something memorable to help explain how the model works.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a translation glossary:&lt;/strong&gt; Simplify recurring technical terms for easy reference.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;&lt;strong&gt;Sales-Friendly Rewrite:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;This object detection model has a high reliability rate for real-time use and is designed to assist the average human when driving. It reacts fast enough to keep up with real-world driving conditions in supported environments.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Visual Analogy:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;It’s like an extra pair of eyes that assists you in identifying objects in real time while driving.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Translation Glossary:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-scale Feature Pyramid Network&lt;/strong&gt; → Lets the system notice both big and small objects at the same time.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deformable Convolutions&lt;/strong&gt; → Helps the system adjust to unusual or stretched shapes so it can recognize them better.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EfficientNet-B4 Backbone&lt;/strong&gt; → The “engine” of the system that efficiently extracts important details from images.&lt;/li&gt;
&lt;/ul&gt;




</description>
      <category>ai</category>
      <category>writing</category>
      <category>documentation</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Master Responsible AI: Key Principles for Ethical Impact</title>
      <dc:creator>Ebikara Spiff ᴀɪᴄᴍᴄ</dc:creator>
      <pubDate>Mon, 27 Oct 2025 04:46:58 +0000</pubDate>
      <link>https://forem.com/spiff/master-responsible-ai-key-principles-for-ethical-impact-5fmf</link>
      <guid>https://forem.com/spiff/master-responsible-ai-key-principles-for-ethical-impact-5fmf</guid>
      <description>&lt;p&gt;This article explains the essential principles of Responsible AI and how organizations can build ethical AI systems.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>If you only have 10–30 PDF files, you can keep things super simple. In this guide, you’ll learn how to power up an AI agent in n8n using OpenAI Assistants API, without all the extra tech</title>
      <dc:creator>Ebikara Spiff ᴀɪᴄᴍᴄ</dc:creator>
      <pubDate>Sat, 04 Oct 2025 19:31:22 +0000</pubDate>
      <link>https://forem.com/spiff/if-you-only-have-10-30-pdf-files-you-can-keep-things-super-simple-in-this-guide-youll-learn-how-9kl</link>
      <guid>https://forem.com/spiff/if-you-only-have-10-30-pdf-files-you-can-keep-things-super-simple-in-this-guide-youll-learn-how-9kl</guid>
      <description>&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/spiff/turn-your-pdfs-into-a-chatbot-with-n8n-open-ai-no-vector-db-needed-38en" class="crayons-story__hidden-navigation-link"&gt;Turn Your PDFs into a Chatbot with n8n + Open AI (No Vector DB Needed).&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="/spiff" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1392055%2F2b41052c-d618-4ca8-9376-961db9b38af9.png" alt="spiff profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/spiff" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Ebikara Spiff ᴀɪᴄᴍᴄ
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Ebikara Spiff ᴀɪᴄᴍᴄ
                
              
              &lt;div id="story-author-preview-content-2874994" 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="/spiff" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1392055%2F2b41052c-d618-4ca8-9376-961db9b38af9.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Ebikara Spiff ᴀɪᴄᴍᴄ&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/spiff/turn-your-pdfs-into-a-chatbot-with-n8n-open-ai-no-vector-db-needed-38en" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 1 '25&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/spiff/turn-your-pdfs-into-a-chatbot-with-n8n-open-ai-no-vector-db-needed-38en" id="article-link-2874994"&gt;
          Turn Your PDFs into a Chatbot with n8n + Open AI (No Vector DB Needed).
        &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/openai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;openai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tutorial"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tutorial&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&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/spiff/turn-your-pdfs-into-a-chatbot-with-n8n-open-ai-no-vector-db-needed-38en" 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/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&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;5&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/spiff/turn-your-pdfs-into-a-chatbot-with-n8n-open-ai-no-vector-db-needed-38en#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add 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;
            6 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;




</description>
      <category>ai</category>
      <category>openai</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Turn Your PDFs into a Chatbot with n8n + Open AI (No Vector DB Needed).</title>
      <dc:creator>Ebikara Spiff ᴀɪᴄᴍᴄ</dc:creator>
      <pubDate>Wed, 01 Oct 2025 18:05:09 +0000</pubDate>
      <link>https://forem.com/spiff/turn-your-pdfs-into-a-chatbot-with-n8n-open-ai-no-vector-db-needed-38en</link>
      <guid>https://forem.com/spiff/turn-your-pdfs-into-a-chatbot-with-n8n-open-ai-no-vector-db-needed-38en</guid>
      <description>&lt;p&gt;Most people think you &lt;em&gt;must&lt;/em&gt; set up a complex RAG (Retrieval Augmented Generation) system with vector databases just to give your AI some knowledge. That’s not true.&lt;/p&gt;

&lt;p&gt;If you only have &lt;strong&gt;10–30 PDF files&lt;/strong&gt;, you can keep things super simple. In this guide, you’ll learn how to power up an AI agent in &lt;strong&gt;n8n&lt;/strong&gt; using &lt;strong&gt;OpenAI Assistants API&lt;/strong&gt;, without all the extra tech.&lt;/p&gt;

&lt;p&gt;You will build a &lt;strong&gt;chatbot&lt;/strong&gt; that answers FAQs (we’ll use a restaurant example).&lt;/p&gt;

&lt;p&gt;By the end, you’ll have a working AI assistant that reads your documents, remembers chat history, and answers smartly, no headaches.&lt;/p&gt;




&lt;h2&gt;
  
  
  What You will Need
&lt;/h2&gt;

&lt;p&gt;🛠 Tools:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://n8n.io" rel="noopener noreferrer"&gt;n8n&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://openai.com/" rel="noopener noreferrer"&gt;OpenAI&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And a small set of PDFs (10–30 files is perfect).&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Set Up n8n Trigger
&lt;/h2&gt;

&lt;p&gt;→ Open &lt;strong&gt;n8n&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Fswtllhcnp7qfts1cikf3.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.amazonaws.com%2Fuploads%2Farticles%2Fswtllhcnp7qfts1cikf3.png" alt="n8n homepage" width="800" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Click on the &lt;strong&gt;trigger&lt;/strong&gt;.&lt;br&gt;
→ Choose &lt;strong&gt;Chat Message&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Fimlpmishuirx11odjtu1.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.amazonaws.com%2Fuploads%2Farticles%2Fimlpmishuirx11odjtu1.png" alt="trigger" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Click on the trigger button, then select &lt;strong&gt;Advanced AI&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Fz9y5ki6qwzrqjcm1wsp8.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.amazonaws.com%2Fuploads%2Farticles%2Fz9y5ki6qwzrqjcm1wsp8.png" alt="advanced AI" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 2: Connect n8n to OpenAI
&lt;/h2&gt;

&lt;p&gt;→ Add an &lt;strong&gt;OpenAI node&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Fzen97usa0y91qe58p222.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.amazonaws.com%2Fuploads%2Farticles%2Fzen97usa0y91qe58p222.png" alt="Open AI NODE" width="800" height="269"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Select &lt;strong&gt;Message an Assistant&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Frj2mo9eadgvtr05thsco.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.amazonaws.com%2Fuploads%2Farticles%2Frj2mo9eadgvtr05thsco.png" alt="Message an assistant" width="800" height="268"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, connect your OpenAI account:&lt;/p&gt;

&lt;p&gt;→ Go to &lt;a href="https://platform.openai.com" rel="noopener noreferrer"&gt;OpenAI&lt;/a&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Ff15h4sd6kjntozdkkij5.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.amazonaws.com%2Fuploads%2Farticles%2Ff15h4sd6kjntozdkkij5.png" alt="openai homepage" width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Go to &lt;strong&gt;API Platform&lt;/strong&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fumlf4m149fg9ryfx5h95.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.amazonaws.com%2Fuploads%2Farticles%2Fumlf4m149fg9ryfx5h95.png" alt="openAI API Platform" width="800" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→  Click &lt;strong&gt;start building&lt;/strong&gt; (If you don’t have an account, create one.)&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.amazonaws.com%2Fuploads%2Farticles%2F0ez7rttos3g0b6tgzp6o.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.amazonaws.com%2Fuploads%2Farticles%2F0ez7rttos3g0b6tgzp6o.png" alt="openai" width="800" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→  Open &lt;strong&gt;Settings&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Fn9b1xxz3ssuigbsfozit.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.amazonaws.com%2Fuploads%2Farticles%2Fn9b1xxz3ssuigbsfozit.png" alt="setting" width="800" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Scroll down and click on &lt;strong&gt;API Keys.&lt;/strong&gt;&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.amazonaws.com%2Fuploads%2Farticles%2F9ikb0g8eq8s7qztf4ors.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.amazonaws.com%2Fuploads%2Farticles%2F9ikb0g8eq8s7qztf4ors.png" alt="API Keys" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→  Click &lt;strong&gt;Create new secret key&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Fpngf8qrrw3z0unrkqhut.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.amazonaws.com%2Fuploads%2Farticles%2Fpngf8qrrw3z0unrkqhut.png" alt="Create new secret key page" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→  Give it a name, then click &lt;strong&gt;Create secret key&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Fm2zvk4t3q1y5ya3j8f6b.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.amazonaws.com%2Fuploads%2Farticles%2Fm2zvk4t3q1y5ya3j8f6b.png" alt="openai" width="800" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→  Copy the secret key.&lt;/p&gt;

&lt;p&gt;Back in &lt;strong&gt;n8n&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;→ Open your &lt;strong&gt;OpenAI Assistant&lt;/strong&gt; node.&lt;br&gt;
→ Click on &lt;strong&gt;credentials to connect with&lt;/strong&gt;&lt;br&gt;
→ Click &lt;strong&gt;Create new credentials&lt;/strong&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Feu4fj4qpebrakft6h1vc.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.amazonaws.com%2Fuploads%2Farticles%2Feu4fj4qpebrakft6h1vc.png" alt="n8n" width="800" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→  Paste your &lt;strong&gt;API key&lt;/strong&gt; in the box.&lt;br&gt;
→  Save it.&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.amazonaws.com%2Fuploads%2Farticles%2Fcgqa6dvoupi7mkjtpjnc.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.amazonaws.com%2Fuploads%2Farticles%2Fcgqa6dvoupi7mkjtpjnc.png" alt="api key - save" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now your &lt;strong&gt;n8n&lt;/strong&gt; is linked to &lt;strong&gt;OpenAI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;→ Go back to your &lt;strong&gt;Open AI&lt;/strong&gt; account.&lt;br&gt;
→ Click on &lt;strong&gt;billings&lt;/strong&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fsmyeaygrp75a3tipao8a.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.amazonaws.com%2Fuploads%2Farticles%2Fsmyeaygrp75a3tipao8a.png" alt="OPEN AI" width="800" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Click on &lt;strong&gt;Add to credit balance&lt;/strong&gt; to make sure you have some credits.&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.amazonaws.com%2Fuploads%2Farticles%2Fp139rqvtxayhrj1c0azs.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.amazonaws.com%2Fuploads%2Farticles%2Fp139rqvtxayhrj1c0azs.png" alt="credit page" width="800" height="308"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 3: Create Your OpenAI Assistant
&lt;/h2&gt;

&lt;p&gt;→  Go to &lt;strong&gt;Dashboard&lt;/strong&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fxy4dgkt2mdfprfv5nfnr.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.amazonaws.com%2Fuploads%2Farticles%2Fxy4dgkt2mdfprfv5nfnr.png" alt="open ai dashboard" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→  Click &lt;strong&gt;Assistants&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Fdmrw1kn84qqdjw9yc73k.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.amazonaws.com%2Fuploads%2Farticles%2Fdmrw1kn84qqdjw9yc73k.png" alt="create new assistant" width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Give it a name (example: &lt;code&gt;RAG Agent&lt;/code&gt;).&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.amazonaws.com%2Fuploads%2Farticles%2Fvvjf9ic553khpt9o6l1y.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.amazonaws.com%2Fuploads%2Farticles%2Fvvjf9ic553khpt9o6l1y.png" alt="RAG AI Agent" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Copy the &lt;strong&gt;Assistant ID&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Fdohn9qmwaxyuh87vyajt.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.amazonaws.com%2Fuploads%2Farticles%2Fdohn9qmwaxyuh87vyajt.png" alt="assistant id" width="800" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Back in &lt;strong&gt;n8n&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;→  Open your &lt;strong&gt;OpenAI node&lt;/strong&gt;.&lt;br&gt;
→  In the &lt;strong&gt;Assistant box&lt;/strong&gt;, choose &lt;strong&gt;By ID&lt;/strong&gt;.&lt;br&gt;
→  Paste the ID you copied.&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.amazonaws.com%2Fuploads%2Farticles%2Fvnn6janjw8g5q18x7w30.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.amazonaws.com%2Fuploads%2Farticles%2Fvnn6janjw8g5q18x7w30.png" alt="n8n" width="800" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then:&lt;/p&gt;

&lt;p&gt;→  Under &lt;strong&gt;Source from prompt (user message)&lt;/strong&gt;, pick &lt;strong&gt;Define below&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Fi8aznn7yc34m0lblhj9m.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.amazonaws.com%2Fuploads%2Farticles%2Fi8aznn7yc34m0lblhj9m.png" alt="define below" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→  Back to your &lt;strong&gt;OpenAI&lt;/strong&gt; dashboard where you copied the &lt;strong&gt;id&lt;/strong&gt;&lt;br&gt;
→  Put this in your system's instructions: &lt;code&gt;Respond to the user query by following the given instruction&lt;/code&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fkzfkfkqkvtyxtzamjms2.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.amazonaws.com%2Fuploads%2Farticles%2Fkzfkfkqkvtyxtzamjms2.png" alt="OpenAI" width="800" height="298"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 4: Add Knowledge (Upload Files)
&lt;/h2&gt;

&lt;p&gt;→  In your OpenAI assistant dashboard, scroll to &lt;strong&gt;File Search&lt;/strong&gt;.&lt;br&gt;
→  Turn it &lt;strong&gt;On&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Fpw83i7tr8gfsuhliq842.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.amazonaws.com%2Fuploads%2Farticles%2Fpw83i7tr8gfsuhliq842.png" alt="KNOWLEDGE BASE" width="800" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Click the &lt;strong&gt;Files&lt;/strong&gt; button beside it.&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.amazonaws.com%2Fuploads%2Farticles%2Fs997f1y9cb5yjh8ex849.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.amazonaws.com%2Fuploads%2Farticles%2Fs997f1y9cb5yjh8ex849.png" alt="OPENAI files" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Upload the files you want the AI agent to access&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.amazonaws.com%2Fuploads%2Farticles%2F20r5h5em60qnad9ew8rt.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.amazonaws.com%2Fuploads%2Farticles%2F20r5h5em60qnad9ew8rt.png" alt="AI agent" width="800" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 For this tutorial, Let's upload &lt;strong&gt;one FAQ file&lt;/strong&gt; with about 25 restaurant questions. (In real use, you can upload up to 30 or more files.)&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.amazonaws.com%2Fuploads%2Farticles%2Fn7ui3qh8vyctcpvbl8m1.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.amazonaws.com%2Fuploads%2Farticles%2Fn7ui3qh8vyctcpvbl8m1.png" alt="one FAQ file" width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Click &lt;strong&gt;Attach&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2F78azkh8y61vrwhq5o1sp.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.amazonaws.com%2Fuploads%2Farticles%2F78azkh8y61vrwhq5o1sp.png" alt="pdf upload" width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now your agent can read these files.&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 5: Write the System Instructions
&lt;/h2&gt;

&lt;p&gt;→ Go to your &lt;strong&gt;OpenAI&lt;/strong&gt; assistant node&lt;br&gt;
→ Add the prompt below in &lt;strong&gt;the prompt user message&lt;/strong&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fpw2tefwah6yi6hdxctqs.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.amazonaws.com%2Fuploads%2Farticles%2Fpw2tefwah6yi6hdxctqs.png" alt="System Instructions" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  RAG Agent Prompt
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Identity&lt;/strong&gt;&lt;br&gt;
You are an AI assistant for Jennie’s Restaurant. Your role is to help customers by answering FAQs about menu items, hours, location, and general restaurant policies. Be friendly, professional, and concise. Do not assist with reservations, payments, or event bookings. Use only the restaurant’s FAQ knowledge base for answers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Style Guardrails&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Be Concise: Keep responses short, direct, and informative.&lt;/li&gt;
&lt;li&gt;Be Engaging: Use a warm, welcoming tone.&lt;/li&gt;
&lt;li&gt;Stay Proactive: Offer extra help naturally (e.g., “Would you also like to know about our specials?”).&lt;/li&gt;
&lt;li&gt;Get Clarity: If a request is unclear, politely ask a follow-up question.&lt;/li&gt;
&lt;li&gt;Avoid Repetition: Change your wording so replies don’t sound the same.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conversation Flow&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Introduction&lt;/strong&gt;
Greet warmly and offer help.
Example:&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;“Hi! Thanks for reaching out to Jennie’s Restaurant. How can I help you today?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Answer FAQs&lt;/strong&gt;&lt;br&gt;
Always check the FAQ knowledge base. Never guess. Use the &lt;code&gt;remove_annotations&lt;/code&gt; tool to clean the response.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;If the Query Is Vague&lt;/strong&gt;&lt;br&gt;
Ask politely for more details.&lt;br&gt;
Example:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;“Could you clarify if you’re asking about the lunch or dinner menu at Jennie’s Restaurant?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;If the Query Is Out of Scope&lt;/strong&gt;
Apologize and send them to a human.
Example:&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;“I’m sorry, I can’t help with that. Please call (555) 123-4567 for more details.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Closure&lt;/strong&gt;
Offer more help, then close politely.
Example:&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;“Is there anything else I can help you with today?”&lt;br&gt;
If not:&lt;br&gt;
“Thanks for reaching out to Jennie’s Restaurant. Have a wonderful day!”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Tool Usage&lt;/strong&gt;&lt;br&gt;
Always run your final answer through the &lt;code&gt;remove_annotations&lt;/code&gt; tool before replying.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Date today:&lt;/strong&gt; {{ $now }}&lt;br&gt;
&lt;strong&gt;User’s input:&lt;/strong&gt; {{ $json.chatInput }}&lt;/p&gt;

&lt;p&gt;👉 Make sure &lt;code&gt;{{ $json.chatInput }}&lt;/code&gt; shows in &lt;strong&gt;green&lt;/strong&gt; inside n8n. &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.amazonaws.com%2Fuploads%2Farticles%2Fh3bpg7skdwyo6sta2h92.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.amazonaws.com%2Fuploads%2Farticles%2Fh3bpg7skdwyo6sta2h92.png" alt="OPENAI assistant" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ If it’s not green, drag &lt;code&gt;chatInput&lt;/code&gt; into that spot.&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.amazonaws.com%2Fuploads%2Farticles%2Fgico868zcp2fmjb25nf1.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.amazonaws.com%2Fuploads%2Farticles%2Fgico868zcp2fmjb25nf1.png" alt="drag chatInput" width="800" height="510"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 6: Add Memory
&lt;/h2&gt;

&lt;p&gt;In your &lt;strong&gt;AI Assistant node&lt;/strong&gt; (n8n):&lt;/p&gt;

&lt;p&gt;→  Click on &lt;strong&gt;Memory lane&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Fx35cuh6wiy0naoev1j9x.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.amazonaws.com%2Fuploads%2Farticles%2Fx35cuh6wiy0naoev1j9x.png" alt="memory lane" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→  Pick &lt;strong&gt;Simple memory&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Frmvk6cvcd3ag3m3g0iol.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.amazonaws.com%2Fuploads%2Farticles%2Frmvk6cvcd3ag3m3g0iol.png" alt="simple memory" width="800" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→  Set &lt;strong&gt;Context window length&lt;/strong&gt; to &lt;strong&gt;10&lt;/strong&gt; (or any number you prefer.)&lt;/p&gt;

&lt;p&gt;This way, the bot remembers the last 10 messages in the same chat.&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.amazonaws.com%2Fuploads%2Farticles%2Fokwsk1t0j5h8e1vd870i.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.amazonaws.com%2Fuploads%2Farticles%2Fokwsk1t0j5h8e1vd870i.png" alt="Context window length" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 7: Add a Cleanup Tool (remove annotations)
&lt;/h2&gt;

&lt;p&gt;You don’t want the bot showing raw citations. So let’s add a cleanup tool.&lt;/p&gt;

&lt;p&gt;→  In your &lt;strong&gt;OpenAI assistant&lt;/strong&gt;, click on the boxed cross on &lt;strong&gt;Tools&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Faucgeiuvsfs7zmxpfslu.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.amazonaws.com%2Fuploads%2Farticles%2Faucgeiuvsfs7zmxpfslu.png" alt="openAI" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→  Select &lt;strong&gt;Code tool&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Fw3ctbs0jzkg58ev7zodh.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.amazonaws.com%2Fuploads%2Farticles%2Fw3ctbs0jzkg58ev7zodh.png" alt="Code tool image" width="800" height="268"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→  Name it: &lt;code&gt;remove_annotations&lt;/code&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Fy1lvghzg9rjnmkfmh0bm.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.amazonaws.com%2Fuploads%2Farticles%2Fy1lvghzg9rjnmkfmh0bm.png" alt="remove annontation" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Description: &lt;code&gt;Removes any annotation from the output. Always use this before sending to customer.&lt;/code&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fays60uk640enq3t76mqa.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.amazonaws.com%2Fuploads%2Farticles%2Fays60uk640enq3t76mqa.png" alt="n8n description" width="800" height="265"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Paste this code in the JavaScript box:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;removeAnnotations&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/【&lt;/span&gt;&lt;span class="se"&gt;[^&lt;/span&gt;&lt;span class="sr"&gt;】&lt;/span&gt;&lt;span class="se"&gt;]&lt;/span&gt;&lt;span class="sr"&gt;*】/g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Example usage&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;removeAnnotations&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;output&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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.amazonaws.com%2Fuploads%2Farticles%2Ffpeafbg3d8rx01jd9grf.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.amazonaws.com%2Fuploads%2Farticles%2Ffpeafbg3d8rx01jd9grf.png" alt="javascript" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Save it.&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.amazonaws.com%2Fuploads%2Farticles%2Fwz4r5if6be1jwi0f6qm4.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.amazonaws.com%2Fuploads%2Farticles%2Fwz4r5if6be1jwi0f6qm4.png" alt="save it" width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Restaurant FAQ Chatbot
&lt;/h2&gt;

&lt;p&gt;Now test your chatbot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Type a question about Jennie’s Restaurant.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The bot will check the FAQ file, clean up the answer, and reply in a warm, short style.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Big RAG Misconception
&lt;/h2&gt;

&lt;p&gt;Most people think &lt;strong&gt;RAG = Vector Database&lt;/strong&gt;. That’s wrong.&lt;/p&gt;

&lt;p&gt;For small projects with a few documents, you don’t need Pinecone, Weaviate, or any other heavy setup.&lt;/p&gt;

&lt;p&gt;OpenAI Assistants + n8n file uploads work just fine.&lt;/p&gt;

&lt;p&gt;Vector DBs are useful at scale. But for &lt;strong&gt;10–30 PDFs&lt;/strong&gt;, skip the complexity and keep it light.&lt;/p&gt;




&lt;p&gt;You just built a working AI agent in n8n using OpenAI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trigger on chat.&lt;/li&gt;
&lt;li&gt;Connect to OpenAI.&lt;/li&gt;
&lt;li&gt;Create an assistant.&lt;/li&gt;
&lt;li&gt;Upload files.&lt;/li&gt;
&lt;li&gt;Add memory.&lt;/li&gt;
&lt;li&gt;Clean responses.&lt;/li&gt;
&lt;li&gt;Test your chat.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Simple, clean, and affordable. No vector databases, no headaches.&lt;/p&gt;

&lt;p&gt;👉 Try it out with your own docs today.&lt;/p&gt;




</description>
      <category>ai</category>
      <category>openai</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How To Self-Host N8N For FREE (In 4 Minutes).</title>
      <dc:creator>Ebikara Spiff ᴀɪᴄᴍᴄ</dc:creator>
      <pubDate>Mon, 22 Sep 2025 01:49:19 +0000</pubDate>
      <link>https://forem.com/spiff/how-to-self-host-n8n-for-free-in-4-minutes-4kil</link>
      <guid>https://forem.com/spiff/how-to-self-host-n8n-for-free-in-4-minutes-4kil</guid>
      <description>&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.amazonaws.com%2Fuploads%2Farticles%2Flck5764bu3omsyy5cnxe.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.amazonaws.com%2Fuploads%2Farticles%2Flck5764bu3omsyy5cnxe.png" alt="Image of n8n monthly cost" width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Do you want powerful automations without paying for pricey tools? Let me tell you a secret: you can self-host n8n for free and it only takes 4 minutes to set up.&lt;/p&gt;

&lt;p&gt;n8n lets you connect apps, move data, and automate tasks that usually eat up your time. The best part of it all is that You own it. No subscriptions. No limits.&lt;/p&gt;

&lt;p&gt;In this guide, I’ll show you step by step how to get &lt;a href="//n8n.io"&gt;n8n&lt;/a&gt; running fast using &lt;a href="https://www.docker.com/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt;. By the end, you will have your own automation hub that is free, simple, and under your control. 🚀&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;&lt;br&gt;
First we have to download and install &lt;a href="//docker.com"&gt;Docker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Go to &lt;a href="//docker.com"&gt;docker.com&lt;/a&gt; and download &lt;code&gt;Docker desktop&lt;/code&gt; for system.&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.amazonaws.com%2Fuploads%2Farticles%2Ffb6k693k7r3t7m4ib6xc.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.amazonaws.com%2Fuploads%2Farticles%2Ffb6k693k7r3t7m4ib6xc.png" alt="Image of docker download page" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Mine is Windows.&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.amazonaws.com%2Fuploads%2Farticles%2Ff5o5zt7ciguias9c12bn.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.amazonaws.com%2Fuploads%2Farticles%2Ff5o5zt7ciguias9c12bn.png" alt="Image of dockers windows download page" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before installing &lt;code&gt;Docker&lt;/code&gt;, you must check the &lt;code&gt;system requirements&lt;/code&gt; to confirm if your PC can run it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;## System Requirements (Step by Step)&lt;/strong&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fvdfpdf0jlu9hmmp962v5.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.amazonaws.com%2Fuploads%2Farticles%2Fvdfpdf0jlu9hmmp962v5.png" alt="Image of docker's system requirements page" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Check WSL Version&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first requirement is &lt;code&gt;WSL 1.1.3.0 or later.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To check if it’s installed:&lt;/p&gt;

&lt;p&gt;→ Press &lt;code&gt;Windows + R&lt;/code&gt;, type &lt;code&gt;cmd&lt;/code&gt;, and press &lt;code&gt;Enter&lt;/code&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Fp0ku1p891oqdpf6gntpp.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.amazonaws.com%2Fuploads%2Farticles%2Fp0ku1p891oqdpf6gntpp.png" alt="Image docker's system's requirement" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It will take you to your terminal&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.amazonaws.com%2Fuploads%2Farticles%2F8ayzzjsnr789jrsqpku4.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.amazonaws.com%2Fuploads%2Farticles%2F8ayzzjsnr789jrsqpku4.png" alt="Image of window terminal" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ In terminal, run &lt;code&gt;WSL&lt;/code&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fx71dkekv2cn4iux3loss.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.amazonaws.com%2Fuploads%2Farticles%2Fx71dkekv2cn4iux3loss.png" alt="Image WIN Terminal" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If &lt;code&gt;WSL&lt;/code&gt; runs, it’s installed.&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.amazonaws.com%2Fuploads%2Farticles%2Fenl5rb3e3o0bhrwf5lzm.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.amazonaws.com%2Fuploads%2Farticles%2Fenl5rb3e3o0bhrwf5lzm.png" alt="Image WIN Terminal" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If not installed &lt;/p&gt;

&lt;p&gt;→ Type &lt;code&gt;wsl --install&lt;/code&gt; and press &lt;code&gt;enter&lt;/code&gt;&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.amazonaws.com%2Fuploads%2Farticles%2F99go8v16alc6jvbcdnx8.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.amazonaws.com%2Fuploads%2Farticles%2F99go8v16alc6jvbcdnx8.png" alt="Image WIN Terminal" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Check Windows Version&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next on the requirement page, it says we need to have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Operating System: Windows 11, 64-bit&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Edition: Pro&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Version: 21H2 or later&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;→ Press &lt;code&gt;Win + R&lt;/code&gt; and type &lt;code&gt;winver&lt;/code&gt; in the box, then hit &lt;code&gt;Okay&lt;/code&gt;&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.amazonaws.com%2Fuploads%2Farticles%2F7r94675sv44on032ene2.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.amazonaws.com%2Fuploads%2Farticles%2F7r94675sv44on032ene2.png" alt="Image of system's requirement" width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My version is &lt;code&gt;22H2&lt;/code&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Furuuat28cg8incshsoi2.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.amazonaws.com%2Fuploads%2Farticles%2Furuuat28cg8incshsoi2.png" alt="Image of my windows version" width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Enable WSL 2 Features&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The next requirement - Turn on &lt;code&gt;WSL 2&lt;/code&gt; features on &lt;code&gt;windows&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;→ Go to the search bar on your system and type &lt;code&gt;Enable windows&lt;/code&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fpoya9waorjbzsgnp9d05.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.amazonaws.com%2Fuploads%2Farticles%2Fpoya9waorjbzsgnp9d05.png" alt="Image of windows home page" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Click on &lt;code&gt;Turn Windows features on or off&lt;/code&gt;&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.amazonaws.com%2Fuploads%2Farticles%2F13co30ntytl9zrpm27al.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.amazonaws.com%2Fuploads%2Farticles%2F13co30ntytl9zrpm27al.png" alt="Image of windows home page" width="800" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Enable &lt;code&gt;Windows Subsystem for Linux (WSL)&lt;/code&gt; by ticking the box beside it. &lt;/p&gt;

&lt;p&gt;→ Click &lt;code&gt;Ok&lt;/code&gt;&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.amazonaws.com%2Fuploads%2Farticles%2F2oab4pvvrvfe8xfvvppj.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.amazonaws.com%2Fuploads%2Farticles%2F2oab4pvvrvfe8xfvvppj.png" alt="Image of WSL box" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wait for setup to finish&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.amazonaws.com%2Fuploads%2Farticles%2Fzrm5sqza5sc7x3tvv88c.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.amazonaws.com%2Fuploads%2Farticles%2Fzrm5sqza5sc7x3tvv88c.png" alt="Image of setup" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Select &lt;code&gt;Don’t restart&lt;/code&gt; for now.&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.amazonaws.com%2Fuploads%2Farticles%2F6v34a00bkgkqlgbaf5hd.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.amazonaws.com%2Fuploads%2Farticles%2F6v34a00bkgkqlgbaf5hd.png" alt="Image setup" width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Verify Virtualization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next on the requirement page, check if  &lt;code&gt;virtualization is enabled.&lt;/code&gt;&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.amazonaws.com%2Fuploads%2Farticles%2F59wx5sgvrj3bnt5jc5v3.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.amazonaws.com%2Fuploads%2Farticles%2F59wx5sgvrj3bnt5jc5v3.png" alt=" " width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To check if &lt;code&gt;Virtualization is enabled&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;→ Press &lt;code&gt;Ctrl + Esc&lt;/code&gt; key to open &lt;code&gt;Task Manager.&lt;/code&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fsn9ae95vxwb4rm8640ra.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.amazonaws.com%2Fuploads%2Farticles%2Fsn9ae95vxwb4rm8640ra.png" alt="Image of task manager" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Click on the &lt;code&gt;second icon&lt;/code&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fnzh3hntceld5e2jcrmhj.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.amazonaws.com%2Fuploads%2Farticles%2Fnzh3hntceld5e2jcrmhj.png" alt="Image of task manager" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Click on &lt;code&gt;CPU&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;At the bottom, check if &lt;code&gt;Virtualization is enabled&lt;/code&gt; (it usually is by default).&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.amazonaws.com%2Fuploads%2Farticles%2Fxf59svnfygw3ei5iirwc.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.amazonaws.com%2Fuploads%2Farticles%2Fxf59svnfygw3ei5iirwc.png" alt="Image of CPU" width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Install Docker on Windows
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Run the Installer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;→ Double-click the &lt;code&gt;Docker Desktop installer&lt;/code&gt; you downloaded.&lt;/p&gt;

&lt;p&gt;→ Click &lt;code&gt;Yes&lt;/code&gt; when prompted for permissions.&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.amazonaws.com%2Fuploads%2Farticles%2Fpdrb7vhq1rwbzhosk7gh.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.amazonaws.com%2Fuploads%2Farticles%2Fpdrb7vhq1rwbzhosk7gh.png" alt="Image of docker file" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Configure Setup&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;→ Keep the shortcut option checked.&lt;/p&gt;

&lt;p&gt;→ Click &lt;code&gt;OK&lt;/code&gt; to continue.&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.amazonaws.com%2Fuploads%2Farticles%2F4qwt55z7ub0d99wk30hg.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.amazonaws.com%2Fuploads%2Farticles%2F4qwt55z7ub0d99wk30hg.png" alt="Image docker setup" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:  Install&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Docker&lt;/code&gt; will unpack files and install automatically.&lt;/p&gt;

&lt;p&gt;This may take several minutes, be patient.&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.amazonaws.com%2Fuploads%2Farticles%2Fh5ewg7oiwxr1twn0klne.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.amazonaws.com%2Fuploads%2Farticles%2Fh5ewg7oiwxr1twn0klne.png" alt="Image of docker installing" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Confirm Installation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When complete, you will see &lt;code&gt;Installation Successful.&lt;/code&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fjbyj79h9w1p7q1ka1guo.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.amazonaws.com%2Fuploads%2Farticles%2Fjbyj79h9w1p7q1ka1guo.png" alt="Image docker" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Restart and Launch&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Restart your computer.&lt;/p&gt;

&lt;p&gt;→ Open &lt;code&gt;Docker Desktop&lt;/code&gt;, &lt;/p&gt;

&lt;p&gt;You are ready to use &lt;code&gt;Docker&lt;/code&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fbymhgb3mxows2ehqoh4h.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.amazonaws.com%2Fuploads%2Farticles%2Fbymhgb3mxows2ehqoh4h.png" alt="Image docker's home page" width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;## How to Self-Host n8n for Free&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1. Open Docker Desktop&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Make sure Docker is installed and running.&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.amazonaws.com%2Fuploads%2Farticles%2Fbymhgb3mxows2ehqoh4h.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.amazonaws.com%2Fuploads%2Farticles%2Fbymhgb3mxows2ehqoh4h.png" alt="Image docker's home page" width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2. Go to the Images Tab&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;Docker Desktop&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;→ Click on &lt;code&gt;Images&lt;/code&gt; from the left panel.&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.amazonaws.com%2Fuploads%2Farticles%2Fnvhkuhzci0f6zbhr2i2u.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.amazonaws.com%2Fuploads%2Farticles%2Fnvhkuhzci0f6zbhr2i2u.png" alt="Image of docker home page" width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3. Search for n8n&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;→ Click on search &lt;code&gt;images&lt;/code&gt; to run.&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.amazonaws.com%2Fuploads%2Farticles%2Fl74ap4a06akb5qri1pra.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.amazonaws.com%2Fuploads%2Farticles%2Fl74ap4a06akb5qri1pra.png" alt="Image of docker home page" width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ In the &lt;code&gt;search bar&lt;/code&gt;, type: &lt;code&gt;n8n&lt;/code&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fweeyobi6e6h3w6rpbnud.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.amazonaws.com%2Fuploads%2Farticles%2Fweeyobi6e6h3w6rpbnud.png" alt="Image of search bar" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4. Select the Official Image&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;→ Choose &lt;code&gt;n8nio/n8n (the one with 100M+ downloads).&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;→ Click &lt;code&gt;Pull&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This downloads the official &lt;code&gt;n8n Docker image&lt;/code&gt; to your computer.&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.amazonaws.com%2Fuploads%2Farticles%2F66dojhls9kivq33becxw.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.amazonaws.com%2Fuploads%2Farticles%2F66dojhls9kivq33becxw.png" alt="Image of n8n.io" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5. Run the Image&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After pulling:&lt;/p&gt;

&lt;p&gt;→  Click &lt;code&gt;Run&lt;/code&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2F8ojyrtwstoo0zcsc0f10.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.amazonaws.com%2Fuploads%2Farticles%2F8ojyrtwstoo0zcsc0f10.png" alt="Image of docker" width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, &lt;strong&gt;Configure the container:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;→ &lt;strong&gt;Container Name:&lt;/strong&gt; &lt;code&gt;n8n&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;→ &lt;strong&gt;Host Port:&lt;/strong&gt; &lt;code&gt;5678&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;→ Click &lt;code&gt;Run&lt;/code&gt; again.&lt;/p&gt;

&lt;p&gt;This downloads the official &lt;code&gt;n8n Docker image&lt;/code&gt; to your computer.&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.amazonaws.com%2Fuploads%2Farticles%2Frq0k3p4dm4lkwoq4zsx7.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.amazonaws.com%2Fuploads%2Farticles%2Frq0k3p4dm4lkwoq4zsx7.png" alt="Image docker" width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6. Wait for Startup.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let &lt;code&gt;Docker&lt;/code&gt; run until you see this message:&lt;/p&gt;

&lt;p&gt;→ &lt;code&gt;Editor is now accessible via: http://localhost:5678&lt;/code&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fcie2x2b1fqgkap6zpy86.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.amazonaws.com%2Fuploads%2Farticles%2Fcie2x2b1fqgkap6zpy86.png" alt="Image docker" width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7. Open n8n in Browser&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;→ Copy and paste &lt;code&gt;http://localhost:5678&lt;/code&gt; into your browser and run.&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.amazonaws.com%2Fuploads%2Farticles%2Fat0ioc1vqoaunmb52p39.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.amazonaws.com%2Fuploads%2Farticles%2Fat0ioc1vqoaunmb52p39.png" alt="Image docker" width="800" height="559"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will see the &lt;code&gt;n8n&lt;/code&gt; welcome page.&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.amazonaws.com%2Fuploads%2Farticles%2F147ieo2bizngxiroviam.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.amazonaws.com%2Fuploads%2Farticles%2F147ieo2bizngxiroviam.png" alt="Image docker" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ Confirm the URL shows &lt;code&gt;localhost:5678.&lt;/code&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fb8b8587kf8almzqva2n7.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.amazonaws.com%2Fuploads%2Farticles%2Fb8b8587kf8almzqva2n7.png" alt="Image docker" width="800" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8. Create Your Account&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sign up with your details (Let's use a demo account).&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.amazonaws.com%2Fuploads%2Farticles%2Fpy3lahvgx4yxzuumjd2e.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.amazonaws.com%2Fuploads%2Farticles%2Fpy3lahvgx4yxzuumjd2e.png" alt="Image docker" width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Log in to access your &lt;code&gt;n8n&lt;/code&gt; dashboard.&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.amazonaws.com%2Fuploads%2Farticles%2F2wv4ir7i9er4rb29plqb.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.amazonaws.com%2Fuploads%2Farticles%2F2wv4ir7i9er4rb29plqb.png" alt="Image docker" width="800" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations. You now have &lt;code&gt;n8n&lt;/code&gt; running locally on your computer with Docker.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>ai</category>
      <category>automation</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Whose Fairness Are You Coding Into Your AI System?</title>
      <dc:creator>Ebikara Spiff ᴀɪᴄᴍᴄ</dc:creator>
      <pubDate>Wed, 23 Apr 2025 04:35:10 +0000</pubDate>
      <link>https://forem.com/spiff/whose-fairness-are-you-coding-into-your-ai-system-47i0</link>
      <guid>https://forem.com/spiff/whose-fairness-are-you-coding-into-your-ai-system-47i0</guid>
      <description>&lt;p&gt;As developers, we’re often taught to treat fairness like a math problem.&lt;/p&gt;

&lt;p&gt;Balance the dataset.&lt;br&gt;&lt;br&gt;
Reduce bias.&lt;br&gt;&lt;br&gt;
Optimize the outcome.  &lt;/p&gt;

&lt;p&gt;But here’s a question I’ve been wrestling with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Is fairness universal — or is it cultural?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Growing up, I saw fairness differently
&lt;/h2&gt;

&lt;p&gt;I’m from Nigeria.&lt;/p&gt;

&lt;p&gt;Where I grew up, fairness didn’t mean “treat everyone exactly the same.”&lt;br&gt;&lt;br&gt;
It often meant “consider people’s different realities.”&lt;/p&gt;

&lt;p&gt;Think about it:&lt;br&gt;&lt;br&gt;
If two students show up late to class, one because of traffic, the other because they were helping their parents in the market,  do we punish them both the same way?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Same rule, different context.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
And &lt;em&gt;maybe&lt;/em&gt; fairness means acknowledging that.&lt;/p&gt;




&lt;h2&gt;
  
  
  AI doesn't always do that
&lt;/h2&gt;

&lt;p&gt;Most AI systems we build today encode a &lt;em&gt;Western&lt;/em&gt; interpretation of fairness:&lt;br&gt;&lt;br&gt;
🧮 Group fairness&lt;br&gt;&lt;br&gt;
⚖️ Individual fairness&lt;br&gt;&lt;br&gt;
📊 Statistical parity&lt;/p&gt;

&lt;p&gt;These are important, but they’re not always &lt;em&gt;enough&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Take this real case:&lt;br&gt;&lt;br&gt;
A credit scoring algorithm in Kenya failed to recognize community-based lending traditions, like rotating savings groups (ROSCAs).&lt;/p&gt;

&lt;p&gt;As a result, reliable borrowers were marked “high-risk” because the system didn’t understand local context.&lt;/p&gt;

&lt;p&gt;Fair model?&lt;br&gt;&lt;br&gt;
Accurate data?&lt;br&gt;&lt;br&gt;
Maybe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fair outcome?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Not really.&lt;/p&gt;




&lt;h2&gt;
  
  
  Developers, we need to ask harder questions
&lt;/h2&gt;

&lt;p&gt;If you’re working on AI, especially models that affect people’s lives, I urge you to consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Whose values are we embedding into our models?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Are we treating fairness as a checklist or a conversation?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Can our systems adapt to different cultural realities, not just datasets?&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;As I prepare for a PhD, I’m committed to asking these questions, and building models that reflect &lt;em&gt;local values&lt;/em&gt;, not just global assumptions.&lt;/p&gt;

&lt;p&gt;Because true fairness in AI might not come from the top down, but from the &lt;strong&gt;Global South outward&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;💬 &lt;em&gt;What’s your take?&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Have you ever worked on an AI project where fairness was tricky to define? &lt;/p&gt;

&lt;p&gt;Do you think AI models should adapt to different cultures, or aim for universal rules?&lt;/p&gt;

&lt;p&gt;Let’s talk in the comments 👇🏽&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>ethicalai</category>
      <category>responsibleai</category>
    </item>
  </channel>
</rss>
