Voucher Query: Self-Service Search Across 2M+ Records

This is part 7 of the Musaned series. Part 6 laid out the integration playbook this feature is built on.

Every internal platform has one feature that changes how the organization sees it. For Musaned, that was Voucher Query.

The before picture

Vouchers distributed to third-party sellers generate an enormous paper trail — upwards of 2 million records living in Oracle. And the business team needed answers from that dataset constantly: has this voucher been used? Which batch did it belong to? What happened to the vouchers sent to this seller?

Before Musaned, every one of those questions was a ticket. A business person asked someone technical, the someone technical ran a query when they had time, and the answer came back hours or days later — often after the moment that needed it had passed. Nobody in that chain was doing anything wrong. The data was simply locked behind a skill set, and the people with the questions didn't have it.

The after picture

Voucher Query is a screen in Musaned where authorized business users search the voucher dataset themselves — by voucher number, batch, seller, status, date range — and get answers in seconds. No ticket. No waiting. No engineer in the loop. The strict RBAC from part 3 decides who can search and who can export, and every query is logged.

Under the hood it stands on everything the previous posts described: the Oracle service class owns the connection; the heavy sweeps go through the SQL*Plus path from part 4 when an operation touches a large slice of those 2M+ records; Redis absorbs the repeated lookups; and anything long-running rides the ordered queues from part 6 so an ambitious search never slows the rest of the platform.

What actually made it good

The engineering was necessary but not sufficient. Three product decisions mattered as much as the architecture:

  • Speak the business's language. The search fields are the words the voucher team actually uses — not column names from the Oracle schema. The translation layer is the feature.

  • Make the common case instant and the heavy case honest. A single-voucher lookup returns immediately. A sweep across a huge range tells you it's working and delivers when ready — rather than pretending everything is instant and timing out on the worst cases.

  • Export is a first-class citizen. The real workflow rarely ends at the screen; it ends in a spreadsheet on someone's desk. Fighting that is pointless; supporting it well (with its own permission) is what self-service means.

The trust dividend

The day the business team ran their own queries was the day Musaned stopped being "that tool the engineer built" and became infrastructure. Requests for new features stopped needing justification meetings — stakeholders had seen what the platform could do with their own eyes, on their own questions. If you're building an internal platform and wondering which feature to invest in first, my answer is: the one that removes a human bottleneck between people and data they already have the right to see.

Next in the series: the BPM story — two weeks, no requirements document, and a launch in one.

Leave a Reply

Your email address will not be published.

Navigation

Socials