Skip to content

Writing

Hello, I'm Nirant. I write about a mix of AI consulting, open source, personal work, and applying llms.

I won't email you more than twice a month, not every post I write is worth sharing but I'll do my best to share the most interesting stuff including my own writing, thoughts, and experiences.

Subscribe to my Newsletter

Tax Tips for Technical Consultants in India

Managing taxation and financial compliance as a consultant in India involves several considerations: GST to the benefits of Section 44ADA and the complexities of foreign entity considerations, consultants must juggle multiple aspects to ensure compliance and tax optimization. I'm sharing what I know in the hopes it's helpful to others.

1. Compliance: GST, LUT and FIRC

  • Threshold: Acquiring a GST number becomes almost mandatory once your income surpasses some X=20 lakhs INR in a given financial year. This step legitimizes your income and ensures compliance with Indian taxation laws. The X limits keeps changing and I'd recommend you check the latest one with a CA and NOT rely on Google for this. Some online services like ClearTax offer GST registration services, but I'd recommend you get it done via a CA. It's a one-time process and you don't need to renew it every year.

  • Sole Proprietorship: If you are an individual, you get a GST number as a sole proprietor. This is the simplest way to get a GST number and is recommended for most consultants. You can also get a GST number as a private limited company, but that might be overkill for most consultants. My CA also recommended that I get an Udyog Certificate, so I did get one but I'm not sure if it's necessary.

  • Quarterly Filing: If you are a sole proprietor or operating as an individual consultant, quarterly GST filing can be more manageable than doing it monthly. This approach helps streamline administrative tasks and keeps compliance straightforward.

  • FIRC: Every time that you receive a payment from a foreign entity, you will need to get a Foreign Inward Remittance Certificate (FIRC) from your bank. This document is a proof of payment and is required for filing taxes. It is advisable to get a FIRC for each payment, as it can be difficult to get one later. Salt is a great tool for automating this process.

  • Accounting & Compliance: Using a CA to file for managing both your GST and Letter of Undertaking (LUT) is advisable. It serves as an effective tool for official documentation and ensures a smoother filing process.

  • Current Account: Having a current account separate from your personal finances helps in meticulous financial management. It allows you to distinctly separate your business income and expenses, making accounting more cleaner. E.g. you can use this current to pay for your AWS bills. This can help you save on GST, as you can claim GST input credit on these expenses.

  • Letter of Undertaking (LUT): For consultants involved in international transactions, an LUT is crucial. This legal document clarifies that all relevant taxes will be paid exclusively in India, thereby simplifying compliance requirements for cross-border business. It is advisable to get an LUT even if you are not sure if you will be involved in international transactions. You need to mention the LUT in your invoices to foreign entities.

  • GST on Foreign Transactions: GST is not applicable on foreign transactions. However, you will need to mention the LUT in your invoices to foreign entities. This is to ensure that the GST authorities are aware that you are not liable to pay GST on these transactions.

1.1 GST Filing

  • GST Filing: You can file GST monthly or quarterly. I'd recommend you to file quarterly, as it's easier to manage. I also recommend hiring a CA to do this for you who can also help you with other compliances.

1.2 Address

  • I'd recommend you to get a separate address for your business. I use a Virtual Office address and that works. I'd recommend that you get this somewhere you can visit if needed by the bank or tax authorities.
  • If you are a consultant, you can use your home address as your business address. This will need a NoC from the title owner of the property. This owner might be your landlord or your parents.
  • GST Number is different for each state/billing address

2. Taxation

2.1 Personal Income Tax: Section 44ADA

  • 50% Rule: Section 44ADA offers a benefit by allowing you to assume 50% of your income upto 75 lakhs as an expense for tax filing. This helps significantly in reducing your taxable income, which can be advantageous for many consultants.

Example Math:

If you make 100 lakhs INR in a year, you can assume 37.5 lakhs INR (half of 75 lakhs) as your expenses and pay taxes on the remaining 100-37.5=62.5 lakhs INR. At 30% income tax rate, you'd pay 19.3 lakhs INR in taxes. Effectively, you'd be paying 19% of your income in taxes.

💡 You do NOT need to maintain books of expenses for Section 44ADA. This is a huge benefit as it simplifies the process of filing taxes!

There is another catch on 100 lakhs INR: 15% surcharge on income tax. Source: ClearTax -- I'm unclear if Section 44ADA applies to this surcharge.

  • >50% Expenses: If your actual expenses amount to more than half of your income, then Section 44ADA may not offer you the best tax advantage. This is because you can only claim 50% of your income as an expense, even if your actual expenses are higher. You will have to get audited by a CA and file your taxes later (usually in September) if you want to claim more than 50% of your income as expenses.

