West Java · Election · 2023

Results You Can Trust

Two web apps for the 2024 election: one for PICs at the polling station, one for the party staff watching results come in.

Project info
Role
Product Designer
Context
Internal system for a political party's West Java chapter, built for the 2024 Indonesian general election.
Users
TPS PICs (the person in charge at each polling station) in the field, and DPW (regional party leadership) staff running election-day operations from an office.
Scope
PIC web appLogin & verification · attendance confirmation · progress dashboard · submit and manage C1 Admin dashboardTPS & PIC mapping · regional monitoring dashboard · C1 review · account & member management
01 · Summary

One five-minute action, done once every five years, that has to be trusted

The project is really two web apps working together, built for the 2024 Indonesian election: a mobile web app that PICs open in their phone's browser on election day to report vote counts (Form C1, now officially called C.Hasil), and a web dashboard that regional party staff (DPW) use to set everything up beforehand and watch results come in. I designed both, from start to finish.

The hard part was never the screens themselves. It was making sure a five-minute action, done once every five years by someone who has often never used the app before, could still be trusted at the scale of thousands of polling stations. That trust only works if the admin side is set up properly ahead of time, with every PIC matched to the right polling station weeks in advance.

This case study explains the problem the way I saw it: first as a question of trust and how the two apps work together, and only after that as a question of screens and buttons.

02 · The real problem

Not a form. A pipeline the party makes decisions with on election night.

Official vote counting in Indonesia is slow. It takes days before results are fully verified and confirmed nationally. A party that wants to know what's happening on election night needs its own faster way of finding out, straight from PICs at each polling station, right after the local count finishes.

That makes this a two-way pipeline the party uses to make real decisions that night, like where to send legal help or where to expect problems. The PIC web app is where the information comes in, and the admin dashboard is where it's set up and watched. If either side breaks down, the party ends up trusting numbers it shouldn't, which is worse than having no numbers at all.

Make it hard to send something the party shouldn't trust, without making it hard for a nervous first-time PIC to send something they should.

On the admin side, the goal was to make it obvious, weeks ahead of time, exactly where the setup was still incomplete.

03 · What made this hard

Constraints

  • Only one shotThe PIC web app goes live once, on election day, for thousands of people at the same time. No trial run and no fixing it midway.
  • First-time users, every timeIndonesia holds its general election once every five years, so that's how often PICs use this. Almost nobody remembers how it works, and many have never used anything like it.
  • Very different comfort levelsSome PICs are young and used to apps. Others are older and may find this one of the harder apps they've used.
  • Used standing upPICs use the web app in a crowded polling station, sometimes with a bad signal, with people waiting for them.
  • A different user on the admin sideDPW staff use their dashboard many times over several weeks, at a desk. Their challenge is a lot of repetitive work, not first-time nerves.
  • Real consequencesThe data is tied to an actual election result. Mistakes and bad intent both matter, on both sides of the system.
  • Small team, no safety netThere was no dedicated technical team or testing process, so most of the trust-building had to be designed directly into both apps.
04 · How I approached it

Five principles

  1. 1

    Put the strongest check exactly where cheating is most likely, and nowhere else

    The biggest risk is someone submitting a result without being at the polling station. So there's one strict, unavoidable step for that, confirming you're there, instead of small checks everywhere that would slow everyone down.

  2. 2

    Make status clear in three seconds or less

    A PIC glancing at their phone needs to know instantly what's done and what isn't, across three elections at once. A DPW staff member scanning a long list of regions needs the same. If it takes longer than a glance, the screen isn't doing its job.

  3. 3

    Only add extra steps where they really matter

    The warning before sending a photo and the confirmation before deleting one get an extra step on purpose, because getting them wrong matters. Everywhere else, the goal was as few taps as possible.

  4. 4

    Always design for someone using it for the very first time

    Almost nobody uses the PIC web app regularly, so I never assumed people would remember how it works. Every screen had to make sense to someone doing this for the first time, under pressure, with no one to ask.

  5. 5

    Do the hard work early, so election day can be simple

    The PIC web app can stay simple only because the admin dashboard handles the complicated part beforehand. Every polling station and every PIC is set up and checked before election day, so nothing is left for the field to figure out.

05 · How it works

Two halves of one system

The PIC Web App

Mobile browser · election day
A · Logging in

PICs log in with their party membership number (No. KTA) and national ID number (NIK), not an email or phone number. Only real, registered party members can get in, without a separate sign-up step slowing things down on election day.

