<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Christian</title>
    <description>The latest articles on DEV Community by Christian (@nzouat).</description>
    <link>https://dev.to/nzouat</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3580719%2Ff9f06173-9480-40b9-9082-0ff0fc3ea208.png</url>
      <title>DEV Community: Christian</title>
      <link>https://dev.to/nzouat</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nzouat"/>
    <language>en</language>
    <item>
      <title>Why I Built CartLens: An AI Receipt Scanner for Local Price Comparison</title>
      <dc:creator>Christian</dc:creator>
      <pubDate>Tue, 22 Sep 2026 07:35:30 +0000</pubDate>
      <link>https://dev.to/nzouat/why-i-built-cartlens-an-ai-receipt-scanner-for-local-price-comparison-4obo</link>
      <guid>https://dev.to/nzouat/why-i-built-cartlens-an-ai-receipt-scanner-for-local-price-comparison-4obo</guid>
      <description>&lt;p&gt;&lt;strong&gt;Online shopping has trained us to expect price transparency&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Before buying a laptop, pair of headphones, or household item online, we can open several tabs, compare sellers, review price history, and decide whether a deal is actually good. In a physical store, that visibility largely disappears. We see one shelf price, at one location, at one moment—and usually make a decision without knowing what nearby shoppers paid for the same product.&lt;/p&gt;

&lt;p&gt;That gap is why I built CartLens: an AI receipt scanner for local price comparison that helps shoppers answer a deceptively simple question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Did I overpay?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://cartlens.co" rel="noopener noreferrer"&gt;CartLens&lt;/a&gt; scans receipts and price tags, identifies products and prices, compares them with nearby observations, and helps shoppers find less expensive local options. The larger goal is not merely to digitize receipts. It is to turn everyday purchases into useful, privacy-conscious shopping intelligence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The internet solved online price comparison—not physical retail&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cartlens.co" rel="noopener noreferrer"&gt;Price-tracking tools&lt;/a&gt; work well when product pages are public, product identifiers are consistent, and historical prices can be collected repeatedly. Physical retail is different.&lt;/p&gt;

&lt;p&gt;Local prices may vary by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;store and neighborhood;&lt;/li&gt;
&lt;li&gt;date and time;&lt;/li&gt;
&lt;li&gt;package size or quantity;&lt;/li&gt;
&lt;li&gt;promotion or loyalty status;&lt;/li&gt;
&lt;li&gt;regional inventory;&lt;/li&gt;
&lt;li&gt;product variant; and&lt;/li&gt;
&lt;li&gt;whether the shelf price matches the final checkout price.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is what I call market darkness: the shopper can see the price directly in front of them but cannot easily see the surrounding market.&lt;/p&gt;

&lt;p&gt;Searches such as “how to compare grocery prices between stores using receipts” or “how to find cheaper prices at stores near me” reveal the real need. People are not asking for another generic coupon feed. They want an answer based on the products they actually buy and the stores they can realistically visit.&lt;/p&gt;

&lt;p&gt;A receipt is more than proof of purchase&lt;/p&gt;

&lt;p&gt;A receipt is a compact record of economic activity. It may contain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;merchant and location;&lt;/li&gt;
&lt;li&gt;purchase date and time;&lt;/li&gt;
&lt;li&gt;product descriptions;&lt;/li&gt;
&lt;li&gt;quantities and unit prices;&lt;/li&gt;
&lt;li&gt;discounts and taxes; and&lt;/li&gt;
&lt;li&gt;the final amount paid.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Individually, that data helps one shopper understand one transaction. Aggregated carefully and stripped of personal information, receipts can form a local price map grounded in completed purchases.&lt;/p&gt;

&lt;p&gt;This is the core idea behind CartLens: real receipts from real shoppers can reveal the prices people actually paid in nearby stores.&lt;/p&gt;

