So we found the UGREEN Hackathon 2026 on AI NAS, said "yeah we join this," started some research... and then kinda forgot about it, twice. A few days before the deadline it came back to haunt us. This is the story of how we still got Photo Backstory in, a Skill that reads the handwriting on the back of old scanned photos, and what we'd tell anyone (especially our own teammates who are new to this) about doing hackathons with AI agents.

Spoiler: it passes UGREEN's checker with 0 errors and 0 warnings. It has also never touched a real NAS yet. Both of those are true at the same time.

Photo Backstory cover: a scanned print beside its handwritten back, reading Aunt Sarah and kids, cabin at Pine Lake, July 1974, with the names, place and date the Skill extracts

Wait, what even is a UGOS Skill

Not a system, not an app, a Markdown file. That's it. You write SKILL.md, and it tells the NAS's built-in AI which of its own agents to call, in what order, and what to do when stuff breaks.

  • No code. No scripts, no binaries, no manifests. Just SKILL.md and some Markdown references.
  • You don't do the work, the agents do. Every step is one line like delegate --target photo-agent --instruction '...'. There are six built-in agents: files, photos, documents, knowledge, media and cameras.
  • There's a checker. UGREEN ships one in their kit. Fail it and your ZIP isn't even uploadable.
  • No NAS needed for Round 1. You send a 500-word PDF and the ZIP. If you make the top 30, you get one day on a real iDX6011 Pro.

If you make the top 30, you get one day on a real iDX6011 Pro.
So it's less "build a program" and more "write really precise instructions for someone else's robots." Which, honestly, changes everything about how you should work.

How it actually went (oldest first, from vibes to PANIK):

Date (Manila) What happened
Oct 25 We found the Hackathon
Oct 26-31 silence... part 1
Oct 31 Read the rules, wrote research prompts, felt very productive
Nov 1–9 [the forgetting era]
Nov 10 Research reports came back, one per track
Nov 10 Finally downloaded UGREEN's kit. Read the real capability list. Picked the idea after gajillion tries
Nov 12 First actual team call. Built the Skill, the PDF and the Devpost text the same day
Nov 13 Team research doc with 11 more ideas (thanks Gemini)
Nov 15 Fact-checked our own team's research doc, checked who else had built what, locked the idea
Nov 15 Second pass, found a real design flaw, fixed it, made gallery images, submitted. Also wrote this(thanks claude)

If we'd just started research at Oct 25, and downloaded the kit on Oct 31, we'd have saved like a week. Lesson one, and we're not even at the lessons yet.

Picking the idea

We went with whatever we felt comfortable, then ditched it and used an idea nobody else seemed to have(besides Google and Claude(?), not the one the AI scored highest(ps. theyh all are ass). Here's why.
We ran Gemini Deep Research(Extended Thinking, at that) prompts per track: real user problems, a scoring matrix, test cases, the works. The reports came back long, very confident and very broken:

1. Every idea scored 21 to 24 out of 25 across three independent runs. When everything's an A, its totally ass. We threw the scores out.
2. The same idea showed up three times. A "B-roll video indexer" kept topping the list. Problem: it needs to search what's inside the video, and the platform can't do that, yet.
3. Nobody checked the competition. Devpost project pages are public before judging. A later report ranked a receipt reconciler and a contract-renewal tracker #1 and #2. A five-minute search found people who'd already built pretty much exactly those.

What actually helped: we took UGREEN's own example ideas (dedupe your downloads, travel albums, meeting notes, invoices, garage camera summaries) and put them on a do-not-build list(aka. dumpster. TL:DR; It's easier to prompt away for these use cases than to build one and test it blindingly). Then we looked for something that only makes sense on a NAS full of private family stuff.
That's how we landed on photo backs. Old prints have the who, when and where written by hand on the back. Scan them, and the front and back become two random files, and the writing is basically gone forever. We searched the public entries and nobody was doing it. Easy pick.

Trust the kit, not the vibes

Best thing we did, by far: open UGREEN's kit and read the capability catalog and the checker ourselves. The marketing page and the AI summaries were both wrong in ways that would've cooked us.

What we were told Who said it What the kit actually says
There are six capability areas UGREEN's own starter page 9 tools and 78 actions, including OCR and a vision model you can prompt. Way more than six
Video search can find shots by what's on screen Several AI research reports It browses a movie/TV library by title, actor, genre. No scene search. B-roll idea: dead
Add a README.md to your ZIP Starter page and an AI report The checker fails anything at the root besides SKILL.md and references/
Capability lines look like - cli -> agent An AI report Wrong heading, wrong arrow. The checker wants an exact heading and a real →
Writes need one approval each Us, in our first draft Approvals are per action: one per new tag, one per file for date changes

An AI summary of a platform is a guess about the platform. The catalog file is the platform. When they disagree, the file wins, and you only find out if you open it.

So what does it do

