How Tallune works
The method, in the open.
Tallune makes a small claim about your day and lets you score it. Here is exactly how the claim is made and how the score is kept.
Examples on this page are the app’s own output · Fictional chart · 12 Apr 1990, 08:30, İstanbul · Saturday, October 10, 2026
01 · The engine
The sky is worked out on your phone.
Every position Tallune uses — the Moon, the planets, the angles between them — is calculated on your phone, offline, by Astronomy Engine: an open-source, MIT-licensed astronomy library written in plain TypeScript.
Its positions agree with JPL Horizons to within about one arcminute (±1′, a sixtieth of a degree). The narrowest orb Tallune uses to decide whether a contact counts is 2°, which is 120 arcminutes, so the engine’s own error is under one percent of the margin. The error that does matter is the birth time: five minutes off moves the rising degree by about 1.25°.
You choose the house system — Placidus, Whole Sign or Koch. Product code never calls the engine directly: everything goes through one interface, so replacing the engine means writing a single class.
Engine error is not what limits accuracy. The birth time is.
- Engine
- Astronomy Engine · MIT licence
- Precision
- ±1 arcminute against JPL Horizons
- Runs
- On your phone, offline
- Houses
- Placidus · Whole Sign · Koch
Why not Swiss Ephemeris?
Swiss Ephemeris is the usual choice in astrology software. Tallune doesn’t use it, and the reason is a licence, not accuracy: its open-source route, the AGPL, forbids adding restrictions for the people who receive the software, and Apple’s App Store terms add some. GNU Go (2010) and VLC (2011) ran into the same conflict.
If we ever need it — for asteroids, say — the way forward is a commercial licence from its authors, not open-sourcing Tallune. Because the engine sits behind one interface, that swap would be one class.
02 · Time
Your birth moment is placed by the rules of its own year.
A birth time on a certificate is a wall-clock reading — 03:20, Ankara. To place it in the sky, Tallune needs the UTC offset that was in force at that place on that date, and that is not today’s offset.
Turkey’s daylight-saving rules were irregular until 2016, when it settled on permanent UTC+3, so a 1988 Ankara birth falls under 1988’s rules. Tallune takes them from the IANA time-zone database built into your phone’s operating system, never from the offset your phone shows now.
One hour of offset error moves the rising degree by roughly 15°.
| Date | Clock | Offset in force |
|---|---|---|
| 15 Jan 1988 | 03:20 | UTC+02:00 |
| 15 Jul 1988 | 03:20 | UTC+03:00 |
| 10 Oct 2026 | 03:20 | UTC+03:00 |
A clock time that happened twice (clocks going back) resolves to its first occurrence; one that never happened (clocks going forward) moves ahead by the length of the gap. The result records which rule applied.
Getting this wrong fails silently. A wrong offset gives a wrong rising sign, wrong houses, and sentences built on both — and nothing anywhere reports an error.
When the birth time is unknown
Mark it unknown and Tallune builds a noon chart: the Sun and Mercury through Pluto, placed at noon on your birth date. The Moon and the houses are left out. The Moon moves about 13° in a day, so a noon Moon can sit up to 6° from the real one — as wide as an orb itself — and houses depend on the time of day.
Features that need them stay visibly off. They are never guessed, and you can add the time later.
A noon chart never stores the Moon, the ascendant, the midheaven or any house.
03 · The day
A day is read at your local noon.
The sky for a calendar day is sampled once, at 12:00 on your clock, in your time zone.
The reason is the Moon, which covers about 13° in a day. Sample at midnight, or at noon in Greenwich, and for someone far from Greenwich the Moon can land in the wrong sign — the most visible number on the screen, silently wrong. The step from your wall clock to UTC takes the same historical-rules path as the birth moment.
The day itself is your local calendar date. A note written at 2 a.m. belongs to the day you are living, not to the day it already is in Greenwich; otherwise it would land on the wrong day and muddy the panel.
Fallback if the zone is unknown: 12:00 UTC, at most half a day (about 6° of Moon) off.
- Sample day
- Saturday, October 10, 2026
- Sampled at
- 12:00, Europe/Istanbul
- The Moon
- New moon · 0% lit
04 · Contacts
A contact is an angle, within an orb.
Tallune compares where a planet is in the sky today (the transit) with where a planet stood at your birth (the natal position). The angle between them either matches one of five classic aspects, within some tolerance, or it doesn’t.
| Aspect | Angle | Narrow | Standard | Wide |
|---|---|---|---|---|
| Conjunction | 0° | 4° | 6° | 8° |
| Sextile | 60° | 2° | 3° | 5° |
| Square | 90° | 3° | 5° | 7° |
| Trine | 120° | 3° | 5° | 7° |
| Opposition | 180° | 4° | 6° | 8° |
The orb is how far from exact an angle may be and still count. You pick one of three named profiles rather than typing a number: a free number invites you to shop for the setting that flatters your panel, while three fixed profiles keep every rating comparable. Contacts involving the Sun or the Moon get one extra degree.
A contact is applying while the angle is still tightening toward exact, and separating once it has passed and is loosening.
Contacts with the Sun or the Moon get one extra degree, in every profile.
transiting Moon Libra 13 degrees, square, natal Neptune Capricorn 14 degrees, orb 0.9 degrees, applying
- transiting Moon Libra 13 degreeswhere this body is today, at your local noon
- squarethe angle between the two
- natal Neptune Capricorn 14 degreeswhere that body stood at your birth
- orb 0.9 degreeshow far the angle is from exact
Which contact names the day
Not the tightest one. Jupiter and the planets beyond it sit inside a tight orb for weeks, and a rule of “tightest first” gave the same headline day after day. So the order is the fastest-moving body first — Moon, Mercury, Venus, Sun, Mars, then the rest — and the tightest orb inside the same body. One exception: a fast body within 0.1° of exact goes to the front.
The same order picks which contacts become the day’s sentences, so the day really changes.
In the first version the tightest contact won; six days picked three days apart all read the same.
| Day | The day’s headline |
|---|---|
| Sun, Oct 4Last quarter · 41% | Seeking balanceMoon square Sun · 0.2° |
| Mon, Oct 5Waning crescent · 30% | Looping mindMoon square Mercury · 5.5° |
| Tue, Oct 6Waning crescent · 20% | Inner and outer balanceMoon trine Sun · 2.3° |
| Wed, Oct 7Waning crescent · 12% | Warm optimismMoon sextile Jupiter · 0.6° |
| Thu, Oct 8Waning crescent · 6% | Honest confrontationMoon sextile Pluto · 0.0° |
| Fri, Oct 9New moon · 2% | Emotional overflowMoon square Jupiter · 3.6° |
| Sat, Oct 10New moon · 0% | Emotional fogMoon square Neptune · 0.9° |
05 · Sentences
Every sentence is one claim you can mark.
A daily sentence isn’t free-written. It comes from a catalogue on your phone that maps a sky contact to one measurable claim — something you could honestly mark “didn’t” by evening — plus, optionally, one small suggestion.
You may misinterpret someone's tone into an unintended slight, or catch yourself retreating into clear denial; you could try re-reading one pointed message once before replying. This may stand out most to your disciplined, methodical side, especially around shared commitments and deeper shifts.
- Underlined — the claim. The only part you rate.
- Plain — an optional suggestion.
- Grey — context: the tendency of your birth sign, and its house area when the birth time is known.
Sample · Sat, Oct 10 · Emotional fog · transiting Moon Libra 13 degrees, square, natal Neptune Capricorn 14 degrees, orb 0.9 degrees, applying
“You may grow impatient with details today” can be marked. “A big change is coming in your career” can’t, so it is never written.
How many sentences you get is your choice: one to five a day, three by default. When no contact is in orb, you get a single quiet-day line, and quiet-day lines stay out of your headline rate.
A sentence that can’t be marked isn’t written.
Repeats are throttled
A contact that has been picked three days in a row yields to the next one. Outside a tight orb, a contact already shown on two of the last seven days yields too. The closing suggestions rotate through a pool and avoid the ones you saw this week.
The throttling reads which sentences were shown, never how you rated them. The pick can lean toward the life areas you write about, and away from areas where most sentences come back “not relevant”. It never leans on your hit rate: nothing is promoted because it held.
Both rules only demote. If nothing else is in orb, the contact still appears.
Where an AI model comes in
If you allow AI, a model can write the day’s claims afresh, in the context of your recent days and notes. That is all it changes. The sky still chooses the contact and the life area; the closing suggestion, the sealing and how the sentence is scored stay the catalogue’s.
What the model writes must remain one hedged clause you could mark by evening. Text that touches health, money or law, promises certainty, or isn’t hedged is thrown away and the catalogue sentence stays — as it does when you’re offline or haven’t allowed AI. A sentence you have already rated is never rewritten.
The panel also sets AI-worded sentences beside catalogue ones once each side has ten ratings, looking first at whether the “not relevant” share drops.
The ∗ mark: tap it for what the text is, and to report it from inside the app.
Lines it doesn’t cross
Nothing about health, pregnancy, death, legal or financial matters — not as a promise but as a rule in the code: AI text passes a filter for those topics before it reaches you. If a question or a note you save contains a self-harm phrase, it never reaches the model. Tallune shows local helplines instead.
06 · Measuring
How the score is kept.
Each evening you mark a sentence held, didn’t, or not relevant. Not relevant is neutral: it records that the day never tested the sentence, and it leaves the rate alone. It is not a miss.
rate = held ÷ (held + didn’t)
- Held
- 96
- Didn’t
- 64
- Not relevant
- 17
In the sample: 96 held, 64 didn’t, 17 not relevant → 96 ÷ 160 = 60%. The 17 are set aside.
What stays off the headline
- Quiet-day lines. With nothing in orb, the day’s line is the absence of a contact, and “held” or “not relevant” almost by construction.
- Late votes. A vote cast more than a day after the day it rates is kept, but off the headline, because memory drifts. A next-morning vote for yesterday still counts. Changing a vote later counts as casting it later.
- Remembered days. In onboarding you can name a few past days, so the panel isn’t empty on day one. You chose them because you already know how they went, so they are reported on a line of their own, outside your rate.
None of these touch the bars, the weekly line, the sealed comparison or the 30-day count.
When the panel opens
After 30 different days with a live rating and 30 sentences marked held or didn’t. Thirty days of “not relevant” would measure nothing. Until then you see early observations and a progress line, never a headline rate. In the sample the panel is open: 59 days, 160 scored sentences.
The dashed line, and when a bar changes colour
Every bar — by life area, planet or contact type — is drawn against one dashed line: your own overall average, 60% in the sample. A bar turns sage (above) or brick (below) only when it sits farther from that line than sampling noise allows: two standard errors, which depends on how many sentences stand behind the bar. Otherwise it stays grey and reads “no clear gap”. A bar resting on fewer than ten rated sentences says “little data” and can’t change colour at all.
| Rated sentences behind the bar | Gap in points |
|---|---|
| 10 | 31.0 |
| 25 | 19.6 |
| 60 | 12.6 |
| 110 | 9.3 |
In the sample one bar clears it: “Support” (contact type), 40% of 25 against the 60% line, a gap of 20 points against a margin of 19.6. It turns brick. Most bars stay grey, and that is the usual result.
No outside baseline and no shuffled one: the line is your own average.
Naming a best and a worst
The written reading names at most one standout theme and one weakest. Naming the extreme of many bars is many tests in disguise: with 25 bars, a plain two-standard-error test “finds” something most of the time in pure noise. So those two must clear a stricter bar, corrected for the number of bars compared (Bonferroni: about 3.1 standard errors at 25 bars instead of 2). When none clears it, the reading says so.
I looked at 177 statements and no theme stood apart from your average. The sky’s layers seem to weigh the same for you.
Week by week
The weekly line has one point per calendar week, drawn only from that week’s own ratings. A week with fewer than ten scored sentences is left blank rather than drawn from a handful of votes. It isn’t a running average, which would end on the headline number by construction. The sample draws 9 weeks.
Sealed sentences
Each day one sentence stays sealed until you’ve written something about your day: a note, a tag or an energy score. (With a single sentence, it is sealed on about every other day.) Reading a sentence first changes how you remember the day, so the panel compares the two channels once each has ten ratings. The gap between them is the size of that effect.
- Rated before reading
- 63% · 51 sentences
- Read first, then rated
- 59% · 109 sentences
- The panel says
- No meaningful gap yet — the two channels agree so far.
Rating before reading is the cleanest data Tallune collects.
07 · What leaves your phone
Your journal stays on your phone.
There is no account. Your birth data, notes and ratings live in a database on your phone. AI features are off until you say yes: the first time you touch one, a sheet names the provider, lists what would be sent and why, and gives Skip the same weight as Enable.
This is everything that can leave, and only with AI on:
Sent — only with AI on
- Aspect lines like “Moon square Mars, orb 2.1”
- The sign and house of your birth placements — never the degree
- The moon phase
- Short lines remembered from your notes
- The question you typed
- The text of a note you saved, personal details masked
- Recent tags and energy scores
- Yesterday’s sentences and how you rated them
Never sent
- Birth date
- Birth time
- Birthplace and coordinates
- Time zone
- Your name
- Provider
- OpenRouter → DeepSeek V4 · no-retention servers outside Türkiye
- Stored on the server
- Remembered lines, note text, questions and answers: never
Outside AI, two other things talk to servers: the free tier’s ads (Google AdMob, non-personalised by default) and subscription checks (RevenueCat, under an anonymous id). Neither receives your notes or your birth data.
A test in the app’s code asserts that the never-sent column stays unsent.
08 · What it never does
What it never does.
- No streaks, no missed-day counters. People tap to save a streak, not because the sentence held, and that poisons the data. Tallune keeps a neutral count — “18 entries this month” — and never counts the days you skipped. Reminders are off by default and say so.
- A low rate is shown as it is. If your rate is 40%, the panel says 40%, with the same care as at 80%. The rate and every breakdown behind it are free; nothing that measures is behind a paywall.
- Timing windows are a display heuristic. The timing engine ranks the days ahead by how much friction the sky shows against what you want to do. In the app’s own words: scores compare sky friction across days — a display heuristic, not a promise about outcomes. A score never appears as a number.
- It never invents a birth time, a house or a number. Without a birth time there is no Moon and no houses, and the screens say so. A natal position is never made up to fill a screen, the app’s text templates carry only numbers that were computed, and a chart with nothing to count draws nothing rather than a zero dressed as a rate.
- You can cancel in one tap. Tallune+ raises the AI limits and removes ads; everything that measures stays free. Profile → Manage subscription opens your store’s own page, with no retention flow and no confirmation maze. If you start a free trial, a reminder arrives 48 hours before it ends, and nothing in your journal is deleted.