Home / Blog / Before the train gets home
CricCuts Blog · Open beta

Before the train
gets home.

CricCuts is in open beta. Point it at an hour of net footage and it finds every bat-on-ball contact, cuts them, and hands you a reel — on the phone, with the aeroplane mode on if you like. Here is what it does, what the animation layer is for, what is still rough, the engineering opinions underneath all of it — and what all of it is for.

⏱ ~14 min read 🏏 Open beta 📱 On-device AI 🎬 Animations (experimental)

There is a boy on a suburban train somewhere right now with a phone full of net footage, one bar of signal, and no data left for the month. He faced maybe forty balls. Six of them were worth showing someone.

He has two options, and they fail him in opposite directions.

There are genuinely good video editors that run offline on the phone he already owns. They will cut, trim, slow down and caption anything he likes, on a train, with the radio off. What they will not do is find anything. Finding is his job — scrub the hour, spot the six, mark each one by hand. That is an evening's work, and the honest reason most net footage is never watched again is not that the tools are bad. It is that nobody does an evening's work twice a week.

The tools that will do the finding want the hour uploaded first. That is a forty-minute wait he will not take, over a connection he does not have, at a data cost he cannot justify, to a server that now has video of a child. Four separate reasons the answer is no, and only one of them is technical.

So the useful thing to build was neither of those, but the gap between them: do the finding for him, on the phone. Not privacy bolted onto a cloud product, and not another manual timeline — the two halves that each existing answer was missing, in one place. That single decision is responsible for most of what is interesting in this post, including the parts that went wrong.

0
frames uploaded
<8 MB
of AI models on device
12
animated scenes
₹0
to use

What it actually does

You give it a video — a net session, a match, a throwdown session in a car park. It listens to the footage and watches it, works out where bat met ball, and builds a reel of just those moments. A DSP detection engine does the acoustic work, fused with a small on-device neural voice-activity model (Silero VAD) that tells a real crack apart from a shout, a footstep, or the net in the lane beside you. Optionally, a pose pass watches the batter as well.

Then it gets out of the way. You see the shots as cards, sorted best-first, and you keep or drop them with a tap. You set how long each clip runs and how long the whole reel should be. TokTok mode cuts everything to one-second stabs on the moment of impact, for the people whose reels live on a vertical feed.

The thing I would most like you to notice is what you are not asked to do. You do not scrub a timeline. You do not describe what you want in a prompt box and hope. The unit of collaboration is a single measurement — when and where the ball was struck — and if the app gets one wrong, you correct that one thing with one gesture and every clip, every effect and every caption downstream moves with it. I wrote a whole post about why that is the right unit: the anchor is the interface.

Why the phone, specifically

Cricket's centre of gravity is not in places with cheap unmetered bandwidth. It is in Mumbai and Multan and Colombo and Kampala, in school nets and maidans and turf wickets booked by the hour, on phones that are two generations old and plans that are counted in gigabytes per month. A tool that needs to upload an hour of 4K before it can be useful has quietly selected its audience, and it is not that audience.

A kid heading home from nets, on a train, with no data left, should be able to cut his own highlights before he gets off. If the architecture cannot do that, the architecture is wrong.

Holding that line has consequences all the way down. The models have to be small enough to ship in the app — under 8 MB of them, in a 74 MB download. The analysis has to be fast enough that nobody would have preferred the server queue. The rendering has to be cheap enough to run on a mid-range phone without cooking it. And the app has to be genuinely useful with the radio off, which is a much harder test than "works offline" usually implies.

Three things fall out of it for free, and they are the three that people care about most:

The longer argument for why this is where computing is going — and why small specialised models beat one enormous general one for jobs like this — is in why the future of AI is small models on the edge and many small models working together.

The animations, and who they are really for

On top of the cutting engine there is an effects layer: twelve animated backdrop scenes, dozens of impact effects, sound, slow-mo, replays, a zoom that pushes into the batter. It is the part people screenshot. It is also the part most likely to be misread as decoration, so let me split it in two, because it genuinely serves two different people.

