PROJ·001 · CLOUD BACKEND · STOCKHOLM

Flower Bridge ,
Market Integration Platform

Role
Automation & Integration Engineer
Organisation
Flower, Stockholm
Period
6+ months2026 – present
Status
LIVE
The Problem

Flower Bridge is a cloud platform connecting distributed energy assets to the Swedish electricity market, handling contract lifecycle with the market operator, grid-frequency prequalification with SvK, real-time power dispatch, and multi-partner asset onboarding.

My contribution to this project is a deliberate step into software and backend engineering, a domain extension beyond my core GNC background. I joined at an early stage of the product and contributed to specific areas: the full market operator integration, the asset onboarding state machine, and the operator dashboard. Across the wider platform I contributed to prequalification reporting, power dispatch, and infrastructure, working alongside the broader engineering team.

What I Built
01 · Market Operator Integration
Inbound webhook receiver in Go with HMAC signature validation, outbound REST API client, idempotent event processing with PostgreSQL deduplication, and a backfill reconciliation job for upstream availability gaps. All DB access via SQLC-generated type-safe queries.
02 · Production & Consumption Data Sync
Go SQS consumer processing async measurement events into PostgreSQL. Asset onboarding implemented as an explicit finite state machine with typed state enums and guarded transitions.
03 · Internal Dashboard & Tooling
Server-rendered admin interface in Go html/template and Tailwind CSS: asset validation panels, telemetry charts, live status indicators, and contract state badges driven by database enums.
Contributions

On the prequalification side I worked on the SvK-formatted CSV reporting pipeline in Go: data extraction via SQLC queries, field mapping to the grid authority's schema, and file generation for the data quality artefacts submitted to Svenska kraftnät. On the real-time dispatch side I contributed to the mFRR power allocator and MQTT publish frequency scaling for dispatch signal throughput. Infrastructure contributions included JWT token validation middleware for internal service authentication and HMAC-SHA256 request signature verification on inbound webhook endpoints, ensuring only authenticated partner callbacks are processed.

I worked on OEM partner API integration for new inverter brands: defining HTTP REST integration contracts, webhook callback shapes, and control logic mapping so new hardware partners can connect to the platform's market control layer. The integration receives telemetry over REST, normalises it into a unified internal data model, and translates outbound commands to each partner's specific API interface.

The Hardest Problem

Bridge introduced domains I had not worked in directly before.

On the integration engineering side: building inbound webhook receivers with HMAC validation, designing idempotent event pipelines that handle retries and out-of-order delivery, writing backfill jobs for external systems that don't guarantee exactly-once semantics, and structuring Go service boundaries so state stays consistent through upstream failures.

On the OEM API side: working at the REST and webhook contract layer rather than at register or protocol level, and what it takes to onboard a new hardware partner without coupling the control layer to partner-specific implementation details.

On production operations: this was my first sustained experience working on a live system with real customers and commercial obligations. Staging and production are separate environments with formal promotion procedures. A broken deployment isn't an experiment to iterate on, it has downstream consequences. That structural discipline, writing migrations that are safely reversible, keeping changes small and observable, thinking about rollback before merging, was a different kind of rigour from anything I had built in a research or early R&D context.

Outcomes
End-to-end
Automated contract sync from market operator callbacks to asset activation , no manual steps
Multi-partner
Single onboarding state machine supporting multiple hardware partners with partner-specific enrollment webhooks
Resilient
Fallback and backfill contract sync , asset state stays correct through upstream availability fluctuations
API layer
REST API and webhook integration with market operator built from scratch in Go, with fallback and backfill resilience
What I'd Do Differently

External integrations accumulate conditional logic when edge cases surface in production that weren't anticipated upfront. I would approach this differently from the start: before writing any code, map every possible callback sequence with the external system, define explicit flowcharts for all exception paths, and agree on exact state transitions for every corner case. A full integration contract agreed before implementation produces a cleaner and more maintainable result than logic added reactively across the sync path.

Skills Gained
Transferable beyond the energy market domain
HMAC webhook validation: third-party event authentication over HTTP
Idempotent event processing: deduplication by event ID in PostgreSQL
Go HTTP handlers + chi router: REST API server with middleware chain
Explicit FSM in Go: typed state enums, transition guards, partner-specific callbacks
SQLC: type-safe SQL query generation against PostgreSQL schema
AWS SQS consumer: async event processing with goroutine lifecycle management
Go html/template + Tailwind CSS: server-side rendered operator dashboard
Backfill reconciliation: gap recovery via REST API polling on webhook miss