Currency & Conversion Logic
The Indian Startup Funding Tracker manages financial data primarily in Indian Rupees (INR). This section outlines how the system handles currency conversion from USD and formats large financial figures into standard Indian units like Lakhs (L) and Crores (Cr).
Currency Conversion
While many startup funding deals are reported in USD, the platform normalizes all data to INR to provide a consistent analysis of the Indian ecosystem.
Updating Conversion Rates
The conversion rate is a static value used during the data generation process. To update the exchange rate:
- Open
config/currency.js. - Update the
rateanddatevalues. - Run the data generation script to re-calculate values across the dataset:
npm run generate-data
The current application uses a reference rate of 1 USD = ₹83.50 (as of November 2025). This rate is displayed on the Analytics page to provide context for the trend charts.
Data Unit Convention
To maintain precision while keeping the data human-readable, funding amounts are stored using the following convention:
- Internal Unit: Lakhs (INR).
- Scale:
100units in the data file equals1 Crore(₹10,000,000). - Undisclosed Deals: A value of
0represents a deal where the amount was not publicly disclosed.
Formatting Utilities
The lib/utils.ts file provides helper functions to handle the display logic for these amounts.
formatFundingAmount
Converts a raw numeric value (in Lakhs) into a formatted string with the appropriate Indian currency suffix.
Signature:
function formatFundingAmount(amount: number): string
Parameters:
amount: The funding amount in Lakhs.
Returns:
- A string formatted with the ₹ symbol and the most appropriate unit (L, Cr, or B).
- Returns
"Not Disclosed"if the amount is0,null, orundefined.
Formatting Logic:
| Amount (in Lakhs) | Display Format | Example Input | Example Output |
| :--- | :--- | :--- | :--- |
| 0 | String | 0 | "Not Disclosed" |
| < 100 | Lakhs (L) | 50 | ₹50L |
| 100 - 99,999 | Crores (Cr) | 1250 | ₹12.5Cr |
| ≥ 100,000 | Billions (B) | 200000 | ₹2.00B |
Usage Example:
import { formatFundingAmount } from "@/lib/utils"
// Displaying a Series A deal of 4000 Lakhs
const displayAmount = formatFundingAmount(4000);
// Output: "₹40Cr"
isFundingDisclosed
A utility to check if a deal has a valid monetary value attached to it. This is used to filter data for charts and aggregate statistics (like "Total Funding") where undisclosed deals should not be treated as zero-value.
Signature:
function isFundingDisclosed(amount: number): boolean
Usage Example:
const disclosedDeals = fundingData.filter(deal => isFundingDisclosed(deal.amount));
Analytics Logic
When calculating trends in the AnalyticsDashboard component, the system specifically filters for disclosed amounts to avoid skewing "Average Deal Size" or "Total Funding" metrics. Charts for "Deal Count" include all deals, whereas monetary charts (Bar/Line/Pie) represent the sum of amount / 100 to convert the base Lakhs into Crores.