Skip to content
EPF Buddy logo

Case study · 2023 — now

EPF Buddy

Three years building the digital backbone of a business people trust with their money.

From a website to a connected digital experience supporting three business verticals.

Role
Product & Digital Initiatives · Primary Technical Owner
Timeline
July 2023 – Present
Collaboration
Directly with the Founder and business team
Scope
Product thinking · Research · UX · Content · Engineering · Integrations · Analytics · SEO
Platform
epfbuddy.com

Business-reported, aggregate results

1,300+
customers served
1,100+
PF claims settled
₹150 crore+
in PF claims settled

These are the business's aggregate results, not metrics attributed solely to my website work.

EPF Buddy homepage hero with the headline “Withdraw Your EPF Money”, a Book a Consultation button and floating claim-status cards
Fig. 01The EPF Buddy homepage: positioning, proof and the consultation path, all in the first screen.

EPF Buddy is a Mumbai-based provident fund consultancy helping Indian professionals and NRIs resolve complicated EPF problems. Since July 2023, I've been the primary technical owner of its digital presence, working directly with the founder to build, operate and evolve the systems through which customers discover the business, understand its services and engage with the team.

What started as website development gradually became something much broader: designing customer journeys, building a paid consultation system, solving real-world booking failures, developing new business verticals and translating unfamiliar markets into digital products.

This is the story of that evolution.

01

The business behind the website

EPF Buddy helps people recover their Employees' Provident Fund (EPF) money when the process becomes difficult.

For many Indian employees, their provident fund is one of their most important financial assets. Yet accessing it isn't always straightforward.

Claims get rejected because of KYC mismatches, incorrect joining or exit dates, missing employer records and other administrative problems. People accumulate multiple Universal Account Numbers (UANs), old balances become difficult to access, and grievance requests sometimes close without resolving the actual issue.

Some customers arrive after years of unsuccessful attempts. Others have already approached multiple agents without finding a solution.

EPF Buddy operates as a human-expert-led consultancy. The team investigates the underlying problem, guides customers through the necessary formal processes and, where required, takes on the work of resolving their cases.

The website therefore has a job beyond explaining a service. It needs to make a complicated and often frustrating subject understandable, establish credibility with people who may already be sceptical, and help them take the next step with confidence.

02

My role: more than development

I've worked directly with EPF Buddy's founder, Nikhil Gite, since July 2023.

Being the primary technical person meant there wasn't a separate engineering team translating product decisions into implementation. I was responsible for taking requirements, understanding the business context, making technical and experience decisions, building the systems and maintaining them after launch.

My involvement gradually expanded across several areas.

01

Product & experience

  • Understanding customer problems and business requirements.
  • Structuring website information architecture and customer journeys.
  • Developing positioning and content for new business offerings.
  • Making design decisions based on customer feedback and business needs.

02

Engineering

  • Building and maintaining the website.
  • Implementing responsive interfaces and reusable components.
  • Developing backend integrations and server-side functionality.
  • Integrating payments, scheduling and communication systems.
  • Handling production issues and improving reliability.

03

Growth & discoverability

  • Building service-specific and location-specific pages.
  • Implementing technical SEO and structured data.
  • Structuring content for search engines and AI answer engines.
  • Using analytics and feedback to inform website iterations.

The business direction, domain expertise and operational delivery remained with the founder and team. My responsibility was to turn those requirements and opportunities into working digital experiences.

03

The evolution: three years, three stages

