<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Dzimark Blog]]></title><description><![CDATA[Dzimark Blog]]></description><link>https://dzimark.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6ad71f28ffd4a05ad3c33d3c/b6c453a4-faa9-4366-a8cf-7129e8b0b168.png</url><title>Dzimark Blog</title><link>https://dzimark.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Sun, 25 Oct 2026 12:17:02 GMT</lastBuildDate><atom:link href="https://dzimark.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[RAG chatbots that can act: an engineering checklist for adding agent tools safely]]></title><description><![CDATA[Retrieval-augmented generation (RAG) makes an AI model answer from your own information. When someone asks a question, the system first searches your…]]></description><link>https://dzimark.hashnode.dev/rag-chatbots-that-can-act-an-engineering-checklist-for-adding-agent-tools-safely</link><guid isPermaLink="true">https://dzimark.hashnode.dev/rag-chatbots-that-can-act-an-engineering-checklist-for-adding-agent-tools-safely</guid><category><![CDATA[RAG ]]></category><category><![CDATA[chatbot]]></category><category><![CDATA[llm]]></category><category><![CDATA[ai agents]]></category><dc:creator><![CDATA[Sushil Barwal]]></dc:creator><pubDate>Fri, 23 Oct 2026 05:54:24 GMT</pubDate><content:encoded><![CDATA[<p>Retrieval-augmented generation (RAG) makes an AI model answer from your own information. When someone asks a question, the system first searches your documents for the relevant passages, and the model writes its answer from those passages, ideally with links to the sources.</p>
<p>An agent goes a step further. It decides which steps and tools to use to finish a task: check an order, book a slot, file a ticket. Put the two together and you get an assistant that answers accurately <em>and</em> gets things done.</p>
<p>It also gets you a new class of failure. A RAG bot that hallucinates gives a wrong answer. A RAG agent that hallucinates can do a wrong thing. Here is the checklist we use at Dzimark when we build these.</p>
<h2>Retrieval: get the right passages to the model</h2>
<p><strong>Clean before you chunk.</strong> Help articles, policies, manuals and contracts come with navigation text, repeated headers and stale copies. Strip that out first, or it ends up in every search result.</p>
<p><strong>Split by meaning, search by meaning.</strong> Passages should be searchable by what they say, not only by keywords, so "can I send it back?" finds the returns policy.</p>
<p><strong>Answer only from what was retrieved.</strong> The instruction to the model is explicit: answer from these passages, cite them, and say "I don't know" when the answer isn't there. Then offer another route, such as contacting the team, rather than guessing.</p>
<p><strong>Show your sources.</strong> Linking each answer to the passage it came from lets people check, and it makes your own reviews much faster.</p>
<h2>Agent tools: give it as little as possible</h2>
<p><strong>One tool per job.</strong> <code>check_order_status(order_id)</code> is better than <code>query_database(sql)</code>. Narrow tools are easier to test and harder to misuse.</p>
<p><strong>Limits inside the tool, not only in the prompt.</strong> If the agent may only look up orders for the signed-in customer, the tool enforces that. Prompts are guidance; code is a rule.</p>
<p><strong>Human approval for anything sensitive.</strong> Refunds, account changes and anything that costs money wait for a person. Many teams start with every action needing approval and relax that gradually as the logs prove the agent reliable.</p>
<p><strong>Log every action.</strong> Which tool, which arguments, which conversation, what came back. When something goes wrong, the log is the only witness.</p>
<h2>Memory: enough context, not a diary</h2>
<p>Conversation memory lets the agent follow a multi-step request without asking the same questions twice. Keep it to what the task needs. The more an agent remembers, the more personal data you are storing, and the more you have to protect and eventually delete.</p>
<h2>Data: keep it where it belongs</h2>
<p>Follow least-access principles: the assistant reads the documents it needs and nothing else. Keep data in your own accounts where possible, and where it must not leave your servers, use private or self-hosted models.</p>
<h2>Keeping it accurate after launch</h2>
<p>An assistant is only as good as the information behind it, and that information changes.</p>
<ul>
<li><strong>A simple content process.</strong> Someone owns adding, updating and removing documents, without needing a developer, so answers don't drift when products, prices or procedures change.</li>
<li><strong>Regular conversation reviews.</strong> Look at the questions it couldn't answer, the answers people marked unhelpful and the actions that failed. These usually point to missing or unclear documents, and fixing them improves your help centre for human readers too.</li>
<li><strong>Adjust limits from evidence.</strong> Loosen an approval rule only when the logs show the tool behaving.</li>
</ul>
<h2>Start small</h2>
<p>The pattern that works: one team, one type of request, one set of approved documents. Prove the value there, then add sources and actions in phases. Because the assistant answers only from approved content, adding a new area is mostly a matter of adding the right documents.</p>
<h2>Checklist</h2>
<ul>
<li><input disabled type="checkbox" /> Documents cleaned, split into passages, searchable by meaning</li>
<li><input disabled type="checkbox" /> Model answers only from retrieved passages, with citations, and admits when it doesn't know</li>
<li><input disabled type="checkbox" /> Narrow tools, limits enforced in code</li>
<li><input disabled type="checkbox" /> Human approval for refunds, account changes and anything costly</li>
<li><input disabled type="checkbox" /> Every action logged</li>
<li><input disabled type="checkbox" /> Memory limited to what the task needs</li>
<li><input disabled type="checkbox" /> Least-access data; private or self-hosted models where data must stay in-house</li>
<li><input disabled type="checkbox" /> An owner for the content and a regular review of failed questions and actions</li>
</ul>
<p>The business-side overview, with use cases for help centres, staff procedures and support, is on the Dzimark site: <a href="https://dzimark.com/ai-solutions/rag-ai-agents/">AI agents in RAG chatbots</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Flutter vs React Native for a startup MVP: the engineering trade-offs that matter]]></title><description><![CDATA[When a founder asks us "Flutter or React Native?", they usually expect a benchmark. The better answer starts with three questions: how should the app look…]]></description><link>https://dzimark.hashnode.dev/flutter-vs-react-native-for-a-startup-mvp-the-engineering-trade-offs-that-matter</link><guid isPermaLink="true">https://dzimark.hashnode.dev/flutter-vs-react-native-for-a-startup-mvp-the-engineering-trade-offs-that-matter</guid><category><![CDATA[Flutter]]></category><category><![CDATA[React Native]]></category><dc:creator><![CDATA[Sushil Barwal]]></dc:creator><pubDate>Thu, 22 Oct 2026 05:54:44 GMT</pubDate><content:encoded><![CDATA[<p>When a founder asks us "Flutter or React Native?", they usually expect a benchmark. The better answer starts with three questions: how should the app look, who will you hire, and which device features does version one need? Here's how the two frameworks differ on each, based on their own documentation.</p>
<h2>Rendering: own pixels vs native views</h2>
<p><strong>Flutter draws everything itself.</strong> It bypasses the platform's UI widget libraries, compiles the painting code to native code and renders through Impeller, an engine shipped inside your app. You get Material and Cupertino widget sets, or your own design system.</p>
<p><strong>React Native maps to native views.</strong> At runtime it creates the matching Android and iOS views for your components, so a button is backed by the platform's own view.</p>
<p>What that means for the product: Flutter makes a pixel-identical UI across devices easy, because one engine draws it all. React Native picks up platform conventions more naturally. Decide which one your brand needs before you decide anything else.</p>
<h2>Performance: architecture, not hype</h2>
<ul>
<li>Flutter's argument: frameworks layered on native UI libraries add overhead, so it paints its own widgets in compiled code.</li>
<li>React Native's New Architecture (default since 0.76) replaces the async bridge with JSI, so JavaScript can call native methods without serialisation. Its own docs say this won't automatically speed up every app.</li>
</ul>
<p>For a typical MVP both are fast enough; code quality matters more. If your core feature is heavy real-time work (camera processing, complex animation), prototype that one screen in both before committing.</p>
<h2>Languages and hiring</h2>
<ul>
<li><strong>React Native</strong>: JavaScript, with new projects targeting TypeScript by default, running on the Hermes engine. If you already have React developers or a React web app, people and logic can move between web and mobile.</li>
<li><strong>Flutter</strong>: Dart, AOT-compiled for release, with stateful hot reload in development. You'll usually hire Flutter developers specifically, but the whole app lives in one language and one toolkit.</li>
</ul>
<p>Whichever you pick, ask candidates for apps that are live in the App Store and Google Play.</p>
<h2>Reaching native APIs</h2>
<ul>
<li><strong>Flutter</strong>: platform channels to Kotlin/Swift, <code>dart:ffi</code> for C APIs, and platform views for complex native controls such as maps (with some overhead).</li>
<li><strong>React Native</strong>: Turbo Native Modules. You describe the interface in TypeScript or Flow, Codegen generates the platform glue, and your Kotlin/Java/Swift/Objective-C implementation plugs in.</li>
</ul>
<p>Both can be added to an existing native app screen by screen (Flutter's add-to-app; React Native's integration with existing apps).</p>
<h2>Beyond mobile</h2>
<p>Flutter officially targets Android, iOS, web, Windows, macOS and Linux, though its own FAQ says Flutter web suits app-like experiences, not text-heavy pages that need search indexing. React Native targets Android and iOS; macOS, Windows and web (via React Native Web) are out-of-tree platforms, and the team recommends starting with a framework such as Expo.</p>
<h2>When to skip both</h2>
<p>Go native (Swift/SwiftUI, Kotlin/Jetpack Compose) when you're building for one platform only, need new OS features on day one, do demanding graphics, audio or background work, or already have iOS and Android engineers. The cost is two codebases.</p>
<h2>A decision rule for the MVP</h2>
<ul>
<li>React Native if you have React/TypeScript people or a React web app to share with.</li>
<li>Flutter if you want one tightly controlled design across platforms, or desktop later from the same code.</li>
<li>Native if you're single-platform or your core feature lives deep in the OS.</li>
</ul>
<p>Then list the MVP's must-have features and check a maintained package exists for each, and agree up front who owns the code and the store accounts.</p>
<p>The full guide, with links to every source, is on the Dzimark blog: <a href="https://dzimark.com/guides/flutter-vs-react-native/">Flutter vs React Native: which is right for your startup app?</a></p>
]]></content:encoded></item><item><title><![CDATA[Building websites for Australian clients: a privacy checklist for developers]]></title><description><![CDATA[A developer's checklist for forms, analytics, overseas hosting and data breaches]]></description><link>https://dzimark.hashnode.dev/building-websites-for-australian-clients-a-privacy-checklist-for-developers</link><guid isPermaLink="true">https://dzimark.hashnode.dev/building-websites-for-australian-clients-a-privacy-checklist-for-developers</guid><category><![CDATA[privacy]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[#gdpr]]></category><dc:creator><![CDATA[Sushil Barwal]]></dc:creator><pubDate>Wed, 21 Oct 2026 06:23:58 GMT</pubDate><content:encoded><![CDATA[<p>If you build websites for Australian businesses, the Privacy Act 1988 and its 13 Australian Privacy Principles (APPs) shape a surprising number of technical decisions: what your forms collect, which analytics and ad tags fire, where data is hosted and how you handle a breach. This is a developer-focused summary. It is general information, not legal advice; the Office of the Australian Information Commissioner (OAIC) publishes the official guidance.</p>
<h2>Does the client even need to comply?</h2>
<p>The APPs apply to "APP entities": Australian Government agencies and organisations covered by the Privacy Act. Many small businesses are exempt because of an annual turnover threshold, but some are covered whatever their size, for example private health service providers and businesses that buy or sell personal information. The OAIC has a tool to check. Even when a client is exempt, building to the APPs is a sensible default: it is what customers expect, and the business may become covered as it grows.</p>
<h2>The principles that touch your code</h2>
<ul>
<li><strong>APP 1, transparency:</strong> a clear, current privacy policy, linked from every page (usually the footer).</li>
<li><strong>APP 3, collection:</strong> collect only what is reasonably necessary. Every extra form field needs a reason.</li>
<li><strong>APP 5, notification:</strong> tell people, at or before collection, who is collecting, why, and where to find the privacy policy. A short notice next to the form's submit button does this well.</li>
<li><strong>APP 8, cross-border disclosure:</strong> if form data, CRM records or backups go to providers outside Australia, the privacy policy should say so, and the client stays accountable for how those providers handle it.</li>
<li><strong>APP 11, security:</strong> take reasonable steps to protect the data, and delete or de-identify it when it is no longer needed.</li>
</ul>
<h2>A practical checklist</h2>
<ol>
<li><strong>Forms:</strong> remove fields nobody uses; add a one-line collection notice and a link to the privacy policy; send submissions over HTTPS only.</li>
<li><strong>Analytics, cookies and pixels:</strong> list every tag on the site and what it sends. Session-replay and ad pixels deserve particular care, because they can capture far more than intended.</li>
<li><strong>Hosting and third parties:</strong> note where the server, email provider, CRM and backups are located, so the privacy policy can be accurate about overseas disclosure.</li>
<li><strong>Security basics:</strong> keep the CMS and plugins updated, use strong admin authentication, limit who can export form data, and set a retention period for old enquiries.</li>
<li><strong>Breach readiness:</strong> the Notifiable Data Breaches scheme requires covered organisations to notify affected people and the OAIC about eligible data breaches. Agree in advance who decides and how they are reached.</li>
</ol>
<h2>Read more</h2>
<p>The full guide covers each principle in more detail, with links to the OAIC sources: <a href="https://dzimark.com/guides/website-australian-privacy-principles/">Getting a website ready for the Australian Privacy Principles</a>.</p>
<p><em>Written by the team at <a href="https://dzimark.com">Dzimark</a>, a website, app and AI development company working with businesses in Australia, the USA, the UK and Canada.</em></p>
]]></content:encoded></item><item><title><![CDATA[AI chatbot checklist for small businesses: what to plan before you launch]]></title><description><![CDATA[An AI chatbot can answer common questions at any hour, take enquiries while your team is busy and point visitors to the right page. It can also give wrong…]]></description><link>https://dzimark.hashnode.dev/ai-chatbot-checklist-for-small-businesses-what-to-plan-before-you-launch</link><guid isPermaLink="true">https://dzimark.hashnode.dev/ai-chatbot-checklist-for-small-businesses-what-to-plan-before-you-launch</guid><category><![CDATA[chatbot]]></category><category><![CDATA[Artificial Intelligence]]></category><category><![CDATA[Small business]]></category><dc:creator><![CDATA[Sushil Barwal]]></dc:creator><pubDate>Tue, 20 Oct 2026 08:17:49 GMT</pubDate><content:encoded><![CDATA[<p>An AI chatbot can answer common questions at any hour, take enquiries while your team is busy and point visitors to the right page. It can also give wrong answers with complete confidence, collect personal data you did not plan for and annoy customers who wanted a person. The difference usually comes down to planning. Use this checklist before you build or buy a chatbot for your business.</p>
<h2>What should your chatbot do, and what should it not do?</h2>
<p>Start with one or two clear jobs. Good first jobs for a small business are:</p>
<ul>
<li><p>answering questions about products, services, opening hours, delivery and returns;</p>
</li>
<li><p>collecting enquiry details and passing them to your team;</p>
</li>
<li><p>booking a call or an appointment;</p>
</li>
<li><p>finding the right page on your website.</p>
</li>
</ul>
<p>Write down what the chatbot must not do as well. For most businesses that list includes giving legal, medical or financial advice, promising prices or delivery dates it cannot check, and discussing topics that have nothing to do with your business. These limits become instructions for the chatbot and test cases later.</p>
<h2>Which content will it answer from?</h2>
<p>A general-purpose AI model knows a lot about the world and nothing about your business. To answer correctly, a business chatbot needs your own content: service pages, FAQs, policies, product data and opening hours. The usual approach is called retrieval-augmented generation (RAG): when a question comes in, the system finds the most relevant passages from your content and asks the model to answer from those passages only.</p>
<p>Before you build, check your content:</p>
<ul>
<li><p>Is it up to date? A chatbot repeats old information as confidently as new information.</p>
</li>
<li><p>Is it complete? If your returns policy is only in someone's head, the chatbot cannot know it.</p>
</li>
<li><p>Does it contradict itself? Two pages with different delivery times will produce inconsistent answers.</p>
</li>
<li><p>Who will keep it current, and how will changes reach the chatbot?</p>
</li>
</ul>
<p>Our page on <a href="https://dzimark.com/ai-solutions/rag-ai-agents/">RAG AI agents</a> explains this approach in more detail.</p>
<h2>When should the chatbot hand over to a person?</h2>
<p>A chatbot should know when to stop. Plan the hand-off before launch:</p>
<ul>
<li><p><strong>When it does not know.</strong> If the answer is not in your content, it should say so and offer to pass the question on, not guess.</p>
</li>
<li><p><strong>When the customer asks.</strong> "Can I talk to someone?" should always work.</p>
</li>
<li><p><strong>When the topic is sensitive.</strong> Complaints, refunds and anything involving health or money are often better handled by people.</p>
</li>
<li><p><strong>Outside your hours.</strong> Decide what the chatbot promises when nobody is available: a call back the next working day, an email reply, or a booking link.</p>
</li>
</ul>
<p>Make sure every hand-off reaches a real inbox or dashboard that someone checks. A chatbot that collects enquiries nobody reads is worse than a contact form.</p>
<h2>How will it handle personal data?</h2>
<p>Customers will type names, phone numbers, email addresses and sometimes much more sensitive details into a chat box. Decide in advance:</p>
<ul>
<li><p>what the chatbot asks for, and why you need it;</p>
</li>
<li><p>where conversations are stored, for how long and who can read them;</p>
</li>
<li><p>which AI provider processes the messages, in which country, and whether that provider may use the data to train its models;</p>
</li>
<li><p>how a customer can ask you to delete their conversation.</p>
</li>
</ul>
<p>Update your privacy policy to describe the chatbot. Privacy laws differ by country, so check the rules where your customers live, and tell people clearly that they are talking to an AI system. In the European Union, for example, the AI Act includes a transparency duty to inform people when they are interacting with an AI system.</p>
<h2>Who is responsible for what it says?</h2>
<p>You are. In 2024 a Canadian tribunal decided that Air Canada was responsible for incorrect information its website chatbot gave a customer about a fare policy, and rejected the argument that the chatbot was a separate entity. Treat chatbot answers like any other content on your website: if it says something, your business has said it. That is why the content checks, the limits and the hand-off rules above matter.</p>
<h2>Which model and channels should you choose?</h2>
<p>Most business chatbots use a model from one of the large providers, such as OpenAI, Anthropic or Google, or an open-weight model that can run on your own servers. The right choice depends on answer quality in your language, speed, data-handling terms and running costs, which are usually charged by usage. You do not need to decide this alone: a developer should be able to test two or three models on your real questions and show you the results side by side.</p>
<p>Think about where customers already talk to you. A chat window on your website is the usual start. Many businesses also connect the same assistant to WhatsApp through the WhatsApp Business Platform, or to their help desk.</p>
<h2>How do you test it before launch?</h2>
<p>Collect 50 to 100 real questions from your emails, calls and messages, including awkward ones. Then check:</p>
<ul>
<li><p>Does it answer correctly from your content, and link to the right page?</p>
</li>
<li><p>Does it refuse politely when the question is outside its limits?</p>
</li>
<li><p>Does it hand over when asked, and does the enquiry arrive?</p>
</li>
<li><p>Does it behave when someone tries to make it ignore its instructions?</p>
</li>
<li><p>Does it work on a phone, with a keyboard and with a screen reader?</p>
</li>
</ul>
<p>Fix the content and the instructions, then test again. Keep the question list: it becomes your regression test every time you change the chatbot.</p>
<h2>What should you watch after launch?</h2>
<p>Read a sample of conversations every week for the first month. Track a few simple numbers: how many conversations end with an answer, how many need a person, which questions it could not answer, and how many enquiries or bookings it produced. The unanswered questions are the most useful list you will get: each one points to a gap in your website content as well as in the chatbot.</p>
<p>If you want a chatbot planned and built this way, see our <a href="https://dzimark.com/ai-solutions/genai-chatbot-development/">AI chatbot development</a> service or our wider <a href="https://dzimark.com/ai-solutions/">AI solutions</a>. We are also happy to review a plan you already have: <a href="https://dzimark.com/contact/">get in touch</a>.</p>
<h2>FAQ</h2>
<p><strong>Can an AI chatbot replace my customer service team?</strong></p>
<p>For most small businesses, no. It can answer routine questions and collect enquiries at any hour, which frees your team for the conversations that need a person. Plan for a clear hand-off from the start.</p>
<p><strong>Why does a chatbot sometimes make up answers?</strong></p>
<p>Language models generate likely-sounding text. If the answer is not in the content they are given, they may guess. Answering only from your own content, and telling the chatbot to say when it does not know, greatly reduces this.</p>
<p><strong>Do I need to tell customers they are talking to a bot?</strong></p>
<p>Yes, it is good practice everywhere and a legal requirement in some places, such as the European Union under the AI Act. A short line at the start of the chat is usually enough.</p>
<p><strong>How long does it take to set up a business chatbot?</strong></p>
<p>It depends mostly on your content and integrations. A chatbot that answers from a few well-written pages is much quicker than one that books appointments, checks orders and connects to several systems.</p>
<hr />
<p><em>Originally published on the <a href="https://dzimark.com/guides/ai-chatbot-checklist-for-small-businesses/">Dzimark blog</a>.</em></p>
]]></content:encoded></item></channel></rss>