Skip to content

PragmaticMachineLearning/maybe

Repository files navigation

Maybe logo

Bun React TypeScript SQLite License

Maybe Spreadsheet

Maybe is an opinionated spreadsheet for uncertain models.

Most spreadsheets make you collapse uncertainty into a single scalar value. Maybe lets cells represent distributions, confidence intervals, and ranges, then propagates that uncertainty through formulas.

Features

  • Spreadsheet editing powered by GaussFormula
  • Standard values, formulas, and formula-bar editing
  • Explicit uncertainty notation:
    • N(mean, variance)
    • N.CI(lower, upper[, confidence])
    • LN(mu, sigma)
    • LN.CI(lower, upper[, confidence])
    • U(min, max)
  • Sampled calculations when formulas reference uncertain cells
  • Distribution charts for uncertain values
  • Dependency graph view for tracing formula relationships
  • Optional Assistant panel for workbook inspection and model changes
  • SQLite-backed local workbook persistence

Quick Start

Requirements

  • Bun 1.3 or newer

Run the Development App

git clone https://github.com/PragmaticMachineLearning/maybe.git
cd maybe
bun install
bun run dev

Open http://localhost:5173.

The development command starts two processes:

  • the Hono API server on http://localhost:3000
  • the Vite client on http://localhost:5173

The client proxies /api/* requests to the API server.

Try the First Model

In the spreadsheet, enter:

Cell Input Meaning
A1 N.CI(10, 20) Normal distribution from a default 95% confidence interval
B1 U(2, 5) Uniform distribution between 2 and 5
C1 =A1*B1 Sampled result that propagates both uncertain inputs

Select C1 to inspect the sampled output. Use the chart control on an uncertain cell to view its distribution, or use the graph button to inspect formula dependencies.

For a fuller walkthrough, see docs/USER_GUIDE.md.

Configuration

Copy .env.example to .env for local configuration.

cp .env.example .env
Variable Required Default Description
OPENAI_API_KEY No unset Enables the Assistant. Without it, assistant requests return a setup error.
MAYBE_DB_PATH No data/maybe.sqlite SQLite database file used for workbook persistence.
PORT No 3000 Port used by the Bun server and default development API server.
MAYBE_DIST_DIR No dist Directory served by the Bun server after bun run build.

The Assistant is optional. The spreadsheet works without an OpenAI API key.

Build and Run

Build the client and run the Bun server:

bun run build
bun run start

Open http://localhost:3000.

The Bun server serves the built client from dist and owns /api/*.

Persistence

Workbook persistence uses SQLite through the Bun server. By default, Maybe stores workbook data in data/maybe.sqlite.

Set MAYBE_DB_PATH if you want to use a different SQLite file.

Project Status

Maybe is still a work in progress. The core spreadsheet, uncertainty notation, sampling behavior, persistence, and Assistant workflows are usable, but APIs, file formats, and modeling conventions may change as the project evolves.

Formula Engine

Maybe is powered by GaussFormula, a spreadsheet formula engine adapted from HyperFormula to support uncertain cell values and sampled calculations. GaussFormula is maintained by the same author as Maybe and is also available on npm.

Tech Stack

  • React + TypeScript
  • Vite
  • Bun
  • Hono
  • SQLite
  • GaussFormula
  • ECharts
  • Playwright

Contributing

See CONTRIBUTING.md for local setup and contribution guidelines.

License

Maybe is licensed under GPL-3.0-only. See LICENSE.

About

Probabilistic Spreadsheets

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages