Csongor Farkas

WorkSparkify

Rebuilding a field-documentation app from scratch — and the design system behind it

Sparkify is a field-documentation app for electricians — they test and sign off electrical installations, then have to prove it. I joined a product that had grown from a photo tool into a job it was never structured to do, and that averaged only 10–20 documentations a day. As design lead, I rebuilt it end-to-end — the information architecture, the core flows, and the tokenised design system that now carries it across two brands and every surface: iOS, Android and web. What follows is the thinking behind that rebuild — the problems I found, the decisions I made, and what shipped.

600

Documentations created a day

30–60× the old app’s average of 10–20 a day

~7 min

From measurement to signed report

Tested by electricians on a full report — the old way ran across days

27

Languages shipped

One task-first structure, localised across the EU

Real product analytics and field tests with electricians — see the full outcome.

Contents

Company

Onstruc UG · 2024 – 2026

Category

Mobile app · Design system

Role

Design lead

Sparkify — Home, the project tree, template selection and a documentation in progress

My role

  • Product design, end-to-end
  • UX research & user flows
  • Wireframes → clickable prototypes (low → high fidelity)
  • Design-system architecture (tokens & components)
  • Design language & multi-brand theming
  • Web client — desktop surface
  • Marketing site — sparkify.cloud
  • Developer handoff — iOS & Android

The team

  • CEO, CFO, CTO & CCO
  • Co-founder & designer; designers from Wiha
  • iOS & Android engineering leads
  • ML / image-recognition & QA
  • Master electricians — field testing
  • Investors & academic advisors

Deliverables

  • Rebuilt information architecture & user flows
  • Wireframes & high-fidelity clickable prototypes
  • Tokenised design system (published library)
  • Two brands from one system (Onstruc + Sparkify)
  • Component library for iOS & Android

01

The starting point

An app that had grown into a job it was never structured to do — and that few had adopted.

It had started life as a photo tool — take pictures on site, attach them to a job — and as the ambition grew to real documentation, flow after flow got bolted onto it. The problem was structural, not cosmetic; no restyling would fix it. So the call, agreed with the team, was to rebuild from the ground up rather than patch.

  1. The legacy app's camera view, with the shutter button at the centre of the tab bar

    The camera was the app The main verb was take a photo — not document a job.

  2. The legacy project list, where every project is labelled with a number of pictures

    Projects were counted in pictures The unit of work was the image, so nothing in the model knew what a finished report was.

  3. The legacy documentation screen — a long flat list of unrelated fields

    Documentation arrived bolted on A long flat list of fields, unrelated to the standard the report had to satisfy.

The work finishes on site, but the paperwork follows them home.

Documentation is the part of the job electricians like least — done on a ladder, in a basement, one-handed. A tool that demands concentration won't get used. So one measure governed the rebuild: speed. Make documenting faster than paper, and the tool becomes the obvious choice.

The classic way

Measure. Note it down. Transfer it later. Fix the mistakes. Compose the report.

The customer gets a Word or Excel file with a printed signature — days later.

The goal I designed toward

Pull the readings, sign on site, produce the finished report on the spot.

The customer gets a signed VDE PDF with the electrician's logo — before they walk out.

02

The insight that unlocked it

The structure users needed already existed in their trade, not in the software.

This came from research, not a hunch — interviews and journey mapping around the whole job, from arriving on site to handing over a signed report. One pattern ran through all of it: German electrical work is already standardised. A job is named after the standard it follows — device testing under VDE 0701/0702, installation tests under VDE 0100-600 — and that standard already prescribes what has to be measured and recorded. Electricians don't think “I'll create a custom document”; they think “I'm doing a 0100-600 today.”

So the app was flipped around that. Instead of a blank canvas, it asks one question:

What task are you doing today?

Every answer is a ready-made template shaped like the real job. The concept was proven in low-fidelity wireframes with electricians before a single high-fidelity screen was drawn — and it became the test every later decision had to pass: does this mirror how the work already happens, and does it make it faster?

Then we tested the rebuilt app in moderated sessions with users. One session, mapped stage by stage, and what six of them had in common:

Creating a photo documentation and updating it

