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. These concept clips are 480p. The app set should be rendered at 720p.

  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.

Clips still to render for v1

writing-glanceB → B. A new voice: one ear swivels, he glances toward it, back to the page.
no-speechB → B. Tilts his head, one ear droops. Plays when nothing has been heard for 20 seconds.
nappingA → A, plus two short bridges. After two minutes on the home screen.
oopsA → A. A puzzled shrug when the network or the mic fails.
app set at 720pAll ten clips at 720p is about $18 at today's Higgsfield prices.

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

Two passes, one Worker

The live pass gives you words while people talk. The second pass runs on the saved audio when you stop. AssemblyAI's docs say a streaming speaker label can't be revised once it is given, so the clean copy is where who-said-what gets fixed. 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 for the live words; pre-recorded Universal-3.5 Pro for the clean copy and speaker names.
OpenAITitle, gist, decisions and to-dos as JSON, from the clean 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.

When you stop

  1. App → WorkerUpload the audio file. If the phone is offline, it waits in a queue and Fen shows a note.
  2. Worker → AssemblyAIClean copy: Universal-3.5 Pro with speaker labels and speaker identification, which guesses names from the conversation.
  3. Worker → OpenAISummary: a small GPT-5-class model returns title, gist, decisions and to-dos with owners as structured JSON.
  4. AppSave, then back up. The clean copy replaces the live text on the phone; the text is 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, new-speaker chips, Fen's ear flick$0.12
Universal-3.5 Pro, pre-recordedThe clean copy$0.21
Speaker labels + speaker identificationWho said what, fixed, plus name guesses$0.04
OpenAI summaryAbout 15k tokens in, 1k out, small modelTitle, gist, decisions, to-dos≈ $0.01
Total≈ $0.53

AssemblyAI list prices on 26 Oct 2026. New accounts get $50 of free credit, roughly 90 recorded hours of this full pipeline. A leaner option drops the live speaker labels ($0.41 an hour), but then speakers only appear after you stop and Fen can't react to a new voice.

Your call

Decisions before the build

Is this Fen?

The look, the neckerchief, the morning sky. Changes now cost cents; after the 720p clip set they cost dollars.

Price

One Pro hour costs about $0.53, so the monthly cap must stay below what the store pays us. Otter Pro is $16.99 a month.

Straw man: Free 30 min a month. Pro $9.99 a month or $79.99 a year, 10 hours a month. Even a yearly subscriber at the cap stays in profit after Apple's 15%.

Back up the audio?

Voice Journal never uploads audio. Here, audio lets you replay and re-run a transcript on a new phone, but it is the costly part to store.

Suggest: text backup for everyone; audio backup for Pro.

Languages at launch

The clean copy covers many languages; live streaming covers fewer. The app UI also has no translations yet, like our other apps.

Suggest: English first, with the multilingual streaming model already wired in.

Longest recording

Lectures run an hour or more. The phone keeps recording with the screen locked through a microphone foreground service (the Voice Journal fix).

Suggest: Free 10 min per recording, Pro 3 hours.

Keys

An AssemblyAI account and key, and the OpenAI key, both go into Worker secrets. Nothing is needed from you until the Worker is built.

What happens next

  1. You approve FenOr tell me what to change: ears, colours, scene, pose.
  2. Render the app clip setTen clips at 720p, about $18 on Higgsfield.
  3. App skeletonFlutter app, the fox player, recording, local library, search.
  4. The WorkerStreaming tokens, upload, clean copy, summary, plan limits. Needs the AssemblyAI key.
  5. Watch and widgetsSwiftUI watch recorder, WidgetKit and Android widgets, Control Center button.
  6. Accounts and billingSign-in, backup, hybrid subscriptions, store listings.