Methodology
How Fishori decides.
The engine is a small set of rules applied consistently. It is not a biology simulator. It is a planning tool that tries to catch the mistakes a new keeper makes before money is spent.
The philosophy
We err conservative. Where two reasonable sources disagree on a number, we take the harder one. Where an experienced keeper can make a pair work but a beginner usually can’t, we mark caution and explain why.
We don’t average opinions. We don’t crowdsource verdicts. We don’t ship a score with no reasoning attached. If we can’t explain it, we shouldn’t be showing it.
The order of checks
When you ask “can fish A live with fish B?”, the engine runs the questions in this order. The first one to fail decides the verdict; the rest get added as supporting reasons.
- Tank volume. If the combined minimum for the two adults exceeds the tank you described, nothing else matters.
- Predation, by mouth gap. If fish A’s mouth opens wider than fish B’s adult body height, fish B is food. The “will eat small fish” flag on each profile is a second check on top of the raw geometry.
- Temperament gap. Aggressive plus peaceful is a hard no. Semi-aggressive plus peaceful is a conditional yes (works with structure, fails without it).
- Fin nipping vs long fins. Tiger barbs and bettas both score yes on the long-fin damage check, for different reasons. The engine doesn’t care why; it just refuses to pair them.
- Shared water window. Temperature overlap, then pH overlap. If there is no overlap, the verdict is RISKY regardless of how peaceful everyone is.
- Schooling group sizes. A stressed schooling fish misbehaves towards everyone, including species it would normally ignore. We add caution when minimum group sizes can’t be honoured.
Verdicts get one more pass after all that for data confidence (see below). A pair built on thin sources can’t resolve to GOOD; the highest it can get is CAUTION.
A worked example
Take betta plus neon tetra. The verdict is CAUTION. Here is the engine’s reasoning in order:
Tank volume: passes
Both species fit comfortably in 40 litres or more. Not a blocker.
Mouth gap: passes
An adult betta cannot fit an adult neon tetra in its mouth. Marginal on juvenile neons, fine on adults.
Temperament: caution
Betta is semi-aggressive, neon tetra is peaceful. The classic semi-plus-peaceful pattern. Works with structure (heavy planting, hides, sight breaks); fails in a bare tank with a glass-bottom betta who can see the whole community at once.
Fin damage: passes
Neon tetras don't nip and bettas don't have fins juicy enough to attract them. The risk runs the other way: a bored betta sees a school of fast bright targets and decides to chase.
Shared water: narrow but workable
24-26°C is the only honest overlap. Betta prefers warmer, neon prefers slightly cooler. Stable in the middle, but no margin for a hot July.
Group size: schoolers stressed
Neon tetras need six minimum, ten is better. A single neon in a betta tank is a panicking neon, which is a target.
Two cautions stack into a CAUTION verdict. Not RISKY because no single rule fails outright; not GOOD because the temperament gap and water window are real friction. The page surfaces the temperament difference as the “top issue” because that’s the one that ends the experiment early when it goes wrong.
Data confidence
Each fish profile carries two labels: researchStatus (how far internal review has gone) and sourceConfidence (how well the numbers agree across sources). A pair containing any low-confidence profile is capped at CAUTION even if the rules all pass. We do not want to ship a GOOD verdict based on numbers we aren’t sure of.
On the fish page, low-confidence species carry an honest note that says we’ve researched the species but haven’t kept it personally. That is the truth on many of the long-tail entries.
What we deliberately don’t do
- Predict the personality of your individual fish. There’s no engine on earth that does this.
- Model cycling, nitrate, or filter maturity. Those depend on your setup, not the species pairing.
- Recommend specific products, brands, or shops. We’ll cover this later, separated cleanly from the verdict layer.
- Replace your own observation. If your fish are stressed and our verdict says GOOD, trust the fish.
The full list of things we don’t do is on the limitations page.
Corrections
When we change a verdict or a number, it’s logged here. This list will grow. If you spot something wrong, tell us at hello@fishori.com.
No corrections published yet. We’ve only been live a few days. Check back, or email us if you think a profile needs one.