This project didn't begin with a complete product specification. The requirements changed as the business grew, customers used the website and new opportunities emerged.

  1. Stage 01

    2023 – 2025

    Establishing the digital presence

    My initial involvement centred on EPF Buddy's website and digital presence. The priority was creating a place where someone unfamiliar with the business could understand what EPF Buddy did, identify the service relevant to their situation and reach the team.

    As the business developed, the website grew beyond a basic collection of service pages. I worked on its structure, content, design and technical foundation, with increasing attention to the specific problems customers were searching for.

    This meant moving away from relying entirely on broad descriptions such as PF withdrawal assistance and building more targeted experiences around rejected claims, multiple UANs, transfers and other situations. The website gradually became an important part of how the business presented its expertise and acquired customers.

  2. Stage 02

    2025 – January 2026

    Turning consultations into a product

    One important change came in 2025, when we introduced paid consultations. The idea was straightforward: before committing to a larger service engagement, customers could speak to an EPF expert, understand their situation and receive a clear action plan.

    The consultation was a 30-minute session priced at ₹999 plus GST.

    Initially, booking happened through an external experience. Customers discovered EPF Buddy on the website but were taken elsewhere to complete their appointment booking. That worked as an initial arrangement, but the experience felt disconnected.

    In January 2026, I rebuilt the website as a standalone React-based application, with its own consultation booking interface and customer journey. Instead of sending customers outside the website, the experience now allowed them to select a date and time, enter their details and complete payment within the website's own flow.

    This was more than a visual redesign. It brought the customer-facing booking experience into the digital product I was responsible for.

    Before

    Booking lived in an external scheduler.

    Customers discovered EPF Buddy here, then left the site to complete the appointment.

    After

    Booking became part of the product.

    Date, details and payment now happen inside the site's own flow.

    EPF Buddy consultation page with date selection, time slots, and a ₹999 plus GST booking panel
    Fig. 02The consultation experience, rebuilt as part of the site in January 2026. Live slots, details and payment inside one flow.

    The problem we didn't anticipate

    Two customers. One slot.

    Attempt A — secures the slot
    Attempt B — must be refused

    Once the booking experience was being used, we encountered a problem that wasn't obvious during development.

    There were instances where customers paid for consultations, but the resulting booking wasn't reliably reflected across the parties involved. The problem became particularly important when multiple customers attempted to book around the same available slot.

    The interface could show availability, but that didn't guarantee that the same slot wouldn't be claimed by competing booking attempts. For a paid service, this creates a particularly bad experience: someone can part with their money without receiving the appointment they expected.

    Changing the booking approach

    I revisited how slot availability and booking ownership were handled. The solution was to enforce a first-come, first-served approach: an available slot could be secured by only one customer. Once successfully claimed, it should no longer be available to another customer.

    This changed the way I thought about the booking feature. Initially, the problem seemed like a calendar and payment integration. In practice, it was also a problem of coordinating customer actions and maintaining a reliable booking state.

    The lesson was important: displaying an available slot and securing that slot are two different problems.

    I had to think beyond the happy path and consider what happens when real customers interact with a system at the same time.

  3. Stage 03

    August – September 2026

    Building the business's next digital verticals

    By 2026, EPF Buddy was exploring two new business opportunities beyond its original individual provident-fund consultancy.

    The founder introduced an insurance and protection offering for individuals and families, along with a separate employer-focused compliance practice. Both projects began in August 2026 and were completed by September.

    These were particularly interesting projects because they involved different kinds of product work. One required understanding a new consumer market and developing its positioning. The other required translating complex business and statutory requirements into an understandable B2B experience.

04

Building a reliable consultation and payment system

The consultation flow is one of the most technically involved parts of the project. A customer needs to select a genuinely available slot, pay for the consultation and receive a confirmed appointment with a Zoom meeting link.

The experience connects three independent services:

  • Razorpay — payment processing.
  • Zoho Bookings — appointment availability and creation.
  • Zoom — the actual consultation.

None of these services shares the application's internal transaction state automatically. The website needs to coordinate the sequence.

The consultation transaction

Fig. 03

Customer browserselects a date · pays
Next.js serverorder · verify · book
Razorpay · Zoho · Zoomcheckout · slots · meeting
Four systems, one transaction. The webhook exists because the browser request is not a reliable record of payment.
01

Live slot availability

Zoho Bookings

The customer selects a date. The application requests available slots from the Zoho Bookings API rather than displaying hardcoded availability.

02

Server-side order creation

Razorpay

After the customer selects a slot and enters their details, the server creates a Razorpay order. The amount and payment details are controlled server-side, rather than trusted from the browser.

03

Hosted checkout

Razorpay

Razorpay's hosted checkout handles the actual payment. The website doesn't directly collect or store card details.

04

Payment verification

Server

After checkout, the server verifies Razorpay's payment signature before trusting the payment result.

05

Appointment creation

Zoho + Zoom

Once payment verification succeeds, the server creates the appointment through Zoho Bookings. Zoho then handles the appointment confirmation and Zoom meeting details.

06

Webhook confirmation

Webhook

A Razorpay webhook provides a second payment-confirmation path, helping reconcile transactions if the original browser request is interrupted.

Payment takenNo appointment

The payment went through. The appointment didn't.

One of the most important engineering considerations is what happens when Razorpay successfully processes payment but Zoho fails to create the appointment. A normal success-or-error approach isn't sufficient here.

The customer has paid. Returning a generic failure message would leave them uncertain about whether their money was taken and whether their appointment exists.

Failure pathWhat happens when Zoho fails

I implemented a retry path for appointment creation. If the booking still cannot be created, the experience communicates what happened and provides a direct contact channel rather than leaving the customer with an ambiguous error. The webhook acts as an additional reconciliation mechanism.

