Fenwrite

App concept · Bitfuzed · 26 Oct 2026

Fenwrite

A transcriber with a fennec fox in it. Fen lies on his dune looking at you. Press record and his ears go up, he picks up his pen and writes down every word in the notebook on his tail, and he keeps track of who said what.

  • Live words, with Speaker 1, 2, 3AssemblyAI streaming labels each turn as it arrives.
  • A clean copy and a summary when you stopA second AssemblyAI pass fixes who-said-what; OpenAI writes the gist and to-dos.
  • Everything saved, on phone, wrist and home screeniPhone and Android, an Apple Watch recorder, and widgets.

Try it: tap the apricot button on the phone. The conversation is a scripted sample; Fen is the real Higgsfield render, chained clip to clip the way the app will do it.

Fen the fennec fox lying on a sand dune with a notebook on his tail
9:41

Morning! Ready when you are.Tap the button and I'll start listening.

Recent

Physics lecture: wavesYesterday · 52 min · 1 speaker
Call with the landlordMon · 12 min · 2 speakers
Interview with Ana for the blogSat · 34 min · 2 speakers
Record
Recording
Pause Mark

Got it. Tidying up my notes…The live words stay readable while this runs.

  1. Clean copy from the whole recordingAssemblyAI Universal-3.5 Pro
  2. Who said whatSpeaker labels, plus name guesses
  3. Summary and to-dosOpenAI, through our Worker

Saturday market plan

Today 9:41 · 0:47 · 3 speakers

The team set up Saturday's stall: a bigger bake than last time, a new six-bun box, and power for the card reader and fridge.

I think Speaker 1 is Maya, Speaker 2 is Daniel and Speaker 3 is Priya. They said so.

Decided
  • 60 sourdough and 40 rye
  • Cinnamon buns in boxes of six, $12
  • Ask the organisers for power
To-dos
  • Send the stall list to the organisers by Thursday Speaker 3
  • Make the bun-box sign Speaker 3
  • Book the van for 6 am Saturday Speaker 2

The character

Meet Fen

Fennec foxes have the biggest ears for their size of any fox, big enough to hear prey moving under the sand. That is the pitch for a transcriber, so Fen's ears do the acting: relaxed while he waits, straight up and turned forward while someone talks.

Fen lying on a dune in morning light, looking at the viewer, pen resting on the open notebook on his tail

The home frame. Every "looking at you" clip starts and ends here. 16:9, so it fills a quarter of a phone screen edge to edge, and crops to a third without losing an ear.

Ears
His listening meter. Up and forward while recording, one flicks when a new voice starts.
Eyes
On you when he's waiting, on the page while he writes, with a glance up now and then.
Tail
His desk. He lies curled round it, the notebook rests on top, and the dark tip anchors the frame.
Neckerchief
The app's apricot. It is the one colour that still reads on a watch face or a small widget.
Pen
Always in his paw, so no clip has to make it appear or vanish.

How he was found

Take a: plain fox in morning lightsky kepta · Plain, morningThe cream morning sky blends into a light UI. He sits off-centre and the pen isn't on the page.
Take b: fox with an apricot neckerchief, blue skyneckerchief keptb · Neckerchief, middayGave him the apricot accent. The blue sky felt colder than the app.
Take c: fox with round reading glassesdroppedc · Reading glassesCharming, but thin glasses wobble between video frames and vanish at widget size.
Take d: rounder fox at dusk with the tail wrapped round like a nestbody keptd · Rounder, duskThe cutest body; the tail wraps round him like a nest, which makes the best desk.

Fen is d's body with b's neckerchief under a's sky. Your stock image (Dreamstime) was used only as a render-style reference, the same way as Tora's. Fen is an original character, not a copy of the stock fox.

His poses

Fen looking at youLooking at youHome frame A: idle, wave, the app's home screen
Fen writing with ears upWritingHome frame B: the whole recording
Fen thinking with the pen on his chinThinkingSummary on its way
Fen laughing with the pen raisedHappyNotes ready, notification art
Fen napping on his notebookNappingEmpty library, night, widgets

Animation

How Fen moves

Same method as Tora: Seedance 2.5 image-to-video clips that start and end on a fixed frame. Fen has two home frames, and every clip begins and ends on one of them, so the app can chain clips without a jump.

A · Looking at you

idlewavesummarising
focus
you press record
done
you press stop

B · Writing