ParticipantQuotes & pain points
“How to close the keyboard?”
“I want to add more images”
ScenarioOnline moderated. He knows what the app should do and who it is meant for.
ExpectationsCreate a Photo documentation and save it to a Project
Stages
Stage 1
Stage 2
Stage 3
Stage 4
Stage 5
Goals
Opened the Photo documentation template
Opened the add-photo field
Added a comment
Saving the documentation (with a little help)
Viewing all documentations, finding the last one created and updating it with a new photo
Actions
  1. Scrolling horizontally through the Field-sets
  2. Reviewing the Home-screen generally
  3. Tapping the Photo documentation template
  1. Triggered the camera permission and granted it
  2. Took the photo
  3. Wanted to add another photo
  1. Tapped the comment field and added a comment
  1. Could not leave keyboard mode after adding the comment
  2. A colleague helped at the end
  1. Browsing all documentations
  2. Opening the last one created
  3. Updating it with a new photo
Thoughts
  1. Trying to work out what is on the screen
  2. Finds the Field-sets prominent (positive comment)
  1. How to add another photo
  1. Writing a random note
  1. How to get out of the keyboard?
  1. Unsure about the retake button on the camera screen
  2. Replacing the photo
  3. Comfortable in browsing
Pain points
  1. No frustrations
  2. Only obstacle: unsure he was making the right choice
  1. Why can he not add another photo?
  2. No functionality for that
  1. No frustrations
  2. No obstacle
  1. Could not leave keyboard mode
  2. No obvious way out
  1. Hard to accept that he cannot add more photos
Emotions
Interested, excited
Disappointed
Happy
Frustrated
Confused but satisfied
Opportunities
  1. No opportunities noted
  1. Allow adding more photos
  1. No opportunities noted
  1. Help users get out of keyboard mode
  2. Add a “Done” button above the keyboard
  1. Allow adding more photos
  2. Make clear the Photo field is editable
From an online moderated session: one participant creating and updating a photo documentation, mapped stage by stage. He found the Field-sets prominent, and the map records where he got stuck — closing the keyboard, adding more photos — as opportunities.
Rainbow spreadsheet — usability findings across six sessions
FindingP1P2P3P4P5P6Sessions
Single-choice field problems (manufacturer: multi-select pattern, odd scrolling)notednotednotednotednoted5/6
Keyboard won't close, or hides the Save buttonnotednotednoted3/6
Project and documentation not told apartnotednotednoted3/6
Permission prompts unclear (“Remind me later”, “Ask me”)notednotednoted3/6
Photo editing hard to discovernotednoted2/6
Workspace not explainednotednoted2/6
Typo in the GDPR onboarding titlenotednoted2/6
Demo project with sub-projects suggestednotednoted2/6
A rainbow spreadsheet of six usability sessions, one colour per participant. A coloured cell means the issue was noted in that session; findings that came up only once are not shown.

Every round of testing went back into the design, and we kept iterating the app until it met the goal: documenting faster than on paper.

03

The decision before any screen

One nested hierarchy, settled first, because it's the one thing every screen inherits.

Get it wrong and every screen spends its life fighting it. Each scope shows only what belongs to it, so users are never lost, and settings made high up cascade down automatically — fewer things to enter, less to get wrong.

Workspacethe team or company — members, roles, templates & prefilled values live here
Projecta building or site, with its address and documents
Documentationone job's record — a VDE 0701/0702 report, a visual inspection…
Blocka repeatable group of fields inside a document
Fieldthe atomic input — text, selection, photo, address, measurement

Values cascade. A prefilled value set at the workspace level flows into every project and document beneath — inherited fields appear pre-populated and marked, so the electrician confirms rather than retypes.

04

The flows that earn their keep

With speed as the measure, every feature exists to take a step away from the person on site.

A sheet offering three ways to add a PAT measurement: over NFC, by scanning the tester's display, or manually

NFC · Measurement import

The fast path, made optional on purpose

The reading can arrive three equal ways: tap the phone to the tester over NFC, scan its display, or type it by hand. Making NFC the only hero was tempting — but field testers are old, borrowed, or flat, and a “primary” path half the users can't take says the app wasn't built for them. So NFC is the quickest route, and entering the value by hand is always a normal option.

Electronic device form — photos of the device and its nameplate, with the recognised type filled into a normal editable field

AI · Device testing

The model reads it; the electrician stays in charge

Image recognition takes on the tedious transcription: two photos — the device and its plate — and the fields fill themselves. The design judgement was in the guardrails. The electrician signs the report, so the model can never be the authority: results land in ordinary editable fields, with a highlight showing what was detected. Recognition is a shortcut through the typing — the professional stays accountable for what goes in.