🎓 For the coach

  • Freeze on contact — the reel stops dead on the exact frame bat met ball. That single frame is most of a batting conversation.
  • Slow-mo and replay on the shots worth a second look, without building a second timeline.
  • Lock-on and the focus field — mark which player you are talking about, which matters when three lanes are going at once.
  • Speed lines that read head stillness. Their colour follows how far the batter's head moved between stance and contact — gold for a still head, blue for some movement, red when it moved a lot, white when it could not be measured — and the stiller the head, the longer the lines. An optional legend puts the key on the exported video. It is a reason for a second look, not a verdict: striding into a drive, riding the bounce or turning to watch the ball all move the head too, so the colours are for comparing shots from the same session. (What the colours mean.)

📱 For being seen

  • Twelve backdrop scenes that replace the hide-net or the car park behind the batter — a stadium arch, a temple gate, Bengaluru at night, a monsoon, a beach.
  • Impact effects on the strike, from a comic POW! to an electric arc to a shock ripple.
  • Sound that lands on the same clock as the picture, including through a slow-mo.
  • Your name travels with it — the watermark carries a handle and an optional QR, so a reel that gets shared stays attached to the player who played it.

The bridge between the two columns is the point. A junior who plays a genuinely good cover drive in a suburban net has no natural route to anyone who might notice — no broadcast, no analyst, no clip desk. A reel that looks like it was cut by someone with equipment is not vanity; it is the difference between a shot that existed and a shot that was seen.

🧪
The animations are experimental in this beta, and I would rather say so than have you discover it. The cutting engine is the mature part — it has been measured against real footage for months. The effects layer is newer, and its hardest job is landing on the right frame on footage it has never seen: a batter half out of frame, a camera that got re-aimed mid-innings, a phone held sideways, a net that hides the feet. It will sometimes place an effect a beat late or size it oddly. Every effect is an independent switch, so the fix is always to turn that one off — and if you send me the clip, it becomes a test case. Genuinely: that is how most of the current ones got fixed.

Why the animation work had to be testable first

Here is the engineering opinion the animation layer is built on, and it cost something to hold.

A renderer that draws into a canvas can only be checked by a human looking at a screen. A renderer that returns a picture — a flat array of pixels, a value you can hold — can be checked by a machine, thousands of times, across every framing, in a second, with no device attached. So eleven of the twelve scenes compute their own pixels in plain Kotlin rather than calling the graphics library, which by any graphics engineer's measure is the worse tool. The full argument, including where it is genuinely a bad trade, is in values, not side effects.

What that buys is the ability to ask questions no screenshot can answer. The one that matters most in this product is a safety question, and it is asked on every build:

Across every plausible batter position, height and framing — does any scene ever paint over the batter?

That is a property, not a picture, and properties can be swept. The suite now runs 1,043 tests across 109 files, and a large share of them are geometry sweeps of exactly that shape: hundreds of poses against hundreds of heights, per scene, asserting that the opening the batter plays inside never closes on them. None of it needs a phone.

And the honest limit of all that

Scene thirteen was a graffiti tiger's face on an orange wall under a sunrise. It was built, it was wired, it passed every geometry sweep, and it compiled clean. Then I put it on a phone and looked at it.

It looked like a mole.

Every layer was individually correct and obeying its own stated rule. Several marks had withdrawn for individually good reasons — and they happened to be exactly the marks that say tiger rather than small grey animal. The scene is parked. It is not in the app you can download, and it will not be until it survives the one instrument that had anything useful to say about it: a person, looking.

🔍
I find that more reassuring than a clean sweep would have been. A test suite is a net for the failures you have already imagined. It is not an opinion about whether the thing is any good, and a team that forgets the difference ships a lot of well-tested moles. Build so the machine can check what it is able to check — then go and look at it anyway.

A constant is a hypothesis

Somewhere in this codebase is a number that decides how long a speed line is drawn. Somewhere else is the one that decides how much footage sits either side of a contact. There are hundreds of these, and every one of them is a claim about real cricket footage that could be wrong.

