1/*! 2 * Finnovate FinnFit Quiz â question bank, pillar metadata, score bands. 3 * Extracted from the live plan.finnovate.in/finnfit question set (same server, 4 * /var/www/plan React bundle), not fabricated placeholder content. 5 * 6 * Two variants: 7 * FINNFIT_QUICK_QUESTIONS - 13 questions, one screen per pillar sample, ~2 min. 8 * FINNFIT_FULL_QUESTIONS - 21 questions, full assessment, age-band branched. 9 * 10 * Full-set age branching: 10 of the 21 questions are age-conditional (ageOnly). 11 * Under-55 users see the 5 questions tagged '55'; 55+ users see the 5 tagged '99'. 12 * All other questions are shown to everyone. One question additionally carries a 13 * 55+ answer-weight override (weights55plus) even though it's shown to both bands. 14 */ 15 16const FINNFIT_QUICK_QUESTIONS = [ 17 { 18 id: "q_networth", 19 category: "GoalsPlanning", 20 question: "Do you know your net worth today?", 21 hint: "Investments minus Loans", 22 qWeight: 4, 23 answers: [ 24 { name: "Yes", weight: 1 }, 25 { name: "No", weight: -1 }, 26 ], 27 }, 28 { 29 id: "q_retirementFund", 30 category: "GoalsPlanning", 31 question: "How much have you kept aside for your Retirement / Financial Freedom?", 32 qWeight: 4, 33 answers: [ 34 { name: "Greater than 30 times of current annual expenses", weight: 2 }, 35 { name: "10 to 30 times of current annual expenses", weight: 1 }, 36 { name: "Less than 10 times of current annual expenses", weight: 0 }, 37 { name: "I have not planned for Retirement/Financial Freedom", weight: -1 }, 38 ], 39 }, 40 { 41 id: "q_saving_targets", 42 category: "GoalsPlanning", 43 question: "Do you have well defined saving's target for your financial goals and are you able to track them actively?", 44 qWeight: 4, 45 answers: [ 46 { name: "Yes", weight: 1 }, 47 { name: "No", weight: -1 }, 48 ], 49 }, 50 { 51 id: "q_emergency_fund", 52 category: "BudgetingTaxation", 53 question: "How much have you put aside as your emergency fund?", 54 qWeight: 5, 55 answers: [ 56 { name: "0-6 months expenses", weight: 0 }, 57 { name: "6-12 months expenses", weight: 2 }, 58 { name: "12 months + expenses", weight: 1 }, 59 { name: "I don't have an emergency fund", weight: -1 }, 60 ], 61 }, 62 { 63 id: "q_monthly_income", 64 category: "BudgetingTaxation", 65 question: "What % of your monthly income do you save regularly?", 66 qWeight: 5, 67 answers: [ 68 { name: "0% - 10%", weight: 0 }, 69 { name: "10% - 30%", weight: 1 }, 70 { name: "Greater than 30%", weight: 2 }, 71 { name: "I don't save regularly", weight: -1 }, 72 ], 73 }, 74 { 75 id: "q_tax_plan", 76 category: "BudgetingTaxation", 77 question: "Have you planned your taxes well?", 78 qWeight: 5, 79 answers: [ 80 { name: "Yes", weight: 1 }, 81 { name: "No", weight: -1 }, 82 ], 83 }, 84 { 85 id: "q_monthly_emi", 86 category: "LoanManagement", 87 question: "What % of your monthly income goes towards paying your EMI?", 88 qWeight: 2, 89 answers: [ 90 { name: "Less than 30%", weight: 1 }, 91 { name: "30%-50%", weight: 0 }, 92 { name: "Greater than 50%", weight: -1 }, 93 { name: "I don't have any EMIs Debt", weight: 2 }, 94 ], 95 }, 96 { 97 id: "q_health_insurance", 98 category: "RiskManagement", 99 question: "How much is your Family Health Insurance cover (Mediclaim)?", 100 qWeight: 4, 101 answers: [ 102 { name: "0-5 lacs", weight: 0 }, 103 { name: "6-25 Lacs", weight: 1 }, 104 { name: "Greater Than 25 Lacs", weight: 2 }, 105 { name: "I donât have health insurance", weight: -1 }, 106 ], 107 }, 108 { 109 id: "q_term_insurance", 110 category: "RiskManagement", 111 question: "How much is your Term Life Insurance cover ?", 112 qWeight: 4, 113 answers: [ 114 { name: "upto 5 times of your annual income", weight: 0 }, 115 { name: "5 times to 10 times of your annual income", weight: 1 }, 116 { name: "Greater than 10 times of your annual income", weight: 2 }, 117 { name: "I don't have Term Life Insurance", weight: -1 }, 118 ], 119 }, 120 { 121 id: "q_investments", 122 category: "Investments", 123 question: "Do you know the Compound Annual Growth Rate (CAGR) on your investments?", 124 qWeight: 3, 125 answers: [ 126 { name: "Yes", weight: 1 }, 127 { name: "No", weight: -1 }, 128 ], 129 }, 130 { 131 id: "q_investment_portfolio", 132 category: "Investments", 133 question: "What % of your annual savings are regularly invested in Equity Mutual Funds or Direct Equity or PMS ?", 134 qWeight: 3, 135 answers: [ 136 { name: "Less than 30%", weight: 0 }, 137 { name: "30-60%", weight: 1 }, 138 { name: "More than 60%", weight: 2 }, 139 { name: "I donât invest in equity regularly", weight: -1 }, 140 ], 141 }, 142 { 143 id: "q_emergency_docs", 144 category: "EstatePlanning",
145 question: "In an emergency, can loved ones access your financial documents in under 30 minutes?", 146 qWeight: 2, 147 answers: [ 148 { name: "Yes", weight: 1 }, 149 { name: "No", weight: -1 }, 150 ], 151 }, 152 { 153 id: "q_nominees", 154 category: "EstatePlanning", 155 question: "Do all your assets and investments have nominees and beneficiaries?", 156 qWeight: 2, 157 answers: [ 158 { name: "Yes", weight: 1 }, 159 { name: "Partially", weight: -1 }, 160 { name: "No", weight: -1 }, 161 ], 162 }, 163]; 164 165const FINNFIT_FULL_QUESTIONS = [ 166 { 167 id: "f_emergency_fund", 168 category: "RiskManagement", 169 question: "How much have you set aside in your emergency fund to cover unexpected expenses?", 170 qWeight: 3, 171 ageOnly: null, // '55' = under-55 only, '99' = 55-plus only, null = everyone 172 answers: [ 173 { name: "I don't have an emergency fund", weight: -1 }, 174 { name: "0-3 months of expenses", weight: 1 }, 175 { name: "3-9 months of expenses", weight: 2 }, 176 { name: "More than 9 months of expenses", weight: 3 }, 177 ], 178 }, 179 { 180 id: "f_family_health_cover", 181 category: "RiskManagement", 182 question: "What is the total coverage of your family health insurance policy?", 183 qWeight: 3, 184 ageOnly: null, // '55' = under-55 only, '99' = 55-plus only, null = everyone 185 answers: [ 186 { name: "Less than 10 Lacs", weight: 1 }, 187 { name: "10-25 Lacs", weight: 2 }, 188 { name: "Greater Than 25 Lacs", weight: 3 }, 189 { name: "We don't have health insurance", weight: -1 }, 190 ], 191 }, 192 { 193 id: "f_health_insurance_type", 194 category: "RiskManagement", 195 question: "What kind of health insurance policy do you currently hold?", 196 qWeight: 3, 197 ageOnly: null, // '55' = under-55 only, '99' = 55-plus only, null = everyone 198 answers: [ 199 { name: "Employer provided policy", weight: 1 }, 200 { name: "Both employer & personal policy", weight: 3 }, 201 { name: "Personally bought individual / family floater policy", weight: 3 }, 202 { name: "I don't have a health insurance", weight: -1 }, 203 ], 204 }, 205 { 206 id: "f_term_life_cover", 207 category: "RiskManagement", 208 question: "What is the total coverage of your term life insurance policy?", 209 qWeight: 4, // bumped from 3 to partially restore Insurance's under-55 share after removing f_term_life_cover_2 210 ageOnly: "55", // '55' = under-55 only, '99' = 55-plus only, null = everyone 211 answers: [ 212 { name: "I don't have Term Life Insurance", weight: -1 }, 213 { name: "upto 10x of my annual income", weight: 1 }, 214 { name: "10x to 15x of my annual income", weight: 2 }, 215 { name: "Greater than 15x of my annual income", weight: 3 }, 216 ], 217 }, 218 { 219 id: "f_monthly_saving", 220 category: "BudgetingTaxation", 221 question: "What percentage of your monthly income do you save regularly?", 222 qWeight: 5, // bumped from 3 to restore Tax & Budgeting's under-55 share after removing f_tax_objective 223 ageOnly: "55", // '55' = under-55 only, '99' = 55-plus only, null = everyone 224 answers: [ 225 { name: "I don't save regularly", weight: -1 }, 226 { name: "Less than 10%", weight: 1 }, 227 { name: "10% - 30%", weight: 2 }, 228 { name: "More than 30%", weight: 3 }, 229 ], 230 }, 231 { 232 id: "f_inflation_considered", 233 category: "BudgetingTaxation", 234 question: "Have you accounted for inflation while estimating your retirement corpus", 235 qWeight: 4, // bumped from 3 to restore Tax & Budgeting's 55+ share after removing f_tax_objective 236 ageOnly: "99", // '55' = under-55 only, '99' = 55-plus only, null = everyone 237 answers: [ 238 { name: "Yes", weight: 3 }, 239 { name: "No", weight: 0 }, 240 { name: "Not yet planned", weight: -1 }, 241 ], 242 }, 243 { 244 id: "f_taxation_planning", 245 category: "BudgetingTaxation", 246 question: "Have you considered taxes while planning passive income for retirement?", 247 qWeight: 4, // bumped from 3 to restore Tax & Budgeting's 55+ share after removing f_tax_objective 248 ageOnly: "99", // '55' = under-55 only, '99' = 55-plus only, null = everyone 249 answers: [ 250 { name: "I have not planned for passive income yet", weight: -1 }, 251 { name: "I planned for passive income but didn't think about taxes", weight: 1 }, 252 { name: "Yes, my plan is tax-efficient", weight: 3 }, 253 ], 254 }, 255 { 256 id: "f_monthly_emi", 257 category: "LoanManagement", 258 question: "What percentage of your monthly income goes towards paying your EMI?", 259 qWeight: 2, 260 ageOnly: null, // '55' = under-55 only, '99' = 55-plus only, null = everyone 261 answers: [ 262 { name: "I don't have any EMI", weight: 2 }, 263 { name: "Less than 20% of monthly income", weight: 1 }, 264 { name: "20%-40% of monthly income", weight: 0 }, 265 { name: "Greater than 40% of monthly income", weight: -1 }, 266 ], 267 }, 268 { 269 id: "f_review_income_strategy", 270 category: "GoalsPlanning", 271 question: "Do you regularly review your retirement income strategy ?", 272 qWeight: 3, 273 ageOnly: "99", // '55' = under-55 only, '99' = 55-plus only, null = everyone 274 answers: [ 275 { name: "I haven't created any passive retirement income generation strategy", weight: -1 }, 276 { name: "I have a plan but I haven't reviewed it", weight: 1 }, 277 { name: "I reviewed it once in the last 2-3 years", weight: 2 }, 278 { name: "Yes, I review it every year", weight: 3 }, 279 ], 280 }, 281 { 282 id: "f_review_financial_plan", 283 category: "GoalsPlanning", 284 question: "Do you review your financial plan regularly?", 285 qWeight: 3, 286 ageOnly: "55", // '55' = under-55 only, '99' = 55-plus only, null = everyone 287 answers: [ 288 { name: "I don't have a financial plan", weight: -1 }, 289 { name: "Yes, I review my financial plan regularly", weight: 3 }, 290 { name: "I created a plan but I haven't reviewed it", weight: 1 }, 291 ], 292 }, 293 {
294 id: "f_retirement_corpus_years", 295 category: "GoalsPlanning", 296 question: "For how many more years do you expect your retirement corpus to support your expenses?", 297 qWeight: 3, 298 ageOnly: "99", // '55' = under-55 only, '99' = 55-plus only, null = everyone 299 answers: [ 300 { name: "Less than 20 years", weight: 1 }, 301 { name: "20 to 30 years", weight: 2 }, 302 { name: "30+ years", weight: 3 }, 303 { name: "I have not estimated that", weight: -1 }, 304 ], 305 }, 306 { 307 id: "f_monthly_withdrawal_strategy", 308 category: "GoalsPlanning", 309 question: "Do you have a defined withdrawal strategy for your monthly expenses after retirement?", 310 qWeight: 3, 311 ageOnly: "99", // '55' = under-55 only, '99' = 55-plus only, null = everyone 312 answers: [ 313 { name: "I don't have a post retirement withdrawal plan yet", weight: -1 }, 314 { name: "FD Interest + Rental Income", weight: 1 }, 315 { name: "Pension + Rental Income", weight: 2 }, 316 { name: "SWP + FD Interest", weight: 3 }, 317 { name: "SWP + Pension + Rental Income + FD Interest", weight: 3 }, 318 ], 319 }, 320 { 321 id: "f_financial_assets_goal", 322 category: "GoalsPlanning", 323 question: "Are your financial assets aligned with your life goals? (Car, House, Holiday, Retirement corpus etc)", 324 qWeight: 2, 325 ageOnly: "55", // '55' = under-55 only, '99' = 55-plus only, null = everyone 326 answers: [ 327 { name: "Yes", weight: 2 }, 328 { name: "No", weight: 1 }, 329 { name: "I don't have defined goals", weight: -1 }, 330 ], 331 }, 332 { 333 id: "f_portfolio_check", 334 category: "Investments", 335 question: "How do you assess the performance of your investment portfolio?", 336 qWeight: 3, 337 ageOnly: null, // '55' = under-55 only, '99' = 55-plus only, null = everyone 338 answers: [ 339 { name: "I don't know how to assess it", weight: -1 }, 340 { name: "I look at absolute returns of my investments", weight: 1 }, 341 { name: "I look at CAGR / XIRR returns", weight: 2 }, 342 { name: "I compare returns to benchmarks", weight: 3 }, 343 ], 344 }, 345 { 346 id: "f_equity_investment_percentage", 347 category: "Investments", 348 question: "What percentage of your annual savings is invested in Equity( Mutual Funds or Direct Equity or PMS )?", 349 qWeight: 3, 350 ageOnly: "55", // '55' = under-55 only, '99' = 55-plus only, null = everyone 351 answers: [ 352 { name: "I do not invest in Equity at all", weight: -1 }, 353 { name: "Less than 30% of annual savings", weight: 1 }, 354 { name: "30-60% of annual savings", weight: 2 }, 355 { name: "More than 60% of annual savings", weight: 3 }, 356 ], 357 }, 358 { 359 id: "f_investment_decision_method", 360 category: "Investments", 361 question: "How do you usually make investment decisions?", 362 qWeight: 3, 363 ageOnly: null, // '55' = under-55 only, '99' = 55-plus only, null = everyone 364 answers: [ 365 { name: "Based on tips from Friends & Family", weight: -1 }, 366 { name: "I research & decide myself", weight: 1 }, 367 { name: "With help from a broker distributor", weight: 2 }, 368 { name: "With a SEBI Registered advisor", weight: 3 }, 369 ], 370 }, 371 { 372 id: "f_asset_allocation_rebalancing", 373 category: "Investments", 374 question: "Do you know how your savings are split across different investments, and do you adjust that mix from time to time?", 375 qWeight: 3, 376 ageOnly: null, // '55' = under-55 only, '99' = 55-plus only, null = everyone 377 answers: [ 378 { name: "I don't know how it's split, and I never adjust it", weight: -1 }, 379 { name: "I know how it's split, but I don't adjust it", weight: 1 }, 380 { name: "Yes, I have a clear plan and adjust it regularly", weight: 3 }, 381 ], 382 }, 383 { 384 id: "f_networth_real_estate", 385 category: "Investments", 386 question: "What Percentage of your Net Worth is invested in Real-Estate?", 387 qWeight: 2, 388 ageOnly: null, // '55' = under-55 only, '99' = 55-plus only, null = everyone 389 answers: [ 390 { name: "I don't know my networth", weight: -1 }, 391 { name: "More than 40%", weight: 1 }, 392 { name: "Less than 40%", weight: 2 }, 393 ], 394 weights55plus: [-1, 1, 3], // overrides answers[].weight in order, 55+ band only 395 }, 396 { 397 id: "f_nominee_assigned", 398 category: "EstatePlanning", 399 question: "Have you assigned nominees/beneficiaries for all your assets and investments?", 400 qWeight: 1, 401 ageOnly: null, // '55' = under-55 only, '99' = 55-plus only, null = everyone 402 answers: [ 403 { name: "Yes", weight: 1 }, 404 { name: "No", weight: -1 }, 405 ], 406 }, 407 { 408 id: "f_financial_documents_stored", 409 category: "EstatePlanning", 410 question: "Do you keep your important financial documents in one place, with your family knowing where to find them?", 411 qWeight: 3, 412 ageOnly: null, // '55' = under-55 only, '99' = 55-plus only, null = everyone 413 answers: [ 414 { name: "No, they aren't kept in one place", weight: -1 }, 415 { name: "Kept in one place, but my family doesn't know", weight: 1 }, 416 { name: "Yes, kept in one place and my family knows", weight: 3 }, 417 ], 418 }, 419 { 420 id: "f_created_will", 421 category: "EstatePlanning", 422 question: "Have you created a will?", 423 qWeight: 2, 424 ageOnly: null, // '55' = under-55 only, '99' = 55-plus only, null = everyone 425 answers: [ 426 { name: "Yes", weight: 2 }, 427 { name: "No", weight: 1 }, 428 { name: "I believe, I'm too young", weight: -1 }, 429 ], 430 }, 431]; 432 433/* Display names + icon match finnfit-test.html's 6-pillar marketing copy; 434 keys match the internal score_breakup keys used by the live FinnFit backend. */ 435const FINNFIT_PILLARS = [ 436 { key: "GoalsPlanning", name: "Goals & Planning", icon: "fa-bullseye", question: "Are your financial goals defined with timelines and numbers?", tip: "Set specific, time-bound targets for your major goals (retirement, home, education) and review progress at least once a year." }, 437 { key: "BudgetingTaxation", name: "Tax & Budgeting", icon: "fa-indian-rupee-sign", question: "Are you managing cash flow and reducing tax liability efficie
437ntly?", tip: "Track your monthly cash flow and use tax-efficient instruments like ELSS, PPF, and NPS to reduce your tax outgo." }, 438 { key: "Investments", name: "Investments", icon: "fa-chart-pie", question: "Are your investments goal-mapped, diversified, and reviewed regularly?", tip: "Diversify across asset classes and map each investment to a specific goal, reviewing your allocation at least once a year." }, 439 { key: "RiskManagement", name: "Insurance", icon: "fa-shield-halved", question: "Do you have adequate cover for income loss and health emergencies?", tip: "Get adequate term life cover (10-15x annual income) and a health policy that covers your full family without gaps." }, 440 { key: "LoanManagement", name: "Loans & Debt", icon: "fa-file-invoice", question: "Is your total debt structured, purposeful, and kept within safe limits?", tip: "Pay down high-interest debt first, and keep your total EMI outgo within 40% of your monthly income." }, 441 { key: "EstatePlanning", name: "Estate Planning", icon: "fa-scroll", question: "Have you prepared for what happens to your assets if you are no longer around?", tip: "Write or update your will, and make sure nominees are added across every bank account, investment, and insurance policy." }, 442]; 443 444/* Bands + copy match finnfit-test.html's "What Your FinnFit Score Means" section. 445 * Thresholds are percentages of the variant's own max (not raw points), so the 446 * same bands apply whether the run is Quick Test (/20) or Full Assessment 447 * (/50) â mirrors fhcFinnfitPillarRating() in ad/finnfit_report.php, which 448 * already rates each pillar this way. */ 449const FINNFIT_SCORE_BANDS = [ 450 { min: 80, max: 100, label: "Excellent", cssClass: "excellent", desc: "Your finances are well-structured across most pillars. Focus on optimising and maintaining consistency." }, 451 { min: 60, max: 79, label: "Good", cssClass: "good", desc: "A solid foundation with specific gaps in 1-2 pillars. Targeted improvements will have high impact on your overall position." }, 452 { min: 40, max: 59, label: "Needs Attention", cssClass: "attention", desc: "Multiple pillars require structured action. A financial plan can significantly improve your score within 12 months." }, 453 { min: -Infinity, max: 39, label: "Critical", cssClass: "critical", desc: "Significant financial vulnerabilities exist. Speaking with a SEBI-registered advisor is strongly recommended." }, 454]; 455 456function finnfitScoreBand(scorePct) { 457 return FINNFIT_SCORE_BANDS.find(function (b) { return scorePct >= b.min && scorePct <= b.max; }) || FINNFIT_SCORE_BANDS[FINNFIT_SCORE_BANDS.length - 1]; 458} 459 460/* Full-set questions applicable to a given age band (mirrors the live app's own 461 filter: everyone gets non-conditional questions; '55' questions go to under-55, 462 '99' questions go to 55-plus). */ 463function finnfitApplicableQuestions(questions, ageBand) { 464 return questions.filter(function (q) { 465 if (!q.ageOnly) return true; 466 return ageBand === "55plus" ? q.ageOnly === "99" : q.ageOnly === "55"; 467 }); 468} 469 470/* Effective per-answer weight for a question given the age band (applies the 471 weights55plus override, when present, only for the 55+ band). */ 472function finnfitAnswerWeight(question, answerIndex, ageBand) { 473 if (ageBand === "55plus" && Array.isArray(question.weights55plus)) { 474 return question.weights55plus[answerIndex]; 475 } 476 return question.answers[answerIndex].weight; 477} 478 479/* Theoretical max raw score (sum of qWeight * best-possible answer weight) for a 480 question set + age band. Used to normalise the raw weighted total onto the 481 site's established 0-50 display scale (see finnfit-test.html hero/score-bands copy). */ 482function finnfitMaxRawScore(questions, ageBand) { 483 var applicable = ageBand ? finnfitApplicableQuestions(questions, ageBand) : questions; 484 return applicable.reduce(function (sum, q) { 485 var best = q.answers.reduce(function (m, a, i) { 486 var w = finnfitAnswerWeight(q, i, ageBand); 487 return Math.max(m, w); 488 }, -Infinity); 489 return sum + q.qWeight * best; 490 }, 0); 491}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.