Back to portfolio

Case Study · FlexDB

FlexDB: an engineering database with spreadsheet DNA.

RoleDesign Lead
ClientMulti-BU industrial automation
StandardsISA-88 / S95, GMP, GDPR
Duration4 weeks

Translated a 3-month inherited requirements package into a working React prototype: a central engineering database for process automation data across three industrial business units, without asking engineers to abandon the spreadsheet patterns they already trusted.

Scope
0BUs
Engineering data unified across Chemical & Energy, Pharma & Biotech, and Food & Beverage
Duration
0wks
From inherited URD to executive-approved live React prototype
Audit (proj.)
0%
Projected audit coverage — activity-log pattern adapted from a prior regulated-industry implementation
flexdb.app/dashboard
FlexDB dashboard showing project overview, records by type, import activity, and recent projects

01Context

Four weeks to translate a three-month requirements package into something real.

A multi-BU industrial automation client had spent three months drafting requirements for a new central engineering database. Their internal Project Owner and General Manager had assembled a User Requirements Document, a high-level mockup deck, and sample Excel files capturing the current state — process automation engineering data (instrument lists, IO lists, cable schedules, tag lists, alarm and trip-point matrices, cause & effect tables) maintained as fragmented spreadsheets across three business units: Chemical & Energy, Pharma & Biotech, and Food & Beverage.

My team — myself as Design Lead, a front-end engineer, a back-end engineer, and an external Project Manager — was engaged in April to translate that package into a working prototype suitable for executive review and a development handoff. We had four weeks. The strategic goal was already defined in the URD: build a toolkit, not a mandatory standard. Flexible. Lean. Easy to use. eXtensible.

AreaMy ownershipType
Requirements synthesisURD analysis, mockup-deck interpretation, sample Excel inventory — AI-assisted extraction of features and constraintsMine alone
UI directionOnboarding flow, top-bar project switcher, Excel import wizard, progressive-disclosure modelMine alone
Interaction designSpreadsheet-native table behavior, inline edit model, conflict and import statesMine alone
Prototype buildFigma high-fidelity designs against my own pre-built design system → live React prototype, AI-assisted in VS CodeMine alone
Activity-log modelAdapted from a prior regulated-industry implementation; mapped to URD requirements for audit trail and version controlMine alone
Backend & integration architectureDatabase choice, sync model, table component for production — led by FE/BE engineers with my UI constraints as inputShared

Process notes

Three things about how this work got made that don't fit inside the numbered narrative.

01 / Design lead, not solo designer

I was the design lead, not the only person making decisions. My team included a front-end engineer, a back-end engineer, and an external PM; the client side had a Project Owner and a General Manager who'd authored most of the URD. The interaction patterns, onboarding flow, top-bar project switcher, and Excel import wizard were mine alone. The database choice, sync model, and the table component for production were shared with the engineers — who pushed back productively on my initial grid choice and surfaced AG Grid as the right production engine. That call landed in implementation, not in the prototype.

02 / AI as synthesis and prototype partner

I used AI in two specific places. First, to extract requirements and feature priorities from the URD, the client's mockup deck, and the sample Excel files — turning a long document into a working features list and a constraint map in under a day. Second, after the Figma designs reached a steady shape, I moved to VS Code and built the live React prototype with AI assistance — generating component scaffolds, then editing them by hand against my pre-built design system. The decision to ship a live React prototype rather than a clickable Figma was mine, made on the basis that stakeholders across three business units would understand the value better by feeling the import flow than by clicking through hotspots.

03 / What I kept by hand

The UI decisions — the structure of the onboarding flow, where the project switcher belongs, how progressive disclosure surfaces audit-log entries without cluttering the table, when a conflict state should warn vs. block — were not AI work. Those came from prior implementations and from the URD's strategic frame: FLEX (Flexible, Lean, Easy to use, eXtensible) and "toolkit instead of mandatory standard." Every UI call had to defend itself against that frame before it shipped to the prototype.

02The Problem

No team could trust that the spreadsheet they opened was the version another team had since already edited.

Three business units. Engineering data scattered across Excel, plus a long tail of source-system exports (COMOS, PCS7, EPlan). Every import touched something another team depended on — silently.

