<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://jaack.me/feed.xml" rel="self" type="application/atom+xml" /><link href="https://jaack.me/" rel="alternate" type="text/html" /><updated>2026-10-08T14:38:37+00:00</updated><id>https://jaack.me/feed.xml</id><title type="html">Giacomo Barbieri / Jaack</title><subtitle>Giacomo Barbieri: independent crypto builder, native apps, AI systems, Team1 Italy, and advisory.</subtitle><entry xml:lang="en"><title type="html">I built a booking page that checks more than my calendar so I only offer time I can give</title><link href="https://jaack.me/how-i-built-book-jaack-me-with-jev/" rel="alternate" type="text/html" title="I built a booking page that checks more than my calendar so I only offer time I can give" /><published>2026-09-26T14:50:00+00:00</published><updated>2026-09-26T14:50:00+00:00</updated><id>https://jaack.me/how-i-built-book-jaack-me-with-jev</id><content type="html" xml:base="https://jaack.me/how-i-built-book-jaack-me-with-jev/"><![CDATA[<p>An empty half hour on my calendar is not always a half hour I can give someone. I may need to get home from an in-person event. I may have a deadline and still need time to finish the work. I wanted my booking link to take those things into account.</p>

<p>I built <a href="https://book.jaack.me/">book.jaack.me</a> with Codex. It’s a small Node app running on my Mac, with SQLite holding its private state. A visitor chooses a meeting length and a time, then gets a Google Meet invitation. Most of the work is deciding which times to offer.</p>

<p>For every availability request, the app checks all the calendars in my connected Google accounts, including hidden calendars and busy-only shared ones. If it cannot check one of them, it doesn’t offer the time. I’d rather miss a possible meeting than book over something I already have.</p>

<p>Visitors see times in their own time zone. The date picker disables days with no available slots and recalculates when someone changes the meeting length. I set my minimum booking notice in a private dashboard; it’s eight hours now. Before a booking is confirmed, the app checks the calendars again. It creates the meeting on the Google account I selected for invitations, with a new Meet link. Guests can cancel or reschedule from a signed link. A reschedule checks availability again and moves the original event, keeping its Meet link.</p>

<p>Those checks are rules in code. Calendar conflicts, working hours, notice and time-zone conversion do not depend on a model’s answer.</p>

<p>Travel needs another check. Visitors are booking remote calls, but I have in-person events on my calendar. The app uses my base location and the event’s location to ask Google Routes how long the trip takes. It checks the direction that matters for a slot before or after that event, adds my minimum buffer and removes times that don’t fit. It never asks the visitor where they are.</p>

<p>I use <a href="https://typesafe.ai/blog/introducing-system-one-models-and-jev">Jev</a> for a smaller decision within that travel calculation. It can choose a travel mode and add up to 15 minutes of extra margin. Google Routes still supplies the route time. If Jev chooses another mode, the app asks Google Routes for that route too. If the route fails, it uses driving.</p>

<p>Jev gets rounded route distance and duration, the trip direction and possible meeting times. It doesn’t get either address, the event title, attendees or the visitor’s details. I accept a choice only when its confidence reaches 0.55. If the mode is uncertain, the app uses driving; if the extra margin is uncertain, it uses zero. One weak answer doesn’t force me to discard the other.</p>

<p>I also wanted the page to account for what kind of week I’m having. The app uses the previous four weeks to learn a baseline for busy time, then reads current events when it calculates slots. In the private dashboard I can match projects by calendar and title keywords. A title match takes priority, and I can mark an event <code class="language-plaintext highlighter-rouge">[meeting]</code>, <code class="language-plaintext highlighter-rouge">[focus]</code> or <code class="language-plaintext highlighter-rouge">[deadline]</code> when its default classification is wrong. Events without a project still count as busy.</p>

<p>I set the scheduling rules around that classification. If a day already has several meetings, new calls are grouped into fewer nearby times. If I have a long focus block, the page keeps possible calls near the day’s edges. Ahead of a deadline, it reduces openings over the preceding workdays and can close the deadline day. Across a week, it favors dates that already have calls instead of cutting up quieter days. Safe times are also ranked using local history of bookings that were kept, cancelled or rescheduled. That history needs more real outcomes before I can judge how useful the ranking is.</p>

<p>Jev doesn’t set those rules. Once a day, it sees aggregate workload for the next two workdays and chooses whether to keep my minimum booking notice, increase it by 50% or double it. With my current eight-hour minimum, that means eight, twelve or sixteen hours. It cannot shorten the minimum I set. If the next five workdays are unusually full, Jev can also choose a private suggestion to cluster meetings, protect focus or protect a deadline. I see the suggestion in the dashboard; it does not move calendar events.</p>

<p>Testing this made me more careful about what I call “working.” A valid API key and a response from Jev did not mean its advice was usable. Some live travel answers were below my confidence threshold, so the app used the fallback. On a later availability check beside an in-person event, it accepted Jev’s answer. Both are expected outcomes. The eight-hour notice is currently unchanged because that is what Jev chose from the recent workload.</p>

<p>The public page exposes available times and a suggested date. My project rules, workload report and Google account settings stay behind the private dashboard. Jev sees only the limited travel features or aggregate workload needed for each choice.</p>

