Writing

November 2, 2026

Put Your Amma on Your Desktop

This is a small, realistic character with the real face of someone in your family, living on your desktop. It reminds you to eat, drink water and take your medicine, talks the way they actually talk at home, and walks over to check on you if you ignore it. You can make it without coding for $20, and you choose every reminder.

What it does

You choose who it is: mom, father, wife, husband, sister, brother, son or daughter. Their look and dialogue are made to suit that person. Here's how it goes with Amma.

WhenWhat she does
Reminder timeWaves, drinks or eats, says your recorded line and shows a speech bubble
You ignore her for 5 minutesWaves and teases you to get your attention
You ignore her for 15 minutesWalks over to check on you, and reminds you every 10 minutes until you answer
You click SnoozeTeases you a little and comes back later
You click DoneCelebrates and tells you how proud she is

You set the reminders in a simple settings window. Add as many as you like, at any time, on any day, such as "Stretch" or "Call home". You can also choose how often she reminds you, Gentle or Normal, and whether she's always on screen or only appears when she has something to say.

How to make it

You don't need to code. You collect a few files, paste one message, and Claude builds the app. Set aside about two hours the first time, mostly waiting, and about 3 GB of free space. Test windows will pop up on your screen while Claude works.

  1. Get Claude and the Chrome extension. Download the Claude app from claude.com/download, and sign in with a Claude Pro account. Add Claude in Chrome to Chrome, and sign in to it with the same account. If Windows asks you to install Git, follow its instructions.
  2. Paste the prompt. Make a folder on your desktop called my-character. In the Claude app's Code tab, choose that folder, paste the prompt below and press Enter.
  3. Answer Claude's questions. It asks who the character is and how they should sound. It asks for a clear, front-facing photo if there isn't one in the folder yet, so get their permission first.
  4. Check their lines. Claude writes their dialogue. Tell it anything that doesn't sound like them.
  5. Say yes when asked. Claude makes the body pictures in your Gemini, then builds the app. If Chrome asks to allow multiple downloads, choose Allow. If Claude asks to install or run something, say yes.
  6. Set your reminders. When it finishes, your character opens and walks you through it.

For the funniest result, don't use a script. Ask her to say it exactly how she'd say it at home.

The prompt

Copy all of this, without changing anything. Claude asks you what it needs to know.

Build me a desktop reminder character, in the stages below. I am not technical, so make sensible decisions yourself and explain anything I must do in plain language. Finish each stage before starting the next.

THE IDEA
A small, funny character with the real face of someone in my family stands on my desktop and reminds me about things I forget. It should feel like this person is lovingly keeping an eye on me. It must be funny enough that I want to show my friends, but never get in the way of my work.

STAGE 1: GET READY
Do these in this order, before anything else. Ask one question at a time and wait for each answer.
First, ask me:
1. Who should the character be: mom, father, wife, husband, sister, brother, son or daughter?
2. What do I call them, such as Amma or Achan?
3. What do they call me?
4. Am I male or female? (The wording may depend on this.)
5. Which language do they speak with me at home?
6. What should they wear? Suggest something traditional that suits them, such as a kasavu saree or a mundu and shirt.
7. How should they sound? Offer only these, in plain language:
   - Auto: you choose for me. Use a Gemini voice if Chrome is connected, otherwise speech bubbles only.
   - Gemini AI voice: made in Google AI Studio through my Chrome. No API key.
   - ElevenLabs voice: needs an ElevenLabs account and API key. Can also clone their real voice with their permission, on a paid plan.
   - Their real voice: they read the lines into a phone. Free, and usually the most natural.
   - Speech bubbles only: no voice.
Next, check the photo. Look in this folder for a picture of them. If there isn't one, stop and tell me to copy one clear, front-facing photo of them into this folder and let you know. Show me the folder's full location and offer to open it. Accept common formats, including iPhone HEIC photos. Wait for me, then look at it to confirm it shows one clear face. If it doesn't, ask for a better one. Ask me to confirm they have agreed to this.
Then check Chrome. Try to use the Claude in Chrome browser tools. If they aren't connected, tell me to install the extension from https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn , sign in to it with the same Claude account, and keep Chrome open. If it's already installed, ask me to open its side panel, confirm I'm signed in to the same account, then restart Chrome. Wait, then check again, up to twice more. If it still isn't working, tell me plainly. If I chose a Gemini voice, ask me to choose again from the other voices. Auto becomes speech bubbles only. Then carry on, and give me the pose steps to do by hand.
Everything below must suit these answers: the look, the name, the dialogue and the movements. Name the app after what I call them.