01

Data diverged the moment it was copied

Each project team maintained a local copy of the same base spreadsheet. Column names drifted — "Component_ID" became "Comp ID" became "ID." Imports that worked last month silently failed this month, and nobody could say which file was canonical.

URD section 3.2 · "Currently, engineering data is stored and exchanged through fragmented solutions, leading to duplicated effort, inconsistent data quality, and significant manual handling."

02

No change history meant no defensible audit trail

The URD called for ISA-88/S95 alignment, GMP and GDPR compliance, and a complete audit trail covering creation, modification, deletion, export, and sync — with before/after values, timestamps, and attributed users. None of that existed in the spreadsheet status quo.

URD section 8.7 · Audit logs must include timestamp, user ID, operation type, and before/after values for every data change.

03

The strategic risk was adoption, not architecture

The URD opens with a Technology Acceptance Model warning: previous tools failed not on capability but on usability. "Confusing or complicated operation" and "no clear advantages for daily work" were named as the top rejection reasons. The interface had to feel like a toolkit engineers chose to use — not a system imposed on them.

URD section 4 · "Toolkit instead of mandatory standard. Focus on good enough instead of perfect. Focus on time saving in engineering tasks."

03Key Decisions

Engineers had rejected every previous tool. These four decisions changed that. Each one came from the URD's strategic frame — toolkit, not mandatory standard — applied to a concrete interaction problem.

Decision01

Spreadsheet-native interaction model, not a purpose-built database interface

GapThe URD's Technology Acceptance Model named "confusing or complicated operation" as the top reason previous tools had been rejected. The interface had to feel like a toolkit engineers chose to use — not a system imposed on them.
ChoiceTable-first workspace with inline cell editing, column resizing, sort/filter, and keyboard navigation identical to Excel
ConsideredEngineers raised AG Grid as the production-grade implementation. I used a simpler grid in the prototype because interaction patterns mattered more than the table engine at that stage; AG Grid carries forward into development.
WhyThe mental model had to be borrowed, not taught. Every engineer in the OLC review opened the table and started editing without asking how. That was the success criterion the URD's FLEX frame demanded.
Decision02

Top-bar project switcher, not a sidebar nav target

GapThe URD specified "a separate instance of the database for every project" but didn't address cross-project movement. The mockup deck buried the switcher in the sidebar, treating projects as a navigation target.
ChoiceA persistent top-bar project switcher with the current project name, code, and status always visible inside the workspace chrome
WhyEngineers commonly work across two or three active projects per day. Putting the switcher in the chrome — not in navigation — keeps the spreadsheet workspace as the focus and makes context-switching frictionless. The metadata strip beside it also doubles as orientation: which project, which BU, which state.
Decision03

Excel import as a progressive-disclosure wizard, not a flat configuration form

GapURD section 8.3 lists ~15 import requirements (schema mapping, validation, cleansing, staging, approval, error thresholds, transformations, idempotency, audit logging…). A single form exposing all of them would be unusable. The "Lean" principle in FLEX argued against showing everything at once.
ChoiceA four-step wizard — Upload → Schema map → Validate → Commit — where advanced controls (transformations, error rules, idempotency) reveal progressively, only when relevant
WhyMost imports are 80% identical. The wizard puts the common case on the happy path and surfaces complexity only when the user is doing something non-default. This is what "toolkit instead of mandatory standard" looks like in interaction terms: the URD's full feature surface is there — just earned.
Decision04

Live React prototype, not a clickable Figma flow

GapThe review audience spanned the General Manager, the Project Owner, the engineers, and stakeholders across three business units. Each had different criteria. A static Figma flow would have demoed the screens but not the interaction texture — drag-resize columns, paste-from-Excel, inline edit feedback, conflict warnings, activity-log writes.
ChoiceFigma high-fidelity designs against my pre-built design system → live React prototype built with AI assistance in VS Code, anchored to the same component library
WhyStakeholders across three BUs needed to feel the import flow and the activity log, not click hotspots. The AI assistance made a real working prototype affordable inside a 4-week engagement — without it, this fidelity is a multi-month build. The decision also produced a demo video that became the artifact used to gather feedback from future users.

04Solution

