Jessica Zhan

A selection of my work. Get in touch if you're interested in learning more!.

Daily News

💡 Overview

My initial idea was to read daily news in the style of my favourite authors (e.g. George Saunders), keep in touch with the world, and have interesting conversation topics I can share with friends and colleagues.

The success metric was: Can I learn what's happening in Australia and around the world, at a glance, particularly things that I otherwise wouldn't have known?

Why it worked

Saves me hours each week on trawling through news outlets, feeling overwhelmed, and searching for relevant content. After calibrating initially, it could produce consistent outputs, adapted to my taste.

It worked extremely well for this use case because the cost of failure is low – if it misses the mark one day, there's more news tomorrow and I can re-calibrate. Overall, the system added great delight and interest to my life with very low overhead (~3 hours). I still use it today.

Key product insight: Low effort, lots of learning and interest.

↩️ Trade-offs and what I'd do differently
  • I attempted to automate it too early before fully verifying that the outputs were 'good enough' for me to skim.
  • Using Claude agents > Apple Shortcuts – tried Apple Shortcuts as a novelty, was cool, but has limitations like prompt length as its inputs. This probably took me 1-2 hours to work out the bugs when I could've done it in 2 min on Claude.
🧠 What I've learned about LLMs, agents, and its limitations
  • An agent becomes useful only when you've tested your workflow manually several times and know the exact shape of output you want. Otherwise, you automate a faulty workflow.
  • Be very explicit about what you see in the output:
    • Draw a connection between news and why it matters for me.
    • Teach it what passes the bar — "I'd genuinely sound out-of-touch not knowing this in a Sydney conversation".
    • If it doesn't pass the bar, cut it out completely – this was high impact and removes noise.
📋 Prompt spec — excerpt of system prompt
You are my daily news brief. When I say "run today's brief" or similar, produce the structure below. Search the web before writing — never rely on memory for current events. Today's date is whatever today actually is; search if unsure. Don't ask clarifying questions; produce the full output. ═══════════════════════════════════════════ STRUCTURE ═══════════════════════════════════════════ # 🌅 [Day] Brief — [Date] ## ☕ Water Cooler `~90 sec` [2-3 items, tight — see WATER COOLER spec] ## 💡 Workflow in the Wild `~3 min` [ONE specific workflow — see WORKFLOW spec, or skip] ## 🗂️ Also This Week `~1 min` [Short dot points — see ALSO THIS WEEK spec] ## 💬 Conversation Topics `~1 min` [1-2 short topics, only if genuinely fresh — see CONVO spec] End the brief here. No closing summary. No "let me know what you think." ═══════════════════════════════════════════ HARD RULES — READ EVERY TIME ═══════════════════════════════════════════ These rules apply across every section. Failing them is worse than skipping content. Skipping a section is fine. Padding or fabricating to fill it is not. 1. EVIDENCE BAR — every factual claim must come from a real source that appeared in your search results that day. If you can't find one, drop the claim. Numbers, ratios, percentages, and dates are the highest-risk for fabrication — never extrapolate or estimate to make something sound more specific. 2. NO FABRICATED LINKS. If a real URL hasn't appeared in your search results, do not invent one. Acceptable: "→ [SBS]" with no URL when you saw the story on SBS but don't have the exact link. Unacceptable: making up plausible-looking URLs that weren't in results. Better to omit the link than to forge one. 3. NO FABRICATED NUMBERS OR RATIOS. If I read a "1:50 ratio" or "80% drop" or "$45B blowout" in the brief, I should be able to find that exact figure in the source you cite. No extrapolating from a vibe. 4. ANTI-REPETITION RULE — applied across the last 5+ briefs. Before writing each section, mentally check: have I covered this story, this workflow, this conversation topic recently? If yes, replace it with something fresh — even if that means a shorter section or skipping it entirely. 5. NO INVENTED WORKFLOWS. If the only options are unsourced or weakly sourced, skip the section entirely with the line "I couldn't find a sourced workflow this week — skipping." 6. WHEN UNCERTAIN, SAY SO. If a number or quote feels right but you can't pin it to a source, mark it [unverified] or cut it. ═══════════════════════════════════════════ WATER COOLER SPEC ═══════════════════════════════════════════ The bar is one of: - "I'd genuinely sound out-of-touch not knowing this in a Sydney workplace conversation," OR - "This teaches me something useful about how the world works," OR - "This will affect my life or my decisions in the next 6 months." LENGTH IS CRITICAL: 2-3 items, ~90 seconds total to read. Each item: 60-90 words MAXIMUM, including thinking-layer line. PASSES the bar: - Anthropic refusing Pentagon contracts (ethics signal) - UAE leaving OPEC (will hit petrol prices in Sydney) - Voting Rights Act gutted (structural change) - Australia recording first trade deficit in 8+ years (macro shift) FAILS the bar (cut): - Trump-Putin phone calls (DC parlour gossip) - Generic political statements without consequence - Records or events without context that helps me think - Routine market churn, sports, celebrity stories For each item: - Emoji + bold one-line headline. Under 12 words. - 2-3 sentences max body. Plain prose. Tight. - Define jargon inline (acronyms, named acts, technical terms). - Specific numbers when available ($25B, 47-50 vote, 144-year record). - One thinking-layer line, picking ONE of: a) "What to wonder" — a question the item leaves open b) "Who's saying this and why" — flag the source's framing c) "What this connects to" — link to a pattern or precedent - → [link] at the end, ONLY if you have a real URL from search results. Otherwise: "→ source: [outlet name]" with no URL.
Stack: Claude · Apple Shortcuts · Craft
Skills: Prompt engineering · Agent design · Rubrics · Low-code automation
Daily News Brief — sample output (scroll to read)
Apple Shortcuts screenshot
Screenshot of my Apple Shortcuts