A payment is not the end of the journey. A confirmed appointment is.

This was an important shift in how I approached backend development. I began thinking about the entire customer transaction rather than treating each API integration as an isolated feature.

05Vertical 01 · Protect

Protect: building a new consumer product from research

August – September 2026

epfbuddy.com/protect

Protect was one of the most interesting parts of the project because it took me into a market I hadn't previously worked in.

When Nikhil introduced the idea of expanding into insurance, he first helped me understand the Indian insurance market: why many people avoid insurance, why they distrust sales agents, how policy language creates confusion and why people sometimes discover the limitations of their coverage only when they make a claim.

That gave me the business context. I then spent time researching the market and understanding how customers think about insurance. I didn't want to build another conventional insurance website full of policy listings, generic promises and aggressive calls to action.

I developed the positioning, content strategy, page architecture, copy and digital experience for Protect.

The central question

How do you make people understand the importance of protection before asking them to buy it?

The positioning decision

Rather than presenting insurance as another product to purchase, I approached it as a financial-protection problem. The experience addresses questions people actually have:

  1. 01Will my family have enough money if something happens to me?
  2. 02Does my employer-provided health insurance actually cover enough?
  3. 03What do waiting periods and exclusions mean?
  4. 04What happens if an insurance company rejects my claim?
  5. 05How can I tell whether an insurance recommendation is actually suitable?

This allowed the website to educate before converting.

Three different customer journeys

I structured Protect around three distinct needs, each with its own dedicated experience.

Term insurance — understanding the protection gap

The starting point wasn't a list of insurance plans. It was the question of how much financial protection a family would actually need.

  • An educational approach built around household expenses, EPF savings, EPS family pension and EDLI benefits.
  • These existing benefits show how much of a family's future financial requirement remains uncovered.
  • A deliberate decision to avoid relying on generic salary multiples as the entire explanation.
  • A worked example shows how the different components can be considered when estimating a protection gap.
  • The goal is to explain the reasoning behind an insurance requirement, not to recommend a policy.
View the experience

Health insurance — making the fine print understandable

Health insurance is often evaluated through premiums and coverage amounts, but customers can discover important limitations only when they make a claim. I structured this page around four practical concerns:

  • Room-rent limits.
  • Disease-specific sub-limits.
  • Disclosure requirements.
  • Waiting periods.

The content focuses on what customers need to understand before choosing a policy. Instead of simply listing benefits, it explains the situations in which coverage may not work as someone expects.

View the experience

Rejected insurance claims — explaining the options

This page needed a different journey entirely. Someone whose insurance claim has already been rejected isn't looking for a policy comparison. They're trying to understand whether the decision can be challenged.

  • An initial assessment using two documents: the rejection letter and the policy schedule.
  • The page then explains the formal escalation pathway: the insurer's grievance cell.
  • IRDAI's Bima Bharosa portal.
  • The Insurance Ombudsman.
  • An honest assessment of whether there is a legitimate basis for escalation.

The page deliberately avoids promising that every rejected claim can be overturned. The service is about assessing the situation honestly, explaining the available options and helping where there is a legitimate basis for escalation.

View the experience

Fig. 04The three journeys, live

06Vertical 02 · Organizations

Organizations: designing for a completely different customer

August – September 2026

epfbuddy.com/organizations
EPF Buddy Organizations page, headlined 'Compliance that doesn't go wrong,' with employer compliance states
Fig. 05Organizations — the employer-side practice, from registrations and POSH to a monthly compliance calendar.

The second expansion targeted employers. Until this point, the website primarily addressed individuals trying to resolve their own provident-fund problems. Organizations introduced a different customer with a different set of questions.

An employee wants to know

Why was my PF claim rejected?

An employer wants to know

Are we compliant, which registrations apply, what deadlines matter, and who can take responsibility for the ongoing work?

Nikhil provided the business requirements, statutory information, employee thresholds and service details. I translated that information into the website's information architecture, content and customer journey.

Organizing information around company size

One of the central decisions was to explain obligations through employee headcount. Rather than asking visitors to understand a long list of statutory services, the experience introduces three stages:

  1. 01

    1–9 employees

  2. 02

    10+ employees

  3. 03

    20+ employees

The idea is to help an employer understand how their obligations may change as the organization grows, making the information more relevant to the visitor's actual situation.

Separating registrations from ongoing compliance

Registrations

  • EPF and ESIC
  • Professional Tax
  • Labour Welfare Fund
  • Shop and Establishment
  • CLRA
  • BOCW

Ongoing compliance

  • Statutory compliance
  • POSH compliance
  • Labour-law compliance

