Projects & Research
2026–present · Seedance 2.0
AI Video Generation — Comic to Film
In middle school I wrote and drew an original comic — 34 chapters, each with its own script. In 11th grade I set out to turn it into film using the technology that was finally catching up to the idea: AI video generation.
I started with research, testing 10+ models — OpenAI's Sora, ByteDance's Seedance, Kling, Gemini, and more — running trials of text-to-image for backgrounds and image-to-video for motion before settling on Seedance. Then I organized all 34 chapters and their scripts into a production pipeline.
The problems showed up immediately. Characters and audio drifted between clips, because a “video” is really 12-second fragments strung together. Tokens cost real money. Getting the details I imagined — a facial expression, grass moving in the wind — took endless retries, and writing a fresh prompt for every clip meant one 60-second episode took three days. That could never scale to 34 chapters.
So I treated it as a craft to learn: AIGC prompting and script patterns, generating character model sheets with image models to lock consistency, and reusing generated backgrounds so scenes wouldn't warp as the action went on. Once I'd built a replicable prompt baseline, I could feed comic panels and script into AI tools to draft each clip's prompt — still hand-tweaking every clip of every episode, but now a 90-second video takes two hours instead of three days.
Each finished chapter gets edited in Adobe Premiere Pro and exported as a short-form video. 30+ episodes published so far on TikTok and YouTube Shorts — created, directed, and produced by me.
Case study · “Rescue Mission Pt. 1”
Chapter 23 — from comic to film
1 · The source: comic panels & script
Every chapter starts with pages I drew and a script I wrote in middle school. Chapter 23 is 26 panels and a full dialogue script from November 2020.


2 · Consistency assets: model sheets & background plates
To stop characters drifting between clips, I generate a model sheet for every character and reusable background “plates” for every location — the same reference images feed every shot.