2.2 Foreign LLC or C-Corp

  • LLC Abroad: If you are working with a foreign entity, it is sometimes useful to have a Limited Liability Company (LLC) in the country of the entity. E.g. you can open a Delaware LLC via Stripe Atlas and use that to invoice your clients. You will then pay taxes via this entity in the source country. It's only for the amount that you move to India, that you will pay taxes in India.

If I remember correctly, you will be paying 8.7% corporate tax in Delaware, and similarly 8-9% in Dubai. With all of these, you pay additional 30% personal income tax in India. So if you make 100 lakhs INR in a year, you will pay 8.7 lakhs INR in the US. And then you pay personal income tax in India on your living expenses: So say, you move 18 lakhs INR to India, you will pay 0.3*18 = 5.4 lakhs INR in taxes in India. Effectively, you'd be paying 14.1% of your income in taxes. If you are making more than 100 lakhs INR in a year, this might be a good option for you.

This can help simplify the process of receiving payments. However, it is important to note that this option is not always the most tax-efficient. It is advisable to consult a CA to understand the implications of this option for your specific amount, transaction frequency and expected personal expenses.

RemoteIndian has a similar Tax Guide that you might find useful.

3. Invoicing

I use Refrens to invoice my clients. It's a great tool for invoicing and managing your invoices. Here are some of the fields which I'd recommend you to fill in:

  1. GSTIN: This is your GST number.
  2. Billed To: This is the name, address, phone number, PAN and GSTIN of the client.
  3. Invoice Date: This is the date of the invoice.
  4. Due Date: This is the date by which the client needs to pay the invoice.
  5. Invoice Number: This is the invoice number.
  6. Invoice Amount: This is the amount of the invoice.
  7. Invoice Currency: This is the currency of the invoice.

I'm not a CA, so please consult a CA before making any decisions. I'm sharing what I know in the hopes it's helpful to others. If you have any questions, please feel free to reach out to me on Twitter.

Beyond Basic RAG: What You Need to Know

The Real World of RAG Systems

📒 Picture this: You're a developer who just deployed your first RAG system. Everything seems perfect in testing. Then reality hits - users start complaining about irrelevant results, not being able to do "basic stuff" and occasional hallucinations. Welcome to the world of real-world RAG systems.

The Problem With "Naive RAG"

Let's start with a truth bomb: dumping documents into a vector database and hoping for the best is like trying to build a search engine with just a dictionary - technically possible, but practically useless.

Here's why:

  1. The Embedding Trap: Think embedding similarity is enough? Here's a fun fact - in many embedding models, "yes" and "no" have a similarity of 0.8-0.9. Imagine asking for "yes" and getting a "no" instead in a legal search 😅

  2. The Context Confusion: Large Language Models (LLMs) get surprisingly confused when you give them unrelated information. They're like that friend who can't ignore a app notification while telling a story - everything gets mixed up.

  3. Length Effect: Just like humans tend to get worse at noticing details the longer a story is, LLMs with large context windows get worse at noticing details the longer the information is.

The Three Pillars of Production RAG

1. Query Understanding 🎯

The first step to better RAG isn't about better embeddings - it's about understanding what your users are actually asking for. Here's the basics:

  • Query Classification: Before rushing to retrieve documents, classify the query type. Is it a simple lookup? A comparison? An aggregation? Each needs different handling.
    • NIT: Navigational, Informational, Transactional are the 3 very broad types.
  • Metadata Extraction: Time ranges, entities, filters - extract these before retrieval. Think of it as giving your students sample questions to help them pay attention to what's important in the exam (at query time) much better and faster.

Metadata Queries

The CEO of a company asks for "last year's revenue"

The CFO asks for "revenue from last year"

The CMO asks for "revenue from the last fiscal year"

Do all these queries mean different things? Not really. The asker role i.e. query metadata changes the query intent.

2. Intelligent Retrieval Strategies 🔍

Here's where most systems fall short. Instead of one-size-fits-all retrieval:

  • Hybrid Search: Combine dense (embedding) and sparse (keyword) retrieval. You can rerank using late interaction, use LLM as a reranker or even use both in a cascade. I can probably write a whole blog post on this, but tl;dr is that you can use a combination of many retrieval strategies to get the best of precision, recall, cost and latency.
  • Query Expansion: Don't just search for what users ask - search for what they mean. Example: "Q4 results" should also look for "fourth quarter performance."
  • Context-Aware Filtering: Use metadata to filter before semantic search. If someone asks for "last week's reports," don't rely on embeddings to figure out the time range.

3. Result Synthesis and Validation ✅

