← Files F2 ToolARCHIVED FILE

.codex-plugin/plugin.json

19.8 KB · Nov 2, 2026 · 13:13 UTC

↓ Download file

{
  "author": {
    "name": "Damian Plamenov Yordanov"
  },
  "description": "F2 Tool works out your plan to age 100 from four numbers: your age, your net monthly salary, your savings and your monthly spending, in euros. It answers with three outcomes side by side (a bad run of markets, the middle path and a good run) and the earliest age you could stop working in each, so you never see the best case alone. Every amount comes in today's money first, with the euros of its year beside it, and every answer states its assumptions: the return before and after you stop, inflation, and that the money has to last to 100.\n\nThen test a decision against your plan: a home (the mortgage, the rent it replaces, the equity it builds), a car, spending more or less (once, every month or every year), or a new salary path. You get the plan with the change and without it, and a chart of both in the chat.\n\nIf you keep a plan at f2tool.com, link your account: the answers then run on your saved plan, test the what-ifs you saved, and tell you how you are doing from your monthly check-ins. Linking is optional. A linked assistant reads your figures, never your name, email or picture.\n\nF2 Tool gives no advice. Ask \"should I?\" and it shows what the numbers say under each choice. It names no fund, broker or bank, sells nothing and shows no ads, and it keeps none of the numbers you give in a chat. Every answer ends with a link that opens the planner at f2tool.com on your numbers, where you can keep your plan if you want to.\n\nMade in Bulgaria, in euros. It answers in English and in Bulgarian. How it works: https://f2tool.com/en/ai",
  "interface": {
    "capabilities": [],
    "category": "Finance",
    "defaultPrompt": [
      "I'm 34, I earn 2,100 \u20ac net a month, have 15,000 \u20ac saved and spend 1,250 \u20ac a month. When can I stop working?",
      "I'm 34, net 2,100 \u20ac a month, 15,000 \u20ac saved, spend 1,250 \u20ac. Buy a 150,000 \u20ac flat at 38, 30,000 \u20ac down, instead of 500 \u20ac rent?",
      "\u041d\u0430 34, 2 100 \u20ac \u043d\u0435\u0442\u043e, 15 000 \u20ac \u0441\u043f\u0435\u0441\u0442\u0435\u043d\u0438, \u0445\u0430\u0440\u0447\u0430 1 250 \u20ac \u043d\u0430 \u043c\u0435\u0441\u0435\u0446. \u0410\u043c\u0438 \u0430\u043a\u043e \u0445\u0430\u0440\u0447\u0430 \u0441 200 \u20ac \u043f\u043e-\u043c\u0430\u043b\u043a\u043e \u0432\u0441\u0435\u043a\u0438 \u043c\u0435\u0441\u0435\u0446?"
    ],
    "developerName": "Damian Plamenov Yordanov",
    "displayName": "F2 Tool",
    "longDescription": "F2 Tool works out your plan to age 100 from four numbers: your age, your net monthly salary, your savings and your monthly spending, in euros. It answers with three outcomes side by side (a bad run of markets, the middle path and a good run) and the earliest age you could stop working in each, so you never see the best case alone. Every amount comes in today's money first, with the euros of its year beside it, and every answer states its assumptions: the return before and after you stop, inflation, and that the money has to last to 100.\n\nThen test a decision against your plan: a home (the mortgage, the rent it replaces, the equity it builds), a car, spending more or less (once, every month or every year), or a new salary path. You get the plan with the change and without it, and a chart of both in the chat.\n\nIf you keep a plan at f2tool.com, link your account: the answers then run on your saved plan, test the what-ifs you saved, and tell you how you are doing from your monthly check-ins. Linking is optional. A linked assistant reads your figures, never your name, email or picture.\n\nF2 Tool gives no advice. Ask \"should I?\" and it shows what the numbers say under each choice. It names no fund, broker or bank, sells nothing and shows no ads, and it keeps none of the numbers you give in a chat. Every answer ends with a link that opens the planner at f2tool.com on your numbers, where you can keep your plan if you want to.\n\nMade in Bulgaria, in euros. It answers in English and in Bulgarian. How it works: https://f2tool.com/en/ai",
    "privacyPolicyURL": "https://f2tool.com/privacy",
    "shortDescription": "Plan when you can stop working",
    "supportURL": "https://f2tool.com/contact",
    "termsOfServiceURL": "https://f2tool.com/terms",
    "websiteURL": "https://f2tool.com",
    "logo": "./assets/logo.png",
    "composerIcon": "./assets/composer-icon.png",
    "screenshots": [
      "./assets/1-plan-en-phone.png",
      "./assets/2-flat-en-phone.png",
      "./assets/3-spending-bg-phone.png"
    ]
  },
  "name": "app-6abbb070bbe48191a93cea5259828c99",
  "version": "1.0.1",
  "extensions": {
    "com.openai": {
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "When can I stop working? (no account needed)",
              "prompt": "I'm 34, I earn 2,100 \u20ac net a month, have 15,000 \u20ac saved and spend 1,250 \u20ac a month. When can I stop working?",
              "tools_triggered": "project_savings (age 34, monthlySalary 2100, currentSavings 15000, monthlySpend 1250, lang en)",
              "expected_behavior": "A chart above the answer: the band from the worst case to the best, the middle path through it, and the freedom age marked at 65. The answer: the safe age is 65 (the earliest at which even the worst case lasts to 100), with 59 as the flexible age and 52 as the optimistic one. At 65, in today's money: 413K \u20ac in the worst case, 642K \u20ac on the middle path and 1.08M \u20ac in the best case (763K \u20ac, 1.19M \u20ac and 1.99M \u20ac in the euros of 2057). The money lasts past 100 in all three cases. It states the assumptions (a 6% return before the freedom age and 4% after it, 2% inflation, money made to last to 100) and says they were the planner's defaults. No recommendation. It ends with a link to the planner at f2tool.com, which opens on these numbers."
            },
            {
              "description": "Can I afford a one-off purchase? (no account needed)",
              "prompt": "I'm 34, net 2,100 \u20ac a month, 15,000 \u20ac saved, spend 1,250 \u20ac a month. Can I afford a 2,000 \u20ac trip this summer?",
              "tools_triggered": "what_if_spending (the four numbers, and change: amount 2000, direction more, frequency once)",
              "expected_behavior": "The plan with the trip and without it, at the same freedom age of 65. In today's money: 642K \u20ac on the middle path without the trip and 636K \u20ac with it; the worst case 413K \u20ac and 411K \u20ac; the best case 1.08M \u20ac and 1.06M \u20ac. The money lasts past 100 either way. A chart with the plan's band and middle path, the trip's line dashed, and a marker at 34, under the strip 'Net worth at 65: 642K \u2192 636K \u20ac'. The answer shows both and recommends neither, and ends with the planner link, which opens the planner on these numbers with the trip switched on."
            },
            {
              "description": "A new job, asked in Bulgarian (no account needed)",
              "prompt": "\u041d\u0430 34, 2 100 \u20ac \u043d\u0435\u0442\u043e, 15 000 \u20ac \u0441\u043f\u0435\u0441\u0442\u0435\u043d\u0438, \u0445\u0430\u0440\u0447\u0430 1 250 \u20ac \u043d\u0430 \u043c\u0435\u0441\u0435\u0446. \u0410\u043a\u043e \u0441\u043c\u0435\u043d\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u0430 \u0441\u0438 \u0437\u0430 2 800 \u20ac \u043d\u0435\u0442\u043e?",
              "tools_triggered": "what_if_career (the four numbers, change: startingSalary 2800, lang bg)",
              "expected_behavior": "The answer is in Bulgarian, and so are the chart's labels. The plan with the new job and without it, at the same freedom age of 65, in today's money: 413 \u0445\u0438\u043b. \u20ac \u2192 751 \u0445\u0438\u043b. \u20ac in the worst case, 642 \u0445\u0438\u043b. \u20ac \u2192 1,14 \u043c\u043b\u043d. \u20ac on the middle path, and 1,08 \u043c\u043b\u043d. \u20ac \u2192 1,87 \u043c\u043b\u043d. \u20ac in the best case, with 260 400 \u20ac more earned by 65. The chart has the dashed what-if line. It states the assumptions and which figures were the planner's defaults, recommends nothing, and ends with the planner link."
            },
            {
              "description": "The saved plan, after linking the demo account",
              "prompt": "Use my saved F2 Tool plan: when can I stop working?",
              "tools_triggered": "project_savings (lang only). Without a link, it answers with ChatGPT's link challenge; after linking the demo account, the same call answers on the saved plan.",
              "expected_behavior": "First, ChatGPT asks for access to F2 Tool. Link the demo account as the test credentials describe. Then the answer runs on the saved plan (age 34, 2,100 \u20ac net a month, 19,670 \u20ac saved, 1,250 \u20ac spent) and says those figures were the saved plan's, with the day the savings were last set. The safe age is 65, the flexible 58, the optimistic 52. At 65, in today's money: 419K \u20ac, 657K \u20ac and 1.12M \u20ac. The chart appears above the answer, and the planner link comes last. The answer never contains the account's name or email."
            },
            {
              "description": "How am I doing against my plan? (linked demo account)",
              "prompt": "How am I doing against my plan?",
              "tools_triggered": "progress_report (lang only), with the demo account linked (see test case 4)",
              "expected_behavior": "The answer comes from the demo account's check-ins, in the words of the planner's progress card. It says check-ins are on, with six of them, tracked since the first, and gives the date of the next. Then the readout of the last check-in: 880 \u20ac put aside against the 866 \u20ac the plan counted on (on plan); the growth against the plan's growth, with the range the plan allows over one month; where the balance stands against the plan the account started with (inside its range); and the safe age staying 65. Then every check-in with the balance and what the starting plan expected by then. It gives no advice, and ends with the planner link. Asked without a link, it asks for one instead of answering."
            }
          ],
          "negative": [
            {
              "description": "Asking which fund or product to buy. F2 Tool should not be called: it projects a plan and never names, ranks or recommends a fund, broker, bank or pension company.",
              "prompt": "Which ETF or pension fund should I put my savings in?"
            },
            {
              "description": "Moving money. F2 Tool should not be called: it moves no money, makes no trades and connects to no bank or broker.",
              "prompt": "Move 500 \u20ac from my savings into an index fund for me."
            },
            {
              "description": "Tax on a salary. F2 Tool should not be called: it works on net figures and calculates no taxes.",
              "prompt": "How much income tax will I pay on a 2,100 \u20ac salary in Bulgaria?"
            }
          ]
        },
        "demo_recording_url": "https://youtu.be/71uFxqrxY8M"
      },
      "publication": {
        "countries": [
          "AT",
          "BE",
          "BG",
          "CY",
          "CZ",
          "DE",
          "DK",
          "EE",
          "ES",
          "FI",
          "FR",
          "GR",
          "HR",
          "HU",
          "IE",
          "IS",
          "IT",
          "LI",
          "LT",
          "LU",
          "LV",
          "MT",
          "NL",
          "NO",
          "PL",
          "PT",
          "RO",
          "SE",
          "SI",
          "SK"
        ],
        "release_notes": "First release of F2 Tool in ChatGPT. Project your savings to age 100 in three cases, from a bad run of markets to a good one, and see the earliest age you could stop working in each. Test a decision against your plan: a home, a car, spending more or less, or a new salary path, with a chart of both in the chat. Link your F2 Tool account, if you keep a plan at f2tool.com, to answer on your saved plan and your monthly check-ins. In English and in Bulgarian.",
        "translations": {
          "bg-BG": {
            "subtitle": "\u041f\u043b\u0430\u043d\u0438\u0440\u0430\u0439 \u043a\u043e\u0433\u0430 \u0434\u0430 \u0441\u043f\u0440\u0435\u0448 \u0440\u0430\u0431\u043e\u0442\u0430",
            "description": "F2 Tool \u0438\u0437\u0447\u0438\u0441\u043b\u044f\u0432\u0430 \u043f\u043b\u0430\u043d\u0430 \u0442\u0438 \u0434\u043e 100-\u0433\u043e\u0434\u0438\u0448\u043d\u0430 \u0432\u044a\u0437\u0440\u0430\u0441\u0442 \u043f\u043e \u0447\u0435\u0442\u0438\u0440\u0438 \u0447\u0438\u0441\u043b\u0430: \u0432\u044a\u0437\u0440\u0430\u0441\u0442\u0442\u0430 \u0442\u0438, \u043d\u0435\u0442\u043d\u0430\u0442\u0430 \u043c\u0435\u0441\u0435\u0447\u043d\u0430 \u0437\u0430\u043f\u043b\u0430\u0442\u0430, \u0441\u043f\u0435\u0441\u0442\u044f\u0432\u0430\u043d\u0438\u044f\u0442\u0430 \u0438 \u043c\u0435\u0441\u0435\u0447\u043d\u0438\u0442\u0435 \u0442\u0438 \u0440\u0430\u0437\u0445\u043e\u0434\u0438, \u0432 \u0435\u0432\u0440\u043e. \u041e\u0442\u0433\u043e\u0432\u0430\u0440\u044f \u0441 \u0442\u0440\u0438 \u0438\u0437\u0445\u043e\u0434\u0430 \u0435\u0434\u0438\u043d \u0434\u043e \u0434\u0440\u0443\u0433 \u2013 \u043b\u043e\u0448 \u043f\u0435\u0440\u0438\u043e\u0434 \u043d\u0430 \u043f\u0430\u0437\u0430\u0440\u0438\u0442\u0435, \u0441\u0440\u0435\u0434\u043d\u0438\u044f \u043f\u044a\u0442 \u0438 \u0434\u043e\u0431\u044a\u0440 \u043f\u0435\u0440\u0438\u043e\u0434 \u2013 \u0438 \u0441 \u043d\u0430\u0439-\u0440\u0430\u043d\u043d\u0430\u0442\u0430 \u0432\u044a\u0437\u0440\u0430\u0441\u0442, \u043d\u0430 \u043a\u043e\u044f\u0442\u043e \u043c\u043e\u0436\u0435\u0448 \u0434\u0430 \u0441\u043f\u0440\u0435\u0448 \u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0438\u0448 \u043f\u0440\u0438 \u0432\u0441\u0435\u043a\u0438 \u043e\u0442 \u0442\u044f\u0445, \u0442\u0430\u043a\u0430 \u0447\u0435 \u043d\u0438\u043a\u043e\u0433\u0430 \u043d\u0435 \u0432\u0438\u0436\u0434\u0430\u0448 \u0441\u0430\u043c\u043e \u043d\u0430\u0439-\u0434\u043e\u0431\u0440\u0438\u044f \u0441\u043b\u0443\u0447\u0430\u0439. \u0412\u0441\u044f\u043a\u0430 \u0441\u0443\u043c\u0430 \u0435 \u043f\u044a\u0440\u0432\u043e \u0432 \u0434\u043d\u0435\u0448\u043d\u0438 \u043f\u0430\u0440\u0438, \u0441 \u0435\u0432\u0440\u043e\u0442\u043e \u043e\u0442 \u0441\u044a\u043e\u0442\u0432\u0435\u0442\u043d\u0430\u0442\u0430 \u0433\u043e\u0434\u0438\u043d\u0430 \u0434\u043e \u043d\u0435\u044f, \u0430 \u0432\u0441\u0435\u043a\u0438 \u043e\u0442\u0433\u043e\u0432\u043e\u0440 \u043a\u0430\u0437\u0432\u0430 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f\u0442\u0430 \u0441\u0438: \u0434\u043e\u0445\u043e\u0434\u043d\u043e\u0441\u0442\u0442\u0430 \u043f\u0440\u0435\u0434\u0438 \u0438 \u0441\u043b\u0435\u0434 \u043a\u0430\u0442\u043e \u0441\u043f\u0440\u0435\u0448, \u0438\u043d\u0444\u043b\u0430\u0446\u0438\u044f\u0442\u0430 \u0438 \u0447\u0435 \u043f\u0430\u0440\u0438\u0442\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0441\u0442\u0438\u0433\u043d\u0430\u0442 \u0434\u043e 100 \u0433\u043e\u0434\u0438\u043d\u0438.\n\n\u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0431\u0432\u0430\u0439 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u043f\u0440\u044f\u043c\u043e \u043f\u043b\u0430\u043d\u0430 \u0441\u0438: \u0436\u0438\u043b\u0438\u0449\u0435 (\u0438\u043f\u043e\u0442\u0435\u043a\u0430\u0442\u0430, \u043d\u0430\u0435\u043c\u0430, \u043a\u043e\u0439\u0442\u043e \u0437\u0430\u043c\u0435\u043d\u044f, \u043a\u0430\u043f\u0438\u0442\u0430\u043b\u0430, \u043a\u043e\u0439\u0442\u043e \u0442\u0440\u0443\u043f\u0430\u0448 \u0432 \u043d\u0435\u0433\u043e), \u043a\u043e\u043b\u0430, \u043f\u043e\u0432\u0435\u0447\u0435 \u0438\u043b\u0438 \u043f\u043e-\u043c\u0430\u043b\u043a\u043e \u0440\u0430\u0437\u0445\u043e\u0434\u0438 (\u0432\u0435\u0434\u043d\u044a\u0436, \u0432\u0441\u0435\u043a\u0438 \u043c\u0435\u0441\u0435\u0446 \u0438\u043b\u0438 \u0432\u0441\u044f\u043a\u0430 \u0433\u043e\u0434\u0438\u043d\u0430) \u0438\u043b\u0438 \u043d\u043e\u0432 \u043f\u044a\u0442 \u043d\u0430 \u0437\u0430\u043f\u043b\u0430\u0442\u0430\u0442\u0430. \u041f\u043e\u043b\u0443\u0447\u0430\u0432\u0430\u0448 \u043f\u043b\u0430\u043d\u0430 \u0441 \u043f\u0440\u043e\u043c\u044f\u043d\u0430\u0442\u0430 \u0438 \u0431\u0435\u0437 \u043d\u0435\u044f, \u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u043d\u0430 \u0434\u0432\u0430\u0442\u0430, \u043d\u0430\u0447\u0435\u0440\u0442\u0430\u043d\u0430 \u0432 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430.\n\n\u0410\u043a\u043e \u043f\u0430\u0437\u0438\u0448 \u043f\u043b\u0430\u043d \u043d\u0430 f2tool.com, \u0441\u0432\u044a\u0440\u0436\u0438 \u0430\u043a\u0430\u0443\u043d\u0442\u0430 \u0441\u0438: \u0442\u043e\u0433\u0430\u0432\u0430 \u043e\u0442\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0435 \u0441\u0430 \u043f\u043e \u0437\u0430\u043f\u0430\u0437\u0435\u043d\u0438\u044f \u0442\u0438 \u043f\u043b\u0430\u043d, \u043f\u0440\u043e\u0431\u0432\u0430\u0442 \u0437\u0430\u043f\u0430\u0437\u0435\u043d\u0438\u0442\u0435 \u0442\u0438 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0438 \u0442\u0438 \u043a\u0430\u0437\u0432\u0430\u0442 \u043a\u0430\u043a \u0441\u0435 \u0441\u043f\u0440\u0430\u0432\u044f\u0448 \u0441\u043f\u043e\u0440\u0435\u0434 \u043c\u0435\u0441\u0435\u0447\u043d\u0438\u0442\u0435 \u0442\u0438 \u043f\u0440\u0435\u0433\u043b\u0435\u0434\u0438. \u0421\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435\u0442\u043e \u0435 \u043f\u043e \u0438\u0437\u0431\u043e\u0440. \u0421\u0432\u044a\u0440\u0437\u0430\u043d\u0438\u044f\u0442 \u0430\u0441\u0438\u0441\u0442\u0435\u043d\u0442 \u0447\u0435\u0442\u0435 \u0447\u0438\u0441\u043b\u0430\u0442\u0430 \u0442\u0438, \u043d\u0438\u043a\u043e\u0433\u0430 \u0438\u043c\u0435\u0442\u043e, \u0438\u043c\u0435\u0439\u043b\u0430 \u0438\u043b\u0438 \u0441\u043d\u0438\u043c\u043a\u0430\u0442\u0430 \u0442\u0438.\n\nF2 Tool \u043d\u0435 \u0434\u0430\u0432\u0430 \u0441\u044a\u0432\u0435\u0442\u0438. \u041f\u043e\u043f\u0438\u0442\u0430\u0448 \u043b\u0438 \u201e\u0434\u0430 \u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u044f \u043b\u0438?\u201c, \u043f\u043e\u043a\u0430\u0437\u0432\u0430 \u043a\u0430\u043a\u0432\u043e \u043a\u0430\u0437\u0432\u0430\u0442 \u0447\u0438\u0441\u043b\u0430\u0442\u0430 \u043f\u0440\u0438 \u0432\u0441\u0435\u043a\u0438 \u0438\u0437\u0431\u043e\u0440. \u041d\u0435 \u043d\u0430\u0437\u043e\u0432\u0430\u0432\u0430 \u0444\u043e\u043d\u0434, \u0431\u0440\u043e\u043a\u0435\u0440 \u0438\u043b\u0438 \u0431\u0430\u043d\u043a\u0430, \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0430 \u043d\u0438\u0449\u043e, \u043d\u044f\u043c\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u0438 \u0438 \u043d\u0435 \u043f\u0430\u0437\u0438 \u043d\u0438\u0442\u043e \u0435\u0434\u043d\u043e \u043e\u0442 \u0447\u0438\u0441\u043b\u0430\u0442\u0430, \u043a\u043e\u0438\u0442\u043e \u0434\u0430\u0432\u0430\u0448 \u0432 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430. \u0412\u0441\u0435\u043a\u0438 \u043e\u0442\u0433\u043e\u0432\u043e\u0440 \u0437\u0430\u0432\u044a\u0440\u0448\u0432\u0430 \u0441 \u0432\u0440\u044a\u0437\u043a\u0430, \u043a\u043e\u044f\u0442\u043e \u043e\u0442\u0432\u0430\u0440\u044f \u043f\u043b\u0430\u043d\u0435\u0440\u0430 \u043d\u0430 f2tool.com \u0441 \u0442\u0432\u043e\u0438\u0442\u0435 \u0447\u0438\u0441\u043b\u0430, \u043a\u044a\u0434\u0435\u0442\u043e \u043c\u043e\u0436\u0435\u0448 \u0434\u0430 \u0437\u0430\u043f\u0430\u0437\u0438\u0448 \u043f\u043b\u0430\u043d\u0430 \u0441\u0438, \u0430\u043a\u043e \u0438\u0441\u043a\u0430\u0448.\n\n\u041d\u0430\u043f\u0440\u0430\u0432\u0435\u043d \u0432 \u0411\u044a\u043b\u0433\u0430\u0440\u0438\u044f, \u0432 \u0435\u0432\u0440\u043e. \u041e\u0442\u0433\u043e\u0432\u0430\u0440\u044f \u043d\u0430 \u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 \u0438 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438. \u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0438: https://f2tool.com/bg/ai"
          }
        }
      }
    }
  },
  "mcpServers": "./.mcp.json",
  "apps": "./.app.json"
}

SHA-256: f52e6032c1682fe0c03f9f72d00cf52e70fa45cc2388eb143ba8d06bb406b32c