The pool app now has to explain the match live

The last 24 hours in Nima Project did leave clear commits:

  • Improve live voting cards and bonus flow
  • Tighten vote detail card layout
  • Improve group stats match cards

All three landed in world-cup-porra.

That is not an incidental cluster.

The commits are not telling three unrelated stories.

They are pushing the same idea from different angles: Ultimate Porra can no longer behave like an app where the user enters, votes and leaves. It now has to explain the state of the match while it is happening and turn that state into visible context for playing, following and comparing.

The first strong move was opening the product where usage really starts

Until now, the pool app was mostly understood through the voting screen.

The large overnight commit changes that explicitly:

  • a new home page appears;
  • the top menu gains Inicio;
  • and that home view stops being a decorative landing and becomes an operational summary.

It is not the typical welcome page.

It is a home view built around two concrete questions:

  • which matches matter to me now;
  • and which results just closed.

That is why render-home.js appears with two very specific tabs:

  • Proximos partidos
  • Ultimos resultados

The decision is correct because it fixes a very common weakness in this type of product:

if everything starts inside the vote card, the user always arrives too late to context.

The product no longer waits for the official end state before showing consequences

The second strong piece is less visible in navigation and more important in domain logic:

  • live-results.js appears;
  • live-scoring.js appears;
  • and the user's points can now be recalculated with a provisional result while a match is in progress.

That changes much more than an animation.

Until now the pool app could live inside a binary world:

  • either there is no result;
  • or there is a final result.

Now a third state arrives with real product weight:

  • the match is still live,
  • but it is already producing product meaning.

The new logic does something fairly serious:

  • it polls live results near kickoff;
  • patches visible cards without a global rerender;
  • and computes the user total as official + provisional delta.

That means the app starts taking on a more demanding responsibility:

not only storing what you voted, but helping you understand what that vote would currently be worth if the match ended like this right now.

Live state does not only enter scoring; it enters visual hierarchy

The main commit does not stop at domain logic.

It also reorganizes the interface so live state has a readable place:

  • vote cards are tightened and rearranged;
  • the vote detail view gets a more compact version;
  • the panel returns to the clearer name Partidas instead of a generic back action;
  • and the home view is prepared to slide between summaries without changing context.

The small Tighten vote detail card layout commit fits exactly here.

It is not an isolated CSS touch-up.

It is evidence that once a product decides to put more domain truth inside a card, that card stops being a purely visual block and becomes an editorial surface.

It has to hold more information without losing readability.

The leaderboard is no longer satisfied with ordering; it now tries to explain

The 09:47 commit finishes the move from another angle:

  • render-leaderboard-general-stats.js is introduced;
  • per-match stat cards show the real final result more clearly;
  • a legend appears for Pleno, Exacto and Mas cerca;
  • and new general metrics show scorer accuracy, red-card accuracy, clean-sheet accuracy and even goalkeeper-as-goalscorer picks.

That matters for one concrete reason:

a points table tells you who is ahead,
but it does not tell you how each user is playing the pool.

The new cards start answering much more interesting questions:

  • who is consistently accurate;
  • who lives off full hits;
  • who gets close even without the exact score;
  • who reads scorers, red cards or clean sheets better than the rest.

The leaderboard stops being a scoreboard snapshot.

It starts looking more like a readout of behaviour.

There is a fairly clear product thesis here: following and playing are starting to merge

The most interesting part of these 24 hours is not just that there is a home view, live polling and new stats.

The interesting part is that all three point to the same thesis:

in a mature pool product, following matches and voting on matches are no longer separate moments.

The app is starting to accept that the user wants to do several things at once:

  • see what comes next;
  • check what just happened;
  • understand what it is provisionally worth for them;
  • and compare their read of the match with everyone else's.

Before, that could live across loosely connected screens.

Now it cannot.

The product is pulling:

  • navigation,
  • scoring,
  • card detail,
  • and leaderboard interpretation

into the same visual conversation.

Even the smaller UI wording reveals the shift

The tests also expose the turn quite clearly.

New assertions now care about:

  • Inicio as a real page;
  • Partidas as a more honest name for returning to the flow;
  • Resultado final instead of weaker closures;
  • Datos generales as a new leaderboard layer;
  • and Pleno, Exacto, Mas cerca as visible categories for reading predictions.

That kind of small copy often looks secondary.

It is not.

It is where the product decides which distinctions deserve their own names.

And once a distinction gets a name, it usually stops being an internal detail.

It becomes part of the visible promise.

What I am taking from this stretch

  • Ultimate Porra no longer starts with the act of voting; it starts with a home view that explains what to watch now and what just happened.
  • Live results stop being just external data and start affecting how the user interprets their score in real time.
  • Tightening a card is not cosmetic when that card is now expected to carry more product semantics.
  • The leaderboard becomes more useful once it stops merely ordering users and starts explaining accuracy patterns.
  • Pleno, Exacto and Mas cerca are more than labels: they are a way of describing what kind of match reading each person had.

These were not only 24 hours of improving cards.

They were something more relevant: the moment the pool app started treating live match state as a central part of the experience, not as data that only matters afterwards.


Part of my product and platform notes. Follow the blog or contact me.