Conductor’s
Digital Companion

A bus ticket flow for one thumb, a moving aisle and full sun.

October 2026 · PMPML, Pune

Role
Product designerSolo project
Duration
1 weekOctober 2026
Platform
Android ticket machinePrinter and GPS built in
Methods
Field visit, interviewSketches, prototype

Photos taken with consent. Other faces remain blurred. The interview was in Marathi; quotes are my translation.

The brief.

Pune’s bus conductors issue every ticket on a handheld machine, standing in a moving aisle with cash in the other hand. I redesigned the ticket screen around that reality.

My part
Everything: depot visits, the interview, sketches, screens and the clickable prototype.
Setting
PMPML, Pune’s city bus service. Conductors issue every ticket on a handheld machine.
Status
Concept with a working prototype. Checked once at home, not yet on a bus.

The target for a routine ticket

3passengers on one ticketOne man, one woman and one boy, going to the same stop.
4sto issue itFrom choosing the stop to the ticket printing.
1free thumbThe other hand holds cash, a pole or the strap.

Every ticket answers three questions

  • Where are you going?
  • How many of you?
  • Cash or UPI?

So the screen should ask them in that order, and nothing else.

Secondary research: ten years of machines.

Before the depot, I traced how PMPML moved from paper books to keypads, touchscreens and UPI.

  1. 2015E-ticketing beginsKeypad machines replace paper ticket books.
  2. 2021A new contractA replacement ticketing system is awarded.
  3. 2022Touchscreens arriveAndroid machines with built-in printers.
  4. 2023UPI on boardPassengers can scan a QR to pay.
Keypad ticket machine with colour-coded keys
Fixed keys build muscle memory.
Keys pressed in sequence, fare on a small LCD
But keys wear out, and the small screen shows little. A vendor demo, not a PMPML machine.

What desk research told me

  • The bus already knows where it is. PMPML’s passenger app tracks buses live, and the machine itself runs Android with GPS.
  • Keypads had one thing right. Fixed keys build muscle memory. A touchscreen has to earn that back with fixed positions.
  • Battery isn’t the bottleneck. The conductor told me one charge lasts a full shift.

Field research: on the bus.

Desk research shows what the machine can do. It doesn’t show a conductor using it in a crowded aisle, so I went to see.

  1. Depot visitsHadapsar and Manjari, 6 October
  2. Ride alongWatched tickets issued in a moving bus
  3. InterviewOne conductor, recorded in Marathi
  4. Wore the machineStrap, pouch and all
Standing in the aisle
Standing in the aisleCash and the machine end up in the same hand.
The workspace
The workspacePoles, grips and an aisle that never stops moving.
Wearing it myself
Wearing it myselfEvery tap through the pouch felt slower.

From the interview recordings

I recorded the conductor walking me through his machine, then transcribed and translated it. Tap Marathi to read the original.

  • Issuing a ticketMain demo, 104 s

    “You select it first, yourself: where the passenger is going.”
    Marathi

    हा मग हे तुम्ही पहिला सिलेक्ट करता … कुठं जायचं हा तुम्ही करता स्वतः …

    He sets the stop by hand on every ticket, then the count, then Print. UPI opens a QR scanner.

  • Paying by UPIMain demo, 75–104 s

    “The ticket only prints if the money actually goes through.”
    Marathi

    … स्कॅन जर पैसे गेले तरच तिकीट निघतं …

    If money is taken but nothing prints, it’s reported to the office and refunded later.

  • A group ticketGroup booking, 56 s

    “Two ladies, two gents, then the children: two boys, two girls.”
    Marathi

    … दोन लेडीज. दोन जेंट्स. चिल्ड्रन … मुलं दोन मुली दोन.

    Every passenger type has its own box, filled one at a time.

  • Repeat and refundsGroup booking, 25–56 s

    “Repeat repeats the previous ticket. Press that option and the money is refunded.”
    Marathi

    … रिपीट म्हणजे मागं ते रिपीट आहे … ते पैसे परत रिफंड होतात.

    Recovery exists, but sits behind buttons whose names don’t say what they do.

  • CancellingFunction screen, 11 s

    “Press Not for Sale. That cancels it, because the ticket wasn’t processed.”
    Marathi

    … नॉट फॉर सेल दाबणार … ते कॅन्सल होतं.

    Cancelling a ticket lives in a different menu from the Cancel button.

What he said, and what I saw

TaskHe saidI saw
Finding a stop“There’s a search option.”He scrolled for every destination I watched him issue.
Boarding stop“You set it yourself.”He changed it by hand while the bus moved.
Passenger count“Each type goes in its own box.”Each box took two taps: open it, then pick a number.
Paying“Cash or UPI, whatever they ask.”Cash and the machine fought for the same hand.
The screen“It works.”Glare on the pouch, and some taps had to be repeated.
  • Search existed, but he scrolled. Typing on a shaking bus through a pouch is slower than scrolling.
  • The boarding stop was set by hand, even though the bus is tracked by GPS.
  • Taps missed. The pouch made some touches fail, so he tapped again.