A governed database that behaves exactly like the spreadsheet it replaced.

Every interaction maps to something engineers already know how to do. The audit trail, schema enforcement, and conflict detection are invisible until they matter.

Onboarding wizard, proposed and adopted immediately.
flexdb.app/onboarding

The original requirements lacked a structured entry point for new users. Research showed that engineers relied on trial and error, so I introduced a wizard-based flow: Create a project → Import data → Assign team members → Start working.

1

Create a project — named workspace with role-based access from the start.

2

Import data — guided mapping connects legacy columns to the new schema.

3

Assign team members — invite flow with pre-set permission levels.

4

Start working — confirmation screen with quick-start links to core actions.

After · Import with guided auto-mapping
flexdb.app/import
1

Confidence scores surface uncertainty — engineers review flagged matches, not an error message. The system makes a decision; they confirm it.

2

Unrecognised columns are skipped, not rejected — the import proceeds. Engineers aren't blocked by legacy fields the schema doesn't need.

After · Change history with cell-level diff
flexdb.app/audit
1

Every cell change is a timestamped, attributed record — written automatically on blur. The activity log accumulates without any manual entry, matching the URD's audit-trail requirement (timestamp, user, before/after).

2

Import events are first-class entries in the audit trail. Engineers (and any future auditor) can trace exactly which file introduced which data and when.

05Impact

Executive sign-off across three business units, and a live build that followed.

The strongest validation came from the client lead — the General Manager who'd authored most of the original URD and convened the OLC review.

Tom has developed an initial UX design, analysed the underlying data structures, and defined an approach that enables delivery of a usable first version within a minimal timeframe. From there, we can iterate to build out the full required functionality. […] I was very positively impressed by the initial results. […] Both the presentation and Tom's UI demo were very well received during the OLC, and the FlexDB concept has strong support from management across multiple business units.General Manager, client lead
Validation
0BUs
Working prototype approved at the OLC review; FlexDB concept gained explicit support across Chemical & Energy, Pharma & Biotech, and Food & Beverage.
Handoff
Live→build
Working React prototype + demo video handed to the development team. The project is now in active build, carrying the UI patterns from the prototype forward.
Audit (proj.)
0%
Projected audit coverage once the activity-log pattern ships — adapted from a prior regulated-industry implementation of the same model.
The decision that the engagement turned on wasn't a feature choice — it was the format of the deliverable. A working interactive prototype walked into the OLC review, not a deck or a clickable Figma. Stakeholders across three business units could feel the import flow, the inline edit model, and the activity log working against real data. The demo video became the artifact reused later for gathering feedback from future users.
Delivered in 4 weeks from inherited URD to executive sign-off. The velocity wasn't the headline — the live working prototype was. AI-assisted prototyping is what made that fidelity affordable inside the timeline.

06Reflection

The URD asked for breadth. The North Star asked for restraint.

The riskiest call was choosing to build a live React prototype rather than a clickable Figma. It meant front-loading technical decisions — component library, state model, AI scaffolding workflow — into design week, not engineering week, and trusting that AI-assisted code wouldn't accumulate a tech-debt mess the development team would later have to throw out. It paid off because the OLC saw a working application, not a sequence of screenshots. The demo video was effective because the demo was real.

The real tension in this project wasn't between user needs and compliance constraints — it was between the URD's stated requirements (a long, detailed list) and the URD's stated North Star: FLEX — Flexible, Lean, Easy to use, eXtensible. The URD specified breadth; the North Star demanded restraint. Every UI call had to defend itself against both. The progressive-disclosure wizard, the top-bar project switcher, and the spreadsheet-native table model were each cases where I declined to expose a feature the URD listed by default, in order to honor the toolkit framing.

What I'd do differently

I'd run a BU-specific working session with engineers from each of the three business units earlier in the engagement — not just the cross-BU OLC at the end. The headline feedback was strong, but the BU-specific differences (Chemical & Energy's instrumentation naming conventions vs. Food & Beverage's batch metadata, for instance) didn't fully surface until handoff. Pulling those sessions into week 2 instead of week 4 would have given the development team a sharper specification of which edge cases to harden first.

The interface that gets adopted is never the most powerful one. It's the one that feels like something you already know.