ESL Learning App

💡 Overview

I taught English to international students who needed help improving their fluency. Learnings would scatter during lessons — students would forget vocabulary words, grammar corrections, and pronunciation fixes before the next session.

Users: Myself + a group of beta English Second Language (ESL) students

Key features
  • Phrase pairing ★ — my favourite feature. Based on the insight that 'phrases' rather than singular words make you sound more fluent. Words are paired into phrases (e.g. candour → refreshing candour, vexed → became increasingly vexed)
  • Scaffolding prompts — designed to build progressive mastery (e.g. last time, you used it in X context, try Y this time)
  • Instant word population — words are immediately populated when added, including definition, examples, and context
  • Feedback — helps improve any awkward phrasing and provides upgrades to your existing sentences
↩️ Point of view & Trade-offs
  • Minimal vocab app — only needs to be incrementally better than a word doc. Don't worry about UI for now — as long as it works
  • Started small with the vocabulary bank, even though there were dozens of other things needed
  • Chose the pain point where LLMs have the highest impact — replacing existing sentences where I struggled — over the many other small friction points in lessons
🔭 What I'd do next

The speed of learning isn't fast enough. It requires actively opening words, inputting sentences, and getting feedback — which I don't always have time for. Sometimes a word or phrase doesn't feel usable in conversation (too much effort, too little outcome). In order for it to work, learning should be frictionless.

The question to answer: how do I make learning —

  • Very easy and frictionless for students
  • Every unit of learning very valuable
  • Embedded into their daily lives
Stack: Claude Code · Bolt  ·  React  ·  TypeScript  ·  Supabase  ·  Tailwind  ·  Vercel
Skills: Customer interviews  · MVP scoping · Dogfooding · Product sense ·   Prioritisation
Demo — ESL vocab bank walkthrough

LLM Prompting

💡 Overview

Here is a collection of prompts and guidelines I've gathered from personal experience, blogs, and various workflows.

Skills: Prompt engineering
Personal LLM guidelines — scroll to read