The problem: one ticket, eight steps.

I filmed a full ticket from the form to the printer. Every step below is from that recording.

Open the form
01Open the formBoarding is set by hand.
Find the stop
02Find the stopScroll a long list.
Stop set
03Stop setThe fare still reads ₹0.
Pick a box
04Pick a boxGents, ladies, boys or girls.
Choose a number
05Choose a numberFrom a pop-up, per box.
Fare appears
06Fare appearsOnly now.
Pay by UPI
07Pay by UPIShow the QR and wait.
Print
08PrintThe ticket prints.

The UPI back-loop

Tapping UPI skipped the preview. Back went round in a circle.

  1. Tap UPI on the form.1Tap UPI on the form.
  2. The QR opens, skipping the preview.2The QR opens, skipping the preview.
  3. Back opens the preview it skipped.3Back opens the preview it skipped.
  4. Back again returns to the form.4Back again returns to the form.

So in my flow, the QR only opens after Review, and Back always goes one step back.

A button audit

Annotated photo of today's ticket screen
ButtonWhat it actually does
PrintThe main action, but it sits bottom-left. Cancel takes the thumb’s spot on the right.
CancelClears the form. Actually cancelling a ticket is Not for Sale, in another menu.
UPIJumps straight to the QR and skips the preview. Back then loops.
RepeatRefills the last ticket’s stop and counts.
PassCreates a new bus pass: ID, pass type, Male or Female, then Print.
+ beside ChildUnclear: a new concession, one more child, or one more of both?

What I took from it.

How might we

Help conductors issue routine tickets with one thumb, even as the bus moves and jolts?

The machine was already digital. The time went into scrolling, repeated taps and backtracking.

Four rules for every screen

  1. EnvironmentTaps, not typing

    The bus shakes and the pouch dulls every touch. Anything typed becomes a tap on a list.

  2. HierarchySignal before noise

    Stop, counts and fare first. Everything rare waits one tap deeper.

  3. ReachThe main action under the thumb

    Review and Print sit bottom-right. Clear sits where a slip costs little.

  4. FeedbackThe machine answers every tap

    Numbers change on the tap. The printer and a short buzz confirm a ticket.

Assumptions I designed for

DeviceAndroid machine with printer and GPS. The pouch stays on. Right thumb first.
LanguageOne language per screen, switchable for the whole app, stop names included.
PaymentsCash prints offline and syncs later. UPI prints only once paid.
Group sizePMPML allows up to 5 per passenger type on one ticket.
ScopeIn: routine tickets, payment, printing, errors. Out: route setup, reports, closing a trip.

Ideation: three problems, sketched first.

I split the screen into three problems and sketched each on paper before opening Figma. Every idea below was tried; most were dropped for a reason.

1Destination

Boarding was changed by hand at every stop, and the list ran past 15 names.

Destination sketch 1Destination sketch 2
  • KeptGPS fills the boarding stopThe bus is already tracked. Both stops stay editable.
  • RefinedFive nearby stops, then threeThree fit without scrolling or turning the screen into boxes.
  • KeptStops grouped by numberRanges like 08–12 jump straight to the right block.
  • DroppedVoice destinationConductors already ask “where?”, but bus noise and local names break recognition.
  • DroppedSearch firstTyping through a pouch on a shaking bus is slow.

Chosen: GPS boarding, three nearby stops and a list grouped by stop number.

2Passenger counts

Each count took two taps and showed nothing until the pop-up closed.

Passenger counts sketch 1Passenger counts sketch 2Passenger counts sketch 3
  • Kept+ and − on every boxOne tap per passenger, with the number right there.
  • KeptTap the number for a padQuicker for groups: two taps to jump straight to 4.
  • DroppedSwipe to copy a countOn a moving bus, a swipe reads as a scroll.
  • DroppedAdult and Child as tabsA tab hides the other count.
  • DroppedA / C / S lettersMore labels to decode at a glance.

Chosen: Visible + and − for small changes, a pad for bigger groups. Progressive disclosure.

3Buttons and payment

UPI skipped the preview, Back looped, and the + beside Child could mean three things.

Buttons and payment sketch 1Buttons and payment sketch 2Buttons and payment sketch 3
  • KeptReview before paymentReview moves under the thumb. The QR opens only after it.
  • KeptPlain labelsCancel becomes Clear. Pass becomes New pass.
  • RefinedConcessions get a tab“+ Add another type” replaces the mystery +.
  • DroppedTicket type as a dropdownEach choice changed the form below it and made the screen scroll.

Chosen: Review before payment, plain labels and a separate concession tab.

From paper to wireframes