&lt;p&gt;That distinction matters. A listed online price may differ from an in-store price. A promotion may have expired. A delivery marketplace may include a markup. A shelf label may not reflect the final checkout total. Receipt-derived data gives the system evidence of a completed transaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How AI receipt scanning works&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At first glance, receipt scanning looks like a standard optical character recognition problem: take an image and extract text. In practice, reliable receipt analysis is a pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Capture and image preparation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The system first has to deal with real-world photography: tilted paper, shadows, crumpled receipts, faded thermal printing, glare, long receipts, and cluttered backgrounds.&lt;/p&gt;

&lt;p&gt;Image preprocessing can improve contrast, correct perspective, identify the receipt boundary, and divide long documents into manageable regions. Better input produces better OCR, but the system must still assume imperfect images.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. OCR and layout understanding&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Extracting characters is only the beginning. The application must distinguish a product line from a subtotal, tax, loyalty message, payment reference, or return policy.&lt;/p&gt;

&lt;p&gt;Layout carries meaning. A price positioned at the far right of a product description is different from a number inside a promotion code. Receipt formats also vary by retailer, region, language, and point-of-sale system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Product normalization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Retail receipts frequently use abbreviations that make sense to a store's database but not to a shopper—or another store's catalog. The same item might appear under several shortened descriptions.&lt;/p&gt;

&lt;p&gt;CartLens therefore has to move from raw OCR text toward a normalized product identity. That can involve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;text cleanup;&lt;/li&gt;
&lt;li&gt;brand and product extraction;&lt;/li&gt;
&lt;li&gt;barcode, UPC, or PLU matching when available;&lt;/li&gt;
&lt;li&gt;package-size detection;&lt;/li&gt;
&lt;li&gt;category classification;&lt;/li&gt;
&lt;li&gt;semantic similarity; and&lt;/li&gt;
&lt;li&gt;confidence scoring.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The challenge is not simply recognizing words. It is deciding whether two messy descriptions refer to the same product, a comparable product, or different products entirely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Unit-price normalization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A lower sticker price does not always mean a better deal. A 12-ounce package and a 20-ounce package cannot be compared honestly without normalizing their units.&lt;/p&gt;

&lt;p&gt;For useful grocery price comparison by receipt, a system must reason about price per ounce, pound, count, liter, or another relevant unit. It also needs to distinguish multipacks, “buy one, get one” offers, and quantity-based discounts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Geospatial and temporal comparison&lt;/strong&gt;&lt;br&gt;
Price data loses value when location and freshness are ignored. A price observed hundreds of miles away may not help someone deciding where to shop today. A six-month-old observation should not carry the same confidence as one submitted yesterday.&lt;/p&gt;

&lt;p&gt;CartLens organizes price observations around merchant location and time. The comparison layer can then prioritize nearby, recent, and sufficiently similar observations instead of presenting every price as equally relevant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. A verdict a human can use&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The final output should not be a wall of extracted text. It should answer practical questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Was this price fair compared with recent nearby observations?&lt;/li&gt;
&lt;li&gt;Which items contributed most to the difference?&lt;/li&gt;
&lt;li&gt;Is another store cheaper for one item or for the entire basket?&lt;/li&gt;
&lt;li&gt;How recent and reliable is the comparison?&lt;/li&gt;
&lt;li&gt;Would the potential savings justify an additional trip?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where an OCR utility becomes an AI shopping assistant that analyzes receipts.&lt;/p&gt;

&lt;p&gt;From individual scans to a crowdsourced local price database&lt;/p&gt;

&lt;p&gt;One receipt can help one person. A network of verified observations can help a community.&lt;/p&gt;

&lt;p&gt;Each useful scan can add a timestamped price observation to what CartLens calls the Geospatial Lattice—a growing map of products, merchants, locations, and observed prices. As local coverage becomes denser, shoppers can receive more relevant comparisons.&lt;/p&gt;