PIC login screen asking for No. KTA and NIK
Login with No. KTA & NIK verification
B · Confirming you're there

Before sending any results, a PIC has to confirm they're actually at the polling station. Until they do, every submit button stays locked and a screen explains why. This is the first line of defense against fake or early submissions.

Screen asking the PIC whether they are at the TPS, with Yes and Not yet buttons Locked screen explaining C1 cannot be submitted until attendance is confirmed Home screen with C1 progress and a Kirim C1 button for each election
  1. First, one question: "Are you at the TPS?" Nothing else is reachable yet.
  2. Not yet? Every submit path stays locked, and the screen says why and how to unlock it.
  3. Confirmed. The home screen opens and each election's C1 can be sent.

Interactive prototype · try both answers

C · Home screen & progress

The home screen shows how many results have been sent ("0 of 3") across all three elections, each with a short status and a button to act on it right away. The checklist style makes it obvious what's left, even on first use. Each election that's been sent gets a green tick and its button changes from Kirim C1 to Lihat (view), and once all three are in, the bar turns green and the greeting says thank you.

PIC home showing C1 progress 0 of 3 with a Kirim C1 button for each election
0 of 3: every election still to send
PIC home showing 1 of 3 sent: PILPRES ticked with a Lihat button, the other two still showing Kirim C1
1 of 3: sent items turn green and switch to Lihat
PIC home showing 3 of 3 sent with a full green progress bar and a thank-you greeting
3 of 3: a green bar and a thank-you
D · Sending a result

The photo is of the signed A4 summary sheet (C.Hasil) that each party's witness receives at the polling station, not the large Plano sheet on the wall. PICs take the photo directly or choose one from their gallery, then preview it. Right before the Submit button, a clear warning reminds them to check the photo is sharp and readable, catching a blurry form before it's too late to fix.

Bottom sheet to take a photo with the camera or pick one from the gallery
Capture or pick a photo
C1 photo preview with a reminder to check the photo is sharp, above the submit button
Preview with a readability warning before sending
E · Viewing, deleting or resending

After sending, a PIC can view what they sent and either delete it or send it again. Deleting always asks for confirmation with a clear warning ("you'll need to resend if you delete this"), so something this important can't be erased by accident.

Submitted C1 photo with Hapus C1 and Kirim Ulang C1 buttons
C1 detail, delete & resubmit options
Confirmation sheet asking whether to delete the submitted C1, with Jangan Hapus as the primary button
Delete C1 confirmation modal
Between the two apps

None of the PIC experience works unless someone sets it up first: deciding which polling stations exist and which PIC is assigned to each one.

The Admin Dashboard

Web · weeks before and on the night
Logging in

Admins log in with a username and password instead of an ID number. That difference is deliberate: this account can see and change information for the whole province, not just submit one person's result.

Admin login form with username and password
Admin login, username & password
Setting up polling stations · Pemetaan TPS

Before any PIC can log in and confirm they're present, an admin sets how many polling stations exist in each village area and assigns a PIC to each one. A small warning icon appears next to any area that isn't fully set up, turning an easy-to-miss gap into something impossible to overlook while there's still time to fix it. This step quietly decides whether the PIC-side check will work.

Pemetaan TPS table of kelurahan with warning icons and a panel assigning PICs to each TPS
Pemetaan TPS, polling station count & PIC assignment by kelurahan
Home dashboard · Beranda

Once polling stations open, the dashboard rolls up progress across all of West Java, broken down by city and regency, for all three elections side by side, with the option to drill into any region. A side panel keeps the key setup numbers (total polling stations, total PICs) one click away, along with early vote-count figures.

Admin dashboard with C1 progress per election and a table of West Java cities and regencies
Beranda, regional C1 progress dashboard
Reviewing results · Formulir C1

The same region-by-region browsing, but for the actual submitted photos rather than a completion percentage, so DPW staff can check specific results instead of trusting a summary number.

A submitted C1 form photo opened for review on top of the regional list
Formulir C1, opening a submitted photo for review
Other setup screens

Starting a new election cycle, managing the admin's own account, and keeping the list of party members who can be assigned as PICs. This is the groundwork that has to exist before any polling station can be set up.

Buat Periode form to pick the year and election types
Buat Periode
Akun screen for adding admin accounts
Akun
Anggota list of party members with KTA, NIK and phone
Anggota
06 · Trade-offs