First layout
v1First layout+ and − counts. Print still bottom-left.
Nearby stops
v2Nearby stopsThree suggestions skip most trips to the list.
Concession inline
v3Concession inlineExtra fields made the screen scroll.
Final structure
v4Final structureConcessions moved to their own tab.

Try it: print a real ticket.

Before the final screens, here’s the flow working. Pick the stop, add passengers, review and pay. The ticket prints out of the top, like on the machine.

Try it

Issue the brief’s ticket.

One man, one woman and one boy to Hadapsar, paid in cash. Tap the machine like a conductor would.

  • Tap Hadapsar
  • + one man and one woman (adult)
  • + one boy (Men, child)
  • Review, then take cash and print
0taps
–last ticket

Fares are illustrative. Once printed, drag the ticket to tear it off, or tap Clear.

PMPMLPune Mahanagar ParivahanMahamandal Ltd.

Issue ticket

From07 Loni KalbhorGPS

To08 Camp

Later stops

AdultChildMenWomenOther

The solution: six taps from stop to print.

The same ticket as the brief: one man, one woman and one boy to Hadapsar, paid in cash.

Choose the stop
1 tapChoose the stopTap Hadapsar. GPS already filled the boarding stop.
Add passengers
4 tapsAdd passengers+ man, + woman, + boy, then Review.
Take cash and print
1 tapTake cash and printThe form resets for the next passenger.

1+4+1=6 tapsNo typing, no scrolling, no pop-ups to dismiss.

Paid by UPI instead

Choose UPI
ProposedChoose UPIThe fare is already checked.
Show the QR
ProposedShow the QRThe passenger scans to pay ₹50.
Waiting for payment
ProposedWaiting for paymentCash stays one tap away.
Paid
ProposedPaidThe ticket prints and the form resets.

A pending payment never prints a ticket, matching what the conductor told me. Cash stays one tap away the whole time.

Open the Figma prototype

Reach and readability.

One home screen. Anything rarer slides up from the bottom and returns to the form, so the conductor is never more than two steps from it.

Counts under the thumb
ProposedCounts under the thumbFrequent controls sit low on the screen.
Bigger groups
ProposedBigger groupsTap a count, pick 1 to 5.
Any other stop
ProposedAny other stopJump by number range.
Mixed group
ProposedMixed groupEach tab keeps its own count.
New pass
ProposedNew passPick a type, enter the ID.

Labels that say what they do

BeforeAfterWhy
AlightingToThe word conductors say out loud.
Normal-Pass: A:0 C:02 adult, 1 childReadable without decoding.
CancelClearIt clears the form. It never cancelled anything.
Show ticketReview ticketSays what happens next.
PassNew passIt creates one. It doesn’t check one.

Readable through glare

Today's screen photographed outdoors in sunlight
Today, photographed outdoors
Proposed screen with the same glare applied
Proposed, same glare simulated
  • Contrast beats colour. Near-black on white, 18.4:1 for stop names. Pale tints fade first.
  • Size beats brightness. 18 px semibold stops, 20 px bold counts and fare.
  • Never colour alone. Every status pairs an icon with words.

Feedback and errors.

Taps only, no swipes: on a moving bus a swipe becomes a mistake. Every tap shows or buzzes a result.

Count updated
ProposedCount updatedThe number and fare change on the tap.
Clear, with Undo
ProposedClear, with UndoUndo stays for 5 seconds.
Printed, ready again
ProposedPrinted, ready againNo success screen. The paper and a short buzz are the confirmation.

When something goes wrong

Problems slide up over the current screen with one line and the next step. The ticket in progress is never lost.

UPI not received
Edge caseUPI not receivedAfter 60 seconds: take cash, or keep waiting.
Paid, not printed
Edge casePaid, not printed₹60 received. Print it again.
Out of paper
Edge caseOut of paperLoad a new roll and try again.
No GPS
Edge caseNo GPSPick the boarding stop from the list.

A first check, and what I learned.

My grandmother trying the prototype on a phone

I couldn’t get back to the depot, so my grandmother, 71, tried the prototype on a phone. She had never used a ticket machine.

Under 4sto add 1 man, 1 woman and 1 boy and reach ReviewShe understood the counts and labels first time.

What it doesn’t show: she sat at home and used two hands. One thumb, a moving bus and full sun are still untested.

  1. Watch, then listen.

    He told me search existed. I never once saw him use it. The gap between the two shaped the stop list.

  2. The environment is a user too.

    The pouch, the glare and the moving aisle ruled out voice, swipes and typing before any screen did.

  3. Labels are design.

    Renaming Cancel to Clear and Pass to New pass fixed problems no layout could.

Inside the bus on my field visit

What I’d test next

  1. Time the flow on a real machine, one-handed, on a moving bus.
  2. Read the screen at midday through the pouch. My glare test is simulated.
  3. Run the error pop-ups past conductors, not just the one I interviewed.

Research, photos, sketches, screens and design decisions are my own.