STAGE 2: WRITE THE DIALOGUE
Write the lines this exact person would say. Write a first-appearance greeting. Keep it short, about 25 lines in total, because real people repeat themselves: 2 or 3 lines for each reminder (food, water, medicine, custom), 2 shared lines for being ignored plus 1 per reminder, and 2 or 3 shared lines each for snooze, skip and done.
Lines must fit any time the reminder could fire, so a food line can't mention rice if it may play at breakfast.
Also write these short bubble texts, which don't count towards the 25 and aren't spoken: the missed-reminders bubble, the medicine skip confirmation, and the Taken and Skipped buttons.
Make it sound like home:
- Use spoken, everyday language with the casual forms people really use. Avoid bookish words and anything that reads like translated English.
- They would never formally introduce themselves or explain the app. They talk as if they have always been around.
- Match the relationship:
  - Mom: worry about food, loving teasing, cold food, doubting my "five minutes".
  - Father: few words, dry humour, pretends not to care, quiet pride.
  - Wife or husband: playful sarcasm, "I told you so", private teasing, real affection underneath.
  - Sister or brother: roasting me, mocking, threatening to tell Amma or Achan.
  - Son or daughter: role reversal, treating me like the child, cheeky and caring, "how many times must I tell you?"
Rules: tease, but keep it warm. Nothing should sound toxic or wounding, and no guilt trips. A line that mentions a specific snooze length must only play for that length. Never insult my body or health. Never give medical advice or mention doses. Don't guilt me about skipping medicine in a way that could stop me asking for help.
Show me every line, numbered, and ask me to correct anything that doesn't sound like them. Wait for my approval. My corrections always win, and they tell you how this person talks, so apply that style to the other lines too.

STAGE 3: MAKE THE POSES
Write 7 prompts for Gemini, sent one at a time in the same chat. Never upload anyone's photo to Gemini, because it only makes the body.
Each prompt must ask for a photorealistic full-body studio photograph of a person who matches the character's gender and clothing, with the age, build and skin tone judged from the photo so the body fits the face, from the top of the head to the feet, on a plain solid bright green background, with even soft lighting and no text. After the first, each must say: exactly the same person, clothes and jewellery, same background and framing. Keep hands low and wide, well clear of the head, because a bigger real head goes on top. Tell me what you assumed about their age and build.
The poses, with file names: idle (arms relaxed, facing the camera), waving, eating (a plate of food suited to their culture), drinking (a glass or tumbler at chest height), medicine (a tablet strip in a hand out to the side at waist height), celebrating (both arms up), walking (towards the left of the frame, face to the camera).
If Chrome is connected, do this for me: note the time, then open gemini.google.com in a new tab, and if I'm not signed in, ask me to sign in. Never type a password. Send each prompt and wait for its picture. Scroll the newest picture's download button into view, read its current position, and click it, because the window size can change. Wait a few seconds for the file to arrive in my Downloads folder, and only take files newer than the time you noted. If downloads stop arriving, ask me to choose Allow for multiple downloads in Chrome's address bar. Move each file into a folder called poses with the right name, keeping its file type, and look at each one to confirm it's the right pose. Never touch or list my other downloads. If the walking picture faces the wrong way after one retry, mirror it on this computer. Then show me all 7 together and ask if they look right.
If Chrome isn't connected, give me the prompts one at a time, and tell me the exact name to save each picture as and where. Remind me not to upload the photo. Wait until I say they are ready. If Gemini refuses a picture or hits a limit, help me reword it or finish it later.
If a picture has a visible logo or watermark on the body, ask Gemini for that pose again.
Check that all 7 are there before going on.

STAGE 4: BUILD THE APP
Use the photo and the poses folder in this folder.
First check for Node, ffmpeg, and on a Mac the Xcode command line tools. Install what's missing, and tell me before any password or licence prompt. Tell me that building takes a while, and that test windows will appear on my screen.
Run all tests with a temporary data folder, so my real settings and start at login never change. Never quit or change my other apps.