writing
idleA → A · loop
Breathes, blinks, an ear twitch, a curious tilt. Runs whenever nothing is happening.
waveA → A · once
Hello, once per app open, then idle.
focusA → B · once
Ears snap up and forward, eyes widen, he looks down and starts writing.
writingB → B · loop
Writes line by line, ears turning to the voices, a glance up at you.
doneB → A · once
A flourish on the last word, then a proud smile at you.
summarisingA → A · while waiting
Reads back over his notes, pen on his chin, a small "got it" nod.

The gallery loops every clip so you can watch it; in the app the one-shot clips (wave, focus, done) play once and hand over on their last frame. The clips on this page are the 480p concept renders; the app uses the 720p set, about 300 KB a clip.

  1. Loops run until the state changes. The switch cross-fades over 150 ms. Idle moves so little that the fade from any idle frame to the home frame isn't visible.
  2. One-shots hand over on their last frame, which is the next clip's first frame, so there is no cut to see.
  3. The camera and the dunes never move. A cross-fade only ever blends Fen, never the whole picture.
  4. Stills cover everything that can't play video: reduced motion, Low Power Mode, widgets, the watch and notifications.
  5. Flutter plays them with video_player, keeping three decoders warm at most (current, next, idle). H.264 for Android, HEVC for iOS. These 480p clips are about 200 KB each; the 720p set should stay well under 1 MB a clip.
  6. Nothing is lip-synced. Fen doesn't talk; he listens and writes, which keeps every clip reusable.

Added for the app (rendered at 720p)

glanceWriting → writing. A new voice: one ear swivels, he glances toward it, back to the page.
nospeechWriting → writing. Tilts his head, one ear droops. Plays after 20 seconds without speech.
asleep · napping · wakeA third home frame: he yawns and dozes on his notebook after two minutes, and wakes when you tap.

The app

Screens

Fen takes a third of the home screen and shrinks to a quarter while recording, so the words get the room. The page under him is his notebook: warm paper, plum-ink text, one apricot button. Each speaker keeps one colour everywhere: dots, labels, owners and the waveform.

Fen napping
AllMeetingsLecturesCallsStarred

2 transcripts mention "van"

Saturday market planToday · 0:47 · 3 speakers

"I'll book the van for six in the morning."

Moving day logistics12 Oct · 21 min · 2 speakers

"…if the van is late we lose the lift booking."

Library and searchEvery transcript is saved and searchable by what was said, not just the title. Fen naps when the screen has nothing for him to do.
Saturday market planToday 9:41 · 0:47 · 3 speakers
0:310:47
Daniel

We sold out by eleven last time. Let's go up to sixty sourdough and forty rye.

Maya

And the cinnamon buns were the hit. Priya, can you price a box of six?

Priya

Twelve dollars for six feels right. I'll make a little sign for it.

Daniel

I'll book the van for six in the morning.

Transcript with playbackThe word being played is highlighted and tapping any word jumps there. The waveform is coloured by who is talking, so you can see the shape of the conversation.
Saturday market planToday 9:41 · 0:47
Speaker 1

Okay, quick one before we open. I'm Maya, for anyone new.

Speaker 2

Right. The organisers want our stall list by Thursday.

Who's who?I guessed from what people said. Fix anything I got wrong.

1Maya"I'm Maya, for anyone new" · 0:02Guessed
2Daniel"Thanks, Daniel" · 0:44Guessed
3Priya"Priya, can you price…" · 0:31Guessed
Same person split in two?Merge speakers
Save names
Who's whoAssemblyAI's speaker identification suggests names from the conversation. One tap accepts them; merge fixes the case where one voice was split into two speakers.

Beyond the phone

Watch and widgets

Apple Watch

9:41Fen looking at youRecord
Ready. One tap from the app or a complication.
9:43
Fen writing02:14
Stop
Recording, with Fen's writing still and a level meter.
9:44Fen happySent to your iPhone.
Fen's writing it up.
Handed to the phone; a notification follows when the notes are ready.
  • The watch records; the phone does the work. Audio is saved on the watch and sent with WatchConnectivity file transfer, the same path as Voice Journal's watch app. The phone runs the clean copy and summary.
  • Phone not nearby? In v2 the watch uploads straight to our Worker over Wi-Fi or LTE.
  • No live text on the wrist. The screen is too small to read a conversation, and streaming from the watch drains its battery.
  • Complications: a record button, and "3 to-dos" from the last summary.

Widgets