The final piece is making sure your responses are accurate and useful:

  • Cross-Validation: For critical information (dates, numbers, facts), validate across multiple sources at ingestion time. It's possible that your ingestion pipeline is flawed and you don't know it.
  • Readability Checks: Use tools like the Flesch-Kincaid score to ensure responses match your user's expertise level.
  • Hallucination Detection: Implement systematic checks for information that isn't grounded in your retrieved documents. Considering evaluating the pipeline using offline tools like Ragas

Real-World Example: The Leave Policy Fiasco

Here's a real story that illustrates why naive RAG fails:

The Leave Policy Fiasco

Company X implemented a RAG system for HR queries. When employees asked about leave policies, the system kept used the entire company's wiki -- including that of the sales team. And sales "ranked" higher because it contained similar keywords.

The result? The entire company was getting sales team vacation policies instead of their own 🤦‍♂️

The solution? They implemented:

  1. Role-based filtering

  2. Document source validation

  3. Query intent classification

Making Your RAG System Production-Ready

Here's your action plan:

  1. Query Understanding: Implement basic query type classification
  2. Ingestion: Extract key metadata (dates, entities, filters)
  3. Retrieval: Begin with metadata filtering
  4. Retrieval: Add keyword-based search or BM25
  5. Retrieval: Top it off with semantic search
  6. Synthesis: Combine results intelligently using a good re-ranker or fusion e.g. RRF
  7. Validation: Cross-check extracted dates and numbers
  8. Validation: Implement a RAG metrics system e.g. Ragas
  9. Validation: Monitor user feedback e.g. using A/B tests and adapt

Reciprocal Rank Fusion

Reciprocal Rank Fusion (RRF) is a technique that combines the results of multiple retrieval systems. It's a powerful way to improve the quality of your search results by leveraging the strengths of different retrieval methods.

But it's NOT a silver bullet.

The Challenge

Stop thinking about RAG as just "retrieve and generate."

Start thinking about it as a complex system that needs to understand, retrieve, validate, and synthesize information intelligently.

Your homework: Take one query type that's failing in your system. Implement query classification and targeted retrieval for just that type. Measure the improvement. You'll be amazed at the difference this focused approach makes.


Remember: The goal isn't to build a perfect RAG system (that doesn't exist). The goal is to build a RAG system that improves continuously and fails gracefully.

Your Turn

What's your biggest RAG challenge? Let's solve it together. Let me know on Twitter or email.

Meetup Parameters

This is based on organising GenerativeAI Meetups in Bengaluru, India. This is a living document and will be updated as we learn more.

Venue

  1. Date & Time & Duration: Choose suitable timing and duration. Pick something that works for your community. Consider weekday and weekend meetups both.
    • Example: 4:00-5.00pm start on a Saturday works great in BLR! Chennai did a GenAI meetup on Saturday morning -- since that city wakes up early, it worked well for them.
  2. Camera: Consider the requirements for A/V if planning to do talks, streaming, or recording? Who is going to record? What kind of camera do we need? GenerativeAI outsources this to Hasgeek. Camera set-up for meetups is reduced to iPhone capture, with a Pivo Pod and tripod.
  3. Format: Define the structure of the meetup - is it just for drinks? Will there be talks? Is food provided? Is it open or by invitation only? Are plus ones allowed? Examples: GenerativeAI has never served alcohol, we often have 1-3 talks with snacks and is open by invitation only. We also have a Code of Conduct that we share with attendees.
  4. Speakers: If there will be talks, secure 1-3 speakers in advance. It's also fine to have a meetup with no speakers.
  5. Security: Keep in mind some venues might require pre-registration for security. Different venues enforce security with varying degrees of strictness. Some venues didn't allow anyone without registration, while the other venues allowed folks we didn't want to attend to enter. Discuss this upfront with your venue's security incharge.

Theme

  • Select a theme. This is crucial as it shapes the shared identity of all attendees and influences the discussions they initiate with strangers
  • Narrower themes are better than wider ones e.g. "DevTools" is better than "Enterprise tools for Devs"
  • Choose a catchy name to attract more attendees -- your naming is the most important branding
  • There are icebreaker lists on the Internet which you can use for more intimate meetings
  • Name tags: I've tried to enforce these, but failed at the GenerativeAI Meetups -- they're great! I've seen them work well at other meetups.

Photo and Video Documentation

  • Encourage attendees to take photos, tag you, or send them to you for sharing on social media
  • Consider recording the talks and posting them on YouTube afterwards to provide value to the community and allow great talks to live on. We use Hasgeek for this.
  • Note that live-streaming is not a must, but if done, it can add an extra layer of engagement for those who can't attend in person.