LOOK
- Cut the face out of the photo while building, using rembg on this computer. rembg returns the whole person, so look at a zoomed picture to mark the jaw and hairline yourself. Keep only the head, with no neck or shoulders, and trim flyaway hair with background in it. Show me the cutout and ask if it looks like them. rembg needs Python 3.11 to 3.13, so use uv to get a matching version. Its model is about 1 GB, so keep it outside this folder and tell me before the download. The finished app must not need Python or the internet.
- Turn each pose picture into a cutout while building: remove the green background with rembg, limit green to the higher of red and blue across the whole picture to take the green cast off the clothes, only cut out large connected green areas so plates and glasses stay whole, find the head with OpenCV (use a version below 5, and only search the top of the picture and take the largest face, so clothing folds are not mistaken for one), erase the generated head down to the chin, along with anything hanging from it below the chin such as flowers or earrings, without touching the chest, and scale every pose to the same height from chin to feet.
- Draw the character on a 2D canvas. Do not use a 3D engine. Keep the feet on the same line and the head in the same place when poses change, and crossfade between poses.
- Add only small, soft movement: gentle breathing and sway when idle, a little bounce for waving, a hop for celebrating, and a bobbing walk. Mirror the walking picture when they walk right, but never mirror the real face.
- Hang the real face from the chin of the current pose at about 1.75 times the size of the detected face box, so it looks slightly bigger than life, with the chin sunk slightly over the neck so there is no gap. Match the face's colour to the body if they look noticeably different. The face always stays upright and bobbles as the character moves.
- Sizes: Small, Medium (default, about 280 pixels tall) and Large.
- Use a rounded comic-style speech bubble with large, easy-to-read text, in a font that displays the chosen language correctly. Write the bubble's buttons in that language too.

ON THE DESKTOP
- Use a transparent, frameless window that stays above other windows, on every virtual desktop.
- Only the character and its bubble catch the mouse. Clicks anywhere else pass through to the apps underneath.
- Never take keyboard focus or interrupt my typing.
- I can drag the character anywhere. Remember its position, and bring it back to the bottom-right corner if that position is no longer on screen.
- Between reminders, it plays idle and does a small random action every few minutes.
- Clicking the character plays a small reaction, with no line or speech. Never use reminder lines when nothing is due, or it will sound like something is due.
- Let me choose: always on screen (default), or only when they have something to say. In that second mode the character stays hidden, appears for reminders, and leaves a few seconds after I answer. Reminders must still fire, the choice must survive a restart, and no drawing should happen while hidden. Put this in Settings and the menus, so I can always bring the character back.
- Add a menu bar icon on Mac or a system tray icon on Windows with: Settings, Today, Pause, Quit. Right-clicking the character shows the same menu.

FIRST LAUNCH
Show a friendly setup that takes under a minute:
1. The character waves and says the greeting.
2. I review the Food, Water and Medicine schedules and change them. Medicine starts empty, and I can add times or skip it.
3. I choose how insistent they should be and press Try It to see a reminder.
Start at login is on by default, and the setup tells me how to turn it off.

REMINDERS: I CONTROL EVERYTHING
The Settings window lists every reminder. I can add, edit, duplicate, delete, switch on or off, and test each one with no code or config files.
Each reminder has:
- A name and an optional bubble message, which replaces the random line and stays silent
- A schedule: one or more specific times, or every X minutes between two times
- Days of the week
- A pose, chosen from a dropdown
- Repeat reminders on or off
- An option to ignore quiet hours
Defaults:
- Food: 08:30, 13:00, 20:00 every day
- Water: every 60 minutes from 09:00 to 21:00 every day
- Medicine: no times until I add them. Ignores quiet hours by default.
I can add custom reminders such as Stretch or Call home.
General settings: pause all for 30 minutes, 1 hour or until tomorrow; quiet hours (default 22:30 to 07:30); volume; mute; character size; reminder level; start at login.
I can edit every line in Settings. Changes apply immediately, without a restart.