&lt;p&gt;The data loop looks like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A shopper scans a receipt or price tag.&lt;/li&gt;
&lt;li&gt;The system extracts and normalizes the items.&lt;/li&gt;
&lt;li&gt;Each usable observation updates the local price network.&lt;/li&gt;
&lt;li&gt;Future shoppers receive stronger nearby comparisons.&lt;/li&gt;
&lt;li&gt;Their scans contribute additional coverage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This network effect is especially important for physical retail, where no single public catalog captures every store, product, promotion, and regional difference.&lt;/p&gt;

&lt;p&gt;It also creates a difficult engineering problem: more data is not automatically better data. A useful crowdsourced pricing system needs mechanisms for duplicate detection, anomaly handling, freshness decay, location validation, and confidence thresholds. If a comparison is uncertain, the product should communicate that uncertainty instead of manufacturing precision.&lt;/p&gt;

&lt;p&gt;Why basket comparison matters more than the cheapest single item&lt;/p&gt;

&lt;p&gt;Most people do not shop for one isolated product. They buy a basket.&lt;/p&gt;

&lt;p&gt;Store A may have cheaper cereal, while Store B has lower prices on milk, detergent, and produce. Driving to three stores to save a few cents can waste more time and fuel than it saves.&lt;/p&gt;

&lt;p&gt;That is why CartLens is designed to support local store price comparison for an entire shopping list, not just one headline bargain. A useful recommendation has to consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the shopper's actual products;&lt;/li&gt;
&lt;li&gt;comparable package sizes;&lt;/li&gt;
&lt;li&gt;distance between stores;&lt;/li&gt;
&lt;li&gt;the freshness of each price observation;&lt;/li&gt;
&lt;li&gt;the total basket difference; and&lt;/li&gt;
&lt;li&gt;whether splitting the trip is worthwhile.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The best result is not always the lowest theoretical price. It is the best practical decision for that shopper.&lt;/p&gt;

&lt;p&gt;Privacy cannot be an afterthought&lt;/p&gt;

&lt;p&gt;Receipts can expose more than prices. They may reveal where someone shops, when they shop, what they buy, and fragments of payment information. Any receipt-analysis platform should treat that data as sensitive.&lt;/p&gt;

&lt;p&gt;CartLens is being built around data minimization and user control. The useful part of a crowdsourced price observation is the product, merchant node, price, and time—not a person's identity or movement history.&lt;/p&gt;

&lt;p&gt;The platform's privacy approach emphasizes keeping user choices private, avoiding the sale of SKU-level behavior to advertisers, supporting data export, and allowing users to remove personal identifiers while preserving non-identifiable price observations.&lt;/p&gt;

&lt;p&gt;There is a broader product principle here for developers: if your AI feature depends on personal data, privacy is part of the architecture—not a policy page added after launch.&lt;/p&gt;

&lt;p&gt;What makes CartLens different from a basic receipt scanner app?&lt;/p&gt;

&lt;p&gt;A conventional receipt organizer answers: “What did I spend?”&lt;/p&gt;

&lt;p&gt;CartLens is intended to answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did I overpay?&lt;/li&gt;
&lt;li&gt;Where nearby was it cheaper?&lt;/li&gt;
&lt;li&gt;Which store is more affordable for the items I actually buy?&lt;/li&gt;
&lt;li&gt;How is my spending changing across stores and categories?&lt;/li&gt;
&lt;li&gt;Which recurring purchases create the most avoidable overspending?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That makes it a retail price intelligence platform rather than only a receipt digitizer.&lt;/p&gt;

&lt;p&gt;It is also designed for more than groceries. The same underlying workflow can apply to household essentials, pharmacy products, beauty items, electronics, pet supplies, and other categories where local prices vary.&lt;/p&gt;

&lt;p&gt;What I have learned while building it&lt;/p&gt;

&lt;p&gt;Several lessons extend beyond CartLens.&lt;/p&gt;

&lt;p&gt;AI accuracy is a product experience, not one model score&lt;/p&gt;

