Marla.AI is Dusoma’s technology platform for building practical, mission-driven AI tools that serve people and organizations working on poverty, advocacy, education, legal empowerment, civic participation, and refugee support. At its core, Marla.AI is a hosted chatbot maker: users can upload knowledge documents, create custom AI assistants, and review user inputs so organizations can better understand what people need. Dusoma uses this platform to build “Marla.AI Battlebots,” specialized assistants designed to fight poverty by making information, workflows, and support easier to access. Current and planned Marla.AI tools include document-search bots, lawsuit-support tools for plaintiffs, civic tools that help people understand which candidates align with their needs and values, and rapid-build apps such as a representative-letter generator that turns a 15-minute task into a few seconds of work. More broadly, Dusoma is an education, content, advocacy, and technology consulting organization focused on humanitarian technology: in 2026, its work centers on helping individuals and organizations decide where technology is actually useful, building apps quickly with non-technical experts, continuing technology support for refugees in East Africa, and advancing its “Clean Water is Healthcare” priority.

Marla DIY BattleBot Capabilities

Marla supports:

  1. Custom GPT / assistant creation
    Users can configure a GPT with a name, description, system instructions, conversation starters, enabled tools, public visibility, and sharing settings. Main evidence: components/GPTConfigForm.tsx, app/api/gpts/route.ts.
  2. Knowledge document upload
    The repo supports uploading PDFs, TXT, and Markdown files, then associating those files with GPTs. Uploaded documents can be sent to OpenAI vector stores for retrieval. Main evidence: app/api/files/upload/route.ts, app/api/gpts/route.ts.
  3. Streaming chat
    The chat API uses OpenAI’s Responses API with streaming output. It stores user and assistant messages in Supabase and returns a conversation ID header to the frontend. Main evidence: app/api/chat/route.ts, app/components/ChatContainer.tsx.
  4. Tool-enabled assistants
    GPTs can use tools such as:

    • File search through OpenAI vector stores
    • Web search
    • Code interpreter
    • Address lookup
    • Fillable PDF generation

    Main evidence: lib/types.ts, app/api/chat/route.ts, lib/tools/address-lookup.ts, lib/tools/fill-pdf.ts.

  5. Fillable PDF workflows
    The repo has substantial support for detecting PDF forms, extracting fields, generating schemas, using AI to assist with form configuration, and filling PDFs from structured data. Main evidence: lib/utils/pdf-processing.ts, app/api/forms/[fileId]/process/route.ts, app/api/forms/[fileId]/ai-assist/route.ts, lib/tools/fill-pdf.ts.
  6. Public/community GPTs and sharing
    There is support for public GPTs, share tokens, and public GPT listing APIs. Main evidence: app/api/public/gpts/route.ts, app/api/gpts/[id]/share/route.ts, dashboard public GPT tab.
  7. Admin dashboard
    Admin-only pages show aggregate usage: total GPTs, conversations, messages, and users. Admin status is based on Supabase Auth app_metadata.is_admin. Main evidence: app/(admin)/dashboard/page.tsx, lib/admin.ts, middleware.ts.
  8. Conversation summarization and user classification
    Supabase Edge Functions summarize conversations and classify users into categories such as “Needs Help,” “Wants to Help,” “Researching,” or “Irrelevant.” Main evidence: supabase/functions/generate-conversation-summary/index.ts, supabase/functions/classify-user-use-case/index.ts.