WHEN A REMINDER FIRES
There are only two reminder levels, Gentle and Normal. Turning Repeat reminders off means no follow-ups at any level.
1. The character plays the pose, and the bubble shows a line with three buttons: Done, Snooze, Skip. Word Done and Snooze as my reply to what this reminder is about, in the chosen language, such as "Ate" and "I'll eat later" for food, "Drank" and "I'll drink later" for water, "Took it" and "I'll take it later" for medicine. Use a plain "Done" and "Later" only for custom reminders. If that line has audio, it plays.
2. If I do not answer, it reminds me again according to the reminder level. It never gets angry:
   - Gentle: repeats once after 10 minutes, then waits quietly.
   - Normal (default): waves with a teasing line after 5 minutes. After 15 minutes it walks to the middle of the bottom of the screen to check on me, and reminds me every 10 minutes.
3. Done: it celebrates and says something warm.
4. Snooze: I pick 5, 10 or 30 minutes. It teases me a little and returns on time.
5. Skip: it stays in the idle pose with a small droop and moves on, with no guilt trip. For medicine, it asks me to confirm first.
During quiet hours, reminders still show the bubble but play no sound, unless they ignore quiet hours.
If several are due, show one at a time, with medicine first. A repeating reminder replaces its own unanswered earlier alert instead of piling up. Never repeat a line twice in a row. After walking over, it walks back once I answer. Medicine can take over from another reminder that's showing. Reminders due during a pause count as missed and are listed when the pause ends. Show a custom reminder's name in the bubble, so generic lines make sense. Keep the bubble fully on screen wherever I drag the character, and write its other buttons in the chosen language too.

MISSED REMINDERS
If the computer was asleep or the app was closed, then on return show one calm bubble listing what I missed, with no scolding. Reminders left unanswered before the computer slept count as missed too. List each missed medicine with its due time and ask Taken or Skipped. Combine missed water reminders into one line. Only go back 24 hours.

TODAY VIEW
Show today's reminders with their status (Done, Snoozed, Skipped, Missed), glasses of water so far, and my streak of days with medicine completed. Hide the streak if no medicine times are set. A skipped dose ends the streak.

PRODUCT RULES
- No accounts, ads, analytics or network use in the finished app. Reminders, history, photos and voices stay on this computer.
- Settings and history survive restarts.
- The character can take a few seconds to load. Hold greetings and reminders until it is ready, so none are lost.
- Use little battery while idle: lower the frame rate when nothing is happening.
- Use the computer's clock and handle time zone changes.

TECHNICAL CHOICES
Use Electron and a 2D canvas. Run the schedule in Electron's main process, and use its power monitor to catch up after sleep. Use setIgnoreMouseEvents for click-through.

TEST BEFORE YOU FINISH
Fix what fails, then confirm each of these works:
- First launch setup, and adding, editing and deleting a reminder
- Both schedule types and days of the week
- Every stage at every reminder level, using shortened test timers
- Done, Snooze and Skip
- Clicks passing through, and no keyboard focus taken
- Settings kept after a restart, and missed reminders after sleep
Check screenshots of every pose, including walking, and fix anything that looks wrong. Confirm the face sits properly on the head.
Leave the character idle for at least 3 minutes, at the low idle frame rate, and confirm the head stays upright and visible. Any bobble or spring must stay stable at slow frame rates.
You may not be able to send real mouse clicks or sleep the computer, so simulate those and tell me plainly. Then ask me to do a 30-second check by hand: click through the empty space around the character, click a bubble button, right-click the character, and open the menu bar icon.
Run the full tests more than once to catch timing problems.
Then test the packaged app itself, not just the development version, to confirm the character, face and any audio all load.

WHEN YOU ARE DONE
Package the app for this computer and open it. This folder may be synced to the cloud, which can break Mac app signing. If signing fails with "resource fork, Finder information, or similar detritus not allowed", tell me it's normal. Copy the app to ~/Applications with ditto --noextattr, sign it there with an ad hoc signature, and test that copy. Repeat this after every rebuild. Tell me in plain language where it is, how to get past any security warning, and anything that did not work.