You point Photo Backstory at a folder of scans. It reads the backs, shows you what it found, and only writes anything after you say yes. The whole thing is one SKILL.md plus three Markdown references.

  1. Lists the scans in the folder you pick. Empty folder, or more than 200 images? It tells you and stops.
  2. Pairs fronts with backs, using names like _a/_b or just scan order. You confirm.
  3. Reads every back twice: once with OCR, once with a vision model at temperature 0. If the two disagree on a name or a number, it says "not sure" instead of guessing.
  4. Shows you a review table: names, dates, places, confidence, plus flags for blank backs, swapped pairs and date conflicts. Fix whatever you want. It also tells you how many approval pop-ups are coming, so no surprises.
  5. Writes what you approved: a Markdown "backstory index" first (that's the source of truth), then two tags per scan, one album, and optional file dates.

The five steps of Photo Backstory: list scans, pair fronts and backs, read every back twice, review the table, write what was approved

It never deletes, moves, renames or touches the EXIF of your originals, and nothing leaves the NAS. Grandma's photos stay home.

"Let it ride" part 2

Version one passed the checker. It still had a real design flaw. A second pass, this time checking every parameter instead of just every action name, caught it the day before the deadline.

  • Approval spam. Creating a tag and changing a file's date each need their own approval. Our first version tagged every name and place, which meant 20+ pop-ups for ten photos. Nobody wants that. Now it's two default tags, the rest are opt-in, and it tells you the pop-up count up front.
  • Free consistency. The vision model takes a temperature setting. Set it to 0 and the same scan gives the same reading every time. Free win, almost missed it.
  • Trust the receipt. The save action returns a verified flag. Now the index only counts as saved when that flag says so, and if it fails, nothing else gets written.
  • The word count jumpscare. Our counter said 496 words, under the 500 limit. A stricter counter, which splits vision-ocr into two words, said 528. Over. We trimmed it to 486 by the strictest count.

Passing the checker means your file is well-formed. It doesn't mean your Skill is good. Leave time for a second, slower look.

Running a few AIs at once without losing the plot

Each AI got one job, and the humans kept the decisions. The thing holding it together was one shared Markdown file.

Who Job Watch out for
Gemini (Deep Research) Big-picture research: user problems, market, idea lists Very confident numbers with no source. Inventing features the platform doesn't have
Claude Reading the kit, building the Skill and PDF, running the checker, fact-checking the research Saying "done" before anything has actually been checked
Us Picking the idea and the track, actually hitting submit Deciding stuff in a call and never writing it down

The handoff file is one Markdown doc that every AI reads first and updates after every change. One of our teammates brought the template over from another project, and it slaps. It has:

  • an Audit log, newest first, never deleted;
  • a Raw Context section only humans are allowed to touch;
  • Erroneous Context, where wrong facts go to retire (with the date and the fix) instead of getting quietly erased;
  • a Done list that only takes things a check actually passed (checker exit code 0, a real word count);
  • a Decision Log with what people said, word for word.

This is how research from one AI and a build from another lined up without anyone losing track of what was true. When one AI got something wrong, the fix went into Erroneous Context, so the next AI didn't repeat it.

The playbook (for teammates, and future us)

If you remember one thing: get the platform's real files on day one, and make every AI claim prove itself against them.

  1. Download the official kit first. Before research, before ideas. Read the capability list, run the checker on an empty Skill.
  2. Paste the real capability list into every research prompt. Tell the AI that's the full list and anything else is unverified.
  3. Put the organizer's example ideas on a do-not-build list. Everyone else is building them.
  4. Check who already built your idea. On Devpost, project pages are often public before judging, even when the gallery isn't.
  5. Ignore scores the AI gave itself. If everything is a 9/10, ask two questions instead: has someone built this already, and does it actually need this platform?
  6. Build to the checker, not the web page. When they disagree, the checker is the one deciding if you get in.
  7. "Done" means a check passed. Exit code 0, a measured word count, a file under the limit. Not "the AI said it's done."
  8. Do a second pass on the details. Approval rules, return values, option names. That's where the real problems hide.
  9. Keep one handoff file that every human and AI reads first and updates after every change.
  10. Submit early, then keep editing. Devpost lets you edit until the deadline, and a draft you forgot to submit scores a big fat zero.

What we'd do differently (a lot, honestly)

  • We lost more than a week to the forgetting era and to waiting on research before opening the kit. The kit would've killed half our ideas in an hour.
  • We decided late. The team's first real call was three days before the deadline, and a second round of research almost dragged us into the most crowded track.
  • We haven't seen it run. Round 1 doesn't need hardware, so whether it reads real cursive and faded pencil, makes albums from file paths, and shows file dates on the Photos timeline are all still open questions.
  • We leaned hard on AI. It did most of the typing and caught a bunch of its own mistakes on the second pass. It also said wrong things with total confidence, and only checking against the real files caught those. All of it is disclosed in the package.

What's next

If we make the top 30 (announced Nov 21), we get one day on a real iDX6011 Pro, and the plan is already written:

  • 20 scans with _a/_b names;
  • scans without suffixes, plus one correction during review;
  • a folder with a blank back, a swapped pair and a file with no partner.

After that, the same trick works on other handwritten stuff: recipe cards, postcards, letters. Wish us luck.