The tempting way to set them is to nudge one, rebuild, squint at the phone, nudge again. That is a two-minute build per squint, it does not scale past about four attempts, and — worse — it optimises the constant for the one clip you happened to be looking at.

So the constants get calibrated instead of chosen. The raw material is human-curated reference sets: real sessions where a person went through and said keep, drop, this window is wrong, this is the exact frame the ball was struck. That is ground truth, and once you have it, a constant stops being a matter of taste. You can sweep its whole range offline, score every value against what the human actually wanted, and read off which region is defensible — or discover that none of it is, and that the idea was wrong.

That last outcome is the common one, and it is the reason the method earns its keep. The colours on the speed lines are a small example: where one band ends and the next begins was set against human-curated footage, not chosen by eye — and the obvious way of measuring the same thing, the one I would have shipped on intuition, was refuted on that footage before a line of production code was written. The project keeps a graveyard file of these. Several things that sound excellent — and that I was personally sure about — are in it.

I am deliberately not walking through the signals themselves or what each sweep returned. Some of it is the part of this that took the longest to learn, and it can stay ours. The method is the part worth giving away.

Three workflows that made this possible for one person

This is a solo project. Roughly 165,000 lines of Kotlin and 391 commits since the end of May, built with AI agents doing most of the typing. Three loops are doing the real work.

1. Prototype in a browser, not in a build

Every scene exists first as a standalone HTML page with the geometry and animation in JavaScript. Iterating on a design in a browser costs a keystroke; iterating in a mobile build costs two minutes and a device. Get the composition right where it is cheap, then port. The prototypes are still in the repository beside their implementation notes — and one of the standing rules is that a prototype's numbers are evidence, never truth, because the rig and the phone disagree in ways that have burned us more than once.

2. Offline harnesses that render art without a device

Because the scenes return pixel arrays, a small Node harness can rasterise any scene at any framing and write out an image — no emulator, no phone, no Gradle. It also does something a render cannot: it counts. Every layer reports what it drew, so the harness can catch the failure mode a screenshot is blind to — a layer that drew nothing at all, which otherwise looks exactly like a layer that is behaving beautifully.

3. A different model for each step

Scene authoring runs as a pipeline, and the useful discovery was that no single model is the right tool for all of it. Each step goes to whichever model is best — and cheapest — for that specific job.

ONE SCENE, SIX STEPS, FOUR DIFFERENT MODELS 1 · Prompt Describe the archetype OPENAI 2 · Image Generate the look, visually OPENAI 3 · Describe Turn the image back into words OPENAI 4 · Prototype HTML rig you can look at FABLE / OPUS 5 · Brief Implementation doc + traps OPUS 6 · Kotlin OPUS / SONNET The expensive model writes the brief. The brief is what makes step 6 cheap.
Image models are good at look and bad at geometry. Reasoning models are good at geometry and expensive per token. Putting a written brief between them means the costly thinking happens once, and the implementation reads a specification instead of re-deriving it.

The step people skip is number three — asking a model to describe, in words, the image another model just made. It feels redundant. It is the step that makes the whole chain work, because a picture cannot be argued with and a description can: it is where "the wall is behind the batter and the opening is the tiger's muzzle" becomes a stated constraint rather than something everyone assumed.

Step five is where the cost discipline lives. The most capable model writes an implementation brief — the geometry, the invariants, the traps found in previous scenes — and a cheaper model then writes Kotlin against that brief. Doing the reasoning once, in prose, and reusing it is dramatically cheaper than paying a frontier model to re-derive the same geometry inside every code change. It is also better code, for the unglamorous reason that a specification someone can read is a thing a reviewer can disagree with.

The longer, messier account of building this way — including which agent wrote what, and the parts where they were confidently wrong — is in build with a genius, ship a machine and the ball doesn't read the docs.

You don't need a video to open the app

This started as a hedge and turned into one of my favourite parts of the product. Most people who download a cricket app do not have an hour of net footage sitting on their phone that evening. So there is a whole side of CricCuts that never touches a camera, and it works offline like everything else.

Academy

Tips & coaching