Prefilled values are the biggest single time saving in the product, and they work unseen. An electrician's answers repeat far more than they vary — the same contractor, the same client, the same standard — so they're set once, at workspace or project level, and every documentation inherits them. And real jobs repeat too — circuit after circuit, room after room — so blocks are repeatable. Making that effortless took most of the detail work. It was prototyped, usability-tested on real jobs, then A/B tested and iterated with electricians until it held up in their hands.

  1. A dismissible hint above the block list: swipe left on a block to duplicate it, tap Reorder to change the order

    01 · Teach it in place One dismissible hint, exactly where the gesture lives — instead of an onboarding screen nobody reads.

  2. Swiping a measurement block left reveals Duplicate and Delete actions

    02 · Duplicate in one swipe Duplicate is instant; Delete is the only red element on screen, and always confirmed.

  3. The duplicated circuit block appears below the original, focused and confirmed by a toast

    03 · The copy, in place It lands under the original and takes focus. Its label is built from its own values — “4, Living room”, never “Block 4”.

  4. Reorder mode — the block chevrons are replaced by up and down arrows

    04 · Reorder without dragging Arrows instead — precise with gloves on, impossible to trigger while scrolling.

Repeating blocks — duplicating a circuit takes one swipe instead of retyping
Duplicate a block / documentation — daily adoption
40%20%0Duplication shipsMayJunJul

The payoff, in real product analytics: after this shipped in late June, ~1 in 4 daily documentation-makers were duplicating a block or a whole documentation (peaks ~35%). Current partial week excluded.

The finished, signed PDF report with the signature and a QR access code

Report · Signature

Handed over before leaving

The job ends on site. Signed on the glass — or pulled from a saved profile signature — the finished PDF carries name, city, date and a QR code for digital access. Either signature can be left empty to sign on paper, because the second is often the customer's and they aren't holding the phone.

05

One system, two brands, every surface

The thing the screens are assembled from — and what kept a product this size consistent.

I made one architectural call early that shaped everything that followed: don't draw screens — build a system and assemble them from it. Colour, type, spacing and radius are Figma variables, and every component references a token, never a hard-coded value. The result is a single published library — 600+ components, consumed on iOS and Android — where changing one token updates every screen that uses it. I also set the system up in Tokens Studio, a common way for teams to keep tokens in sync with code.

Foundations

The point isn't the individual values — it's that one architecture scaled the whole product consistently, and let a second brand ship by swapping token values instead of redesigning screens.

Every value below is a real Figma variable from the published library. Colour, type, spacing, radius — even elevation and blur — are tokens, so components and screens reference the token, never a raw value.

Colour · brand ramp

primary/500#0a1a2fBrand · primary
primary/200#cacecd
primary/100#dbdee4
primary/50#f1f3f7

Colour · text & neutral

text/550#0f0f0f
text/500#111111
text/450#292929
neutral/500#7a7f89
text/100#cfcfcf
neutral/white#ffffff

The task-colour system

Each documentation task carries its own colour, defined once as a gradient token and reused on its home tile, its header and its report. The design system and the product concept are the same idea.

Device testing (Wiha PAT)field-sets / PAT#f2b1b8 → #d2091e
VDE 0702 reportfield-sets / VDE 0702#9599f3 → #0c119e
Visual inspectionfield-sets / visual-inspection#97ccc6 → #294e4a
Photo documentationfield-sets / photo-documentation#eb9be7 → #65035b
Vehicle documentationfield-sets / document-vehicle#ffbb94 → #9e4918

Type · Roboto headings + Inter body

Aufgabe auswählentext/headings/h3 · Roboto · Bold · 18 / 26
Aufgabe auswählentext/button/base-bold · Inter · Bold · 16 / 24
Aufgabe auswählentext/default/base-medium · Inter · Medium · 16 / 22
Aufgabe auswählentext/small/base · Inter · Regular · 14 / 20
Aufgabe auswählentext/tiny/base-bold · Inter · Bold · 12 / 18
Aufgabe auswählentext/extra-tiny/field-set-title · Roboto · Bold · 10 / 12 · +1

Spacing scale

space-1008px
space-20016px
space-40024px
space-50032px

Corner radius

radius-2004px
radius-3008px
radius-40012px
radius-50016px

Component library · a representative slice

ButtonButton smallerSmart buttonAlert buttonIcon buttonClose buttontext_fieldcheck_boxradio_buttonIcon-RadioButtontooltipBanner

Variant-based component sets, every property bound to the tokens above — one published library, built once, consumed on iOS and Android.