Fen
Record
● REC
Fen
Book the van, 6 amNext to-do · Saturday market plan
Fen happy
LAST NOTES · TODAY 9:41Saturday market plan3 to-dos · 3 speakers · 0:47
RecordOpen
  • Widgets show stills; WidgetKit and Android widgets can't play video. Fen's pose follows the app: looking at you, happy after new notes, napping at night.
  • Small: Fen and a record button. Medium: the last summary, its to-dos, Record and Open. Lock screen: a record button and the next to-do.
  • Faster than a widget: a Control Center button and an Action Button shortcut through App Intents start recording without opening the app.
  • Android gets the same small and medium widgets.

Under the hood

Live first, a second pass only when needed

The live pass gives you words while people talk, and AssemblyAI now revises its speaker labels before a session ends, so a recording made in one go needs nothing more. A second pass over the saved audio runs only when there was no single live session: a paused or dropped recording, a watch recording, or an imported file. Both API keys live only in our Cloudflare Worker.

Fenwrite appFlutter on iPhone and Android, SwiftUI on the watch. Records audio to a file and keeps every transcript on the device.
Fenwrite WorkerCloudflare, like the Voice Journal proxy. Holds the AssemblyAI and OpenAI keys, checks the plan and minutes, verifies purchases.
AssemblyAIStreaming with speaker labels for the live words; pre-recorded Universal-3.5 Pro when a second pass is needed.
OpenAITitle, gist, decisions, to-dos and name guesses as JSON, from the transcript.

While you record

  1. App → WorkerGet a short-lived streaming token. The Worker checks the plan's minutes and asks AssemblyAI for a temporary token, so the real key never ships in the app.
  2. App → AssemblyAIStream 16 kHz mono audio over the WebSocket with speaker_labels: true. The same audio is written to a file on the phone.
  3. AssemblyAI → AppTurns arrive labelled A, B, C. The app shows Speaker 1, 2, 3, adds a chip when a new voice appears, and plays Fen's writing loop.
  4. AppClose the socket on pause. Streaming is billed for every second the socket is open, silence included. Resuming opens a new session, whose speaker letters needn't match the first, so a paused recording gets the second pass.

When you stop

  1. AppOne live session, start to finish? Its transcript, with AssemblyAI's final speaker revision, is the transcript. The audio is squeezed to a small .m4a on the phone.
  2. App → Worker → AssemblyAIOtherwise, the second pass: the file goes up and Universal-3.5 Pro writes it again with consistent speakers. Offline, it waits on the phone and goes when the connection returns.
  3. Worker → OpenAISummary: a small GPT-5-class model returns title, gist, decisions, to-dos with owners, and names, but only names people actually said.
  4. AppSave, then back up. Everything is kept on the phone; signed in, the words (never the audio) are backed up to the account.
Cost of one recorded hourWhat it buysPer hour
Universal-Streaming (English or multilingual)Live words while recording$0.15
Streaming speaker labelsSpeaker 1, 2, 3 live, revised before the end$0.12
OpenAI summaryAbout 15k tokens in, 1k out, small modelTitle, gist, decisions, to-dos, names≈ $0.01
A recording made in one go≈ $0.28
Second pass, when neededUniversal-3.5 Pro + speaker labelsPaused, dropped, watch or imported recordings+ $0.23

AssemblyAI list prices on 26 Oct 2026. New accounts get $50 of free credit, roughly 180 hours of recordings made in one go. A watch recording or an import skips the live pass, so it costs about $0.24 an hour.

Decided 26 Oct 2026

What's settled

Fen

Approved. The app uses all 11 clips at 720p: idle, wave, focus, writing, glance, no-speech, done, summarising, falling asleep, napping and waking.

Price

Pro is $9.99 a month or $79.99 a year. Free users get their first hour of recording, then buy. Free recordings are up to 10 minutes; Pro recordings up to 3 hours.

Backup

Text only: transcripts, summaries and names. Audio stays on the phone that recorded it.

Languages

English first, with AssemblyAI's multilingual streaming model already wired in behind a setting.

Pro hours

20 hours a month, the same as Otter Pro's 1,200 minutes, reset on the subscription's monthly date, with no rollover. A recording made in one go costs us about $0.28 an hour, so even a yearly subscriber who uses it all stays in profit after the store's cut. It's a Worker setting, so it can change without an app update.

Before launch

Deploy the Worker with the AssemblyAI and OpenAI keys, create the Firebase project (for sign-in and backup), set up the App Store and Play products, and move Cloudflare Workers to the paid plan.