This distinction matters because registering an organization and maintaining its ongoing statutory obligations are fundamentally different responsibilities. It also makes the business's service offering easier to understand.

Turning compliance into a calendar

  • EPF ECR
  • ESIC
  • TDS on salaries
  • Professional Tax
  • Other applicable requirements

Instead of simply saying that EPF Buddy handles compliance, the page illustrates what the work actually looks like throughout a typical month.

The purpose is to communicate that compliance is an ongoing operational responsibility, not a one-time registration exercise.

Designing a different conversion funnel

The individual consultation experience asks customers to select a time and pay. That isn't necessarily the right first step for an employer with several locations, different headcounts and multiple compliance requirements.

For Organizations, I designed a callback enquiry journey that collects:

  • Contact details
  • Company name
  • Work email
  • Employee headcount
  • States of operation
  • Specific compliance requirements

This gives the team useful context before discussing the engagement. The business can then understand the organization's requirements and scope an appropriate service, including ongoing monthly arrangements.

07

Building trust through evidence

Trust is a particularly important part of EPF Buddy's business. Someone approaching a provident-fund consultancy may already have experienced rejected claims, confusing government processes or unsuccessful attempts with other agents. Generic marketing promises aren't enough.

I worked on structuring the website around documented recoveries and actual business evidence.

Real customer recoveries

  • ₹84 lakh

    recovered after a claim had been stuck for three years.

  • ₹38.4 lakh

    recovered for a retiring director with four UANs across six employers.

  • 8 years

    a case involving 189 emails and five unsuccessful grievances.

  • NRI

    a case handled entirely remotely.

  • A decade

    an old pension case.

These stories give visitors something concrete to evaluate. Instead of asking customers to trust a generic claim of expertise, the website shows the kinds of problems the team has actually worked on.

Honest numbers over impressive-looking numbers

I would rather display a number that can be supported than make a page look more impressive with information that doesn't exist.

One decision I particularly remember involved the statistics displayed on the city-specific pages. Earlier versions implied city-level customer numbers and success rates that weren't actually tracked by the business.

I replaced these with the real nationwide figures. The pages became less specific in their marketing claims, but more accurate.

Building for search and answer engines

I also expanded the website's content architecture to address the specific questions people search for.

City pages
13
Service pages
Dedicated
Problem pages
Rejected · UAN · NRI
Structured data
Business · service · FAQ
  • Thirteen city-specific landing pages.
  • Dedicated service pages.
  • Problem-specific pages for rejected claims, multiple UANs and NRI customers.
  • Structured data for relevant business, service and FAQ information.
  • Clearly structured definitions, key takeaways and process steps.

The intention was to make important explanations accessible not only to traditional search engines but also to AI answer engines that extract information to answer user questions. The website needed to be useful even when someone discovered one individual problem page without knowing the EPF Buddy brand beforehand.

08

The engineering behind the platform

The website is a production application, not just a collection of static marketing pages. I have worked across the frontend, backend integrations, deployment and ongoing maintenance.

Technology stack

Framework
Next.js
Frontend
React
Language
TypeScript
Styling
Tailwind CSS v4
Hosting
Vercel
Payments
Razorpay
Scheduling
Zoho Bookings API
Email
Nodemailer / SMTP
Video
Zoom via Zoho
Analytics
Google Analytics 4
Monitoring
Vercel Analytics & Speed Insights
SEO
Metadata, structured data, sitemap, robots

Where authority lives

Server-controlled

Browser · untrusted

  • Selects a slot
  • Enters customer details
  • Completes hosted checkout

Server · authority

  • Creates the Razorpay order
  • Verifies the payment signature
  • Creates the Zoho appointment

External services

  • Razorpay · payment
  • Zoho Bookings · availability
  • Zoom · the consultation
Amounts and booking decisions never come from the browser. The server is the only authority on what was paid and what was booked.

Custom implementation

I used custom Tailwind components rather than relying on a prebuilt component library. This gave me control over the website's visual identity, responsive layouts and interactions across the different service experiences.

Server-side integrations

The consultation flow uses dedicated server-side endpoints for Razorpay order creation, payment verification, Zoho availability and appointment creation. The contact form uses Next.js Server Actions and Nodemailer.

The objective was to keep sensitive operations server-controlled and prevent the browser from being trusted with payment or booking decisions.

ImplementationThe server-side integration map
  • Razorpay order creation — server endpoint.
  • Payment verification — server endpoint.
  • Zoho availability — server endpoint.
  • Appointment creation — server endpoint.
  • Contact form — Next.js Server Actions with Nodemailer.