&lt;p&gt;A strong OCR model can still produce a weak product if normalization, matching, or confidence handling fails. End-to-end accuracy matters more than a single benchmark.&lt;/p&gt;

&lt;p&gt;“Same product” is a domain decision&lt;/p&gt;

&lt;p&gt;Exact matches, equivalent sizes, generic alternatives, and substitutes are different relationships. The interface must tell users which kind of comparison they are seeing.&lt;/p&gt;

&lt;p&gt;Freshness belongs in the data model&lt;/p&gt;

&lt;p&gt;A price without a timestamp is incomplete. Price observations should age, and the system should reduce confidence as they become stale.&lt;/p&gt;

&lt;p&gt;Explainability builds trust&lt;/p&gt;

&lt;p&gt;If an app says a shopper overpaid, it should show the comparison behind that conclusion: store, observed price, distance, date, unit basis, and confidence.&lt;/p&gt;

&lt;p&gt;The shortest output may require the deepest system&lt;/p&gt;

&lt;p&gt;“You paid a fair price” or “this item was $4 cheaper nearby” sounds simple. Producing that sentence responsibly may require computer vision, structured extraction, entity resolution, unit conversion, geospatial search, temporal weighting, and product design.&lt;/p&gt;

&lt;p&gt;The larger opportunity: shopping intelligence for the physical economy&lt;/p&gt;

&lt;p&gt;Retailers have sophisticated systems for pricing, inventory, demand forecasting, and customer segmentation. Individual shoppers rarely have equivalent tools.&lt;/p&gt;

&lt;p&gt;I believe the next generation of consumer software will move beyond storing receipts and displaying charts. It will help people interpret purchases, compare realistic alternatives, detect unusual price changes, and make better decisions before the next checkout.&lt;/p&gt;

&lt;p&gt;That is the direction behind CartLens: turn the receipt from a record of what already happened into intelligence for what to do next.&lt;/p&gt;

&lt;p&gt;If you are interested in how to know if you overpaid for groceries, building a crowdsourced local price comparison app, or exploring how multimodal AI can make offline commerce more transparent, visit CartLens and take a look at the project.&lt;/p&gt;

&lt;p&gt;I would also love to hear from developers working on OCR, product entity resolution, geospatial systems, privacy-preserving analytics, or retail data. What do you think is the hardest technical problem in making physical-store prices genuinely transparent?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>startup</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Document Chat: Open Source AI-Powered Document Management</title>
      <dc:creator>Christian</dc:creator>
      <pubDate>Fri, 24 Oct 2025 04:59:37 +0000</pubDate>
      <link>https://dev.to/nzouat/document-chat-open-source-ai-powered-document-management-5ba7</link>
      <guid>https://dev.to/nzouat/document-chat-open-source-ai-powered-document-management-5ba7</guid>
      <description>&lt;p&gt;I recently launched &lt;strong&gt;Document Chat&lt;/strong&gt; - a completely free, open-source platform that lets you upload documents and have intelligent AI conversations with them. Built with Next.js 15, powered by multiple AI providers, and ready to deploy in minutes.&lt;br&gt;
🌐 Test it out: &lt;a href="https://document-chat-system.vercel.app" rel="noopener noreferrer"&gt;https://document-chat-system.vercel.app&lt;/a&gt;&lt;br&gt;
💻 GitHub: &lt;a href="https://github.com/watat83/document-chat-system" rel="noopener noreferrer"&gt;https://github.com/watat83/document-chat-system&lt;/a&gt;&lt;br&gt;
🎥 Watch Video Explainer: &lt;a href="https://youtu.be/P42nlCmicVM" rel="noopener noreferrer"&gt;https://youtu.be/P42nlCmicVM&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/P42nlCmicVM"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

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