140 bite-size cues across batting, bowling, keeping and fielding — the kind of thing a coach says once and you forget by Tuesday.

Academy

The Laws of Cricket

135 searchable entries — the 42 Laws themselves, plus ways to get out, fair and unfair play, DRS, white-ball rules, and the great controversies. Settle the on-field row properly.

Academy

Did you know?

100 facts — historic, surprising and frankly odd — plus 30 short pieces on what cricket's great moments say about temperament and leadership.

Reference

Glossary & field map

49 terms and a tappable field-positions diagram. For everyone who has nodded along at "short leg" without being certain.

Utility

Offline DLS calculator

Duckworth–Lewis–Stern Standard Edition, working from the published resource table. Revised targets and par scores in seconds, at any limited-overs length — with no signal, which is exactly when rain makes you need it.

Utility

Everything, offline

All of the above works in a basement net, on a train, or at a ground with no bars. It is the same architectural decision as the video side, applied to reading.

If you have ever wanted to actually understand the game rather than just watch it, that section is worth the download on its own. It is free and there is nothing in it trying to convert you.

Now please go and play

An app that edits cricket videos has an obvious incentive to want you looking at a screen. I would rather be straight about the ordering: the footage is only worth anything because somebody went and batted.

The case for playing is not really about cricket, and it is unusually well established. Sustained aerobic activity changes the brain's chemistry in ways that favour learning and mood — the effects on executive function in children and adolescents are among the more robust findings in the field, and they show up in attention and self-regulation, not just on a fitness test.

Cricket then adds things a treadmill cannot. It is an interceptive sport: a hard ball arrives in under half a second and you must predict where it will be, not react to where it is — the skill expert batters are measurably better at is reading the bowler's body before release. It is spatial: you are solving angles, gaps and field geometry continuously, in a three-dimensional problem that changes every ball. And it is one of the few games built entirely out of distinct roles — opener, spinner, keeper, the fielder at deep midwicket who touches the ball twice in an hour and has to stay switched on anyway. Learning to hold a role inside a team that needs you intermittently is a genuinely useful thing to have practised by the age of fifteen.

Pick up a bat. Pick up a ball. Find four people and a wall. The app will still be here when you get back, and it will have something to work with.

And when you do come back with footage, there is a real mechanism behind why watching it helps. Watching an action engages much of the machinery of performing it; your brain learns from the gap between what it predicted and what actually happened; and seeing your own body do the thing is a stronger signal than being told about it afterwards. That is the subject of an earlier post — the neuroscience of learning from watching yourself — which also has an honest section on which mistakes video actually fixes and which ones it does not.

What all of this is for

Every section above is really one decision, and put side by side they are the same four commitments. They are the reason CricCuts exists, and they matter more than any single feature in this beta.

Further out, the vision is bigger than an editor. We want CricCuts to become a new-age sports media platform, starting with cricket: one that empowers athletes and content creators to build a real livelihood through brand sponsorship, and that helps brands communicate effectively with the audiences they want to reach, through the players and creators those audiences already follow. Sponsorship in cricket mostly flows to the very top of the game. Someone whose game people genuinely want to watch should be able to earn from that too.

None of that is in this beta, and none of it will change the first promise: your footage is analysed on your phone, and what you share, and with whom, stays your call. The longer version is on the about page.

What "beta" means here, and what would help

The build is finished software, not a preview. "Beta" means it ships from this website while the Google Play listing goes through review — you are getting it early and directly, and you will need to allow installs from your browser the first time, which is standard for anything outside the Play Store.

Recordings from unusual angles are especially welcome. Nearly everything here was taught by footage that did not behave — a camera at the bowler's end, a net in the way, a phone that changed orientation halfway through. The failure you send me this week is what the next person's reel is built on.

Get the beta

Free, on-device, offline. Point it at your last net session and see what it finds.

Download CricCuts → How to get the best reel

Related reading: the anchor is the interface, values, not side effects, the neuroscience of learning from watching yourself, and how a phone watches cricket and cuts the highlights itself. More on the CricCuts blog.

Comments

Thoughts, questions, corrections — all welcome. No account needed.