The browser never decides what was paid or what was booked. It can request; the server decides.

Production responsibility

Because I remained the primary technical owner, building the feature was only one part of the job. I also had to maintain the application, diagnose integration problems, update the website as business requirements changed and make decisions about what should be improved next.

That ongoing responsibility is an important part of this project.

09

Decisions that shaped the product

Looking back, several decisions had a bigger influence on the product than individual UI components.

Bringing consultation booking into the website

Removed the disconnected external booking experience.

First-come, first-served slot ownership

Addressed competing booking attempts and unreliable booking states.

Server-side payment verification

Prevented the browser from being the authority on successful payment.

Webhook backup

Added another path for payment confirmation and reconciliation.

Documented customer recoveries

Made business credibility visible rather than relying on generic promises.

Nationwide statistics instead of invented city figures

Prioritized factual accuracy over marketing appeal.

A different Protect conversion journey

Matched a free advisory review to the insurance customer's needs.

A separate Organizations experience

Addressed the different requirements of employer-side customers.

Custom components

Maintained control over the brand's visual and interaction language.

The common thread is that I tried to solve the actual problem behind each feature rather than treating implementation as the end goal.

10

Results and impact

EPF Buddy's digital presence has evolved alongside a business that reports:

At the business level

1,300+
customers served
1,100+
PF claims settled
₹150 crore+
in PF claims settled

Beyond these business-level figures, the work has produced several concrete digital capabilities:

  • A rebuilt website with its own consultation experience.
  • A paid booking journey connecting Razorpay, Zoho Bookings and Zoom.
  • Server-side payment verification and webhook confirmation.
  • A first-come, first-served booking approach.
  • Thirteen city-specific landing pages.
  • Dedicated problem and service pages.
  • A documented, recovery-led trust experience.
  • A complete insurance and protection vertical with three specialised journeys.
  • A separate employer-focused compliance experience.
  • A shared digital foundation supporting three different service audiences.

I don't have a verified attribution model that isolates how many customers or recoveries came specifically from my website work. The business figures establish the scale of the environment in which I worked; the technical capabilities and shipped experiences establish my contribution.

11

What I would do differently today

Working on EPF Buddy has given me a much better understanding of what it means to build something that real people depend on. If I were approaching the project again, I'd invest earlier in a few things.

  1. 01

    Better transaction observability

    For a flow involving payments and external appointments, I'd want a centralised transaction record with explicit states for slot selection, order creation, payment, verification, booking creation and reconciliation. This would make failures easier to investigate and measure.

  2. 02

    More systematic funnel measurement

    I'd define conversion events and funnel reporting before launching major changes, so decisions could be evaluated against reliable baselines instead of relying mainly on qualitative feedback.

  3. 03

    More structured customer research

    I'd introduce regular customer interviews and a documented feedback process, separating recurring customer problems from isolated requests.

  4. 04

    A more scalable content architecture

    As the number of services and business verticals grows, I'd invest in a stronger shared content model and design system while allowing each vertical to maintain its own experience.

  5. 05

    Clearer operational feedback loops

    I'd connect website enquiries, consultations and service outcomes more systematically, allowing the business to understand which digital journeys bring in the most relevant customers.

These aren't reasons the project failed. They're opportunities I've become better equipped to recognize after working on it in production.

12

What three years of ownership taught me

EPF Buddy has probably taught me more about building products than any single academic project could. I'm studying Artificial Intelligence and Data Science, and much of my engineering education happens alongside building and maintaining real applications.

This project pushed me to learn things that don't always appear in a classroom.

I learned that product decisions don't arrive as perfectly defined requirements. Sometimes a founder explains a market opportunity, and the job is to understand it well enough to decide how a customer should experience it.

I learned that good UX isn't limited to visual polish.

A beautifully designed booking page is still a bad product if two customers can end up believing they own the same appointment.

I learned that integrations are not just about connecting APIs. They require thinking about failure, trust, communication and what the customer experiences when something goes wrong.

I also learned that different customers need different products, even when they're interacting with the same business. The person trying to withdraw an old PF balance, the family evaluating its insurance protection and the HR manager responsible for statutory compliance don't need the same journey.

Most importantly, I learned to take responsibility beyond the point where code is deployed. There is a difference between building something that works in a demonstration and building something that people depend on.

EPF Buddy has been an opportunity to experience that difference firsthand.

Designed, developed and continuously evolved by Soham Mayekar, working directly with the EPF Buddy founder and team.

“We’re here to put a dent in the universe. Otherwise, why else even be here?”
Steve Jobs

© 2026 Soham Mayekar · Made in Mumbai.