BrainArray

JavaScript React Vite TailwindCSS Express.js MongoDB Google Gemini Auth0

BrainArray is an AI-powered decision analysis tool that transforms complex choices into interactive probability trees. Users describe a decision or scenario, and the application leverages Google Gemini to generate a multi-level branching visualization of potential outcomes with associated probabilities.

Currently, the high-performance compute is heavily abstracted and not a part of the core logic. However, a main point of future improvement is HPC integration to have Monte-Carlo simulations for risk analysis and other complex decision analysis tasks.


System Architecture

The application follows a client-server architecture with Auth0 handling authentication and Gemini providing AI inference for decision tree generation.

graph TD
    Client[React Frontend] -->|REST/HTTP| API[Express API Server]
    Client -->|OAuth 2.0| Auth0[Auth0]
    Auth0 -->|JWT Validation| API

    API -->|Store/Retrieve Trees| DB[(MongoDB Atlas)]
    API -->|Generate Tree| Gemini[Google Gemini API]

    subgraph "Frontend Layer"
        Client -->|Render| Tree[Decision Tree Visualizer]
        Client -->|Animate| Motion[Framer Motion]
    end

    subgraph "AI Inference"
        Gemini -->|JSON Response| API
    end

Features

  • AI-Generated Decision Trees: Describe any decision scenario and receive a structured probability tree with multiple outcome branches
  • Interactive Visualization: Pan, zoom, and explore decision trees with smooth animations
  • Persistent Storage: Save and revisit previous decision analyses
  • Secure Authentication: Auth0 integration for user management and protected API routes

Challenges

  • Getting the Auth0 set up properly so that it consistently worked and connected with the MongoDB database
  • Connecting the elements in the decision tree (we used a very simple workaround, and thus it does not look like a normal decision tree would and it is very messy, which is something for us to fix for later)
  • Making sure the LLM gave correct outputs consistently
  • Confirming the UI/UX was up to par and intuitive to use

Built With

Share this project:

Updates