Figma variables — two layers, 103 primitives and 204 semantic tokens, grouped by component, each with a light and a dark valueTokens Studio for Figma — the primitives set with colour ramps, spacing, border radius and dimension tokens
Two layers: 103 primitives feed 204 semantic tokens, each with a light and a dark value — in Figma variables (left), and set up in Tokens Studio as well (right).

The payoff came with a business decision. The product was built as Onstruc; then Wiha came in behind it and it went to market as Sparkify. Designers from Wiha joined the team through that partnership, and I worked with them and with my co-founder, who is also a designer. I knew a re-theme was coming, so I structured for it from the start — every colour referenced by role, one primary ramp a brand could own. When the rebrand arrived it was a set of new values behind the same variable names: not a redraw.

A project screen in the Onstruc theme — the header and accents in Onstruc green

Onstruc · primary/500 · #425c59

The identical project screen in the Sparkify theme — the same layout, the header and accents in Sparkify navy

Sparkify · primary/500 · #0a1a2f

The same screen, both brands — identical layout, type, spacing and components. One token changes value; nothing is redrawn.

The same library carried the product to the desk. I designed the majority of the web client with Onstruc's CTO — where templates are authored from fourteen field types plus two containers — and the marketing site at sparkify.cloud, so the design language runs from a form on a ladder to the page that sells it.

The Sparkify web client in the browser — the Projects view, the same system on desktop
The web client — the same design language in the browser, and where templates, prefilled values and workspace settings are authored

06

Built for the field

What decides whether a tool survives real use.

Connectivity

Offline by default

Basements and new-builds have no signal. Work continues offline; changes sync on reconnect, and a clear banner tells the user the count they see may be stale.

Permissions

Roles & permissions

Owner, Manager, User and Guest — assignable per member, at both workspace and project level, with distinct views for admins and guests.

States

Designed empty & error states

Every list has a purpose-built empty state; every action has success, confirmation and error feedback.

Inputs

Robust address entry

Search autocomplete, drop-a-pin on the map, or type it by hand — with a graceful fallback when precise/GPS lookup isn't available.

Returning to the app — a dialog asking whether to continue an unsaved documentation or discard it

Recovery · Draft state

The safety net for work that gets interrupted

Phones die, overheat, and get closed mid-form. Progress saves automatically as a draft, and returning to the app asks one question on Home, where it can't be missed: continue, or discard. Continue is emphasised, discard is the quiet one — when someone has lost an hour of work, the way back has to be easy to find.

07

Outcome

Live on every platform in 27 languages — a signed report now done on site in minutes.

600

Documentations created a day

The rebuilt product in daily use — 30–60× the old app’s average of 10–20 a day

27

Languages shipped

One task-first structure, localised across the EU

~7 min

From measurement to signed report

Tested by electricians on a full MFT report — the old way ran across days

2,000+

NFC measurement reads a week

From a standing start — the tap-to-read flow I designed

Sparkify shipped. It's live on iPhone, iPad, Android and a browser-based web client, the same documentation synced across all of them, free to download. The rebuild replaced a tool that produced 10–20 documentations a day on average with one shaped around how the work actually happens: from the first measurement on site to a signed PDF, without retyping. The app has passed 1,000 downloads on Google Play and is rated 4.9 across its first reviews. And because it runs on a tokenised system, the team keeps shipping — new templates, a second brand, hardware and planning-tool integrations — without redesigning the app each time.

The result. The old way ran across days: measure on site, note it on paper, transfer it at the office, fix what got mistyped, compose the report, send it. With the tester talking to the phone and the template already shaped like the standard form, a full MFT report is now filled out, signed and handed over on site, in roughly seven minutes — measured in tests with electricians running the job, not estimated.

Documentations created — average per day
8004000AprMayJunJul

Real product analytics, Apr–Jul 2026 — roughly 600 documentations created a day. The measure the rebuild was judged on: the old app averaged 10–20 a day.

NFC tap-to-read — events per week
2,0001,0000MarMayJul

Real product analytics, Mar–Jul 2026 (the current partial week is excluded). Adoption of the tap-to-read NFC flow I designed — from a standing start to 2,000+ events a week.

Sparkify Documentation

4.9 on Google Play (8 reviews) · 1,000+ downloads · Free · Productivity · 27 languages · Onstruc UG

The rebuild started from one idea: the structure users needed already existed in their trade, not in the software. The rest of the product follows from that.

More work

View all