Energy

BessMax: Battery storage:
decisions, data-driven

To replace fragmented Excel workflows with a live, shared B2B platform where BESS teams model investment scenarios and compare projects in real time.

Project Goal

The platform centralizes German market data, NPV/IRR analytics, and org-level access control — giving every team member a single source of truth.

BessMax goal image 1

Frontend: Next.js 15, TypeScript, Tailwind CSS, shadcn/ui + Radix UI, Apache ECharts, TanStack Query, Zustand, React Hook Form + Zod, NextAuth v5, Keycloak OIDC, ofetch, date-fns.

Tech stack

Backend: FastAPI, SQLAlchemy 2.0, Pydantic v2, PostgreSQL 16 + TimescaleDB + pgvector, Celery + Redis, Polars, Pyomo + HiGHS, LightGBM, structlog, PyJWT, httpx. Infrastructure: Docker Compose, Keycloak OIDC.

BessMax technology image 1
BessMax technology image 2

Backend: FastAPI, SQLAlchemy 2.0, Pydantic v2, PostgreSQL 16 + TimescaleDB + pgvector, Celery + Redis, Polars, Pyomo + HiGHS, LightGBM, structlog, PyJWT, httpx. Infrastructure: Docker Compose, Keycloak OIDC.

Services

Custom Web Development

Tailored full-stack web platform built from scratch — Next.js 15 frontend with a BESS-specific design system and FastAPI backend with strict multi-tenant architecture and org-level data isolation.

AI Software Development

AI-assisted development workflow with Claude Code as the execution partner — architectural rules, session context, and knowledge base designed to maintain consistency across the full build cycle.

Business Analysis

Reverse-engineered the incumbent platform (Re-Twin v1.3) into a structured feature-by-feature reference document — defining MVP scope, post-MVP roadmap, and methodology gaps to address.

Development Operations

Configured Docker Compose for local development, Keycloak OIDC as the central auth provider, and Celery + Redis for scheduled data ingestion pipelines with idempotent backfill endpoints.

Quality Assurance

Unit tests covering regulatory computation edge cases (SOGL Article 153), methodology documentation written to auditor standard, and architectural rules enforced to prevent regressions across AI-assisted sessions.

Design Development

Built a dark-theme design system with a fixed BESS-specific colour palette — FCR cyan, aFRR green/red, day-ahead purple — ensuring visual consistency across all market data screens and dashboards.

BessMax showcase image 1
BessMax showcase image 2
BessMax showcase image 3
BessMax showcase image 4

In AI-assisted development, the real risk isn't bad code — it's drift. Without a binding rulebook, every new session re-litigates the same architectural decisions from scratch.

Key Insight

CLAUDE.md became the architecture. Not a document but a contract. One developer, 167 commits, zero drift. The rulebook didn't describe the system; it enforced it.

BessMax insight image 1
BessMax insight image 2
BessMax insight image 3
BessMax insight image 4

Project Plan

1. Reverse-Engineering & Scoping

Catalogued the incumbent platform into a structured feature-by-feature reference document. Defined MVP scope, excluded features, and post-MVP roadmap before a single line of code was written.

2. Tech-Stack & Architecture Rules

Finalized stack decisions with documented justifications and locked them into a binding architecture rulebook. Eliminated re-litigation and drift across all subsequent development sessions.

3. Data Ingestion & Market Screens

Ingested six years of German market data from TSO and ENTSO-E sources. Delivered capacity price, day-ahead energy, and generation-mix screens with configurable time-range and granularity controls.

4. Projects, Scenarios & Auth

Delivered the full investment workflow — project library, scenario configuration, NPV / IRR results, side-by-side comparison with multi-tenant org isolation enforced at the query layer.

BessMax details image 1
BessMax details image 2

This screen shows the BessMax landing page in our dark theme, where visitors can explore the value proposition, browse key features like live market data, project modelling, forecasting and AI assistant, compare Basic and Pro pricing plans, and click Get Started Free to begin — all within a single, focused page.

Approach

Challenge

The German BESS market has no shared infrastructure for investment decisions — teams rely on Excel models and emailed spreadsheets. The client needed a production-ready B2B SaaS delivered by a single developer working with an AI execution partner, without compromising architectural consistency or data reliability.

Solution

Per-TSO capacity distribution in Germany has no public source. We built a proprietary calculation pipeline based on public regulatory data — producing auditable numbers no competitor currently offers.

Solution

To maintain consistency across AI-assisted development, we established a binding architecture rulebook from day one. Every decision was documented and locked — ensuring the platform stayed coherent across all sessions, all features, and all future contributors.

Solution

Solo development at speed requires a clear contract between intent and execution. We structured the entire build around documented boundaries — scope, stack, and feature rules with CTO oversight ensuring architectural integrity at every critical decision point.

Solution

Post-MVP scope was defined and locked in week one. Virtual trading, AI assistant, and Stripe billing were deliberately deferred — keeping the team focused and the launch timeline predictable.

Final Solution

Through deliberate scoping, a binding architecture rulebook, and AI-assisted execution, we delivered a production-ready multi-tenant B2B SaaS in five weeks — live market data, full investment workflows, and a regulatory differentiator built on a stack the client owns end-to-end.

Teamvoice

BessMax is genuinely unlike anything we've built before. AI agents, energy systems, a product that pushes into territory most teams haven't touched yet. I'm glad this project found its way to us.

CEO

Kateryna

The deployment architecture for AI agents in an energy context doesn't follow the usual playbook. Took some adjustment early on, but once the logic clicked the rest came naturally.

DevOps Lead

Vlad

Solving the next challenge