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 flowTighten vote detail card layoutImprove 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
homepage 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 partidosUltimos 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.jsappears;live-scoring.jsappears;- 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
Partidasinstead 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.jsis introduced;- per-match stat cards show the real final result more clearly;
- a legend appears for
Pleno,ExactoandMas 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:
Inicioas a real page;Partidasas a more honest name for returning to the flow;Resultado finalinstead of weaker closures;Datos generalesas a new leaderboard layer;- and
Pleno,Exacto,Mas cercaas 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 Porrano 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,ExactoandMas cercaare 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.