STAGE 5: THE VOICE
Use the voice I chose in Stage 1. The finished app only plays clips bundled inside it. It has no voice settings, never asks me for an API key and never goes online.
If I chose their real voice: give me a numbered script of every approved line, and tell me to have them read it into a phone in one go, with a pause of about 2 seconds after each line. When I add the recording to this folder, cut it into one clip per line at the pauses, in order, and match each clip to its line. Check that the number of clips matches the number of lines. If it doesn't, tell me which part to re-record. Then play me a few to confirm they match.
Direct any AI voice to sound warm and teasing, never angry or hurt.
If I chose Auto or a Gemini voice and Chrome is connected: warn me first that AI voices can sound artificial, and that each run plays out loud. Open aistudio.google.com/generate-speech and choose Create new dialog. Choose the voice from the Speaker button. The list isn't marked free or paid, and may not offer my language as a filter, so filter by gender and pick by description. Ignore "No API key selected" unless a run is refused. If it asks for a key or billing, or hits a limit, stop and offer me the other voice types. Make one short sample, play it, and ask me whether it sounds right, because you can't judge it yourself. If I say no, try another Gemini voice or offer the other voice types. Then generate the lines in batches of up to 7, with <long pause> between lines. Set the delivery in the Style box. A batch is finished when its player has stopped and reset to 0:00. Save it as a batch file, and install ffmpeg if needed. In each batch, cut at the longest pauses, one fewer than the number of lines. Treat a pause split by a tiny click as one pause. Save clips as voice/clips/01.wav and so on, in line order. Check that every clip contains sound, and that its length fits its line's length. If any look wrong, make that batch again. These checks can't prove the words are right. If you have no transcription tool, say so plainly, and show me each line next to its clip so I can listen to all of them.
If I chose an ElevenLabs voice or a clone: warn me first that AI voices can sound artificial, and help me pick a native voice for my language, or clone from a recording once I confirm I have permission. Ask me to put my API key in a file called .env in this folder, not in this chat. Use it only to generate one clip per approved line with eleven_v4, then bundle the clips. The key must never go inside the finished app. Play me a few clips and let me redo any line.
If I later want a different voice or a changed line, I ask you to regenerate the clips and rebuild the app. A line I edit in Settings stays silent, and the app tells me so.
If I chose speech bubbles only, or until the clips are ready, the character stays silent. Never play a clip that doesn't match the bubble.
After adding any voice clips, rebuild and sign the app again, repeat the packaged app test, and open it.

If something looks wrong

Describe the problem to Claude in everyday words, in the same chat. You don't need technical terms.

ProblemWhat to do
The face looks offTell Claude, "The face sits too low and looks too small. Fix it."
You want to change how she behavesTell Claude what you want, such as "Make her walk around more."
She reminds you too oftenOpen Settings and choose Gentle
Mac blocks the appGo to System Settings, then Privacy & Security, and choose Open Anyway
Windows blocks the appClick More info, then Run anyway
Claude says you've hit a usage limitWait until it resets, then type "continue"
You don't see the Code tabUpdate the Claude app and sign in with your paid account

Only get past a security warning for an app you built yourself.

Cost

The total is $20, for one month of Claude Pro. You can cancel after that and your character keeps working, but you'd need Claude again to change it. Prices are in US dollars.

What you needCost
Claude Pro, one month$20
7 pose pictures from the Gemini appFree
Photo and recordings from your phoneFree
Tools Claude installs to build the appFree

Gemini's free plan may limit how many images you can make in a day. If you hit the limit, finish the poses later. The voice is free if the real person reads the lines into a phone, and that sounds the most natural. Or use a native Malayalam voice from ElevenLabs, such as Sunaina. About 25 lines is roughly 1,300 characters. Native voices were tested on a paid plan and may not work on the free one. Listen first, because some voices we tried sounded artificial.

Good to know

  • Medicine: she can only remind you while your computer is on and awake. Keep a phone alarm for any medicine you can't afford to miss.
  • Permission: ask before using someone's face and voice, and ask again before posting them online.
  • Privacy: the prompt tells Claude to keep the finished app offline, so your reminders stay on your computer. Your files may be sent to Claude while it builds the app.
  • Keep it personal: the app contains someone's face and voice, so don't share your copy or your folder. Let friends build their own. If you plan to sell an app, check the rembg model license first.
  • Status: this guide was tested on a Mac with a real photo and poses from Gemini Pro. A fresh Claude built a working app from an earlier version of this prompt, using a mom character and existing poses. Separately, it made a father's poses and voice in Gemini on a Pro account. No single run has gone from start to finish yet. The latest prompt, Windows, Gemini's free plan, ElevenLabs through the prompt, and cutting a real recording into clips haven't been tested.

Sources