Triumph over health insurance

How I fought with my health insurance and won

The Betrayal

I held a family floater health insurance policy of five lakhs with a prominent standalone insurer which is not ICICI or HDFC, having paid multiple years of premium upfront to buy peace of mind. That peace shattered when my wife’s cancer diagnosis arrived. Her treatment exhausted the limits of my corporate coverage, leaving me no choice but to tap into our personal policy for the last 1% expense, which was then nearing the end of its first year.

Our ordeal began on the very morning of her scheduled chemotherapy. The cashless pre-authorization, dragged out over days of silence, was rejected on the day of chemotherapy. The reason? Benign lumps, they insisted, carried a mandatory two-year waiting period. It was a baffling assertion. Malignancy required only a thirty-day waiting clause, and the hospital had made it abundantly clear that this was an active oncological procedure. When I confronted their customer desk, they claimed the hospital had omitted the biopsy report, choosing to interpret that administrative oversight as definitive proof of a benign condition rather than requesting clarification. We scrambled, resending the biopsy and PET scans through the hospital desk, but met only the opaque machinery of indifference. Hours drained away, chemotherapy was due, and the insurer remained noncommittal. I paid the bills out of my own pocket and had the hospital cancel the cashless request.

Shifting to reimbursement only invited deeper hostility. I uploaded every document to their portal, only to receive a demand to dispatch the entire paper trail via Speed Post. When I questioned why digital scans were insufficient for an un-attested filing, the agent weakly replied that the web uploads were unclear—a transparent ploy to wear me down through friction.

I sent the parcel anyway, but the machine was already closing in. That very afternoon, an investigator arrived at our doorstep. He photographed us, produced an exhaustive questionnaire about the timeline of detection, and demanded our medical archives. In earnest faith, I handed over our complete household file. He methodically photographed every sheet, pocketed his phone, and vanished.

Two weeks slipped by in total silence. Then, at 5:25am on a quiet morning, a text message arrived: “We regret that your claim ID xxx is not payable as per policy T&C. Details sent to your registered email ID. For any query, call @ 1860 500 xxxx”. The formal email declared we had deliberately concealed a pre-existing case of epilepsy. The weapon they used had come from the very folder I had willingly opened to their agent.

Years prior, my wife had experienced brief fainting spells under exertion. A general physician had tentatively jotted down suspected epilepsy on a referral slip, sending her to a neurologist. That specialist had conducted a sleep EEG, found the brain signals entirely normal, attributed the fainting to sudden drops in oxygen, and prescribed compression socks rather than anti-epileptic medication. The clearance was right there in the same file, yet the investigator had captured the suspicion and suppressed the exoneration. Worse still, the company offered no appeal route, barred further review, and swiftly followed up with an email terminating our entire policy. For a family now navigating cancer, an uninsurable void had opened beneath our feet.

Wit’s End