&lt;p&gt;We're drowning in documents. PDFs, Word files, research papers, contracts, manuals, reports - they pile up faster than we can read them. And when we need specific information? We spend hours searching, skimming, and hoping we haven't missed something important.&lt;br&gt;
AI assistants like ChatGPT have shown us a better way - natural language conversations. But there's a catch: they don't know about YOUR documents. Sure, you can copy-paste snippets, but that's manual, tedious, and limited by context windows.&lt;br&gt;
What if your documents could just… talk to you?&lt;br&gt;
That's exactly what Document Chat System does. And unlike expensive proprietary solutions, it's completely free, open source, and yours to control.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Document Chat&amp;nbsp;System?
&lt;/h2&gt;

&lt;p&gt;Document Chat System is a production-ready, open-source platform that combines document management with AI-powered conversational interfaces. Think of it as your personal AI librarian that has read every document you've uploaded and can answer questions about them instantly.&lt;/p&gt;

&lt;p&gt;Key Features&lt;br&gt;
✅ Multi-Format Support - PDFs, Word documents, images (with OCR), text files, and more&lt;br&gt;
✅ Multiple AI Providers - OpenRouter (100+ models), OpenAI, ImageRouter for image generation&lt;br&gt;
✅ Semantic Search - Vector embeddings with Pinecone or pgvector for accurate retrieval&lt;br&gt;
✅ Multi-Tenant Architecture - Organizations, teams, role-based access control&lt;br&gt;
✅ Background Processing - Inngest for scalable document processing&lt;br&gt;
✅ Optional Monetization - Built-in Stripe integration for SaaS deployment&lt;br&gt;
✅ Self-Hosted - Deploy anywhere, keep full control of your data&lt;br&gt;
✅ MIT Licensed - Use it however you want, commercially or personally&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Built&amp;nbsp;This
&lt;/h2&gt;

&lt;p&gt;Over the past year, I've watched devs rebuild the same document chat features from scratch. It's a complex problem that requires:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Document parsing and text extraction&lt;/li&gt;
&lt;li&gt;Vector embeddings and semantic search&lt;/li&gt;
&lt;li&gt;AI provider integration and streaming&lt;/li&gt;
&lt;li&gt;User authentication and multi-tenancy&lt;/li&gt;
&lt;li&gt;File storage and processing pipelines&lt;/li&gt;
&lt;li&gt;Rate limiting and error handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each dev reinventing the wheel, each facing the same challenges, each spending months on infrastructure instead of their unique value proposition.&lt;/p&gt;

&lt;p&gt;I wanted to change that.&lt;br&gt;
Document Chat System is the foundation I wish I had when I started building AI applications.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Technical Stack
&lt;/h2&gt;

&lt;p&gt;For developers curious about what's under the hood:&lt;/p&gt;

&lt;p&gt;Frontend&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js 15 with React 19 and Server Components&lt;/li&gt;
&lt;li&gt;TypeScript for type safety&lt;/li&gt;
&lt;li&gt;Tailwind CSS + shadcn/ui for modern, accessible UI&lt;/li&gt;
&lt;li&gt;Zustand for state management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Backend&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js API Routes for serverless functions&lt;/li&gt;
&lt;li&gt;Prisma ORM with PostgreSQL&lt;/li&gt;
&lt;li&gt;Clerk for authentication&lt;/li&gt;
&lt;li&gt;Zod for runtime validation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI &amp;amp;&amp;nbsp;ML&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenRouter - Access to 100+ AI models with a single API&lt;/li&gt;
&lt;li&gt;OpenAI - GPT-4+, embeddings&lt;/li&gt;
&lt;li&gt;Anthropic Claude - For longer context windows&lt;/li&gt;
&lt;li&gt;ImageRouter - Multi-provider image generation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Infrastructure&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Supabase - File storage and database&lt;/li&gt;
&lt;li&gt;Pinecone or pgvector - Vector similarity search&lt;/li&gt;
&lt;li&gt;Inngest - Background job processing&lt;/li&gt;
&lt;li&gt;Upstash Redis - Caching and rate limiting&lt;/li&gt;
&lt;li&gt;Docker - Production deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Optional&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stripe - Subscription billing and payments&lt;/li&gt;
&lt;li&gt;Sentry - Error tracking and monitoring&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Try It Now (2&amp;nbsp;minutes)&lt;/li&gt;
&lt;li&gt;Visit &lt;a href="https://document-chat-system.vercel.app" rel="noopener noreferrer"&gt;https://document-chat-system.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Sign up (it's free)&lt;/li&gt;
&lt;li&gt;Upload a document&lt;/li&gt;
&lt;li&gt;Start chatting!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Built for&amp;nbsp;Everyone
&lt;/h2&gt;