What I'd do differently with more time

Part of a good design review is talking about the paths not taken. These are the choices I'd stand behind, and what I'd argue for if this became a long-term product instead of a one-night event.

Decision pointWhat I chose, and whyWhat I'd revisit
How PICs prove who they areMembership number + national ID, no extra verification. Faster on election day, but weaker against someone faking an identity.For a national version, a lightweight extra check, like recognizing the same phone on return visits, without adding a login step.
Making sure photos are readableA warning before sending, no automatic check. The fastest option given the timeline.Automatic detection of blurry or glared photos, so the warning becomes a real check instead of a reminder.
Fixing a submitted resultSimple delete-then-resend with a confirmation step. Easy to use, but the original submission disappears completely.Keep every version and make it visible, instead of losing the first one when it's deleted.
Setting up polling stationsManual, one-by-one setup, giving admin staff full visibility while they learn an unfamiliar dataset.Bulk upload from a spreadsheet, since doing this one village at a time doesn't scale to a full province.
Admin permissionsOne admin role with access to the whole province, given the timeline.Limited, region-specific access, so a local coordinator isn't handed control over the whole province.
07 · Risks

Five risks shaped most of both apps

RiskMitigation designed into the flow
Someone submits a result without being at the polling stationA required "confirm you're here" step blocks every path to submitting. It's the one non-negotiable step in the whole app.
A blurry or unreadable photo gets submitted unnoticedA clear warning right before sending, flagged in the trade-offs as worth strengthening.
A submitted result is deleted by accident or on purposeA confirmation step spells out the consequence in plain words and requires sending again. Deleting is never a single tap.
A nervous first-time user gives up partway under time pressureSimple one-step-at-a-time screens and a checklist home screen, so there's nothing to remember or figure out.
Polling stations aren't fully set up before election dayA warning icon on any incomplete area, visible to admin staff while there's still time to fix it.
08 · What's next

Next time: pay PICs once their C1 is verified

If we get the chance to build this again for the next election, I'd propose connecting the PIC web app to a payment gateway. A PIC would be paid once an admin has checked their C1 photo on the dashboard, so reviewing a result and paying for it become one flow.

  1. The PIC sends their C1 photo from the web app, exactly as today.
  2. An admin reviews it in Formulir C1 on the dashboard and marks it as verified.
  3. Verification triggers the payment through the payment gateway.
  4. The PIC sees the status in the web app: waiting for review, verified, then paid.

Pay for what the party actually needs: a readable, verified C1, sent on time.

  • A reason to get it rightTying payment to a verified photo gives PICs a clear, personal reason to send a sharp photo, on time.
  • One review, two jobsChecking a C1 and releasing the payment happen in the same step on the admin dashboard.
  • Rejected photos need a clear pathIf a photo can't be verified, the PIC needs to know why and be able to resend it before payment, not after.
  • Payment details belong in setupWhere each PIC gets paid should be collected weeks ahead, alongside PIC mapping, not on election day.
09 · Results

What I'd want to measure

I don't have real field numbers to share yet. Rather than invent any, here is what I planned to measure.

  1. Time from local count to submission. The core speed this whole app exists to improve.
  2. Resend rate. A sign of how many photos failed the quality check the first time.
  3. Drop-off at "confirm you're here". To check whether the step was blocking the right people.
  4. Share of polling stations reporting on time. The number that matters most to the party.
  5. Share of villages fully set up before election day. An early warning for how many problems to expect later.
To add once available: on-time reporting rate, resend rate, average time to submit, and feedback from field coordinators.
10 · Final thoughts

Where to spend a limited amount of trust

Most interesting design problems eventually stop being about layout and become about deciding where to spend your limited trust-building effort. This project only had room for a few strict rules, so the real work was finding the few moments that truly needed one and keeping everything else out of the way.

Designing both apps together made that possible. The PIC web app's "confirm you're here" step only works because the admin setup behind it is solid. I wouldn't have seen that connection as clearly if I'd designed one side and handed the other to someone else. A limitation on one side is usually the actual design brief for the other.

The honest limitation is that most of this trust-building still depends on people doing the right thing: a warning message, a confirmation step, a warning icon in a table. None of that is a real audit system. It was the right call for a small, one-time build, and it's exactly what I'd replace first if this became a permanent tool.

Contact

Liked this one? Let's talk.

If you're working on something where this kind of thinking would help, I'd love to hear about it.

Email me