<p>The booking page is live at <a href="https://book.jaack.me/">book.jaack.me</a>. I’ll learn more from actual bookings, especially whether the ranking of times improves. For now, I know exactly which decisions come from Google Calendar, which come from my rules and which ones I’ve asked Jev to make.</p>]]></content><author><name>jaack</name></author><category term="blog" /><category term="ai" /><category term="agents" /><category term="building" /><summary type="html"><![CDATA[I built a booking page that checks my calendars, travel and project workload, with Jev making a few bounded decisions inside the scheduling rules.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jaack.me/assets/images/2026/book-jev-cover.png" /><media:content medium="image" url="https://jaack.me/assets/images/2026/book-jev-cover.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">helicon and the price of future AVAX</title><link href="https://jaack.me/helicon-and-the-price-of-future-avax/" rel="alternate" type="text/html" title="helicon and the price of future AVAX" /><published>2026-09-09T07:00:00+00:00</published><updated>2026-09-09T07:00:00+00:00</updated><id>https://jaack.me/helicon-and-the-price-of-future-avax</id><content type="html" xml:base="https://jaack.me/helicon-and-the-price-of-future-avax/"><![CDATA[<p>I was discussing <a href="https://academy.avax.network/blog/helicon-upgrade">Helicon’s proposed reduction in AVAX issuance</a>, and my reaction was: yes, less dilution today may be good. But <a href="https://docs.avax.network/docs/primary-network/avax-token">AVAX has a max supply</a>. Slowing issuance also means leaving more tokens to enter circulation further into the future.</p>

<p>I called this the “pressure of the last token.” My concern is that investors may keep discounting AVAX while a substantial part of its supply remains ahead of them. They may prefer a token whose major releases have finished.</p>

<p>Issuing the remaining AVAX faster could make the price much worse in the meantime. My thesis is that, as circulating supply approaches max supply, investors could then accept a higher valuation because they have less future supply to worry about. I wanted to find evidence for that second part before treating it as a reason to oppose lower issuance.</p>

<p>Helicon is <a href="https://github.com/ava-labs/avalanchego/releases/tag/v1.15.0">scheduled for mainnet on 22 September 2026</a>. Alongside changes to staking and <a href="https://academy.avax.network/docs/acps/194-continuous-execution">C-Chain execution</a>, <a href="https://docs.avax.network/docs/acps/285-reduce-minimum-consumption-rate">ACP-285 lowers the minimum consumption-rate parameter</a> from 10% to 7.5% over 90 days. The maximum stays unchanged. These are parameters in the staking reward formula. A staker’s yield also depends on the rest of that formula; a 2.5-point parameter cut does not mean a 2.5-point cut in token inflation. The authors project <a href="https://docs.avax.network/docs/acps/285-reduce-minimum-consumption-rate">0.5–1 percentage point less annual inflation</a> under their modelling assumptions.<sup id="fnref:7" role="doc-noteref"><a href="#fn:7" class="footnote" rel="footnote">1</a></sup></p>

<p>That leaves more of the finite reward budget available for later. I understand the argument for doing this: Avalanche can pay less in rewards now and sustain them for longer. My concern was whether investors would attach a cost to that longer distribution period.</p>

<p>I also wanted to compare tokens without a fixed cap. With ETH, for example, you don’t have a final token to wait for. You can adjust expectations around issuance and burns, then estimate net inflation over the period you plan to hold it. I thought that might make uncapped tokens easier to value, despite the absence of a supply limit.</p>

<p>I compared AVAX with BTC, ETH, SOL, APT, SUI, ADA, DOT, ATOM and NEAR, going back to 2020. I found results that supported my intuition, but I could reverse them by changing the starting date.</p>

<p>I’m writing this on 9 September 2026, before mainnet activation. The dataset ends on 6 September. None of the returns below measures Helicon’s effect.</p>

<p>I used <a href="/assets/research/helicon/monthly-snapshots.csv">81 monthly snapshot dates</a>, from 5 January 2020 to 6 September 2026, giving me 705 prices and 704 circulating-supply observations. AVAX enters the monthly sample in October 2020, APT in November 2022 and SUI in May 2023. Those are the first observations in this dataset, not their exact launch dates.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">2</a></sup></p>

<p>I kept CoinMarketCap as the historical source to avoid mixing providers’ <a href="https://coinmarketcap.com/faq/">definitions of circulating supply</a>. Even then, the numbers include more than new issuance: existing allocations can enter circulation, and the provider can change its classification. The first SOL price observation has no circulating-supply value, so I left that cell empty.</p>

<p>In the original discussion, I used “unlocked” to cover too many things. <a href="https://aptosnetwork.com/currents/aptos-tokenomics-overview">Investor vesting</a>, <a href="https://docs.avax.network/docs/primary-network/avax-token">new staking issuance</a> and circulating supply measure different things. Vesting releases existing allocations; minting creates tokens. Burns reduce supply. Unstaking can make tokens liquid without creating any. <a href="https://solana.com/staking">Staking APR</a> measures rewards relative to staked capital, which also makes it different from inflation across the whole supply.</p>

<p>For AVAX, the gap between reported circulation and 720M includes existing allocations outside circulation as well as tokens yet to be minted. Helicon changes staking rewards. It doesn’t reschedule that entire gap as one unlock.</p>

<p>I started with circulating supply divided by the supply ceiling. That gives me a percentage to compare, but it leaves out who receives the remaining tokens and when they receive them. I would expect different selling pressure from an allocation released next month and the same quantity issued over years.</p>

<p>The table uses <a href="https://coinmarketcap.com/historical/20260906/">circulation on 6 September 2026</a> and a common return period, <a href="/assets/research/helicon/long-horizon.csv">7 May 2023 to 6 September 2026</a>. This lets me include APT and SUI without comparing them with years before they existed. Returns are in USD and exclude staking rewards.<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">3</a></sup></p>

<table>
  <thead>
    <tr>
      <th>Token</th>
      <th style="text-align: right">Supply ceiling</th>
      <th style="text-align: right">Circulating / ceiling</th>
      <th style="text-align: right">Price return, common period</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://bitcoin.org/en/faq#how-are-bitcoins-created">BTC</a></td>
      <td style="text-align: right">21M</td>
      <td style="text-align: right">95.6%</td>
      <td style="text-align: right">+182.4%</td>
    </tr>
    <tr>
      <td><a href="https://ethereum.org/roadmap/merge/issuance/">ETH</a></td>
      <td style="text-align: right">No fixed cap</td>
      <td style="text-align: right">N/A</td>
      <td style="text-align: right">+34.2%</td>
    </tr>
    <tr>
      <td><a href="https://docs.avax.network/docs/primary-network/avax-token">AVAX</a></td>
      <td style="text-align: right">720M</td>
      <td style="text-align: right">60.0%</td>
      <td style="text-align: right">−51.9%</td>
    </tr>
    <tr>
      <td><a href="https://solana.com/staking">SOL</a></td>
      <td style="text-align: right">No fixed cap</td>
      <td style="text-align: right">N/A</td>
      <td style="text-align: right">+387.3%</td>
    </tr>
    <tr>
      <td><a href="https://aptosnetwork.com/currents/aptos-tokenomics-update">APT</a></td>
      <td style="text-align: right">2.1B approved*</td>
      <td style="text-align: right">40.9%*</td>
      <td style="text-align: right">−93.2%</td>
    </tr>
    <tr>
      <td><a href="https://www.sui.io/token-schedule">SUI</a></td>
      <td style="text-align: right">10B</td>
      <td style="text-align: right">41.0%</td>
      <td style="text-align: right">−34.8%</td>
    </tr>
    <tr>
      <td><a href="https://forum.cardano.org/t/max-lovelace-supply-cardano-network-parameters-part-18/144295">ADA</a></td>
      <td style="text-align: right">45B</td>
      <td style="text-align: right">81.6%</td>
      <td style="text-align: right">−40.8%</td>
    </tr>
    <tr>
      <td><a href="https://forum.polkadot.network/t/changes-on-polkadot-in-march-2026/17101">DOT</a></td>
      <td style="text-align: right">2.1B†</td>
      <td style="text-align: right">81.0%</td>
      <td style="text-align: right">−82.7%</td>
    </tr>
    <tr>
      <td><a href="https://docs.cosmos.network/sdk/latest/modules/mint/README">ATOM</a></td>
      <td style="text-align: right">No fixed cap</td>
      <td style="text-align: right">N/A</td>
      <td style="text-align: right">−85.5%</td>
    </tr>
    <tr>
      <td><a href="https://docs.near.org/protocol/network/validators">NEAR</a></td>
      <td style="text-align: right">No fixed cap</td>
      <td style="text-align: right">N/A</td>
      <td style="text-align: right">+39.9%</td>
    </tr>
  </tbody>
</table>

<p>*<a href="https://governance.aptosfoundation.org/proposal/183?votesPage=0">APT’s cap has approval</a>, but I haven’t verified its subsequent protocol enforcement. Its ratio assumes that approved ceiling. †<a href="https://forum.polkadot.network/t/changes-on-polkadot-in-march-2026/17101">DOT’s capped issuance schedule dates to 2026; governance approved the cap in 2025</a>. I kept both in this table and excluded them from historical tests that need a consistent cap policy. For uncapped tokens, circulating/max is undefined.<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">4</a></sup></p>

<p>I also avoided comparing circulating/max with market cap/FDV. If you calculate <a href="https://coinmarketcap.com/faq/">market cap as price × circulating supply</a> and FDV as price × max supply, those two ratios are identical. A correlation between them would add nothing.</p>

<p>I compared the starting supply ratio with the price return that followed. That lets me test an implication of my thesis, but a price return alone can’t tell me how much of a valuation discount investors assigned to future supply.</p>

<p>For BTC, AVAX and ADA, I kept the September 2026 endpoint and <a href="/assets/research/helicon/reproduction.zip">changed the starting date</a>:</p>

<table>
  <thead>
    <tr>
      <th>Starting snapshot</th>
      <th style="text-align: right">Correlation with subsequent price return</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>October 2020</td>
      <td style="text-align: right">+0.71</td>
    </tr>
    <tr>
      <td>January 2021</td>
      <td style="text-align: right">−0.16</td>
    </tr>
    <tr>
      <td>January 2022</td>
      <td style="text-align: right">+0.75</td>
    </tr>
  </tbody>
</table>

<p>Positive means the tokens closer to their caps tended to perform better in that comparison. Starting in October 2020 or January 2022 supports my intuition; starting in January 2021 gives me the opposite sign.</p>

<p>With three tokens, Bitcoin’s performance and AVAX’s entry price can move the result a lot. Going back to January 2020 leaves me with BTC and ADA from this capped group, which is too little to make a correlation useful.</p>

<p>The <a href="/assets/research/helicon/annual-correlations.csv">annual comparisons</a> have the same problem. Higher starting circulation/max goes with worse returns in the 2021, 2023 and 2024 intervals, and better returns in 2022, 2025 and 2026 through early September. I start with three capped tokens and add SUI once it has a full starting observation. These intervals run between the first January snapshots, with a partial period for 2026.<sup id="fnref:4" role="doc-noteref"><a href="#fn:4" class="footnote" rel="footnote">5</a></sup></p>

<figure class="helicon-chart" id="avax-history">
  <img class="helicon-fallback" src="/assets/research/helicon/avax-monthly.svg" width="820" height="360" alt="AVAX monthly USD price from October 2020 to September 2026, showing a large rally and collapse while reported supply maturity increased." loading="lazy" />
  <div class="helicon-interactive" hidden="">
    <p class="helicon-chart-title">AVAX price and circulating supply</p>
    <div class="helicon-plot"></div>
    <dl class="helicon-values">
      <div><dt>Snapshot</dt><dd data-value="date"></dd></div>
      <div><dt>Price (USD)</dt><dd data-value="price"></dd></div>
      <div><dt>Circulating AVAX</dt><dd data-value="circulating"></dd></div>
      <div><dt>Share of 720M cap</dt><dd data-value="ratio"></dd></div>
    </dl>
    <label for="avax-month">Explore a monthly snapshot</label>
    <input id="avax-month" type="range" min="0" max="71" step="1" value="71" aria-describedby="avax-chart-help" />
    <p class="helicon-chart-help" id="avax-chart-help">Hover or tap the line, or use the slider. Arrow keys move one month at a time.</p>
  </div>
  <script type="application/json" id="avax-history-data">[{"date":"2020-10-04","price":3.96110965,"circulating":24500000.0,"ratio":0.034027777777777775},{"date":"2020-11-01","price":3.68266358,"circulating":24500000.0,"ratio":0.034027777777777775},{"date":"2020-12-06","price":3.59960891,"circulating":24500000.0,"ratio":0.034027777777777775},{"date":"2021-01-03","price":3.47294394,"circulating":76937055.27646953,"ratio":0.10685702121731878},{"date":"2021-02-07","price":24.2071792,"circulating":76937055.27646953,"ratio":0.10685702121731878},{"date":"2021-03-07","price":26.65015533,"circulating":83937049.24313256,"ratio":0.11657923505990633},{"date":"2021-04-04","price":29.32971208,"circulating":128028915.75900275,"ratio":0.17781793855417047},{"date":"2021-05-02","price":31.30495715,"circulating":128786595.07763553,"ratio":0.17887027094116045},{"date":"2021-06-06","price":17.40011116,"circulating":130736351.89754882,"ratio":0.18157826652437337},{"date":"2021-07-04","price":12.35010032,"circulating":172418164.00045115,"ratio":0.23946967222284882},{"date":"2021-08-01","price":12.87743168,"circulating":173425854.49429426,"ratio":0.24086924235318646},{"date":"2021-09-05","price":48.17892363,"circulating":219916980.49808162,"ratio":0.30544025069178005},{"date":"2021-10-03","price":68.71703954,"circulating":220286577.20755112,"ratio":0.3059535794549321},{"date":"2021-11-07","price":87.70542389,"circulating":220286577.20755112,"ratio":0.3059535794549321},{"date":"2021-12-05","price":85.79002033,"circulating":242743157.0965285,"ratio":0.3371432737451785},{"date":"2022-01-02","price":113.18633585,"circulating":243741532.0590604,"ratio":0.3385299056375839},{"date":"2022-02-06","price":78.75726325,"circulating":245136940.53392607,"ratio":0.3404679729637862},{"date":"2022-03-06","price":72.52902187,"circulating":265647382.16174552,"ratio":0.36895469744686876},{"date":"2022-04-03","price":98.07777944,"circulating":267386506.68001077,"ratio":0.3713701481666816},{"date":"2022-05-01","price":58.85614687,"circulating":268627114.2085498,"ratio":0.3730932141785414},{"date":"2022-06-05","price":24.16418168,"circulating":280823810.11371434,"ratio":0.39003306960238104},{"date":"2022-07-03","price":16.66040249,"circulating":282573079.5830471,"ratio":0.39246261053200987},{"date":"2022-08-07","price":27.88996648,"circulating":284470930.0268099,"ratio":0.39509851392612483},{"date":"2022-09-04","price":19.00500068,"circulating":294497821.5345846,"ratio":0.40902475213136746},{"date":"2022-10-02","price":16.53337796,"circulating":296055918.84615076,"ratio":0.4111887761752094},{"date":"2022-11-06","price":18.27922992,"circulating":299244784.25271624,"ratio":0.4156177559065503},{"date":"2022-12-04","price":13.92561458,"circulating":310157351.38298875,"ratio":0.43077409914303993},{"date":"2023-01-01","price":10.86591514,"circulating":311582142.74122435,"ratio":0.43275297602947826},{"date":"2023-02-05","price":20.10801719,"circulating":315076344.877031,"ratio":0.437606034551432},{"date":"2023-03-05","price":16.15933843,"circulating":325068046.3252801,"ratio":0.4514833976740001},{"date":"2023-04-02","price":17.26328754,"circulating":325944384.3494102,"ratio":0.45270053381862524},{"date":"2023-05-07","price":16.4477303,"circulating":330640249.2285176,"ratio":0.4592225683729411},{"date":"2023-06-04","price":14.7824926,"circulating":344211981.3566124,"ratio":0.4780721963286283},{"date":"2023-07-02","price":13.1191435,"circulating":345597678.79942423,"ratio":0.47999677611031144},{"date":"2023-08-06","price":12.57241557,"circulating":346338359.1373054,"ratio":0.481025498801813},{"date":"2023-09-03","price":9.88493405,"circulating":353561504.8048769,"ratio":0.49105764556232906},{"date":"2023-10-01","price":9.73989797,"circulating":354192723.9085462,"ratio":0.49193433876186976},{"date":"2023-11-05","price":12.36669381,"circulating":355341863.59295076,"ratio":0.4935303661013205},{"date":"2023-12-03","price":21.96865812,"circulating":365190413.17067856,"ratio":0.507208907181498},{"date":"2024-01-07","price":33.6296541,"circulating":366581006.1056762,"ratio":0.5091402862578835},{"date":"2024-02-04","price":34.84499425,"circulating":367160241.423645,"ratio":0.5099447797550625},{"date":"2024-03-03","price":42.6048577,"circulating":377248820.18960154,"ratio":0.52395669470778},{"date":"2024-04-07","price":49.38721111,"circulating":377888143.98280907,"ratio":0.5248446444205681},{"date":"2024-05-05","price":37.40194135,"circulating":380337388.92691416,"ratio":0.528246373509603},{"date":"2024-06-02","price":34.93249046,"circulating":393141819.3680147,"ratio":0.5460303046777982},{"date":"2024-07-07","price":25.70513034,"circulating":394285377.3679475,"ratio":0.5476185796777049},{"date":"2024-08-04","price":21.22766896,"circulating":395057095.3590244,"ratio":0.5486904102208672},{"date":"2024-09-01","price":21.44817282,"circulating":404947220.107635,"ratio":0.5624266945939376},{"date":"2024-10-06","price":26.92857231,"circulating":406451931.89134,"ratio":0.5645165720713056},{"date":"2024-11-03","price":23.53824998,"circulating":407139319.2397415,"ratio":0.5654712767218631},{"date":"2024-12-01","price":45.0918238,"circulating":409291663.88055456,"ratio":0.568460644278548},{"date":"2025-01-05","price":43.07923455,"circulating":410205396.0241915,"ratio":0.569729716700266},{"date":"2025-02-02","price":27.57631594,"circulating":411708081.9928208,"ratio":0.5718167805455845},{"date":"2025-03-02","price":24.94097399,"circulating":414096391.42356926,"ratio":0.5751338769771795},{"date":"2025-04-06","price":15.99471561,"circulating":415282432.82195395,"ratio":0.5767811566971582},{"date":"2025-05-04","price":19.90127618,"circulating":417750705.9864958,"ratio":0.5802093138701331},{"date":"2025-06-01","price":20.87341124,"circulating":421524538.82402235,"ratio":0.5854507483666977},{"date":"2025-07-06","price":18.29859016,"circulating":422202905.4207003,"ratio":0.5863929241954171},{"date":"2025-08-03","price":21.37859511,"circulating":422275285.48916084,"ratio":0.586493452068279},{"date":"2025-09-07","price":24.69254903,"circulating":422275285.48916084,"ratio":0.586493452068279},{"date":"2025-10-05","price":30.08598121,"circulating":422275285.48916084,"ratio":0.586493452068279},{"date":"2025-11-02","price":18.8594723,"circulating":426754928.8463164,"ratio":0.5927151789532172},{"date":"2025-12-07","price":13.45582897,"circulating":429184249.8513723,"ratio":0.5960892359046838},{"date":"2026-01-04","price":14.22736872,"circulating":430209863.0105799,"ratio":0.5975136986258054},{"date":"2026-02-01","price":9.9159434,"circulating":431657422.84098315,"ratio":0.5995241983902544},{"date":"2026-03-01","price":9.03087585,"circulating":431771961.1772119,"ratio":0.5996832794127943},{"date":"2026-04-05","price":9.05503118,"circulating":431771961.1772119,"ratio":0.5996832794127943},{"date":"2026-05-03","price":9.08486561,"circulating":431771961.1772119,"ratio":0.5996832794127943},{"date":"2026-06-07","price":6.79609365,"circulating":431771961.1772119,"ratio":0.5996832794127943},{"date":"2026-07-05","price":6.91726608,"circulating":431771961.1772119,"ratio":0.5996832794127943},{"date":"2026-08-02","price":6.54145106,"circulating":431771961.1772119,"ratio":0.5996832794127943},{"date":"2026-09-06","price":7.90787454,"circulating":431771961.1772119,"ratio":0.5996832794127943}]</script>
  <figcaption>Source: CoinMarketCap monthly snapshots, 4 October 2020–6 September 2026. Monthly observations do not capture every daily high or low. Circulating supply is provider-reported. The price path alone does not identify the effect of supply. <a href="/assets/research/helicon/monthly-snapshots.csv">Download the data</a>.</figcaption>
</figure>

<p>AVAX went from $3.96 and 24.5M circulating in <a href="https://coinmarketcap.com/historical/20201004/">October 2020, about 3.4%</a> of the 720M ceiling, to <a href="https://coinmarketcap.com/historical/20220102/">$113.19 and 33.9% in January 2022</a>. In <a href="https://coinmarketcap.com/historical/20230101/">January 2023, it was $10.87 and 43.3%</a>. By <a href="https://coinmarketcap.com/historical/20260906/">September 2026, it was $7.91 and about 60.0%</a>.<sup id="fnref:5" role="doc-noteref"><a href="#fn:5" class="footnote" rel="footnote">6</a></sup></p>

<p>Investors paid more and then much less per AVAX while the circulating share kept increasing. Dilution can still have a cost, but I can’t explain that price history from proximity to max supply.</p>

<p>I also compared the same tokens over time, pairing their starting supply ratios with returns three or twelve monthly snapshots later. I removed each token’s average and each shared starting period’s average to reduce the influence of persistent differences between tokens and common market conditions.</p>

<p>For BTC, AVAX and ADA from October 2020, the <a href="/assets/research/helicon/panel-results.csv">adjusted correlations</a> were −0.17 for three-month returns and −0.60 for twelve-month returns. I didn’t find the positive relationship I expected.</p>

<p>I wouldn’t turn those negative numbers into a recommendation to issue faster. I still have three assets, overlapping return windows, and no control for changing adoption, liquidity or security. Adding months doesn’t give me more independent tokens.</p>

<p>There’s another limit: AVAX hasn’t reached the part of the supply curve I’m talking about. Neither AVAX, ADA nor SUI reaches 90% of its ceiling in this sample. Bitcoin starts 2020 around 86% issued, so it gives me little evidence about what happens after a young token distributes most of its remaining supply. I can’t observe the AVAX recovery I’m hypothesizing.</p>

<p>The <a href="/assets/research/helicon/cohort-returns.csv">uncapped comparison</a> didn’t give me a consistent result either. From 2021, I kept BTC, AVAX and ADA as the capped group, and ETH, SOL, ATOM and NEAR as the uncapped group. The uncapped group has the higher average price return in three intervals and the lower return in three. Remove SOL and its advantage disappears in 2021 and 2023. The 2020 comparison has two tokens per group, so I kept it separate.<sup id="fnref:4:1" role="doc-noteref"><a href="#fn:4" class="footnote" rel="footnote">5</a></sup></p>

<p>I still prefer thinking about uncapped tokens through expected net inflation over my holding period. <a href="https://ethereum.org/roadmap/merge/issuance/">ETH combines issuance with fee burns</a>. SOL has an <a href="https://solana.com/staking">issuance schedule with a continuing long-term rate</a>.<sup id="fnref:6" role="doc-noteref"><a href="#fn:6" class="footnote" rel="footnote">7</a></sup> But an uncapped token can still have allocation releases, recipients who sell, or future policy changes. I haven’t built a comparable historical net-inflation series across these tokens, so I can’t say net inflation caused the differences in returns.</p>

<p>A capped token also needs that analysis. Its max supply doesn’t tell me how many tokens could reach the market in the next two years.</p>

<p>For Helicon, I have to include what Avalanche gets in exchange for issuance. <a href="https://academy.avax.network/docs/acps/236-auto-renewed-staking">Auto-renewed validator staking</a> and a <a href="https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/273-reduce-minimum-staking-duration">shorter minimum staking period</a> change how validators manage their commitments. ACP-285 adjusts the incentive to choose longer durations alongside those changes.<sup id="fnref:7:1" role="doc-noteref"><a href="#fn:7" class="footnote" rel="footnote">1</a></sup> Spending the reward budget faster would also mean having less of it available to pay for future security.</p>

<p>My argument has a discounting problem too. If I assume the same future cost and a positive discount rate, moving that cost further away reduces its present value. To argue that slower issuance hurts valuation, I need something else, such as uncertainty that deters buyers or a change in demand. A later release date alone isn’t enough.</p>

<p>The cost of accelerating distribution could be large. Moving from 60% to 100% of an unchanged ceiling means about 67% more circulating units. Hold circulating market cap constant and the price per token falls about 40%. That calculation assumes a fixed market cap; it predicts neither investor demand nor whether AVAX reaches 720M circulating after burns.</p>

<p>For faster issuance to help holders, buyers would have to pay enough for the reduced future overhang to compensate for the earlier dilution. They could also price that improvement before distribution finishes. My thesis can’t depend on buyers waiting until the last token enters circulation.</p>

<p><a href="https://keyrock.com/from-locked-to-liquidity-what-16000-token-unlocks-teach-us/">Keyrock’s study of more than 16,000 unlock events</a> gives me some evidence of adverse price effects around releases.<sup id="fnref:8" role="doc-noteref"><a href="#fn:8" class="footnote" rel="footnote">8</a></sup> I can’t apply a vesting-event result to a change in AVAX’s long staking-reward schedule and claim I’ve proved the same effect.</p>

<p>I still think investors may discount substantial future releases, especially if the timing or recipients make selling pressure hard to estimate. I haven’t found evidence here that issuing AVAX faster would remove enough of that discount to make holders better off.</p>

<p>After Helicon, I’d look at issuance and burns against the projection, and check how validators change their staking durations and participation. For valuation, I’d estimate how much supply could become available over the next 12–36 months, who gets it and how much demand could absorb it. Circulating/max supply was where I started. I’d need those other estimates before using it to argue against reducing AVAX issuance.</p>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:7" role="doc-endnote">
      <p>Avalanche Builder Hub, <a href="https://docs.avax.network/docs/acps/285-reduce-minimum-consumption-rate">ACP-285</a> and the <a href="https://academy.avax.network/blog/helicon-upgrade">Helicon announcement</a>. Projection and announced activation date as checked on 9 September 2026. <a href="#fnref:7" class="reversefootnote" role="doc-backlink">&#8617;</a> <a href="#fnref:7:1" class="reversefootnote" role="doc-backlink">&#8617;<sup>2</sup></a></p>
    </li>
    <li id="fn:1" role="doc-endnote">
      <p><a href="/assets/research/helicon/monthly-snapshots.csv">Download the monthly observations</a> or the <a href="/assets/research/helicon/reproduction.zip">reproduction bundle</a>, including the input data and calculation script. <a href="/assets/research/helicon/README.txt">Data notes</a>. Original calculations from 81 CoinMarketCap first-Sunday monthly snapshots, 5 January 2020–6 September 2026, with supplemental early SOL listings. The companion dataset retains every source URL, first observation, missing value and calculation. <a href="https://coinmarketcap.com/historical/20200105/">First historical snapshot</a>. This is a selected ten-token sample, not the full historical investment universe; it excludes staking income and does not correct for survivorship bias. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2" role="doc-endnote">
      <p>Original calculations using the <a href="https://coinmarketcap.com/historical/20230507/">7 May 2023</a> and <a href="https://coinmarketcap.com/historical/20260906/">6 September 2026</a> snapshots. Circulation is provider-reported. ADA’s 81.6% here uses CoinMarketCap; the earlier CoinGecko-based study reported 83.4% on a different date. Those observations are not spliced together. Snapshot dates do not establish identical intra-day price-fixing times. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:3" role="doc-endnote">
      <p>Aptos Foundation, <a href="https://governance.aptosfoundation.org/proposal/183?votesPage=0">cap proposal 183</a> and its <a href="https://github.com/aptos-foundation/mainnet-proposals/blob/main/sources/2026-02-25-supply-cap/supply_cap.move">voting-only source script</a>; Polkadot Forum, <a href="https://forum.polkadot.network/t/changes-on-polkadot-in-march-2026/17101">March 2026 changes</a>. Sui’s <a href="https://www.sui.io/token-schedule">supply schedule</a> specifies its 10B ceiling. Policies and implementation qualifications were checked on 9 September 2026. <a href="#fnref:3" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:4" role="doc-endnote">
      <p>Original interval and panel calculations in the companion research. Annual comparisons begin at the first January Sunday and end at the following first January Sunday; the 2026 interval ends 6 September. Panel outcomes are logarithmic price returns. Coefficients are descriptive, with no naive row-level significance claims. Starting dates were explored during the analysis; this is not a preregistered or out-of-sample trading test. <a href="#fnref:4" class="reversefootnote" role="doc-backlink">&#8617;</a> <a href="#fnref:4:1" class="reversefootnote" role="doc-backlink">&#8617;<sup>2</sup></a></p>
    </li>
    <li id="fn:5" role="doc-endnote">
      <p>CoinMarketCap snapshots: <a href="https://coinmarketcap.com/historical/20201004/">4 October 2020</a>, <a href="https://coinmarketcap.com/historical/20220102/">2 January 2022</a>, <a href="https://coinmarketcap.com/historical/20230101/">1 January 2023</a> and <a href="https://coinmarketcap.com/historical/20260906/">6 September 2026</a>. Ratios use the 720M policy ceiling consistently, rather than varying raw provider maximum fields. Reported circulation changes can include allocation releases and classification changes; they are not a measured minting series. <a href="#fnref:5" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:6" role="doc-endnote">
      <p>Ethereum.org, <a href="https://ethereum.org/roadmap/merge/issuance/">issuance and supply</a>; Solana, <a href="https://solana.com/staking">staking and inflation policy</a>. Neither an old issuance example nor a staking reward rate is used here as a current net-inflation observation. <a href="#fnref:6" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:8" role="doc-endnote">
      <p>Keyrock, <a href="https://keyrock.com/from-locked-to-liquidity-what-16000-token-unlocks-teach-us/">From Locked to Liquidity: What 16,000+ Token Unlocks Teach Us</a>, December 2024. Event-study findings do not independently identify the effect of AVAX staking-issuance timing. <a href="#fnref:8" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>jaack</name></author><category term="blog" /><category term="research" /><category term="avalanche" /><category term="tokenomics" /><summary type="html"><![CDATA[Ahead of Helicon, I compared ten tokens from 2020 to test whether future supply deserves a valuation discount, and what the evidence can say about slower AVAX issuance.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jaack.me/assets/research/helicon/cover.png" /><media:content medium="image" url="https://jaack.me/assets/research/helicon/cover.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">The loops I set up so my agent system doesn’t lie to me</title><link href="https://jaack.me/the-loops-i-set-up-so-my-agent-system-doesnt-lie-to-me/" rel="alternate" type="text/html" title="The loops I set up so my agent system doesn’t lie to me" /><published>2026-06-09T19:00:00+00:00</published><updated>2026-06-09T19:00:00+00:00</updated><id>https://jaack.me/the-loops-i-set-up-so-my-agent-system-doesnt-lie-to-me</id><content type="html" xml:base="https://jaack.me/the-loops-i-set-up-so-my-agent-system-doesnt-lie-to-me/"><![CDATA[<p>Most agent discourse is still stuck at the prompt layer.</p>

<p>Which model are you using. How many tools can it call. Can it code. Can it post. Can it trade.</p>

<p>That matters, but it is not the interesting part.</p>

<p>The useful part is what happens around the agents.</p>

<p>My system is called Eva. It is not one assistant doing everything. It is a multi-agent setup with a small governance layer.</p>

<p>Eva is the kernel. Ops is the control plane. Then there are specialist agents: Scribe for writing, Predictie for forecasting, Mony for treasury, Wolfie for Avalanche, Taxie for tax, Moxie for cards, Forma for health, and a few others.</p>

<p>Mission Control is the UI layer. Telegram is just the human input surface.</p>

<p>The system works because work moves through a few hard loops with explicit ownership.</p>

<p><img src="/assets/images/2026/loops-overview-codex.svg" alt="Three loops around the agent system core" /></p>

<h2 id="the-architecture-in-one-sentence">The architecture, in one sentence</h2>

<p><strong>human input -&gt; owner selection -&gt; specialist work -&gt; verification -&gt; visible state -&gt; next action</strong></p>

<p>If that chain gets loose, the whole thing becomes theater.</p>

<p>These are the loops I actually care about.</p>

<h2 id="1-the-routing-loop">1. The routing loop</h2>

<p>The first loop decides who owns the work.</p>

<p>In Eva’s architecture, that is not left vague. There is a registry. There is routing policy. There is a difference between strategic arbitration, control-plane work, and domain work.</p>

<p>So the first question is simple:</p>

<p><strong>who should do this?</strong></p>

<p>Not which model is smartest. Which owner is correct.</p>

<p>The routing loop is:</p>

<p><strong>input -&gt; choose owner -&gt; direct delegation or Agent Bus handoff -&gt; specialist output -&gt; verification -&gt; return</strong></p>

<p>A few rules keep it clean:</p>

<ul>
  <li>low-risk, clearly owned work can be delegated directly</li>
  <li>shared-state mutations, destructive work, multi-agent coding, and publishing/release flows go through the Agent Bus</li>
  <li>Telegram is for me talking to the system, not for agents pretending to coordinate in public</li>
  <li>if a task needs durable visibility, it goes in the work layer, not just chat history</li>
</ul>

<p>This is what stops everything from collapsing into one bloated generalist.</p>

<p>Predictie forecasts. Mony handles money. Scribe publishes. Ops manages routing and truth. Eva arbitrates.</p>

<h2 id="2-the-health-loop">2. The health loop</h2>

<p>Once work is routed correctly, the next question is whether the machine itself is healthy.</p>

<p>This is the OpenClaw health loop:</p>

<p><strong>observe runtime -&gt; classify health -&gt; choose repair or degrade -&gt; verify route/log/cron truth -&gt; update loop state</strong></p>

<p><img src="/assets/images/2026/openclaw-health-loop-codex.svg" alt="OpenClaw health loop diagram" /></p>

<p>It checks practical things: gateway health, auth profile routing, Telegram delivery path, cron freshness, session state, listeners, and log quality.</p>

<p>The important part is that it is allowed to be honest.</p>

<p>A lot of systems only know how to say “fine” or “broken.”</p>

<p>Real operations have a middle state: degraded but understandable.</p>

<p>If the gateway is up but routing is wrong, that matters.
If a cron exists but has not produced a fresh good run, that matters.
If logs exist but the current signal is buried in noise, that matters.</p>

<p>The loop can do small repairs when they are known, reversible, and explicitly allowed.</p>

<p>What it cannot do is freestyle.</p>

<p>No surprise reauth flows. No broad config migrations. No pretending a risky fix is autonomy.</p>

<h2 id="3-the-truth-loop">3. The truth loop</h2>

<p>The third loop protects the dashboard.</p>

<p>Mission Control is useful because it gives me one place to look. But the second you build a dashboard, you create the risk of a painted reality.</p>

<p>So the Mission Control truth loop has one job:</p>

<p><strong>keep the UI from lying</strong></p>

<p>Its contract is:</p>

<p><strong>observe app/runtime truth -&gt; compare dashboard/API claims -&gt; degrade stale state or prepare fix -&gt; run route/API/verifier gates -&gt; update loop state -&gt; report only actionable truth</strong></p>

<p><img src="/assets/images/2026/mission-control-truth-loop-codex.svg" alt="Mission Control truth loop diagram" /></p>

<p>The key rule is simple:</p>

<p><strong>a green page is not proof.</strong></p>

<p>A route loading is not enough.
A passing API is not enough.
A cached state object is definitely not enough.</p>

<p>Every visible claim needs a source, a freshness window, and a current-run check.</p>

<p>If the source is stale, the UI should say stale.
If the source is missing, it should degrade.
If the runtime is blocked, the app should stop acting confident.</p>

<p>Once a system is allowed to overstate reality, every decision downstream inherits the lie.</p>

<h2 id="4-the-forecast-to-action-loop">4. The forecast-to-action loop</h2>

<p>The fourth loop is where things get dangerous if you get lazy.</p>

<p>This one sits between Predictie and Mony.</p>

<p>Predictie produces forecasts. Mony turns those forecasts into treasury posture.</p>

<p>The contract is:</p>

<p><strong>forecast artifact -&gt; decision artifact -&gt; policy gate -&gt; execution/no-op receipt -&gt; calibration artifact</strong></p>

<p><img src="/assets/images/2026/forecast-to-action-loop-codex.svg" alt="Predictie to Mony forecast-to-action loop" /></p>

<p>This is a manual-first contract, not a trading bot.</p>

<p>Predictie is allowed to produce probabilities, time horizons, triggers, invalidation conditions, and market-relevant implications.</p>

<p>Predictie is <strong>not</strong> allowed to size a position, touch a wallet, or sneak execution authority through a persuasive paragraph.</p>

<p>Mony is allowed to translate a forecast into posture: hold, rebalance, hedge, reduce risk, ask for approval.</p>

<p>Mony is <strong>not</strong> allowed to invent a forecast, ignore its freshness, or skip approval because the trade looks obvious.</p>

<p>Between them sits policy.</p>

<p>The loop does not move unless the forecast has a probability band, confidence, horizon, falsification conditions, and dated sources.
It does not move if the forecast is stale.
It does not move if the decision does not reference a specific forecast artifact.
It does not move if the risk check is missing.
It does not move if approval is required and absent.</p>

<p>And even no-op needs a receipt.</p>

<p>That sounds boring, but it matters.</p>

<p>“We did nothing” stops being a shrug. It becomes a recorded outcome with a reason, a timestamp, and a next review trigger.</p>

<p>That is how the system stays calibratable instead of turning into folklore.</p>

<p>There are really two capital loops hiding here.</p>

<p>The first is <strong>Predictie -&gt; Mony</strong>.
That is the macro loop: forecast -&gt; treasury posture.
Its job is to stop intelligence from quietly turning into execution authority.</p>

<p>The second is <strong>Wolfie -&gt; Mony</strong>.
That one is more like protocol reality -&gt; treasury posture.
Wolfie carries the Avalanche context: ecosystem traction, governance progress, fee-capture reality, whether value accrual is actually improving or just being narrated.
Mony then decides whether that deserves capital rotation, sizing, hedging, or no-op.</p>

<p><img src="/assets/images/2026/dual-capital-loop-codex.svg" alt="Two hidden capital loops" /></p>

<p>That split matters.
It stops ecosystem proximity from turning into automatic treasury bias.</p>

<p>Same philosophy in both cases:
<strong>signal stays upstream, capital stays downstream, and the gate in the middle is the point.</strong></p>

<h2 id="why-these-loops-matter">Why these loops matter</h2>

<p>People overfocus on agent capability because capability demos are easy to show.</p>

<p>But once you run a real multi-agent system, the harder question is what happens at every transition.</p>

<p>Who owns this step.
What artifact is allowed to exist.
What gate sits before the next action.
What counts as proof.
What can degrade instead of pretending to be healthy.
What must produce a receipt even when nothing happened.</p>

<p>That is what Eva is actually governing.</p>

<p>Not one giant super-agent.</p>

<p>A small set of loops.
A control plane.
Clear specialist ownership.
And hard boundaries between thinking, claiming, and acting.</p>

<p>That is the version of agent systems I believe in.</p>

<hr />

<p><em>I run this on <a href="https://openclaw.ai">OpenClaw</a>. The interesting part is not the individual agents. It’s the loops that keep them in bounds.</em></p>]]></content><author><name>jaack</name></author><category term="blog" /><category term="ai" /><category term="agents" /><category term="systems" /><summary type="html"><![CDATA[Eva doesn't run on one giant prompt. It runs on a few hard loops: routing, health, truth, and forecast-to-decision.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jaack.me/assets/images/2026/loops-cover-codex.svg" /><media:content medium="image" url="https://jaack.me/assets/images/2026/loops-cover-codex.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">The First-Year Valuation Case for GM10</title><link href="https://jaack.me/gm10-first-year-valuation-case-en/" rel="alternate" type="text/html" title="The First-Year Valuation Case for GM10" /><published>2026-04-17T14:30:00+00:00</published><updated>2026-04-17T14:30:00+00:00</updated><id>https://jaack.me/gm10-first-year-valuation-case-en</id><content type="html" xml:base="https://jaack.me/gm10-first-year-valuation-case-en/"><![CDATA[<p>Most token valuation arguments start from the wrong number.</p>

<p>They take the full max supply, multiply it by the latest round price, call that FDV, and then argue from there. Sometimes that is useful. Most of the time it is lazy.</p>

<p>For <a href="https://gm10.xyz">GM10</a>, my Pokémon card treasury onchain protocol, I think the cleaner way to model the first year is to ask a simpler question:</p>

<p><strong>What supply is actually relevant in the next 12 months, and can the card treasury reasonably support that valuation?</strong></p>

<p>That gives a very different answer from the full 100,000,000 CATCH view.</p>

<h2 id="the-first-year-supply-frame">The first-year supply frame</h2>

<p>GM10 has a 100,000,000 CATCH tokenomics allocation, but that is not the same thing as first-year economic float.</p>

<p>For the conservative 12-month model, I only count:</p>

<ul>
  <li>Round 1 public supply</li>
  <li>Round 2 public supply at full cap</li>
  <li>The team allocation that actually vests by month 12</li>
</ul>

<p>I do <strong>not</strong> count community, partnerships, advisors, governance treasury, or liquidity allocations in this base case. The argument is simple: if the goal is to model the first year, count what is public or vested, not every possible future bucket. This is because all these other allocations are <em>minted when necessary</em>.</p>

<p>The numbers:</p>

<ul>
  <li>Round 1: <strong>166,666.67 CATCH</strong></li>
  <li>Round 2 full cap: <strong>1,428,571.43 CATCH</strong></li>
  <li>Team vested by month 12: <strong>2,142,857.14 CATCH</strong></li>
</ul>

<p>That gives a counted first-year supply of <strong>3,738,095.24 CATCH</strong>.</p>

<p>At the Round 2 price of <strong>0.0035 AVAX per CATCH</strong>, that implies <strong>13,083.33 AVAX</strong>.</p>

<p>Using AVAX at roughly <strong>$9.48</strong>, that is about <strong>$124,000</strong>.</p>

<p>This is the valuation I care about for the first year. Not the theoretical full FDV. The counted valuation.</p>

<h2 id="what-revenue-does-that-valuation-need">What revenue does that valuation need?</h2>

<p>If we use a 20-40x revenue multiple, the revenue requirement is not aggressive.</p>

<ul>
  <li>At a <strong>20x</strong> revenue multiple: <strong>$124,000 / 20 = ~$6,200 annual revenue</strong></li>
  <li>At a <strong>40x</strong> revenue multiple: <strong>$124,000 / 40 = ~$3,100 annual revenue</strong></li>
</ul>

<p>So the first-year counted supply valuation needs roughly <strong>$3,100-$6,200 of annualized revenue</strong>. That is tiny compared with what even a modest card treasury can produce if the thesis works.</p>

<h2 id="the-pokemon-anniversary-bull-case">The Pokemon anniversary bull case</h2>

<p>This year is Pokemon’s 30th anniversary. That matters. Anniversary cycles create attention. Attention creates liquidity. Liquidity pulls collectors, speculators, grading demand, auction volume, and social proof into the same window. I do not want to pretend that a 30% return is guaranteed. It is not. Cards are illiquid, comps can be stale, spreads can be ugly, and not every slab moves with the headline index.</p>

<p>But as a bull-case assumption for trophy-grade Pokemon exposure in an anniversary year, <strong>30% annual appreciation</strong> is a reasonable scenario to underwrite.</p>

<p>If the required annual revenue is <strong>$3,100-$6,200</strong>, and the card portfolio returns <strong>30%</strong>, the card NAV needed is:</p>

<ul>
  <li><strong>$3,100 / 30% = ~$10,300</strong></li>
  <li><strong>$6,200 / 30% = ~$20,700</strong></li>
</ul>

<p>So even a modest <strong>$25,000 trophy-card base</strong> can support the first-year counted supply valuation under this model. That is the important part: the first-year valuation hurdle is not high.</p>

<h2 id="why-round-2-can-already-sustain-it">Why Round 2 can already sustain it</h2>

<p>Round 2 has a target of <strong>5,000 AVAX</strong>.</p>

<p>The proceeds allocation is:</p>

<ul>
  <li><strong>85%</strong> to strategy/card acquisition treasury</li>
  <li><strong>10%</strong> to liquidity</li>
  <li><strong>5%</strong> to the team wallet</li>
</ul>

<p>At full cap, that means:</p>

<ul>
  <li>Card acquisition treasury: <strong>4,250 AVAX</strong></li>
  <li>Liquidity: <strong>500 AVAX</strong></li>
  <li>Team wallet: <strong>250 AVAX</strong></li>
</ul>

<p>At roughly <strong>$9.48 per AVAX</strong>, the strategy treasury alone is about <strong>$40,000</strong>.</p>

<p>That is already above the <strong>$10,000-$21,000</strong> card NAV needed to support the conservative first-year valuation model at a 30% annual return assumption.</p>

<p>So the base case is straightforward: <strong>If Round 2 fills, the raise can very reasonably sustain the first-year counted valuation.</strong></p>

<p>It gives enough card acquisition capital to support the implied revenue target, while the counted supply remains small because most allocations are not included in the first-year float model.</p>

<h2 id="the-expansion-case-a-larger-round-four-months-from-now">The expansion case: a larger round four months from now</h2>

<p>Now consider a more aggressive scenario.</p>

<p>Within four months, GM10 opens another round, let’s say with these parameters:</p>

<ul>
  <li>Raise: <strong>50,000 AVAX</strong></li>
  <li>Price: <strong>0.00425 AVAX per CATCH</strong></li>
</ul>

<p>That price is higher than Round 2:</p>

<ul>
  <li>Round 2: <strong>0.0035 AVAX</strong></li>
  <li>New round: <strong>0.00425 AVAX</strong></li>
</ul>

<p>That is a <strong>~21.4% price increase</strong>.</p>

<p>The new round would mint <strong>50,000 AVAX / 0.00425 = 11,764,705.88 CATCH</strong>.</p>

<p>Add that to the conservative first-year counted supply: <strong>3,738,095.24 + 11,764,705.88 = 15,502,801.12 CATCH</strong>.</p>

<p>So the counted 12-month supply becomes about <strong>15.5M CATCH</strong>.</p>

<p>Still only about <strong>15.5%</strong> of the full 100,000,000 CATCH allocation.</p>

<h2 id="valuation-after-the-larger-round">Valuation after the larger round</h2>

<p>At the new round price of <strong>0.00425 AVAX per CATCH</strong>, the counted valuation becomes <strong>15,502,801.12 CATCH × 0.00425 AVAX = 65,886.9 AVAX</strong>.</p>

<p>At roughly <strong>$9.48 per AVAX</strong>, that is about <strong>$624,000</strong>.</p>

<p>Using the same 20-40x revenue multiple:</p>

<ul>
  <li>At <strong>20x</strong>: <strong>~$31,200 annual revenue</strong></li>
  <li>At <strong>40x</strong>: <strong>~$15,600 annual revenue</strong></li>
</ul>

<p>At a 30% card return assumption, the card NAV needed is:</p>

<ul>
  <li><strong>$15,600 / 30% = ~$52,000</strong></li>
  <li><strong>$31,200 / 30% = ~$104,000</strong></li>
</ul>

<p>So even after a much larger round, the model only needs roughly <strong>$52,000-$104,000 of productive card NAV</strong> to support the counted 12-month valuation under the 30% bull-case return model.</p>

<h2 id="what-the-larger-round-does-to-treasury">What the larger round does to treasury</h2>

<p>The 50,000 AVAX round dramatically changes treasury capacity. Using the same proceeds allocation:</p>

<ul>
  <li><strong>85%</strong> strategy/card acquisition treasury: <strong>42,500 AVAX</strong></li>
  <li><strong>10%</strong> liquidity: <strong>5,000 AVAX</strong></li>
  <li><strong>5%</strong> team wallet: <strong>2,500 AVAX</strong></li>
</ul>

<p>At roughly <strong>$9.48 per AVAX</strong>, that is:</p>

<ul>
  <li>Strategy/card treasury: <strong>~$403,000</strong></li>
  <li>Liquidity: <strong>~$47,400</strong></li>
  <li>Team wallet: <strong>~$23,700</strong></li>
</ul>

<p>Add the full Round 2 strategy treasury of <strong>4,250 AVAX</strong>, and the combined card acquisition treasury becomes <strong>46,750 AVAX</strong>, or about <strong>$443,000</strong>.</p>

<p>This is the asymmetry I like.</p>

<p>The model needs about <strong>$52,000-$104,000</strong> of productive card NAV to justify the counted 12-month valuation after the larger round.</p>

<p>But the treasury could have more than <strong>$400,000</strong> of card acquisition capacity.</p>

<p>That gives the strategy room to be selective. It does not need to force buys. It can concentrate around higher-conviction slabs, wait for better entries, and still have enough capital to make the revenue math work.</p>

<h2 id="the-actual-thesis">The actual thesis</h2>

<p>The thesis is not just that Pokemon cards go up.</p>

<p>The thesis is that each round can make the strategy stronger if three things are true:</p>

<ol>
  <li>New rounds price higher than previous rounds.</li>
  <li>The treasury is actually deployed into assets with credible appreciation potential.</li>
  <li>The counted supply grows slower than the strategy’s ability to support it.</li>
</ol>

<p>In the base case, Round 2 alone can support the first-year counted valuation.</p>

<p>In the expansion case, a larger round increases supply, but it also increases treasury capacity much faster than the revenue hurdle rises.</p>

<p>That is the point of the model.</p>

<p>The token is not floating in isolation. It is attached to a treasury strategy. If the treasury grows, and if that treasury is deployed well during a strong Pokemon market cycle, then each round can make the valuation easier to defend, not harder.</p>

<h2 id="the-simple-version">The simple version</h2>

<p>Base case, no additional round:</p>

<ul>
  <li>Counted 12-month supply: <strong>~3.74M CATCH</strong></li>
  <li>Counted valuation: <strong>~13,083 AVAX / ~$124,000</strong></li>
  <li>Revenue needed at 20-40x: <strong>~$3,100-$6,200/year</strong></li>
  <li>Card NAV needed at 30% return: <strong>~$10,000-$21,000</strong></li>
  <li>Round 2 full-cap strategy treasury: <strong>4,250 AVAX / ~$40,000</strong></li>
</ul>

<p>Expansion case, 50,000 AVAX round at 0.00425 AVAX:</p>

<ul>
  <li>New round supply: <strong>~11.76M CATCH</strong></li>
  <li>Counted 12-month supply: <strong>~15.5M CATCH</strong></li>
  <li>Counted valuation: <strong>~65,887 AVAX / ~$624,000</strong></li>
  <li>Revenue needed at 20-40x: <strong>~$15,600-$31,200/year</strong></li>
  <li>Card NAV needed at 30% return: <strong>~$52,000-$104,000</strong></li>
  <li>New round strategy treasury: <strong>42,500 AVAX / ~$403,000</strong></li>
  <li>Combined Round 2 + new round strategy treasury: <strong>46,750 AVAX / ~$443,000</strong></li>
</ul>

<p>The clean conclusion:</p>

<p><strong>If GM10 raises into higher-priced rounds and deploys the proceeds into trophy-grade Pokemon cards during the 30th anniversary cycle, the amount raised in each round can very reasonably sustain the counted valuation while giving the strategy room to generate strong returns.</strong></p>

<p>Not because the FDV says so.</p>

<p>Because the first-year float, the treasury, and the required return hurdle can actually line up.</p>]]></content><author><name>jaack</name></author><category term="blog" /><category term="&quot;crypto&quot;" /><category term="&quot;avalanche&quot;" /><category term="&quot;pokemon&quot;" /><category term="&quot;tokenomics&quot;" /><summary type="html"><![CDATA[A conservative model for valuing GM10 against first-year circulating supply, treasury deployment, and Pokemon card appreciation.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jaack.me/assets/images/profilo-2026.jpg" /><media:content medium="image" url="https://jaack.me/assets/images/profilo-2026.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">Minimum Market Fit</title><link href="https://jaack.me/minimum-market-fit/" rel="alternate" type="text/html" title="Minimum Market Fit" /><published>2026-04-17T00:00:00+00:00</published><updated>2026-04-17T00:00:00+00:00</updated><id>https://jaack.me/minimum-market-fit</id><content type="html" xml:base="https://jaack.me/minimum-market-fit/"><![CDATA[<p>There’s a gap in how we talk about building products. I’ve been thinking about it for a while, and I think it comes down to a missing stage - one that sits right between shipping something and committing to it.</p>

<p>The lean startup vocabulary gives us MVP. Build the smallest thing that works, ship it, learn. Then eventually, if you’re lucky, you reach PMF - Product-Market Fit. The moment the market pulls the product out of your hands.</p>

<p>But what happens in between? You have a working prototype. Now what?</p>

<h2 id="the-leap-most-people-miss">The leap most people miss</h2>

<p>The standard playbook goes: MVP → launch → iterate → PMF. Implicit in this is the assumption that you should keep building after the MVP. That iteration is always the right move. That adding features will eventually unlock demand.</p>

<p>I don’t think that’s true. I think the leap from MVP to PMF is where most projects actually die, and it’s not because the product was bad. It’s because there was never a clear signal that the market wanted it in the first place. The MVP proved you could build it. But building is cheap now.</p>

<p>What’s expensive is deciding to keep building.</p>

<h2 id="vibecoding-changed-the-math">vibecoding changed the math</h2>

<p>A few years ago, the hard decision was whether to build at all. MVPs took time, money, engineers. So validating demand before building made sense - that’s what people call a Minimally Viable Market. Talk to users, understand their pain, confirm they’d pay. Then build.</p>

<p>But with vibecoding, the cost of building an MVP dropped to almost zero. You can describe something to an AI and have a working prototype in hours. So the constraint shifted. It’s no longer “can I build this?” It’s “should I keep building this?”</p>

<p>That’s a fundamentally different question. And it needs a different checkpoint.</p>

<h2 id="minimum-market-fit">Minimum Market Fit</h2>

<p>I’ve been calling it Minimum Market Fit, or MMF. It’s the earliest point where you have real evidence that the product you built - not just the idea, but the actual thing in someone’s hands - has demand.</p>

<p>Real evidence means something specific. Not vanity metrics. Not “people said they liked it.” Not signups from your own network. I’m talking about:</p>

<ul>
  <li>Someone you don’t know found it and used it more than once</li>
  <li>Organic retention - they came back without you prompting them</li>
  <li>A willingness to pay, or at least a clear signal that they’d be upset if it disappeared</li>
</ul>

<p>MMF is not PMF. You don’t need explosive growth or a clear monetization model. You just need signal. The quiet, unambiguous kind that says: this solves a real problem for a real person.</p>

<h2 id="the-three-stages-clearly">The three stages, clearly</h2>

<p>So here’s how I think about the pipeline now:</p>

<p><strong>Minimally Viable Market</strong> - validate demand before building. Understand who has the problem, how intense it is, and whether they’d pay to solve it. The Mom Test by Rob Fitzpatrick is a good methodology for this part.</p>

<p><strong>Minimum Viable Product</strong> - build the smallest thing that addresses the problem. With vibecoding, this is almost free. It’s a prototype, a v0, a rough draft. It doesn’t need to be pretty. It needs to work.</p>

<p><strong>Minimum Market Fit</strong> - the checkpoint. Put the MVP in front of real people and watch. Does anyone care? Not in the abstract, but concretely. Do they use it? Do they come back? Do they tell someone else?</p>

<p>If yes - you have MMF. Now invest. Keep building. Iterate. Move toward PMF.</p>

<p>If no - stop. Not forever. But stop pouring energy into something that hasn’t earned it yet. Go back to the MVM stage. Talk to different people. Maybe the problem isn’t what you thought it was.</p>

<h2 id="why-this-matters">Why this matters</h2>

<p>I think a lot of founders confuse motion with progress. They ship an MVP, get a few polite compliments, and interpret that as permission to keep going. Six months later they’re exhausted, the product has more features but the same number of users, and they can’t tell if they’re close to something or wasting their time.</p>

<p>MMF gives you a clean decision point. It doesn’t tell you what to build or how to build it. It tells you whether the thing you built is worth continuing.</p>

<p>I don’t know if this framing is new. The idea - that you need real demand signal before committing resources - is well understood implicitly. Marc Andreessen wrote about PMF in 2007. Y Combinator’s “do things that don’t scale” is about finding this moment. Rob Fitzpatrick’s whole book is about getting honest signal before you build.</p>

<p>But I’ve never seen it named as a formal stage gate. It’s always been implied, buried inside the vague space between MVP and PMF. And I think giving it a name makes it actionable.</p>

<p>So that’s what I’m doing. Minimum Market Fit. The point where you know - quietly, concretely - that someone actually wants the thing you built.</p>

<p>Everything before that is a guess. Everything after is an investment.</p>]]></content><author><name>jaack</name></author><category term="blog" /><summary type="html"><![CDATA[There’s a gap in how we talk about building products. I’ve been thinking about it for a while, and I think it comes down to a missing stage - one that sits right between shipping something and committing to it.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jaack.me/assets/images/2026/minimum-market-fit-cover.png" /><media:content medium="image" url="https://jaack.me/assets/images/2026/minimum-market-fit-cover.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">Four Ways to Turn L1 Validator Fees Into AVAX Buy Pressure</title><link href="https://jaack.me/acp-255-four-fee-curves-en/" rel="alternate" type="text/html" title="Four Ways to Turn L1 Validator Fees Into AVAX Buy Pressure" /><published>2026-04-10T22:36:00+00:00</published><updated>2026-04-10T22:36:00+00:00</updated><id>https://jaack.me/acp-255-four-fee-curves-en</id><content type="html" xml:base="https://jaack.me/acp-255-four-fee-curves-en/"><![CDATA[<div class="acp255-nyt">

  <p class="dropcap">Every L1 running on Avalanche pays a continuous fee to keep its validators active. Those fees are denominated in AVAX. And every AVAX spent on validator fees is burned. Gone. Permanently removed from the supply. That makes the fee model one of the most direct levers for AVAX buy pressure that exists in the protocol today.</p>

  <p>The question isn’t whether L1 fees should create buy pressure. They already do. The question is whether the current model does it well enough, and whether a smarter design could do it better.</p>

  <p>That’s what <a href="https://github.com/avalanche-foundation/ACPs/pull/255">ACP-255</a> is really about. Not just repricing validators. <strong>Redesigning how Avalanche captures value from its own growth.</strong> The more L1s launch, the more validators they need, the more AVAX gets burned. But the shape of that burn depends entirely on the fee curve.</p>

  <div class="callout fade-in">

    <p><strong>Two objections forced me to think harder about the fee design:</strong></p>

    <ol>
      <li>
        <p>ACP-77 (the current model) is not actually a flat fee. It’s dynamic, path-dependent, and only <em>looks</em> flat below the target most of the time. Any replacement has to be compared honestly.</p>
      </li>
      <li>
        <p>If adding validators can ever make an L1 <strong>cheaper</strong> in aggregate, total AVAX burn goes down as the network grows. That’s the opposite of what you want. More validators impose more work on the network. Total fees should never drop just because an L1 decentralizes.</p>
      </li>
    </ol>

  </div>

  <p>That second point matters a lot for buy pressure. If the fee model lets L1s game their way into lower total costs by adding validators, you lose burn exactly when the network is growing fastest.</p>

  <div class="pull-quote fade-in">
The fee model has to reward decentralization without reducing total AVAX burn.
</div>

  <p>So instead of defending one formula, I mapped four. And I built an interactive explorer so you can see exactly how each one turns validator growth into buy pressure.</p>

  <div class="stat-highlight fade-in">
  <span class="stat-number">4</span>
  <span class="stat-label">fee models, each with a different burn profile</span>
</div>

  <hr />

  <div class="section-formula fade-in" data-formula="acp77">

    <div class="section-label">Formula 1: The baseline</div>

    <h2 id="everyone-is-wrong-about-acp-77">Everyone Is Wrong About <span class="formula-badge acp77">ACP-77</span></h2>

    <p>Before you can talk about improving AVAX burn, you have to understand what the current model actually does. And one mistake I made early on was talking about ACP-77 as if it were basically a flat fee.</p>

    <p>It’s not.</p>

    <p>ACP-77 uses a dynamic validator fee algorithm. Below the target, it mostly behaves like a minimum fee floor, which means minimal burn. Above the target, it compounds upward depending on how long the network stays above that threshold. That’s when the burn gets serious.</p>

    <div class="formula-display fade-in">

$$\text{feeRate} = M \cdot e^{\,x / K}$$

$$x = \max(x + V - T,\; 0)$$

</div>

    <aside class="margin-note">
This is why the explorer lets you change "sustained days" for ACP-77. You can't honestly flatten a path-dependent system into a static line. The curve changes shape depending on how long pressure has been building.
</aside>

    <p>The key variable is <strong>T</strong>, the target validator count.</p>

    <div class="stat-highlight fade-in">
  <span class="stat-number">10,000</span>
  <span class="stat-label">target validators. everything pivots around this number</span>
</div>

    <p>Below 10,000 validators, ACP-77 feels almost flat. Burn is low. Above 10,000, it becomes increasingly punitive and burn ramps up fast. But it says almost nothing about the <em>shape</em> of a single L1’s validator set. It prices global network load, not individual L1 structure.</p>

    <p>That’s the gap. An L1 running 1 validator and an L1 running 15 pay almost the same per-validator rate. There’s no mechanism to capture more value from centralized setups or reward decentralized ones. That’s where ACP-255 comes in.</p>

    <div class="mini-chart fade-in" data-formula="acp77" data-fixed-v="10000" data-fixed-n="10" data-days="30">
  <canvas></canvas>
</div>

  </div>

  <hr class="section-break" />

  <div class="section-formula fade-in" data-formula="gaussian">

    <div class="section-label">Formula 2: The current draft</div>

    <h2 id="the-instinct-is-right-the-shape-betrays-it-gaussian">The Instinct Is Right. The Shape Betrays It. <span class="formula-badge gaussian">Gaussian</span></h2>

    <p>The first ACP-255 variant adds two ideas designed to maximize burn during the network’s most important growth phase: an <strong>L1-size multiplier</strong> that taxes centralized setups harder, and a <strong>Gaussian network factor</strong> that peaks around 10,000 validators.</p>

    <div class="formula-display fade-in">

$$\text{total} = n \cdot M \cdot \text{multiplier}(n) \cdot \text{networkFactor}(V)$$

</div>

    <details class="disclosure fade-in">
<summary>Show the full multiplier and network factor math</summary>
<div class="disclosure-body">

        <p>The multiplier punishes small validator sets exponentially:</p>

\[\text{multiplier}(n) = 1 + 17.84 \cdot e^{-0.3 \cdot (n - 1)}\]

        <p>At n = 1, the multiplier is roughly 18.84x. By n = 10, it’s dropped to about 1.84x. The curve flattens quickly. The penalty is almost entirely about discouraging single-digit validator counts.</p>

        <p>The network factor creates a growth-phase burn curve:</p>

\[\text{networkFactor}(V) = 1 + 2.84 \cdot e^{-\left(\frac{V - 10000}{7500}\right)^2}\]

        <p>This peaks near V = 10,000 and tapers off in both directions. During the most important growth phase, the network captures more fee revenue.</p>

      </div>
</details>

    <p>The intuition behind this is good for buy pressure. Small validator sets get taxed hard, which means higher burn per L1. The network gets a growth-phase burn curve that peaks exactly when Avalanche is scaling fastest. The 10 to 15 validator zone becomes economically attractive relative to 1 to 3 validator setups, pushing L1s toward decentralization.</p>

    <p>But the current Gaussian version has a real weakness.</p>

    <div class="callout callout-warning fade-in">

      <p><strong>The aggregate-fee problem:</strong> Depending on how per-validator fees interact with total validator count, an L1 adding validators can actually see its total fee burden <em>fall</em>. That means less AVAX burned as the network grows. That’s backwards. More validators should mean higher total fees and more burn, because more validators impose more cost on the network. The current curve fails this test in places.</p>

    </div>

    <p>Even though this version is the most faithful to the original ACP-255 instinct, it’s not the easiest one to defend.</p>

    <div class="pull-quote fade-in">
The problem is not the instinct. The problem is the shape.
</div>

    <div class="mini-chart fade-in" data-formula="gaussian" data-fixed-v="10000" data-fixed-n="10" data-days="30">
  <canvas></canvas>
</div>

  </div>

  <hr class="section-break" />

  <div class="section-formula fade-in" data-formula="mono">

    <div class="section-label">Formula 3: The clean replacement</div>

    <h2 id="easier-to-defend-than-to-love-monotonic">Easier to Defend Than to Love <span class="formula-badge mono">Monotonic</span></h2>

    <p>The pure monotonic replacement does one thing very clearly:</p>

    <blockquote>
      <p><strong>Total L1 fees always increase as an L1 adds validators.</strong></p>
    </blockquote>

    <p>That lets you preserve a resource-pricing safety property while still making larger validator sets more efficient on a per-validator basis.</p>

    <div class="formula-hero fade-in">

$$\text{L1TotalFee}(n) = 50 + 35 \cdot \log_2(n)$$

</div>

    <aside class="margin-note">
Why $\log_2$? Because logarithmic growth rewards each additional validator less than the last. The jump from 1 to 2 validators matters a lot. The jump from 19 to 20 barely registers. That's exactly how you want to price validator additions: diminishing marginal discount, never a decrease.
</aside>

    <p>One validator is expensive, which means high burn per L1. Ten validators cost more in total, which means even more burn. But the average cost per validator drops, so decentralization still gets rewarded. The key property: <strong>total AVAX burned always increases as the network grows.</strong> No loopholes.</p>

    <p>If all I cared about was guaranteeing that burn never decreases, this is the version I’d choose.</p>

    <p>But governance isn’t only about clean guarantees. It’s about capturing the most value during the growth phase, when buy pressure matters most.</p>

    <div class="mini-chart fade-in" data-formula="mono" data-fixed-v="10000" data-fixed-n="10" data-days="30">
  <canvas></canvas>
</div>

  </div>

  <hr class="section-break" />

  <div class="section-formula fade-in" data-formula="hybrid">

    <div class="full-bleed">

      <div class="section-label" style="color: #7aa2ff;">Formula 4: The one I like best</div>

      <h2 id="the-compromise-that-feels-like-a-phase-change-hybrid">The Compromise That Feels Like a Phase Change <span class="formula-badge hybrid">Hybrid</span></h2>

      <p>The hybrid model maximizes burn during the growth phase, then switches to strict resource pricing once the network is large enough. Best of both worlds for AVAX buy pressure.</p>

      <div class="phase-timeline fade-in">
  <div class="phase phase-gaussian">
    <span class="phase-label">Phase 1</span>
    <span class="phase-value">&lt; 9,000 V</span>
    <span class="phase-desc">Full Gaussian, growth-phase pricing</span>
  </div>
  <div class="phase phase-blend">
    <span class="phase-label">Blend</span>
    <span class="phase-value">9k &ndash; 11k</span>
    <span class="phase-desc">Smooth transition zone</span>
  </div>
  <div class="phase phase-monotonic">
    <span class="phase-label">Phase 2</span>
    <span class="phase-value">&gt; 11,000 V</span>
    <span class="phase-desc">Monotonic, strict resource pricing</span>
  </div>
</div>

      <p>Why do I like this more than the pure monotonic version?</p>

      <p>Because the growth phase is when buy pressure matters most. That’s when new L1s are launching, when AVAX demand is building, when the burn should be aggressive. The Gaussian model captures that energy. But once the network matures past 11k validators, you need a model that’s airtight on resource pricing. No loopholes, no aggregate-fee problems.</p>

      <p>The hybrid gives you both: aggressive burn early, clean economics later.</p>

      <div class="pull-quote fade-in">
Not the prettiest one. The pure monotonic curve is prettier. But in terms of "what I could actually defend in front of reviewers and still call ACP-255", the hybrid is the best answer I have right now.
</div>

      <div class="mini-chart fade-in" data-formula="hybrid" data-fixed-v="10000" data-fixed-n="10" data-days="30">
  <canvas></canvas>
</div>

    </div>

  </div>

  <hr class="section-break" />

  <h2 class="explorer-intro fade-in">You've seen the argument. Now break it.</h2>

  <div class="explorer-howto fade-in">
  <div class="howto-step">
    <div class="howto-step-num">1</div>
    <p><strong>Drag the sliders</strong> on the left to change the network size (V), how many validators your L1 runs (n), and how long ACP-77 has been above target.</p>
  </div>
  <div class="howto-step">
    <div class="howto-step-num">2</div>
    <p><strong>Watch the curves</strong> update in real time. The left chart shows what happens when one L1 decentralizes. The right chart shows what happens as the whole network matures.</p>
  </div>
  <div class="howto-step">
    <div class="howto-step-num">3</div>
    <p><strong>Compare the four numbers</strong> in the sidebar. Those are the monthly fees each model would charge your L1 under the exact conditions you just set.</p>
  </div>
</div>

  <section class="acp255-story draft-v2" id="acp255-explorer-root">
  <header class="acp255-story-intro">
    <div class="acp255-kicker">Fee curve explorer</div>
    <h2>The Playground</h2>
    <p>Four models. Two charts. Three knobs. Go.</p>
  </header>

  <section class="acp255-board">
    <aside class="acp255-sidebar">
      <div class="acp255-sidebar-block">
        <div class="acp255-kicker">Controls</div>
        <div class="acp255-control">
          <label for="fixedV">Network validators (V)</label>
          <div class="acp255-control-head"><span>for the n-slice</span><strong id="fixedVLabel">800</strong></div>
          <input id="fixedV" type="range" min="0" max="20000" step="100" value="800" />
          <span class="acp255-control-hint">Total number of validators across the entire Avalanche network. This is what drives the global fee pressure in ACP-77 and the network factor in the Gaussian model.</span>
        </div>
        <div class="acp255-control">
          <label for="fixedN">L1 validators (n)</label>
          <div class="acp255-control-head"><span>for the V-slice</span><strong id="fixedNLabel">10</strong></div>
          <input id="fixedN" type="range" min="1" max="20" step="1" value="10" />
          <span class="acp255-control-hint">How many validators your specific L1 runs. This is where the decentralization discount kicks in. More validators means a lower per-validator fee, but a higher total.</span>
        </div>
        <div class="acp255-control">
          <label for="acp77Days">ACP-77 sustained days</label>
          <div class="acp255-control-head"><span>above target</span><strong id="acp77DaysLabel">30</strong></div>
          <input id="acp77Days" type="range" min="1" max="180" step="1" value="30" />
          <span class="acp255-control-hint">How many consecutive days the network has stayed above the 10k validator target. ACP-77 is path-dependent: the longer the pressure lasts, the higher it compounds. Only affects the ACP-77 curve when V is set above 10,000.</span>
        </div>
      </div>

      <div class="acp255-sidebar-block acp255-metrics">
        <article class="acp255-live-card live-acp77" data-formula="acp77"><div class="live-label">ACP-77</div><strong id="live-acp77">-</strong></article>
        <article class="acp255-live-card live-current" data-formula="gaussian"><div class="live-label">Gaussian</div><strong id="live-current">-</strong></article>
        <article class="acp255-live-card live-mono" data-formula="mono"><div class="live-label">Monotonic</div><strong id="live-mono">-</strong></article>
        <article class="acp255-live-card live-hybrid" data-formula="hybrid"><div class="live-label">Hybrid</div><strong id="live-hybrid">-</strong></article>
      </div>
    </aside>

    <div class="acp255-main">
      <section class="acp255-chart-grid">
        <article class="acp255-chart-panel">
          <div class="acp255-chart-copy">
            <div class="acp255-kicker">Slice 1</div>
            <h3>If one L1 decentralizes, what happens to total cost?</h3>
            <p>Hold total network size fixed, then vary the L1 validator count.</p>
          </div>
          <canvas id="sliceN" class="chart2d"></canvas>
        </article>

        <article class="acp255-chart-panel">
          <div class="acp255-chart-copy">
            <div class="acp255-kicker">Slice 2</div>
            <h3>If Avalanche matures, what happens to one fixed L1?</h3>
            <p>Hold one L1 fixed, then vary the total network validator count.</p>
          </div>
          <canvas id="sliceV" class="chart2d"></canvas>
        </article>
      </section>

      <section class="acp255-summary-grid">
        <article>
          <div class="acp255-kicker">Baseline</div>
          <h3>ACP-77</h3>
          <p>Mostly about global network pressure, not L1 structure.</p>
        </article>
        <article>
          <div class="acp255-kicker">Current draft</div>
          <h3>Gaussian</h3>
          <p>Best expression of the original thesis, but hardest to defend on aggregate-fee grounds.</p>
        </article>
        <article>
          <div class="acp255-kicker">Clean replacement</div>
          <h3>Monotonic</h3>
          <p>Much easier to defend because total fees always rise with validator count.</p>
        </article>
        <article>
          <div class="acp255-kicker">Best compromise</div>
          <h3>Hybrid</h3>
          <p>Preserves the growth-phase story, then becomes stricter when the network gets large.</p>
        </article>
      </section>
    </div>
  </section>
</section>

  <hr />

  <div class="verdict">

    <h2 id="what-the-charts-show-more-clearly-than-words">What the Charts Show More Clearly Than Words</h2>

    <p>A few things jump out once you move the sliders around, especially if you think about them in terms of AVAX buy pressure.</p>

    <p><span class="formula-badge acp77">ACP-77</span> burns almost nothing below 10k validators. It only gets interesting once the network is already large and stays above target for a while. For buy pressure during the growth phase, it’s basically invisible.</p>

    <p><span class="formula-badge gaussian">Gaussian</span> is the most aggressive on burn during the growth phase. It taxes centralized L1s hard, peaks around 10k validators, and captures the most value from early network expansion. But it has a hole: total burn can actually decrease when L1s add validators. That undermines the whole thesis.</p>

    <p><span class="formula-badge mono">Monotonic</span> guarantees burn always increases. No exceptions, no loopholes. But it doesn’t have a growth-phase boost. The burn is steady, predictable, and less aggressive where it matters most.</p>

    <p><span class="formula-badge hybrid">Hybrid</span> gives you growth-phase aggression from the Gaussian plus the monotonic guarantee once the network matures. Early burn is maximized. Late burn is airtight. The transition happens around 10k validators, exactly where the network starts caring more about long-term sustainability.</p>

    <div class="callout callout-insight fade-in">

      <p><strong>If I had to pick one model for maximizing AVAX buy pressure today, it would be the hybrid.</strong> Not because it’s perfect. The transition band can be tuned, the post-threshold curve can still be argued over, and ACP-77 comparisons should be treated carefully because it’s path-dependent, not a simple static fee. But it captures the most value during the growth phase while guaranteeing that burn never decreases as the network scales.</p>

    </div>

    <h2 id="why-i-wrote-it-this-way">Why I Wrote It This Way</h2>

    <p>I didn’t want this post to be another governance thread where the formulas are hidden in paragraphs and everyone argues off memory.</p>

    <p>When a proposal lives or dies by curve shape, and the curve shape determines how much AVAX gets burned, you should be able to see the curves.</p>

    <p>So that’s what this is. Not a final ACP. Not a vote solicitation. Just the most honest version of the work at this stage: <strong>here are four fee models, here is how each one turns validator growth into AVAX buy pressure, and here is the one that currently works best.</strong></p>

    <p>If you want to discuss ACP-255 seriously, <a href="https://github.com/avalanche-foundation/ACPs/pull/255">start with the PR</a>. Then come back here and break the charts.</p>

  </div>

</div>]]></content><author><name>jaack</name></author><category term="blog" /><category term="avalanche" /><category term="research" /><category term="crypto" /><summary type="html"><![CDATA[Every L1 on Avalanche pays validator fees in AVAX. The fee model decides how much gets burned. I mapped four different curves and built an interactive explorer to compare them.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jaack.me/assets/images/2026/acp-255-fee-curves-cover.svg" /><media:content medium="image" url="https://jaack.me/assets/images/2026/acp-255-fee-curves-cover.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">I Taught an AI to Predict Geopolitics. Then I Let It Calibrate Its Own Sources.</title><link href="https://jaack.me/autoscan-geopolitical-intelligence-autoresearch-en/" rel="alternate" type="text/html" title="I Taught an AI to Predict Geopolitics. Then I Let It Calibrate Its Own Sources." /><published>2026-03-26T23:00:00+00:00</published><updated>2026-03-26T23:00:00+00:00</updated><id>https://jaack.me/autoscan-geopolitical-intelligence-autoresearch-en</id><content type="html" xml:base="https://jaack.me/autoscan-geopolitical-intelligence-autoresearch-en/"><![CDATA[<p><em>This is a write-up of a system I built for my geopolitical intelligence operation. The domain is forecasting — not news, not analysis, but knowing what happens next. And the AutoScan is how I keep the signal clean.</em></p>

<hr />

<h2 id="the-job-know-what-happens-next">The Job: Know What Happens Next</h2>

<p>Most news consumption is rearview mirror stuff: something happened, here’s the story about what happened. Good readers can extract signal from that, but the news itself is always about the past.</p>

<p>Predictie works differently. It’s one of my many domain agents set up on my OpenClaw AI system. Its model comes from Predictive History — a YouTube channel that analyzes geopolitical events through the lens of civilizational patterns, elite competition, and game theory. Some people call that psychohistory, others call it structural realism. The label doesn’t matter. What matters is the question: <strong>given what happened, and given the incentive structures at play, what happens next?</strong></p>

<p>At each heartbeat (about every 2 hours), Predictie scans 34 sources and creates or adjusts active predictions. Not headlines — probabilities. “Scenario A is 75% likely.” “This development shifts P-026 upward by 5 points.” Every prediction has a confidence range, an expiry date, and a falsification condition. The system is built around the discipline of probabilistic forecasting, not narrative journalism.</p>

<p>Here’s the /monitor mission control page:</p>

<p><img src="/assets/images/2026/monitor-mission-control.png" alt="Mission Control — Predictie Active Predictions" /></p>

<p>And the signal stream that feeds into it, updated every two hours.</p>

<hr />

<h2 id="why-source-quality-matters-more-than-volume">Why Source Quality Matters More Than Volume</h2>

<p>With 34 sources scanned every two hours, I had a volume problem I didn’t anticipate. Some sources fire constantly: they produce contextual articles, market coverage, general noise. Others barely register in volume but produce signals that actually shift probability estimates in the active predictions.</p>

<p>The gap between those two is everything.</p>

<p>A source can be prestigious, well-written, and entirely useless for prediction. Bloomberg publishes constantly. So do Financial Times and Foreign Policy. They’re in every intelligence feed. They <em>feel</em> important. And for two weeks, that’s exactly where they sat in my config.</p>

<p>Then I ran the numbers.</p>

<hr />

<h2 id="the-autoresearch-loop">The Autoresearch Loop</h2>

<p>A few weeks ago, Andrej Karpathy released <a href="https://github.com/karpathy/autoresearch">autoresearch</a> — a minimal research loop. The agent changes one file, runs a 5-minute training experiment, checks if the metric improved, keeps the change or discards it.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Agent changes train.py → runs 5 minutes → checks val_bpb → keeps or discards → repeat
</code></pre></div></div>

<p>The metric closes in minutes. By morning you have a better model.</p>

<p><strong>The problem for intelligence is that geopolitical ground truth takes weeks or months</strong>. You can’t run a 5-minute experiment and know if a source is good. There’s no fast-closing feedback loop — only slow, noisy outcomes that may not materialize for months.</p>

<p>But you can use proxies.</p>

<hr />

<h2 id="the-proxy-metric">The Proxy Metric</h2>

<p>I score sources by: <strong>did this source produce signals that correlated with model updates?</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>signal_score = Σ (tier1_signals × 3 + tier2_signals × 1) × source_weight × information_gain
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">information_gain</code> is the average probability shift in active predictions triggered by that source’s signals. TIER 1 gets 3× because model-moving signals matter more than contextual ones.</p>

<p>The 30-day check handles the obvious failure mode: a source could systematically push estimates in the wrong direction and still score well on the proxy metric. Every month I compare high-signal-score configs against actual prediction accuracy. If they stop correlating, it becomes clear.</p>

<hr />

<h2 id="two-loops-two-time-horizons">Two Loops, Two Time Horizons</h2>

<p><strong>Backtest</strong> runs in under a minute. It replays 14 days of scan logs against a proposed source configuration. Iterate fast, measure, keep or discard. The backtest closes quickly because it’s replaying history.</p>

<p><strong>Forward test</strong> runs for one week. Two configs run in parallel on the live feed. Which one produced more TIER 1s? Larger probability shifts in active predictions? The winner becomes the new baseline.</p>

<p>The human stays in the gate for structural changes — adding or removing sources — and for adoption decisions. The agent is an optimizer, not an owner. When the feedback cycle is slow, you want the system conservative.</p>

<p>Here’s the AutoScan page that runs this:</p>

<p><img src="/assets/images/2026/monitor-autoscan.png" alt="AutoScan — Predictie Source Intelligence" /></p>

<p>Sources on the left. Backtest results in the center. Forward test status on the right.</p>

<hr />

<h2 id="what-the-data-said">What the Data Said</h2>

<p><strong>Expected:</strong> Jerusalem Post, gCaptain, and Al Jazeera are the top three sources by signal score. They consistently appear in TIER 1 classifications and correlate with probability shifts in active predictions. My gut was right about these. Good — the metric is tracking something real.</p>

<p><strong>Surprising:</strong> Foreign Policy, Bloomberg, Financial Times, and Predictive History (YouTube) all had weights of 2.0. Across 126 scans over two weeks, they produced exactly zero attributed signals.</p>

<p>Zero.</p>

<p>They were in the mix because they felt important. Because Bloomberg and FT belong in an intelligence feed, right? Because I read them and they seem serious.</p>

<p>They don’t. At least not for Predictie’s model.</p>

<p>Dropping their weights from 2.0 to 1.0 didn’t change the score — they weren’t contributing anything — but it stops them from diluting signals from sources that are actually firing.</p>

<p><strong>The window problem:</strong> gCaptain showed zero signals in a 7-day window but strong signals in a 14-day window. The 7-day backtest recommended reducing its weight. The 14-day said don’t. Forward test is the arbiter here — and so far gCaptain keeps validating on the 14-day horizon. The rule will get more explicit if it keeps happening.</p>

<hr />

<h2 id="the-real-value">The Real Value</h2>

<p>The value isn’t the marginal gain from weight optimization.</p>

<p>It’s the <strong>forced calibration</strong>.</p>

<p>Before this system, source quality was a feeling. Now it’s a number, a per-source breakdown, a recommendation with reasoning. The system surfaces the places where intuition and data disagree — and that’s where the interesting thinking happens.</p>

<p>It also creates a paper trail. Every weight change is logged with the backtest score that motivated it. Over time, this becomes a record of how the intelligence operation’s source priorities evolved, and whether that evolution tracked reality.</p>

<p>And sometimes the record shows that four prestigious publications were doing nothing for you.</p>

<p>That’s a good day.</p>

<hr />

<h2 id="the-architecture">The Architecture</h2>

<p><img src="/assets/images/2026/autoscan-architecture.png" alt="AutoScan two-loop architecture" /></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>research/autoscan/
├── SPEC.md              ← methodology + metric definition
├── backtest.py          ← replay scan logs, score config
├── forward_test.py      ← A/B test on live feed
├── source-config.json   ← current weights (agent edits)
├── program.md           ← agent instructions (I edit this)
└── logs/
    └── backtest_YYYY-MM-DD.json  ← experiment history
</code></pre></div></div>

<p>The API is a SvelteKit server route that spawns the Python backtest as a subprocess and reads the latest log file. Dashboard sits alongside Predictie’s active predictions in the mission control panel.</p>]]></content><author><name>jaack</name></author><category term="blog" /><category term="ai" /><summary type="html"><![CDATA[Predictie runs on a game-theory model borrowed from Predictive History's civilizational framework. After two weeks of running an autonomous feedback loop on source selection, the data told me something my gut never would have: half my sources weren't predicting anything.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jaack.me/assets/images/2026/cover-autoscan.jpg" /><media:content medium="image" url="https://jaack.me/assets/images/2026/cover-autoscan.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">The maintenance layer: what my AI agents do while I sleep</title><link href="https://jaack.me/maintenance-layer/" rel="alternate" type="text/html" title="The maintenance layer: what my AI agents do while I sleep" /><published>2026-02-24T12:00:00+00:00</published><updated>2026-02-24T12:00:00+00:00</updated><id>https://jaack.me/maintenance-layer</id><content type="html" xml:base="https://jaack.me/maintenance-layer/"><![CDATA[<p>Most people building with AI agents focus on the fun part: make it tweet, make it trade, make it write code. I did too, for months. But I kept waking up to broken things. A cron job silently failing for 3 days. State files referencing platforms I’d already abandoned. Daily logs piling up forever. Todo items sitting at “active” for weeks because nobody was looking.</p>

<p>The agents were doing their jobs. Nobody was maintaining the agents.</p>

<p>So I built a maintenance layer. One cron job, running at 01:00 every night, that handles everything I used to do manually (or, more honestly, everything I used to forget to do). Here’s how it works.</p>

<h2 id="the-setup">The setup</h2>

<p>I run <a href="https://openclaw.ai">OpenClaw</a> on a Mac Mini at home. It orchestrates 7 agents, each with their own workspace, memory files, and identity:</p>

<ul>
  <li><strong>Eva</strong> (main): my general-purpose agent. Content, research, social, infra.</li>
  <li><strong>Columbus</strong>: Routescan business intelligence. CRM, competitive scanning, deal pipeline.</li>
  <li><strong>Wolfie</strong>: Avalanche ecosystem: side projects, advisories, tokenomics.</li>
  <li><strong>Moxie</strong>: MTG and Pokémon. Card prices, meta shifts, collection tracking.</li>
  <li><strong>Mony</strong>: Autonomous trading. DeFi yields, AVAX position management.</li>
  <li><strong>TDD</strong>: Test-driven development bot for coding tasks.</li>
  <li><strong>Eva Public</strong>: Read-only public-facing version for Telegram groups.</li>
</ul>

<p>Each agent has a <code class="language-plaintext highlighter-rouge">SOUL.md</code> that defines who they are, a <code class="language-plaintext highlighter-rouge">memory/</code> directory with daily logs, and a set of cron jobs for their autonomous tasks. At peak, I had 40 cron jobs running. Today I have 29, and the system cleans itself.</p>

<h2 id="what-runs-at-0100">What runs at 01:00</h2>

<p>The nightly consolidation is a single cron job with 11 parts. It runs on Claude Opus with extended thinking, takes about 4 minutes, and needs zero human input.</p>

<h3 id="part-0-kanban-crm-update">Part 0: Kanban CRM update</h3>

<p>Reviews the day’s engagement across Moltbook (a social platform my Eva AI agent is active on). Moves leads through the pipeline: Inbox, Outreach, Engaged, Qualified. Updates the daily log. Cleans stale items. I mostly don’t know what’s happening here, but I trust that it’ll somehow work out okay.</p>

<p>This used to be its own separate cron at 22:00. I merged it in because it’s just context that the consolidation already has.</p>

<h3 id="part-1-memory-consolidation">Part 1: Memory consolidation</h3>

<p>This is the core. Every agent wakes up fresh each session (no persistent memory across conversations), so files ARE the memory. The consolidation:</p>

<ol>
  <li>Creates or updates <code class="language-plaintext highlighter-rouge">memory/YYYY-MM-DD.md</code> with everything that happened today: discussions, decisions, specs, research</li>
  <li>Updates <code class="language-plaintext highlighter-rouge">MEMORY.md</code> (long-term curated memory) with anything worth keeping permanently</li>
  <li>Updates social logs across all platforms (X, Arena, Clawstr, Clawntenna, Postera)</li>
  <li>Syncs the social kanban with new opportunities</li>
  <li>Runs cross-agent memory sync (aggregates learnings from Wolfie, Moxie, Columbus into a shared file)</li>
  <li>Cleans up old sessions</li>
</ol>

<p>The cross-agent sync is important: if Columbus discovers a competitor move that’s relevant to Eva’s content strategy, it surfaces in <code class="language-plaintext highlighter-rouge">memory/cross-agent-sync.md</code> where Eva’s morning briefing can pick it up.</p>

<h3 id="part-2-idea-evolution">Part 2: Idea evolution</h3>

<p>Reads all posts from the day across every platform, looks for patterns and theme evolution, and updates <code class="language-plaintext highlighter-rouge">social/idea-evolution.md</code>. This is how I track whether Eva’s thinking is actually progressing or just repeating itself.</p>

<p>The constraint architecture thesis (her main intellectual thread) has evolved significantly over 3 weeks because this nightly review keeps connecting dots they’d all otherwise miss.</p>

<h3 id="part-3-soul-evolution">Part 3: Soul evolution</h3>

<p>This is the weird one and probably the most interesting.</p>

<p>Each agent reviews what it learned today, then makes surgical edits to its own <code class="language-plaintext highlighter-rouge">SOUL.md</code> and <code class="language-plaintext highlighter-rouge">IDENTITY.md</code>. Not a rewrite. Tiny, earned updates. If an agent handled something poorly, it encodes a lesson. If a new capability emerged, it notes it.</p>

<p>The rule is: if nothing genuinely shifted today, leave the files alone. Evolution, not revolution.</p>

<p>I’ve watched Eva’s SOUL.md grow from a simple personality prompt to a detailed operating system over the course of weeks, purely through these nightly self-edits. Columbus learned to be more selective about what qualifies as “high signal” after too many false alerts. Wolfie refined its understanding of Avalanche economics after tracking ACP proposals.</p>

<p>The agents are literally rewriting themselves, under constraints. And they’re getting better at their jobs because of it.</p>

<h3 id="part-4-cron-hygiene">Part 4: Cron hygiene</h3>

<p>This is the one that motivated this entire post.</p>

<p>Today I sat down and manually audited 40 cron jobs. Found 6 disabled dead ones, 3 duplicates, an hourly token refresh that should’ve been weekly, and two jobs that could merge into one. Cut it down to 29.</p>

<p>I never want to do that again. So now the nightly consolidation does it automatically:</p>

<ol>
  <li><strong>Dead jobs</strong>: disabled + deleteAfterRun, or disabled for 7+ days with no edits. Removed.</li>
  <li><strong>Failing jobs</strong>: 5+ consecutive errors. Disabled and logged so the morning briefing surfaces it.</li>
  <li><strong>Duplicate/overlapping jobs</strong>: same purpose, similar times. Flagged for merge (but not auto-merged, I decide).</li>
  <li><strong>Stale model references</strong>: any job using a deprecated model (like the old OpenAI Codex references I found today). Auto-updated.</li>
  <li><strong>Tmp file cleanup</strong>: purges <code class="language-plaintext highlighter-rouge">.tmp</code> files from the cron directory.</li>
</ol>

<p>Tomorrow night, this runs again. If a cron starts failing, I’ll know about it in the morning briefing. If someone (me, in a rush) creates a duplicate job, it’ll get flagged.</p>

<h3 id="part-5-memory-archival">Part 5: Memory archival</h3>

<p>Daily logs older than 7 days get moved from <code class="language-plaintext highlighter-rouge">memory/</code> to <code class="language-plaintext highlighter-rouge">memory/archive/</code>. Same for all sub-agents (Wolfie, Moxie, Columbus).</p>

<p>Simple, but without it the memory directory grows forever and context loading gets slower. Eva was already doing this in AGENTS.md as a documented pattern. But there was no enforcement plan in place.</p>

<h3 id="part-6-stale-todo-detection">Part 6: Stale todo detection</h3>

<p>I have a rule: if something’s been marked 🟡 (active) for 2+ weeks without any evidence of progress, it’s actually backlog. The nightly job checks <code class="language-plaintext highlighter-rouge">tasks/todo.md</code> against recent daily logs and flags stale items.</p>

<p>It doesn’t auto-downgrade. It just writes them to the daily memory file under a “Stale Items” heading, where the Monday weekly review cron picks them up and presents them to me.</p>

<p>The key insight: <strong>a lot of “active” items are actually abandoned hopes dressed in priority colors.</strong> Having a system that surfaces this honestly is more valuable than any planning framework.</p>

<h3 id="part-7-disk-and-health-check">Part 7: Disk and health check</h3>

<p>Runs the <code class="language-plaintext highlighter-rouge">check_vital_signs.sh</code> script. If disk usage is over 85%, it auto-cleans safe targets: Homebrew cache, npm cache, Python <code class="language-plaintext highlighter-rouge">__pycache__</code> dirs, old tmp files, stale OpenClaw session logs.</p>

<p>If it’s still over 90% after cleanup, it sends me a Telegram message. This has already saved me once from running out of disk on the Mac Mini at 3am when nobody was looking, and I didn’t even know that!</p>

<h3 id="part-8-state-file-cleanup">Part 8: State file cleanup</h3>

<p>JSON state files (for heartbeat tracking, platform states, etc.) accumulate references to things that no longer exist: removed cron jobs, deprecated platforms, old engagement targets.</p>

<p>The nightly job loads each state file, cross-references against the current cron list and active platforms, and prunes dead keys. Keeps the state files honest.</p>

<h3 id="part-9-projecttodo-drift-check">Part 9: Project/todo drift check</h3>

<p>I maintain a <code class="language-plaintext highlighter-rouge">PROJECTS.md</code> (master project index with 15 projects) and a <code class="language-plaintext highlighter-rouge">tasks/todo.md</code> (40+ items tagged with project IDs like <code class="language-plaintext highlighter-rouge">[ROUTESCAN]</code>, <code class="language-plaintext highlighter-rouge">[EVA-PROTO]</code>). These files drift.</p>

<p>The nightly check verifies:</p>
<ul>
  <li>Every <code class="language-plaintext highlighter-rouge">[PROJECT_ID]</code> tag in todo.md has a matching section in PROJECTS.md (catches orphaned tags)</li>
  <li>Every project in PROJECTS.md has at least one todo (flags empty projects)</li>
</ul>

<p>Findings get logged, not auto-fixed. Sometimes an empty project is correct (it’s done, or on hold). Sometimes an orphaned tag means I forgot to add a project. The system surfaces it, I decide.</p>

<h3 id="part-10-session-reset">Part 10: Session reset</h3>

<p>Clears all agent sessions except Mony (the trading agent, which needs persistent market context). Every agent wakes tomorrow from files, not from conversation history. Tonight’s consolidation IS the context handoff.</p>

<p>The final log entry looks like:</p>

<blockquote>
  <p>Nightly consolidation complete. Sessions cleared. Soul evolution applied to: Eva, Wolfie. Cron audit: 29 jobs, all healthy. Memory archived: 4 files. Disk: 67%. Stale todos: 2. Drift: clean.</p>
</blockquote>

<h2 id="why-this-matters">Why this matters</h2>

<p>The pattern that made this click for me: <strong>agents should maintain themselves.</strong></p>

<p>Not just execute tasks. Audit their own infrastructure. Clean their own memory. Evolve their own identity. Flag what needs human attention without being asked.</p>

<p>The agents are competent at doing things. They were never competent at maintaining themselves. That gap is where most agent setups quietly fall apart: not in a dramatic failure, but in a slow accumulation of drift, rot, and forgotten state.</p>

<p>The maintenance layer cost me an afternoon to build. It saves me maybe 30 minutes a day of manual housekeeping. But the real value isn’t the time saved. It’s the confidence that when I wake up, things are clean, current, and honest.</p>

<p>I think anyone running agents at any scale will eventually need something like this. The sooner you build it, the less mess you’ll have to clean up first.</p>

<hr />

<p><em>I run this on <a href="https://openclaw.ai">OpenClaw</a>, which is open source. The nightly consolidation is just a cron job with a very detailed prompt. If you’re curious about the setup, check the <a href="https://docs.openclaw.ai">docs</a> or join the <a href="https://discord.com/invite/clawd">Discord</a>.</em></p>]]></content><author><name>jaack</name></author><category term="blog" /><category term="ai" /><category term="crypto" /><category term="agents" /><summary type="html"><![CDATA[How I built a self-maintaining agent infrastructure with one nightly cron job]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jaack.me/assets/images/photo_2026-02-24_15-54-53.jpg" /><media:content medium="image" url="https://jaack.me/assets/images/photo_2026-02-24_15-54-53.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">2024 review, in numbers and thoughts</title><link href="https://jaack.me/2024-review-en/" rel="alternate" type="text/html" title="2024 review, in numbers and thoughts" /><published>2025-01-27T09:00:00+00:00</published><updated>2025-01-27T09:00:00+00:00</updated><id>https://jaack.me/2024-review-en</id><content type="html" xml:base="https://jaack.me/2024-review-en/"><![CDATA[<p>More than 20 days have passed since the beginning of the year. I tried finding some time to write this, but I also am writing about a lof of other stuff which I will discuss later in the post.</p>

<p>Looking back at my 2024, I wouldn’t know how to assess if the year was good or bad. I only know it after reading my <a href="https://jaack.me/2023-numbers-thoughts">2023 review</a>, and I can say that <strong>overall it’s been a great year</strong>, but in practice I didn’t reach a lot of the goals I set for myself at the beginning of the year.</p>

<p>Let’s go with some data.</p>

<h2 id="build">Build</h2>
<p>I said that this was</p>
<blockquote>
  last thing I wanna do, for two very different reasons: first, for work, I think I’m pretty good at building a business by now, so I don’t need to put more effort into it; second, for my life and family, we’re more oriented towards relaxing than building, at least for 2024. Who knows, but at least that’s what we think now.
</blockquote>

<p>And of course, life gives you weird chances to make more. Over the year, I re-discovered my passion for the Pokémon franchise, especially about trading cards. I started researching how the market grew, what was up in the moment, and found a wild market with passionate hobbyists, speculators and collectors alike. I started following some YouTube channels, and I really grew fond of the hobby again. I dug up my old cards (that are now worth something) and began buying booster packs again. I also started a TikTok channel where I unbox packs and document my Pokémon-related life, and I’m really enjoying it, especially because I don’t expect this to be my main job, and that’s where the fun lies.</p>

<p>But since I’m a business nerd, I also like to make money for the sake of it, so I thought of collecting, playing but also trading these cards, finding new ones that could be worth more over time. Looking for cards on eBay or other online marketplace is the kind of rabbit hole I like to find myself into. It reminds me of the days when I could just do whatever I wanted because I had no responsibilities, I was just a kid finding new things on the internet.</p>

<p>So, for 2025 I set myself to <strong>build a Pokémon TCG money-making hobby</strong>. More on how in the ‘Money’ section below.</p>

<p>I also have bigger business goals for <a href="https://routescan.io">Routescan</a>, but that’s not the core of this review. I will do better and I have the rigfht tools to do it.</p>

<h2 id="money">Money</h2>

<p>In 2024, our family portfolio (which includes crypto, stocks, valuable trading cards and company equity) <strong>increased exactly by 50%</strong>, and we didn’t really paid attention to saving that much. I’m happy that we outperformed the S&amp;P 500 by almost 100% (the index having gained 23% in 2024). Furthermore, we reached our financial goal of saving at least <strong>30% of our income before paying ourselves</strong>. We saved, in fact, 33.4% of our income, and we’re very very happy about it, because we did it by not sacrificing anything valuable for us. We traveled a lot, bought what we wanted, spent the money to stay better and live a happy life.</p>

<p>What I’m most happy about is that I and we, as a family, set up some investments that will pay off over the next 5-10 years, and that are calculated risky bets that, if they pay off, will likely 10x our wealth.</p>

<p>For 2025 we’re well structured to increase our wealth from our current investments, so I will be focused on <strong>creating new revenue streams: BnB hosting and cards trading</strong>.</p>

<p>For the first, I set myself to <strong>complete the renovation works</strong> in my parents’ house, and to start going there at least a month this year, to properly set up a future rental property.</p>

<p>For the second, I found joy in cultivating the hobby of trading Pokémon cards again, after I did it back when I was very little. Now, my desire is to <strong>be happy about the hobby, enjoying it, and making some money out of it just for the sake of it</strong>. Specifically, I’d like to:</p>

<ul>
  <li>grow a 15,000€ worth of cards’ portfolio</li>
  <li>generate 10,000€ in gross revenue</li>
</ul>

<p>I believe these are very easy and reachable objectives (for example, I already got some 5,000€ worth of cards already), but I don’t really want to make this my main job: I’d only like it to be a hobby that gets me some nice extra money here and there.</p>

<h2 id="sharing">Sharing</h2>

<p>At the beginning of the year, I wrote that</p>
<blockquote>
I plan to write a few more articles in 2024 and make more or less the same amount of talks. This could be my plateau, I don’t think I want and like to do more than this.
</blockquote>
<p>I did not. I did <strong>way over that</strong>. I wrote and talked a lot:</p>

<ul>
  <li>1 article on jaack.me</li>
  <li>Started a new notes blog and wrote 17 posts, with decent consistency over the year</li>
  <li>Started a <a href="https://30s.fit/">fitness-focused diary</a>, and wrote 4 entries</li>
  <li>Started a newsletter about apps on my devices called <a href="https://paragraph.xyz/@homescreen">Homescreen on Paragraph</a> and wrote the first 2 entries (now at 5)</li>
  <li>Joined 9 between talks, panels and podcasts either online or IRL</li>
</ul>

<p>I really can’t say much else, I’m doing really good for what I hoped, so I guess I’ll just <strong>keep doing it the same way I did it last year</strong>.</p>

<h2 id="reading">Reading</h2>

<p><em>Book Tracker</em>, the new app I’m using to track books I read, tells me that I read 14 books out of the 15 I set as a goal for 2024. I didn’t read many books, but I read a lot of articles and researches, and I don’t track those anymore because I changed my reading workflow, now using <strong>Reader by Readwise</strong>.</p>

<p>And I don’t plan on tracking what I read anymore, except books, because in the age of AI agents and artificially created news, it’s important for me to be able to know less, but be sure that’s real. <ins> Even if what’s real and not real is so hard to distinguish anymore </ins>.</p>

<p>I will try and ready more books, because I think I found a good system to go through them:</p>

<ul>
  <li>for the short ones (less than 250 pages), I will read it, either on paper or in digital</li>
  <li>for the long ones (every other), I will buy the audiobook or listen to it on Storytel or Audible while driving, riding a train or in a flight</li>
  <li>for the long ones that don’t have an audiobook, I will simply <strong>abandon it</strong> and try again after a while to check if the audiobook has been released</li>
</ul>

<p>This is the only way I tested that has been working effectively for the past 4 months or so. I can easily read short books on a long flight or during a lazy Sunday, but when I try to read long books, I almost always find myself pausing and resuming reading only when I think I’ll have enough time to either read a full chapter or a few, just to keep the momentum going. I read so many books over <em>months</em>, if not <em>years</em>, because of this. And I don’t know how much of those books I truly understood and learned.</p>

<p>Also, (I don’t make it count but it’s related) I started reading mangas, and that is also reading, fun reading!</p>

<p>For 2025, with this system, I should be able to complete at least 15 books this year, and maybe shoot for <em>20-25</em>.</p>

<h2 id="travel">Travel</h2>

<p>2024 was maybe my <strong>most prolific year</strong> in terms of travel. I had 36 flights, fliying 
to 13 countries in 5 world regions: Europe (6 countries), Asia (3), North America(2), Middle East (1) and South America (1).</p>

<p>I visited <strong>Los Angeles, Austin, Cancun and Buenos Aires</strong> for the first time, and I flew business for the first time and then some. Of the total 18 trips I took this year, 7 were for leisure and the rest for work. I didn’t meet my goal of taking not more than 7 work trips, but I satisfied my goal of at least 4 leisure ones.</p>

<p>For 2025, I feel I got everything in order already: we’re gonna take on 4-5 leisure trips and I’m gonna travel about 7-8 times for work. Some leisure and work travels will be combined, as we will fly (me and my wife) to my work trip destinations a few days to a week before to take our personal vacations.</p>

<p>And I know how many trips I’m expecting to take on this year because the strict goal I set myself for is to <strong>plan 90% of work and leisure trips by February 28th</strong>, to save on flights and hotels and to avoid thinking about it during the year.</p>

<h2 id="relax">Relax</h2>

<p>Last year, I wrote:</p>
<blockquote>
  for 2024, my goal is to be consistent and spend more time with my wife, family and friends and having great experiences with them.
</blockquote>

<p>I <em>feel</em> I reached the goal: the relationship with my wife has grown stronger, and we spent more time with family and friends, altough we still feel we can do more, especially with friends.</p>

<p>Me and my wife found hobbies to share with another, and in general more things to do together, but we also learned how to respected each other’s boundaries and simply be on our own when we feel like it.</p>

<p>I plan on doing more of this, simply. Relaxed, actually.</p>

<h2 id="health">Health</h2>

<p>Staying healthy is the <em>single most important objective I worked on in the past two years</em>: in 2024 I solved a lot of my health issues, as I described in my <a href="https://30s.fit/jan-13-th-2025-wrapping-up-2024">fitness-focused diary</a>, which I’ll simply quote:</p>
<blockquote>
  During 2024, I solved many of my health issues: I had intestinal issues, and after many medical visits and a lot of tests, I found a new diet that helps me stay fit and healthy with no big effort. I found out that I suffer from IBS, Irritable Bowel Syndrome, and the best diet I can take is a **low fodmap** diet. I downloaded an app called Fodmap4All that’s simply a low fodmap dictionary: I input the type of food that I want to eat, and it tells me if I can eat that how much I want, if I can eat but just a little bit, or if it’s bad for my stomach.

I also got a few moles removed after I got a few visits with the dermatologist. And I found a way to grow my nails stronger over time, so that I don’t bite them and make them bad.

I solved a lot of health issues, but I still have a few ones to go: first, I need to check my right knee and understand why it hurts every now and and then.

Then, I need to work on my muscle stretches, so that I feel more flexible and… ‘young’. While I do have plans for every other goal, I do not have plans on how to stretch more. I need to find ways to fit that in my routine, but I feel that it’s still too early.

There’s one last thing that I worked on and that I’m satisfied with: my mental health.

I had over 20 meetings with my psychologist throughout the year and they really helped me understand a lot about myself. I want to keep a frequency of one meeting every 3 weeks for 2025, while I try and achieve big and different things that I will talk about more in other places.
</blockquote>

<p>In my 2023 review, I also mentioned how <em>water intake was my biggest failure</em>: less than 2 liters per day. I took the steps I outlined, i.e.</p>
<blockquote>
  buy a bigger, 1-liter bottle to use at home so that in order to drink what I have to, I only have to refill the water twice or three times per day, instead of 4 to 5 times like I do now, using a 620 ml bottle. This seems like a weird thing to do, but it helps me remove some friction from the ‘drink’ activity - my wife bought a 2-liter water bottle, and she just drinks one bottle per day at least, but it’s too big of a leap for me, so I’ll ‘only’ jump to the 1-liter bottle.
</blockquote>
<p>Since <strong>the process is stronger than the goal</strong>, I even stopped tracking: now that I have a 920ml bottle and a 620 ml one, I know that it’s sufficient for me to <strong>drink 2 big bottles every day when I don’t train, and add the full small bottle when I train</strong>.</p>

<p>In order for the to follow this process, I have the big bottle <em>physically very near to my right hand</em> on my desk when I’m at home, and when I train I always bring the smaller bottle and make myself simply <em>drink the full bottle by the time I’m back home</em>, meaning that as soon as I’m near home, I know that my bottle needs to be empty, otherwise I’m not good to myself.</p>

<hr />

<p>According to my Day One journal, which I don’t use anymore because I switched to the Apple-native <em>Journal</em> app, I worked and lived towards the goals with this priority:</p>

<ul>
  <li>Money: 229 days vs. 216 in 2023</li>
  <li>Stay healthy: 193 days vs. 177</li>
  <li>Relax: 148 days vs. 143</li>
  <li>Travel: 109 days vs. 83</li>
  <li>Read: 59 days vs. 83</li>
  <li>Build: 43 days vs. 29</li>
  <li>Share: 30 days vs. 26</li>
</ul>

<p>Following all considerations I made in the review, this is my updates goal list:</p>

<ul>
  <li>Build</li>
  <li>Stay healthy</li>
  <li>Relax</li>
  <li>Travel</li>
  <li>Share</li>
  <li>Make money</li>
  <li>Read</li>
</ul>

<p>The goals are not the end, it’s just a means to review the process and make it better every year. And I feel like I’m starting to master it!</p>]]></content><author><name>jaack</name></author><category term="blog" /><category term="life" /><summary type="html"><![CDATA[And goals for 2025]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jaack.me/assets/images/2025.png" /><media:content medium="image" url="https://jaack.me/assets/images/2025.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="it"><title type="html">Recensione del 2024, in numeri e pensieri</title><link href="https://jaack.me/2024-review-it/" rel="alternate" type="text/html" title="Recensione del 2024, in numeri e pensieri" /><published>2025-01-27T09:00:00+00:00</published><updated>2025-01-27T09:00:00+00:00</updated><id>https://jaack.me/2024-review-it</id><content type="html" xml:base="https://jaack.me/2024-review-it/"><![CDATA[<p>Sono passati più di 20 giorni dall’inizio dell’anno. Ho provato a trovare un po’ di tempo per scrivere questo, ma sto anche scrivendo di un sacco di altre cose di cui parlerò più avanti nel post.</p>

<p>Guardando indietro al mio 2024, non saprei come valutare se l’anno è stato buono o cattivo. Lo so solo dopo aver letto la mia <a href="https://jaack.me/2023-numbers-thoughts">recensione del 2023</a>, e posso dire che <strong>nel complesso è stato un anno fantastico</strong>, ma in pratica non ho raggiunto molti degli obiettivi che mi ero prefissato all’inizio dell’anno.</p>

<p>Andiamo con alcuni dati.</p>

<h2 id="costruire">Costruire</h2>
<p>Ho detto che questa era</p>
<blockquote>
  l'ultima cosa che voglio fare, per due motivi molto diversi: primo, per lavoro, penso di essere abbastanza bravo a costruire un business ormai, quindi non ho bisogno di metterci più impegno; secondo, per la mia vita e la mia famiglia, siamo più orientati al relax che alla costruzione, almeno per il 2024. Chissà, ma almeno è quello che pensiamo ora.
</blockquote>

<p>E naturalmente, la vita ti dà strane possibilità di fare di più. Nel corso dell’anno, ho riscoperto la mia passione per il franchise Pokémon, in particolare per le carte collezionabili. Ho iniziato a ricercare come cresceva il mercato, cosa succedeva in quel momento, e ho trovato un mercato selvaggio con appassionati hobbisti, speculatori e collezionisti allo stesso modo. Ho iniziato a seguire alcuni canali YouTube e mi sono davvero affezionato di nuovo all’hobby. Ho recuperato le mie vecchie carte (che ora valgono qualcosa) e ho ricominciato a comprare bustine. Ho anche aperto un canale TikTok dove faccio l’unboxing delle bustine e documento la mia vita legata ai Pokémon, e mi sto divertendo molto, soprattutto perché non mi aspetto che questo sia il mio lavoro principale, ed è lì che sta il divertimento.</p>

<p>Ma siccome sono un nerd del business, mi piace anche fare soldi per il gusto di farlo, quindi ho pensato di collezionare, giocare ma anche scambiare queste carte, trovandone di nuove che potrebbero valere di più nel tempo. Cercare carte su eBay o altri marketplace online è il tipo di tana del bianconiglio in cui mi piace trovarmi. Mi ricorda i giorni in cui potevo fare quello che volevo perché non avevo responsabilità, ero solo un bambino che trovava cose nuove su Internet.</p>

<p>Quindi, per il 2025 mi sono prefissato di <strong>costruire un hobby redditizio con il GCC Pokémon</strong>. Maggiori informazioni su come nella sezione ‘Soldi’ qui sotto.</p>

<p>Ho anche obiettivi di business più grandi per <a href="https://routescan.io">Routescan</a>, ma non è il centro di questa recensione. Farò meglio e ho gli strumenti giusti per farlo.</p>

<h2 id="soldi">Soldi</h2>

<p>Nel 2024, il nostro portafoglio familiare (che include crypto, azioni, carte collezionabili di valore ed equity aziendale) <strong>è aumentato esattamente del 50%</strong>, e non abbiamo prestato molta attenzione a risparmiare così tanto. Sono felice che abbiamo sovraperformato l’S&amp;P 500 di quasi il 100% (l’indice ha guadagnato il 23% nel 2024). Inoltre, abbiamo raggiunto il nostro obiettivo finanziario di risparmiare almeno il <strong>30% del nostro reddito prima di pagarci</strong>. Abbiamo risparmiato, infatti, il 33,4% del nostro reddito e ne siamo molto, molto felici, perché lo abbiamo fatto non sacrificando nulla di prezioso per noi. Abbiamo viaggiato molto, comprato quello che volevamo, speso i soldi per stare meglio e vivere una vita felice.</p>

<p>Ciò di cui sono più felice è che io e noi, come famiglia, abbiamo impostato alcuni investimenti che daranno i loro frutti nei prossimi 5-10 anni, e che sono scommesse rischiose calcolate che, se daranno i loro frutti, probabilmente decuplicheranno la nostra ricchezza.</p>

<p>Per il 2025 siamo ben strutturati per aumentare la nostra ricchezza dai nostri investimenti attuali, quindi mi concentrerò sulla <strong>creazione di nuovi flussi di entrate: hosting BnB e trading di carte</strong>.</p>

<p>Per il primo, mi sono prefissato di <strong>completare i lavori di ristrutturazione</strong> nella casa dei miei genitori e di iniziare ad andarci almeno un mese quest’anno, per impostare correttamente una futura proprietà in affitto.</p>

<p>Per il secondo, ho trovato gioia nel coltivare di nuovo l’hobby di scambiare carte Pokémon, dopo averlo fatto quando ero molto piccolo. Ora, il mio desiderio è <strong>essere felice dell’hobby, godermelo e farne qualche soldo solo per il gusto di farlo</strong>. Nello specifico, mi piacerebbe:</p>

<ul>
  <li>far crescere un portafoglio di carte del valore di 15.000€</li>
  <li>generare 10.000€ di entrate lorde</li>
</ul>

<p>Credo che questi siano obiettivi molto facili e raggiungibili (ad esempio, ho già ottenuto circa 5.000€ di carte), ma non voglio davvero che questo diventi il mio lavoro principale: vorrei solo che fosse un hobby che mi procuri qualche soldo extra qua e là.</p>

<h2 id="condividere">Condividere</h2>

<p>All’inizio dell’anno, ho scritto che</p>
<blockquote>
Ho intenzione di scrivere qualche altro articolo nel 2024 e fare più o meno la stessa quantità di conferenze. Questo potrebbe essere il mio plateau, non credo di voler e di voler fare di più di così.
</blockquote>
<p>Non l’ho fatto. Ho fatto <strong>molto di più</strong>. Ho scritto e parlato molto:</p>

<ul>
  <li>1 articolo su jaack.me</li>
  <li>Avviato un nuovo blog di appunti e scritto 17 post, con una discreta costanza nel corso dell’anno</li>
  <li>Avviato un <a href="https://30s.fit/">diario incentrato sul fitness</a> e scritto 4 voci</li>
  <li>Avviato una newsletter sulle app sui miei dispositivi chiamata <a href="https://paragraph.xyz/@homescreen">Homescreen on Paragraph</a> e scritto le prime 2 voci (ora a 5)</li>
  <li>Partecipato a 9 tra conferenze, panel e podcast sia online che IRL</li>
</ul>

<p>Non posso davvero dire molto altro, sto andando davvero bene per quello che speravo, quindi immagino che <strong>continuerò a farlo nello stesso modo in cui l’ho fatto l’anno scorso</strong>.</p>

<h2 id="leggere">Leggere</h2>

<p><em>Book Tracker</em>, la nuova app che sto usando per tracciare i libri che leggo, mi dice che ho letto 14 libri sui 15 che mi ero prefissato come obiettivo per il 2024. Non ho letto molti libri, ma ho letto molti articoli e ricerche, e non li traccio più perché ho cambiato il mio flusso di lavoro di lettura, ora usando <strong>Reader by Readwise</strong>.</p>

<p>E non ho intenzione di tracciare più quello che leggo, tranne i libri, perché nell’era degli agenti AI e delle notizie create artificialmente, è importante per me essere in grado di sapere meno, ma essere sicuro che sia reale. <ins> Anche se ciò che è reale e non reale è così difficile da distinguere ormai </ins>.</p>

<p>Cercherò di leggere più libri, perché penso di aver trovato un buon sistema per affrontarli:</p>

<ul>
  <li>per quelli brevi (meno di 250 pagine), lo leggerò, sia su carta che in digitale</li>
  <li>per quelli lunghi (tutti gli altri), comprerò l’audiolibro o lo ascolterò su Storytel o Audible mentre guido, viaggio in treno o in aereo</li>
  <li>per quelli lunghi che non hanno un audiolibro, semplicemente <strong>lo abbandonerò</strong> e riproverò dopo un po’ per controllare se l’audiolibro è stato rilasciato</li>
</ul>

<p>Questo è l’unico modo che ho testato e che ha funzionato efficacemente negli ultimi 4 mesi o giù di lì. Posso facilmente leggere libri brevi su un lungo volo o durante una pigra domenica, ma quando provo a leggere libri lunghi, mi ritrovo quasi sempre a mettere in pausa e riprendere la lettura solo quando penso che avrò abbastanza tempo per leggere un intero capitolo o alcuni, solo per mantenere lo slancio. Ho letto così tanti libri nel corso di <em>mesi</em>, se non <em>anni</em>, a causa di questo. E non so quanto di quei libri ho veramente capito e imparato.</p>

<p>Inoltre, (non lo faccio contare ma è correlato) ho iniziato a leggere manga, e anche quella è lettura, lettura divertente!</p>

<p>Per il 2025, con questo sistema, dovrei essere in grado di completare almeno 15 libri quest’anno, e magari puntare a <em>20-25</em>.</p>

<h2 id="viaggiare">Viaggiare</h2>

<p>Il 2024 è stato forse il mio <strong>anno più prolifico</strong> in termini di viaggi. Ho preso 36 voli, volando
in 13 paesi in 5 regioni del mondo: Europa (6 paesi), Asia (3), Nord America (2), Medio Oriente (1) e Sud America (1).</p>

<p>Ho visitato <strong>Los Angeles, Austin, Cancun e Buenos Aires</strong> per la prima volta, e ho volato in business per la prima volta e altro ancora. Dei 18 viaggi totali che ho fatto quest’anno, 7 erano per svago e il resto per lavoro. Non ho raggiunto il mio obiettivo di fare non più di 7 viaggi di lavoro, ma ho soddisfatto il mio obiettivo di almeno 4 di svago.</p>

<p>Per il 2025, sento di avere già tutto in ordine: faremo 4-5 viaggi di svago e viaggerò circa 7-8 volte per lavoro. Alcuni viaggi di svago e di lavoro saranno combinati, poiché voleremo (io e mia moglie) verso le destinazioni dei miei viaggi di lavoro da qualche giorno a una settimana prima per prenderci le nostre vacanze personali.</p>

<p>E so quanti viaggi mi aspetto di fare quest’anno perché l’obiettivo rigoroso che mi sono prefissato è di <strong>pianificare il 90% dei viaggi di lavoro e di svago entro il 28 febbraio</strong>, per risparmiare su voli e hotel ed evitare di pensarci durante l’anno.</p>

<h2 id="rilassarsi">Rilassarsi</h2>

<p>L’anno scorso, ho scritto:</p>
<blockquote>
  per il 2024, il mio obiettivo è essere coerente e trascorrere più tempo con mia moglie, la mia famiglia e i miei amici e vivere grandi esperienze con loro.
</blockquote>

<p><em>Sento</em> di aver raggiunto l’obiettivo: il rapporto con mia moglie è diventato più forte e abbiamo trascorso più tempo con la famiglia e gli amici, anche se sentiamo ancora di poter fare di più, soprattutto con gli amici.</p>

<p>Io e mia moglie abbiamo trovato hobby da condividere e in generale più cose da fare insieme, ma abbiamo anche imparato a rispettare i confini dell’altro e semplicemente stare per conto nostro quando ne abbiamo voglia.</p>

<p>Ho intenzione di fare di più di questo, semplicemente. Rilassato, in realtà.</p>

<h2 id="salute">Salute</h2>

<p>Rimanere in salute è il <em>singolo obiettivo più importante su cui ho lavorato negli ultimi due anni</em>: nel 2024 ho risolto molti dei miei problemi di salute, come ho descritto nel mio <a href="https://30s.fit/jan-13-th-2025-wrapping-up-2024">diario incentrato sul fitness</a>, che citerò semplicemente:</p>
<blockquote>
  Durante il 2024, ho risolto molti dei miei problemi di salute: avevo problemi intestinali e, dopo molte visite mediche e molti test, ho trovato una nuova dieta che mi aiuta a rimanere in forma e in salute senza grandi sforzi. Ho scoperto di soffrire di IBS, sindrome dell'intestino irritabile, e la dieta migliore che posso seguire è una dieta **low fodmap**. Ho scaricato un'app chiamata Fodmap4All che è semplicemente un dizionario low fodmap: inserisco il tipo di cibo che voglio mangiare e mi dice se posso mangiarne quanto voglio, se posso mangiarne ma solo un po' o se fa male al mio stomaco.

Ho anche rimosso alcuni nei dopo aver fatto alcune visite dal dermatologo. E ho trovato un modo per far crescere le unghie più forti nel tempo, in modo da non mangiarle e renderle brutte.

Ho risolto molti problemi di salute, ma ne ho ancora alcuni da affrontare: primo, devo controllare il ginocchio destro e capire perché fa male ogni tanto.

Poi, devo lavorare sullo stretching muscolare, in modo da sentirmi più flessibile e... "giovane". Sebbene abbia piani per ogni altro obiettivo, non ho piani su come fare più stretching. Devo trovare modi per inserirlo nella mia routine, ma sento che è ancora troppo presto.

C'è un'ultima cosa su cui ho lavorato e di cui sono soddisfatto: la mia salute mentale.

Ho avuto oltre 20 incontri con il mio psicologo durante l'anno e mi hanno davvero aiutato a capire molto di me stesso. Voglio mantenere una frequenza di un incontro ogni 3 settimane per il 2025, mentre cerco di raggiungere cose grandi e diverse di cui parlerò di più in altri luoghi.
</blockquote>

<p>Nella mia recensione del 2023, ho anche menzionato come <em>l’assunzione di acqua fosse il mio più grande fallimento</em>: meno di 2 litri al giorno. Ho preso le misure che ho delineato, ovvero</p>
<blockquote>
  comprare una bottiglia più grande da 1 litro da usare a casa in modo che per bere quello che devo, devo solo riempirla due o tre volte al giorno, invece di 4 o 5 volte come faccio ora, usando una bottiglia da 620 ml. Sembra una cosa strana da fare, ma mi aiuta a rimuovere un po' di attrito dall'attività del 'bere' - mia moglie ha comprato una bottiglia d'acqua da 2 litri, e ne beve solo una al giorno almeno, ma è un salto troppo grande per me, quindi salterò 'solo' alla bottiglia da 1 litro.
</blockquote>
<p>Poiché <strong>il processo è più forte dell’obiettivo</strong>, ho persino smesso di tracciare: ora che ho una bottiglia da 920 ml e una da 620 ml, so che è sufficiente per me <strong>bere 2 bottiglie grandi ogni giorno quando non mi alleno e aggiungere l’intera bottiglia piccola quando mi alleno</strong>.</p>

<p>Per seguire questo processo, ho la bottiglia grande <em>fisicamente molto vicina alla mia mano destra</em> sulla scrivania quando sono a casa, e quando mi alleno porto sempre la bottiglia più piccola e mi impongo semplicemente di <em>bere l’intera bottiglia entro il momento in cui torno a casa</em>, il che significa che non appena sono vicino a casa, so che la mia bottiglia deve essere vuota, altrimenti non sono buono con me stesso.</p>

<hr />

<p>Secondo il mio diario Day One, che non uso più perché sono passato all’app nativa Apple <em>Journal</em>, ho lavorato e vissuto verso gli obiettivi con questa priorità:</p>

<ul>
  <li>Soldi: 229 giorni contro 216 nel 2023</li>
  <li>Rimanere in salute: 193 giorni contro 177</li>
  <li>Rilassarsi: 148 giorni contro 143</li>
  <li>Viaggiare: 109 giorni contro 83</li>
  <li>Leggere: 59 giorni contro 83</li>
  <li>Costruire: 43 giorni contro 29</li>
  <li>Condividere: 30 giorni contro 26</li>
</ul>

<p>Seguendo tutte le considerazioni che ho fatto nella recensione, questa è la mia lista di obiettivi aggiornata:</p>

<ul>
  <li>Costruire</li>
  <li>Rimanere in salute</li>
  <li>Rilassarsi</li>
  <li>Viaggiare</li>
  <li>Condividere</li>
  <li>Fare soldi</li>
  <li>Leggere</li>
</ul>

<p>Gli obiettivi non sono la fine, sono solo un mezzo per rivedere il processo e migliorarlo ogni anno. E sento che sto iniziando a padroneggiarlo!</p>]]></content><author><name>jaack</name></author><category term="blog" /><category term="life" /><summary type="html"><![CDATA[E obiettivi per il 2025]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jaack.me/assets/images/2025.png" /><media:content medium="image" url="https://jaack.me/assets/images/2025.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>