&lt;p&gt;For Developers&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modern Stack - Latest Next.js, React 19, TypeScript&lt;/li&gt;
&lt;li&gt;Type Safety - End-to-end type safety with Zod validation&lt;/li&gt;
&lt;li&gt;Clean Architecture - Modular, testable, documented&lt;/li&gt;
&lt;li&gt;API First - RESTful APIs with clear documentation&lt;/li&gt;
&lt;li&gt;Extensible - Easy to add new providers or features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For Businesses&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enterprise Ready - Multi-tenancy, RBAC, audit logs&lt;/li&gt;
&lt;li&gt;Scalable - Background processing, caching, edge functions&lt;/li&gt;
&lt;li&gt;Secure - AES-256 encryption, secure authentication&lt;/li&gt;
&lt;li&gt;Compliant - Data isolation, configurable retention&lt;/li&gt;
&lt;li&gt;Cost-Effective - No per-user fees, no vendor lock-in&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For Entrepreneurs&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monetization Ready - Stripe billing built-in&lt;/li&gt;
&lt;li&gt;White-Label - Fully customizable branding&lt;/li&gt;
&lt;li&gt;Quick Launch - Deploy in minutes, not months&lt;/li&gt;
&lt;li&gt;No Revenue Share - MIT licensed, keep 100% of profits&lt;/li&gt;
&lt;li&gt;Support Options - Active community and documentation&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Community &amp;amp; Contributions
&lt;/h2&gt;

&lt;p&gt;Document Chat System is built by the community, for the community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Contribute&lt;/strong&gt;&lt;br&gt;
⭐ Star the repo - It helps others discover the project&lt;br&gt;
🐛 Report bugs - Open an issue on GitHub&lt;br&gt;
💡 Suggest features - Share your ideas&lt;br&gt;
🔧 Submit PRs - Code contributions welcome&lt;br&gt;
📖 Improve docs - Help others get started&lt;br&gt;
💬 Join discussions - Share use cases and feedback&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Getting Help&lt;/strong&gt;&lt;br&gt;
📚 Documentation: &lt;a href="https://github.com/watat83/document-chat-system" rel="noopener noreferrer"&gt;https://github.com/watat83/document-chat-system&lt;/a&gt;&lt;br&gt;
💬 Discord Community: &lt;a href="https://discord.com/invite/ubWcC2PS" rel="noopener noreferrer"&gt;https://discord.com/invite/ubWcC2PS&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Pricing &amp;amp; Licensing&lt;/p&gt;

&lt;p&gt;The Platform: 100%&amp;nbsp;Free&lt;/p&gt;

&lt;p&gt;Document Chat System is MIT licensed. This means:&lt;br&gt;
✅ Free for personal use&lt;br&gt;
✅ Free for commercial use&lt;br&gt;
✅ No attribution required (though appreciated)&lt;br&gt;
✅ Modify and distribute freely&lt;br&gt;
✅ No revenue sharing&lt;br&gt;
✅ No usage limits&lt;/p&gt;

</description>
      <category>rag</category>
      <category>documentchat</category>
      <category>chatbot</category>
      <category>documentmanagement</category>
    </item>
  </channel>
</rss>
