Type 'Mia soccer' — we'll add the emoji
Event titles in FamilyBoard now get an automatic emoji based on the words you write. Faster visual scanning of Today and the calendar — especially for kids learning to read.

Something interesting happens with how brains read calendars. When a list of ten events streams past in a side panel, you don't have time to read words — you instantly identify shapes. A tooth emoji is the dentist, a ball is soccer, a tree is Christmas. You get it without reading.
Today we're rolling out automatic emoji for event titles in FamilyBoard. Type "Mia soccer" and the event gets a ⚽ in front of the title on every event card. You did nothing — we guessed, and we guess right most of the time.
What it solves
For families with lots of recurring events (which is most families), the calendar view quickly becomes a wall of text. Monday: "Sammy soccer, Mia swimming, Parent meeting, Mia dentist". For a stressed parent that's four lines to scan word by word.
With emoji it becomes: "⚽ Sammy soccer, 🏊 Mia swimming, 🏫 Parent meeting, 🦷 Mia dentist". You don't read — you see. It's faster and takes less cognitive energy.
For kids who are still learning to read, the effect is bigger. A seven-year-old who opens the app and sees ⚽ knows soccer is coming, even before deciphering "practice Sammy IF". We've watched our own kids use the Today screen as a picture-based schedule without realising they were doing it.
How it works
- Create an event as usual: title, time, attendees.
- Save. The emoji is added automatically.
- Want to change it? Tap the event → pick a different emoji from the picker. It overrides the auto-detect from then on.
There are roughly 70 keyword rules in English and Swedish behind it — soccer/football → ⚽, dentist/tandläkare → 🦷, doctor/läkare → 🩺, christmas/julafton → 🎄, swimming/simskola → 🏊, meeting/möte → 📅, birthday/födelsedag → 🎂, and so on. They cover what actually shows up in family calendars.
What it's not
It's not AI. No OpenAI calls. No latency. The rules are pure regex in lib/eventEmoji.ts (web) and EventEmoji.swift (iOS). That means it works offline, is rock stable, and we can reason about every match. No weird contextual misfires where "doctor" suddenly became a fish.
It also means that if you write something unusual — like "Garden day" — the event gets no emoji. That's deliberate. Empty space beats wrong emoji. A wrong emoji is worse than none.
Why not AI?
We considered it. Conclusion: value-per-watt is too low. A local regex on the iPhone returns in under 1 ms. An LLM call costs ~300 ms latency, battery, a privacy surface we don't want around children's schedules, and risk of strange misses (we tested — "Sam hockey" once became 🏑 field hockey instead of 🏒 ice hockey, which is technically correct but not what most families mean).
Regex is unfashionable. It's also the right tool.
Stability over time
A design principle we set early: we don't add new rules just because we can. Every new rule risks making an existing title change emoji the next time the rule engine updates — that would be messy and confusing. Rules are stable. Once shipped, we don't change them.
Want a tweak — pick your own emoji manually on the event. It sticks.
Trade-offs we made
We cover English and Swedish, not German/Spanish/French yet. It's on the roadmap, but each language needs a native speaker to walk the keyword list. We'd rather be 100% right in two languages than 60% right in six.
We don't do names → emoji. "Mia soccer" gets ⚽, not 👧. Face emoji are too sensitive — gender, age, skin tone aren't things a rule engine should guess.
Recurring events derive emoji from the title, not the category. We considered an emoji-default per category (e.g. all "Sport" events get ⚽). Dropped it — titles are more specific.
Get started
Nothing to do. Open the iOS app or familyboard.io and the next time you save an event you'll see an emoji appear on its own. It's not huge, but it's one of those things that makes the app 5% calmer to use — and 5% adds up in a family calendar you open twenty times a day.