I found myself marooned in disbelief. Their smartphone application showed nothing, and their helpline consumed one rupee every minute merely to keep me stranded on hold. In desperation, I reached out to the team at Labour Law Advisor (https://web.lla.in/), who mapped out the legal recourse: petition the company’s Grievance Redressal Officer, wait the mandated thirty days, and then carry the fight to the Insurance Ombudsman. They also steered me toward Insurance Samadhan (https://www.insurancesamadhan.com/), whose practical guidance proved invaluable throughout the administrative labyrinth that lay ahead.

The Fight

Predictably, the Grievance Redressal Officer merely reaffirmed the rejection, rubber-stamping the bad faith. With that formal dead-end in hand, I logged into the Council for Insurance Ombudsmen portal (https://cioins.co.in/Complaint/Online) and registered a comprehensive dispute.

Weeks blurred into months until a WebEx hearing notice landed in my inbox. Minutes before the digital courtroom convened, the insurer’s legal department sent a frantic joint email to the Ombudsman and me, offering an out-of-court settlement to pay claimed amount of around thirty thousands. I accepted on the record, but tethered my consent to an explicit condition: full reinstatement of the terminated policy. The money arrived, but the insurer immediately reneged on restoring our cover. I returned to the Ombudsman with a second complaint for wrongful termination. Faced with another impending hearing, the insurer yielded once more, and after a stubborn stream of follow-up correspondence, our original policy was restored to its rightful continuous standing.

Few Learnings

The Insurance Ombudsman remains one of the few institutional mechanisms genuinely weighted toward the individual. It requires no attorney, costs nothing to petition, and operates entirely through online hearings. It does not carry the punitive reach of a consumer court, but it cuts through corporate exhaustion tactics with remarkable speed.

When facing an insurer intent on fabricating pretexts, the only shield is an uncompromising paper trail. Never hand over raw medical records without explicitly being asked for, never accept a financial settlement that leaves your coverage dead, and above all, never mistake an insurer’s deliberate silence for final authority.

More details are here on when to choose Ombudsman vs Consumer Court – https://www.oneassure.in/insurance/insurance-updates/consumer-court-vs-ombudsman-insurance-claim-speed

My passport has gone for police verification. What’s next?

The obvious answer is that wait for the local police station to call you. However, for how long and how to track its progress? I am here to throw some light on that.

Even if you have opted for SMS and email updates, passport department seldom sends any updates. The best source of finer status updates is login into their official portal from where you filled and submitted the application. Choose the same login and select the submitted application. You will notice an option to track status.

While it is with the local police for verification, the status here will say something like – It is sent for physical verification at XYZ station, and might take around three weeks. If you live in Hyderabad’s Cyberabad area then you can also track progress on the police side from http://verifast.in/cybStatusCheck.jsp.

This will provide info if they have received the request for processing or not. In our case we got a call from Cyberabad police after two days and then they came to our home for physical verification. They simply asked for the passport application form and related docs, and of course they physically met the applicant. Next day on the same portal we got info from the same portal that it has been processed by them and the report has been sent to RPO (Regional Passport Office). It does not specify the kind of report they have sent – Clear or Adverse. Adverse is bad, and might result into application rejection.

In a day or two the status on passport site should then change to something like – Report from XYZ police is under review at the RPO and if found clear, the passport would be sent for printing.

Finally after two three days if it updates to say something like – The passport has been sent for printing, then congratulations the police had sent clear report and your passport has been approved. After few more days again the new passport number and the Speed Post tracking number should be listed. At this point of time you should also receive an SMS for the same. In total the whole process took around 10 days.

If during this entire process if it looks like the process has got stuck somewhere, schedule an appointment for enquiry at the PSK from the official passport portal. All the best!

Registering a new car in Telangana RTO in 2023

The dealer takes care of paying the RTO fees and getting a temporary number. Then they tend to handover to an agent for slot booking and getting the permanent registration number. I was asked Rs. 3000 for this. I asked around, some were asked Rs. 1500, etc. fees. I decided to do it on my own as my RTO (Kondapur RTO) was quite near to me.

Slot booking

  1. Goto https://tgtransport.net/TGCFSTONLINE/OnlineTransactions/RegSlot.aspx
  2. Enter the requested details. On entering the OTP, applicant’s details will be shown below. Submit the page to book the slot. No fees will be charged.
  3. Take a print out of the slot booking confirmation.
  4. From the dealer do collect the following documents. They usually give that to the agent, so do ask for them and positively collect it from them.
    • Form 20 (2 copies)
    • Form 21
    • Form 22 (This is provided by the car manufacturer. Do not loose this as getting a duplicate of this will be very very difficult and I was told it could take months.)
    • Insurance Certificate
    • Invoice from Dealer (You might get 2 copies of this as well. Keep one copy with you.)
    • Life Tax Receipt
    • Temporary registration certificate
    • Car price sheet (Tick the exact car model bought by you. RTO uses this to cross-check the life tax amount.)
  5. Along with the above you will also need.
    • Valid address proof, like Aadhaar card, passport, etc. You must carry their original and a self attested copy.
    • Pan card (Original and self attested copy)
  6. Keep a pen and a pencil with you. (Yes a pencil too. Must have.)
  7. Ask your dealer or check online to figure out where your car’s stamped VIN is located. It should be etched on some metal, not merely printed.

Visit the RTO

  1. On your chosen day visit the RTO. You would have chosen a date and time. Ignore the time and just go early as it is going to take quite a while. And do take your car which is to be registered along with you.
  2. Park the car and goto counter where the new vehicle registration documents are submitted. Ask around for that. Usually there will be a board on that counter which would announce that and a list of documents to bring. In our case only four – five people were in the line and the agents were using the back door, carrying with them a thick bundle of documents of various clients. It took around 20mins here since for each person all the aforementioned documents has to be cross-checked by the RTO officer. After successfully completing this step he will hand over a small slip with application number and the fees collected. For us, weirdly it mentioned a slew of different fees on it and at the end said, money collected is zero. And surely no actual money was collected!
  3. Next is getting your picture clicked for the RC and specimen signature. This was a huuu…ge line. We thought easily it would take one or two hours. Fortunately, in my case, it was my wife’s car and for ladies there was a separate line of only two people. We were done in five minutes.
  4. Next and final is locate the hut where policemen are seated and get the car inspected by them. On both copies of Form 20’s end you will need to trace the car’s VIN number using the pencil (video). Be careful to not tear the forms in the process or move the form so much that the trace is illegible. Take the traced forms to policeman, who will verify the VIN and you are done.

Checking for status online

Periodically check on https://tgtransport.net/TGCFSTONLINE/reports/applicationstatussearch.aspx. It could take a while to be updated. It will provide details like when the application gets approved, RC gets printed and dispatched. It will also provide the India Post tracking number. The provided India Post tracking number may not work for few days after the dispatch date. Your RC will arrive at your home address, but the number plate will goto the showroom. The dealer will install that at the showroom.

I did not receive any SMS updates and the number plates arrived before the RC. You can use M-Wallet app to virtually download your RC.

Agent v/s Own

TimeCost
Via Agent5mins (on 1st window) + 5mins-120mins (on second window. You will have to get in line here) + 15mins (the policeman will come to you and the agent may or may not help you to get the trace) = 25mins-140minsRs. 1500 -Rs. 3000
Own20mins + 5-120mins + 15mins (you goto the policeman and since 90% people take help of agents, so this person will usually be sitting all alone :P) = 40mins-155minsZero

Take your pick!

Starting OnePlus Android phone when its power button is broken

I have an ancient OnePlus 6 which my son uses for watching cartoon. Recently its power button stopped working and my son drained its battery until it shutdown. Fortunately its volume buttons are still working.

For this you will need a laptop and a USB-C cable to connect the phone with the laptop.

  1. Ensure the phone is charged.
  2. Remove the cable from the phone.
  3. Press the volume down button. Keep it pressed.
  4. While keeping the button pressed insert one of the of the cable into the phone and the other end in the charger or laptop or power bank.
  5. Still keep the volume button pressed until you see something on the screen. Then release the button.
  6. You will now get into phone’s recovery menu. Some versions of One Plus and other Android phones have restart option right here. If yes then choose that and you are done. – Else continue below –
  7. In my case; in OnePlus 6; I had to choose Advanced option and within that it had “Reboot to fastboot” and “Reboot to recovery mode”. Choose “Reboot to fastboot” here. But wait!
  8. First goto your laptop and install ADB tools from Google. Choose one from the following based on your laptop’s operating system.
  9. Extract the contents of the above zip file. Now choose the “Reboot to fastboot” option on your phone. Without this you will not able to turn on or off your phone until it runs out of battery since this mode requires the use of power button to confirm the selection.
  10. Connect the phone to the laptop using the cable then go into the extracted zip file’s directory and run ./fastboot devices to confirm that your phone is detected.
  11. Finally run ./fastboot reboot this will respond with a “Ok” response and your phone will reboot into normal mode. Congrats!

RunPage tech overview: AWS Textract integration

RunPage now supports two new APIs

api.danfo.readTablesFromImageFile(ImageFile)
api.danfo.readTablesFromPdfFile(PdfFile)

As their name suggest they can convert any provided image or Pdf files and use AI to extract Danfo DataFrames from them!

Checkout below for a demo of it:

AWS Textract

The AI intelligence is provided by Amazon Web Service’s Textract service. This service accepts image and Pdf binary data and returns a whole host of meta data, like the individual words, lines etc. It can also recognise Forms and Tables, of which only the Tables recognition capability is used.

I also checked out competing product from Google – Document AI. The result from Textract were stellar. But results from preliminary tests using Document AI were not that great.

Challenges with authentication

Since the mantra of RunPage is to not send user data, like uploaded files to server-side for processing so that means the Textract API will need to be called from the browser itself. That means sharing server-side credentials. Right now the same AWS credential is used for all users, but if we leak it to the browser then enterprising users can capture those and use them elsewhere too.

RunPage solves it by getting a temporary credential before each run. The JS sandbox asks the server for a temporary short-lived temporary credential. The server gets them from AWS using AWS STS (Security Token Service) API and passes it on to the browser.

Challenges with handling PDF

RunPage uses synchronous API of Textract to analyse the images. However, that API does not support PDF files. For PDF the async version of the API is required. That version has loads of challenges.

First, it won’t accept PDF binary directly, instead it requires that we upload the PDF to S3 bucket and provide that location to the API. The API will then directly get it from the bucket. This itself is very challenging since now we have to integrate with S3 as well. Also now we need to store the PDF on a remote server, and it will stay there until we delete it from there. And, until the time it is deleted it can be accessed by other users since all share the same AWS account. A huge security issue.

The second issue is when Textract is done processing the PDF it will use AWS SNS service to push notification to RunPage server. So a deployment profile for SNS too is required, and a callback listener API on RunPage server. Also when then API is invoked it has to notify the client somehow, which will requires either Websocket or server polling. This also means that I need to store the response from AWS SNS for sometime in the DB. Too much plumbing just for an API, on top of that the additional cost of using S3 and SNS.

I thought of a long-polling trick which avoids some of these plumbing requirements on backend server side. The client makes a call to backend server for update from AWS SNS, and the backend API simply stores the Express response object in a hash-map. Since the response object has not been used to send any data yet, the request will show as pending on browser side. The timeout value can be set by client. The callback endpoint which will be triggered by AWS SNS can then lookup in that hash-map and pick the appropriate response object and directly send the reply to browser. However, this won’t work if we have more than one nodes running on backend sever side. The backend architecture uses a Nginx server Docker container which acts as reverse proxy for the NodeJs Docker container. Currently only one instance of the NodeJs container runs but the server is specifically stateless so that multiple instances of it can also be run behind load balancer.

Solution to the PDF handling challenges

My solution was to locally (that is in-browser) convert the PDF to images and then use the AWS Textract synchronous API for images.

To locally convert PDF to images I used Mozlilla’s PDF.js. The NPM package of that is called pdfjs-dist. It is a weird name, probably because the pdfjs name is already taken by some other developer.

Using that library also turned out to have its own mini challenge. The library requires that we provide it with a CanvasRenderingContext2D which we can get from <canvas> DOM. However, the sandboxed JS APIs run inside a Worker as described in my blog post – https://blog.applegrew.com/2022/07/runpage-tech-overview-js-sandboxing/. In Web Worker side we do not have DOM access. There is an experimental API called OffscreenCanvas, and browser support for that is not too great yet (in 2022). To handle such scenarios RunPage has some internal plumbing which we make use of here. The PDF File‘s ArrayBuffer is sent from the Worker thread to the main thread with instructions to decode the bytes and return the images of it page by page. The Worker then simply sends each page’s image to Textract for analysis. This has another good side-effect that we can pick and choose the exact pages we would want to analyse and only those pages will get sent. Another ace point for security.

A side note: While working on this I stumbled upon a browser bug which I have reported here - https://bugs.chromium.org/p/chromium/issues/detail?id=1349207. That took a lot of time figure out.

Overall it is cool and super useful feature. Head over to run.applegrew.com to experience yourself.