3 · Shot prompts
The chapter becomes 19 segments — 172 seconds of film — each with its own engineered prompt: camera policy, exact dialogue, staging rules, and everything the model is not allowed to invent. Below is one complete, unedited prompt — Shot 10, the chapter's turn, where the comic's “SUPER— / —CLOSER / ~DOOM” panel becomes an accelerating camera push:
## SHOT 10 — …they will be punished severely
**SCENE:** `@{WarehouseExterior}` — **⚠️ framed on a plain section of the grey barn wall.** Wet grass along the bottom. Heavy rain.
**CAST:** `@{Grammy}` ONLY. **⚠️ EXACTLY ONE SHEEP. BREY, HEFT and BLEAT-BLEAT are off camera and must NOT be rendered.**
**CAMERA:** **⚠️ ONE CONTINUOUS PUSH-IN, FROM FULL BODY TO A CLOSE-UP OF HER FACE.** No other move. No cuts.
> ### ⚠️⚠️ THE CAMERA MOVES IN THIS SHOT, AND IT IS THE BIGGEST MOVE IN THE CHAPTER
>
> **The camera starts on a FULL BODY WIDE of `@{Grammy}` and pushes STRAIGHT IN until it is a CLOSE-UP OF HER FACE.** **One single continuous move, from the first frame to the last.**
>
> **⚠️ IT NEVER STOPS AND IT NEVER REVERSES.** No pause, no hold, no pull back at the end.
>
> **⚠️ THE SPEED CHANGES ONCE, AND ONLY ONCE.**
> **During the first line it is SLOW and gentle** — barely noticeable, an easy drift forward.
> **On the turn into the second line it ACCELERATES** and closes hard onto her face. **⚠️ This is the one place in the chapter where a camera move speeds up, and it is deliberate.**
>
> **⚠️ It is a PUSH, not a zoom.** The camera travels forward through space on a dolly. **It does not pivot, does not slide sideways and does not change lens.**
>
> **⚠️ It ends TIGHT — her face fills the frame.** **The push must actually arrive.** A small push that stops at her shoulders is not this shot.
>
> **⚠️ No handheld shake at any point.** Smooth and mechanical throughout, even while accelerating.
> ### ⚠️ DIALOGUE — SPEAK EXACTLY THESE WORDS, IN THIS ORDER, AND NOTHING ELSE
>
> **There are exactly 2 spoken lines in this clip, and BOTH are `@{Grammy}`.** Do not add words. Do not paraphrase. Do not improvise. Do not repeat a line. Do not invent any additional dialogue.
>
> **LINE 1 — `@{Grammy}`**
> *Voice: elderly female, high and reedy with a dry papery rasp, fast and theatrical, over-enunciated, swinging suddenly between soft and very loud. **⚠️ Her NORMAL voice — the flower has worn off. NOT slurred, NOT dreamy.***
> *⚠️ **BRIGHT, LOUD, DELIGHTED AND COMPLETELY SINCERE.** **This is the happiest she sounds in the chapter.** Fast, high, warm, over-enunciated, **rising all the way through** — a plan coming together and a grandmother thrilled about it. **Raised over the rain.***
> **Says exactly:** "Yes! And then we run off and everyone's happy!"
>
> ### ⚠️⚠️ THEN THE VOICE TURNS OVER, MID-BREATH
> **⚠️ There is NO pause between the lines and NO change of subject.** **She carries straight on** — and **everything about how she sounds inverts inside half a second.**
>
> **LINE 2 — `@{Grammy}`**
> *Voice: the same elderly female, high and reedy with the same dry papery rasp — **but QUIET, SLOW and DARK.***
> *⚠️ **SHE DROPS RIGHT DOWN.** **From loud to nearly a murmur. From fast to slow. From bright to low and flat.** The rasp becomes the loudest thing in it. **⚠️ She does NOT shout this line. The drop in volume is the whole effect.***
> *⚠️ **"But oh," is a soft sigh of anticipation.** **"those naughty, naughty kids…" is savoured** — the repeated word slower and more relished than the first. **"they will be punished severely…" comes out almost lovingly, and TRAILS OFF into nothing.***
> *⚠️ **She is not angry at the audience and not shouting a threat. She is enjoying a private thought.** **That is what makes it unsettling.***
> **Says exactly:** "But oh, those naughty, naughty kids… they will be punished severely…"
>
> **Nobody else speaks. BREY, HEFT and BLEAT-BLEAT do not speak in this clip. No other words are spoken by anyone at any point.**
> **STAGING**
>
> **1. ⚠️ CAST** — the complete cast is `@{Grammy}`. She appears one time. **There is EXACTLY ONE sheep in the picture and no other creature anywhere in the frame at any point.** **Do not duplicate, clone or add a background sheep.** **⚠️ BREY, HEFT and BLEAT-BLEAT do not appear anywhere in this shot**, including in the background, out of focus, or entering frame.
>
> **2. ⚠️⚠️ THE FRAMING CHANGES ACROSS THE CLIP BECAUSE THE CAMERA MOVES.**
> **AT THE START — FULL BODY.** **`@{Grammy}` is seen head to hooves**, standing, with wet grass beneath her and the grey wall behind. **All four legs visible.**
> **AT THE END — CLOSE-UP OF HER FACE.** **Her head fills the frame.** Her body and legs are out of shot.
> **⚠️ Both extremes must actually happen. Start genuinely wide; end genuinely tight.**
>
> **3. ⚠️ POSITION.** **`@{Grammy}`** (**pale cream-tan wool, grey curled horns, CLEAR ROUND GLASSES**) stands **centred in frame**, in three-quarter view, **angled slightly toward screen LEFT.** All four legs on the ground.
> **⚠️ She does NOT walk, does NOT step, does NOT turn away and does NOT leave frame.** **She stays planted in one spot for the entire clip while the camera comes to her.**
>
> **4. ⚠️⚠️ THE FACE IS THE WHOLE SHOT, AND IT CHANGES ONCE.**
> **DURING LINE 1 — OPEN AND DELIGHTED.** **Eyes wide and bright behind the clear lenses, brows UP, ears up and forward, mouth open in a big genuine smile.** Head lifted, chin up, **bobbing slightly with enthusiasm.**
> **ON THE TURN — ⚠️ HER EYEBROWS SCRUNCH DOWN INTO A HARD ANGRY V.** **This is the single most important piece of animation in the shot.** **Brows drop and pull sharply together and inward**, eyes narrow to slits, the smile flattens and then **curls at one corner.** Ears **lay back.** Head **lowers and tips forward.**
> **⚠️ The change is FAST — inside half a second — and then it HOLDS, unchanged, for the rest of the clip.** **Do not let her soften again. Do not let her return to smiling.**
>
> **5. ⚠️ SHE IS NOT SHOUTING AND NOT SNARLING.** **⚠️ No bared teeth, no open roaring mouth, no cartoon fury lines, no shaking, no steam, no red face.** **Scrunched brows, narrowed eyes and a small crooked mouth, held perfectly still.** **The stillness at the end is what makes it land.**
>
> **6. ⚠️⚠️ HER GLASSES ARE CLEAR AND HER EYES ARE VISIBLE — AND THE CAMERA ENDS ON THEM.** **Round CLEAR lenses with rain beading and running droplets on the glass**, **her real eyes plainly visible behind.** **⚠️ NOT fogged. NOT opaque. NO spiral discs. NO Ch22 anything.** **⚠️ At the end of the push her lenses fill a large part of the frame — they must be clean, clear, and readable through.** **If her eyes are hidden the shot has no ending.**
>
> **7. ⚠️⚠️ SHE IS SOAKED AND HER WOOL COLOUR DOES NOT CHANGE.** **Pale cream-tan, exactly as the model sheet has it.** **⚠️ Do NOT darken, soak, flatten or clump the wool. No wet points, no colour shift.** **Wetness is ADDED on top:** beads all over her, running droplets, **a steady drip from her chin.** **⚠️ At close-up size the individual water beads on her face and glasses should be clearly drawn.**
>
> **8. ⚠️ THE BACKGROUND IS A WALL AND NOTHING ELSE.** **A flat greyish barn wall** — weathered grey timber boards, wet and streaming with rain. **⚠️ NO doorway. NO windows. NO corner. NO roof. NO sky. NO horizon. NO trees.** **Wet green grass along the bottom at the START only** — by the end of the push the frame is her face and wall.
>
> **9. ⚠️ NOTHING IS HELD, POINTED WITH OR LIFTED.** **Sheep have no hands.** **⚠️ She threatens the children WITHOUT gesturing** — no raised hoof, no stamping. All four legs stay on the ground. **She is never bipedal.**
>
> **10. ⚠️ NOTHING ELSE IS IN THE PICTURE.** **No humans, no other animals, no props, no text, no sound-effect lettering, no flat colour panels.** **⚠️ The comic captions this panel "SUPER—", "—CLOSER" and "~DOOM" — all three are typeset in the edit and must NOT appear in the frame.**
>
> **11. ⚠️⚠️ THE LIGHT DARKENS SLIGHTLY AS THE CAMERA CLOSES — AND THIS IS THE ONE PERMITTED EXCEPTION.**
> **Start: ordinary flat overcast storm light.** **End: noticeably moodier — the light drops a stop, contrast rises, and shadow gathers around her eyes and under her brow.**
> **⚠️ This is a SUBTLE, GRADUAL dimming of natural storm light, NOT a colour flood.** **⚠️ No blue, no navy, no purple, no red, no coloured wash of any kind.** **It stays grey; it just gets darker.** **The change happens with the acceleration and holds.**
> **⚠️ Her pale cream-tan wool and her eyes must stay clearly readable even at the darkest point.** Nothing in the picture is pure black.
>
> **12. ⚠️ CAMERA — ONE CONTINUOUS PUSH-IN, AND NOTHING ELSE.** **No pan, no tilt, no zoom, no tracking, no shake.** Starting at her standing eye height, wide. **The push runs from the first frame to the last, slow at first and faster after the turn.**
>
> **13. ⚠️ AUDIO — THE SOUND TURNS OVER WITH HER.**
> **(a)** **Heavy rain, loud and close**, hammering on the timber wall.
> **(b)** **LINE 1: her voice is bright, high, fast and raised over the rain.**
> **(c)** **⚠️ LINE 2: she drops to almost a murmur — and because the camera is now close, we hear her perfectly anyway.** **⚠️ The rain does NOT get quieter. She gets quieter and we get closer.** That contrast is the effect.
> **(d)** **⚠️ NO MUSIC. No sting, no drone, no low bass hit on the turn, no thunder crack.** **The voice and the camera do all of it.**
**ACTION**
- **0–1s** — **FULL BODY WIDE.** `@{Grammy}` centred against the wet grey wall, standing on wet grass, soaked and beading, glasses clear, **ears up, smiling, chin lifted.** Rain hammering. **The slow push begins immediately.**
- **1–4s** — She delivers **LINE 1** — bright, loud, delighted, rising — head bobbing with enthusiasm. **The camera drifts gently in. Her whole body is still in frame.**
- **4–4.5s** — **⚠️ THE TURN.** **Her brows scrunch down hard into an angry V**, eyes narrow, ears lay back, smile flattens and curls at one corner, head lowers and tips forward. **⚠️ The push ACCELERATES. The light begins to drop.**
- **4.5–9.5s** — She delivers **LINE 2** — quiet, slow, dark, savoured, trailing away. **She holds the scrunched brow completely still and does not soften.** **The camera keeps closing until her face fills the frame.** The light has gone moodier and stays there.
- **9.5–10.5s** — **CLOSE-UP.** Her face fills the picture — **narrowed eyes behind rain-beaded clear lenses, brows still hard down, mouth still crooked.** Perfectly still. Rain running off her chin. **The push is still going as the clip ends.**
**DURATION:** 10.5s
> **⚠️⚠️ Note on the accelerating push** *(production note):* **the comic writes this move into the page — the panel is captioned "SUPER—" on the bright half and "—CLOSER" on the dark half, with a "~DOOM".** **The camera speeding up on the turn is the whole gag rendered as a move**, and it is **the only place in the chapter where a move changes speed.** **⚠️ If the push is one constant speed throughout, the joke is gone** — the acceleration is what makes it funny rather than merely ominous.
>
> **⚠️ Note on the push having to arrive:** **it must genuinely end on her face.** **A push that stops at a medium shot is the single most likely failure here.** **Start full body. End with her head filling the frame.** Both extremes are stated in the staging.
>
> **⚠️ Note on the brow scrunch:** **Sam's call and it is the right one — it is one clear readable shape, and it survives being animated.** **A subtle "menacing" expression will not survive; a hard angry V will.** **⚠️ And it must HOLD.** The instinct is to keep animating a face for five seconds. **She freezes into it and stays frozen** — the stillness under the moving camera is what makes it unsettling.
>
> **⚠️ Note on the light exception:** **this is the ONE shot in the chapter allowed a lighting change, and it is deliberately small.** **The comic goes cyan to navy; we go grey to slightly darker grey.** **⚠️ It must not become a colour flood** — that is the rule the whole chapter is built on. **A stop of light and a bit more contrast does the same job and stays inside the style.** **If it comes back blue or purple, regenerate.**
>
> **⚠️ Note on the volume inversion:** **the rain stays exactly as loud and she gets quieter.** **The reason we can still hear her is that the camera has come to her.** **Do not duck the rain under her** — the whole point is that the world does not change, only our proximity to her does.
>
> **Note on this being the chapter's turn:** **this is the last beat of the planning montage and the last time anybody is having fun.** **Everything after it is the heist.** **Ending the montage on a grandmother quietly promising to punish her grandchildren, in the rain, in close-up, is the right note to leave on.**4 · The finished episode
Nineteen generated clips, edited together in Adobe Premiere Pro. Chapter 23, complete:
2026 · Self-taught
Poetry × Code
I've written 138 original poems since 6th grade — including a paint-chip collection pairing each poem to a color. For years they lived in a private archive, until I decided to learn to build the places they should live.
First came the Python archive: I taught myself Python and built the web app from scratch, in my own code — a digital compilation of every poem I've written, searchable and organized in one place.
Then I wanted to share more than an archive. I researched the public poetry websites that already existed and found them deeply inadequate — blogs focused on publishing, contests, or monetary gain, with difficult, crude navigation. So I vibe-coded and designed my own public platform, dedicated solely to sharing poetry and making it easy to read and post. Its core idea: fully visualizing a poem — using the latest AI image generation to give every poem its own generated “scene,” bringing the words to life and drawing readers into poetry who might never have stopped for it.
2025 · New York Times Summer Academy
Research
In the summer after 10th grade I spent two weeks living in New York City for the NYT Summer Academy's “Writing on Tech: AI, Security and Social Media” — a residential program of 20 students from around the world, taught by a veteran journalist. We worked out of the city like reporters: writing on deadline, workshopping pitches, visiting The New York Times headquarters, and spending a day at Bloomberg, where the media team walked us through how global data flows into news production, interface design, and economic analysis.
For the research project, I worked in a group of four. I proposed our focus — testing how a platform's algorithm drives the spread of harmful content — and devised the hands-on experiment: we created four fresh TikTok accounts, two registered as 12-year-olds and two as 25-year-olds, and scrolled fifty videos on each, with one account in each pair actively liking harmful content — offensive, violent, or misleading — to see how engagement moved the feed.
The clearest result was a huge spike in harmful content on the adult account that engaged with it: the algorithm wasn't sparing anyone, it was learning what each user responded to and shaping the feed to match. Our interview with a TikTok safety manager added the scale behind that — the volume of user data the platform absorbs worldwide, and how its systems adapt to different countries' restrictions. We wrote the findings up as a ~1,000-word pitch in NYT style — the paper below. And the limits of a three-hour, four-account study are exactly what made me want to run the real version someday, with random sampling and real scale.
“TikTok's Filters Aren't Foolproof, And Neither Are We”
Research paper · scroll to read all five pages








