AI PM
HomeProjectsSkillsWaterLensWritingAboutResumeContact
HomeProjectsSkillsWaterLensWritingAboutResumeContact

Projects

Three I'd show you first.

A venture I'm building, my capstone, and a product I shipped on my own. All real, all measured. Everything else is one click away.

Pedestal screen

My venture

Pedestal

An AI communication coach for high-stakes rooms. Mobile app, backend, and coach, built end to end.

iOS + Android · Flutter · Supabase

Visit pedestaltech.dev ↗
SmartCare screen

Capstone · team of six

SmartCare

Early, explainable warnings when an older adult's mobility declines. Wearable data in, activity classified, a personal baseline tracked, a risk alert out.

Macro-F1 0.774 on held-out subjects · React · FastAPI · PyTorch

Read the write-up →
gitit screen

Personal product

gitit

Reddit for repos and agent skills. Describe a problem, get ranked repos, skills or MCP servers with the reasons people voted, and install from your editor.

54x faster ingestion · Next.js · pgvector · MCP

Read the write-up →

My venture

Pedestal, the thing I'm building.

An AI communication coach for the rooms that decide careers. I build the product end to end: the mobile app, the backend, the coach, and the pitch.

Pedestal landing page

Co-founder · Jun 2026 - Present

Pedestal

The private practice room before your high-stakes room.

Rehearse the interview, the pitch, or the hard conversation out loud. Pedestal gives feedback on what you said, how you sounded, and how you showed up, picks one weakness, hands you a drill, and puts take one next to take two.

  • Flutter app for iOS and Android: 14 scenarios, 34 drills, and the full record, feedback, drill, retake loop, verified on both platforms.
  • Supabase backend with six edge functions and row level security on every table. Raw video never leaves the phone.
  • A coach quality lab: deterministic metric tiers, DSPy few-shot compilation, and DeepEval rubrics behind a live quality gate.
  • User interviews, positioning, pricing, the waitlist site, and the pitch at the UNSW Peter Farrell Cup 2026.
FlutterSupabaseDeno edge functionsDSPyDeepEvalNext.js
In build · early access waitlist openVisit pedestaltech.dev ↗

University & personal

Built with a team, evaluated honestly.

Projects from my Master's at UNSW, and a product I built for myself. Real data, real results, limits stated. Numbers come from the reports. Where a result was negative, it says so.

System overview: simulated IMU data to a training notebook, trained models, a FastAPI backend with PostgreSQL, and a React dashboard
UNSW · Capstone · Team of six

SmartCare: mobility monitoring from wearable data

Care staff need an early, explainable warning when an older adult's mobility declines. We built the full stack: upload IMU data, classify activity, track a personal baseline, and raise a risk alert.

  • Pipeline: resample 50 to 30 Hz, quality gate, 135 features per window, an MLP activity classifier with a documented heuristic fallback.
  • Explainable risk: an alert fires when a change from the person's own baseline holds, 20% for 3 days or 35% for 7 days. Low-coverage days are suppressed instead of guessed.
  • On the UCI HAPT subject-disjoint test set (4,093 windows): accuracy 0.884, macro-F1 0.774. No clinical accuracy is claimed. HAPT is not older-adult data, so history is simulated.
ReactFastAPISupabase / PostgreSQLPyTorchDocker Compose
Hand-drawn slide: what you actually want to know is whether it still works, whether it broke for anyone, and whether it works in your setup
Personal · Product + engineering

gitit: Reddit for repos and agent skills

Describe a problem and get ranked GitHub repos, agent skills or MCP servers, with the reasons people voted the way they did. Install the winner from Claude Code, Codex, Cursor or the terminal.

  • A pnpm monorepo: Next.js app and API, a core ranking package, an MCP server, a CLI and a Claude Code plugin.
  • Ranking blends relevance (0.45), community votes (0.30), repo health (0.15) and popularity (0.10). Votes decay on a 180-day half-life, and every downvote has to carry a reason.
  • Switching GitHub ingestion from REST to batched GraphQL took it from about 1,666 to 89,408 repos an hour, a 54x gain that made a full backfill a matter of hours.
Next.jsTypeScriptPostgres + pgvectorDrizzleMCP
Bar chart comparing NDCG@10, coverage and nutrition fit across eight recommenders
UNSW · Recommender Systems · Team project

Health-aware recipe recommendation

Rank 10 unseen recipes per user, then ask whether you can nudge people toward healthier choices without wrecking relevance. I built the nutrition-aware recommender and the final integration.

  • Compared popularity, TF-IDF content ranking, neural collaborative filtering, a nutrition re-ranker and four hybrids on Food.com data: 44,405 recipes, 5,000 users, 99.94% sparse.
  • TF-IDF won on NDCG@10 (0.0178). The tuned hybrid kept most of that (0.0157) while lifting coverage from 0.019 to 0.130 and nutrition fit from 0.617 to 0.634.
  • The nutrition-only re-ranker did not move nutrition fit at all. We report that as a negative result, and flag that the hybrid weights were tuned on the test split.
PythonTF-IDFNeural CFReciprocal rank fusionJupyter
The germination chamber: a seedling tray under a clear dome with an LED strip, sensors and microcontrollers
UNSW · IoT Design Studio · Team project

Mini Germination Chamber

Manual germination checks are infrequent and subjective. This chamber photographs seedlings every 30 minutes and links each germination event to the conditions that produced it.

  • Raspberry Pi hub running Home Assistant and an MQTT broker. Two ESP32-CAM nodes, an Arduino Nano 33 BLE for temperature, humidity, pressure and light, soil sensors, an LED strip and a heat pad.
  • Germination is counted from each image with a vision model, using only detections at 90% confidence or higher.
  • Six batches compared with 8 seeds each. The dark, warm, moist batch had all 8 germinated by day 3. The bright, cold, dry batch started on day 4 and reached 6 by day 6.
  • Things that broke and got fixed: soil sensor drift (per-sensor calibration), video over MQTT (moved to snapshots), lens condensation (a 3D-printed case), campus WiFi (own hotspot).
ESP32 / ArduinoRaspberry PiMQTTHome AssistantPythonOpenSCAD
View code ↗

Casework

Case studies you play, not read.

Five core AI PM skills: PRDs, evals, launch plans, risk and safety, and metrics. Each grounded in a real product from a company you know, and turned into a decision you actually make. Unofficial concept work, everything in mock mode.

A PRD that runs case study screen
AI PRDsCanva~4 min

A PRD that runs

Brand Voice Guardrails for Magic Write teams.

Every requirement carries a live acceptance check. Flip an assumption off and watch the requirements it was holding up go to at-risk.

Play it →
Judge the judge case study screen
AI evalsDuolingo~5 min

Judge the judge

Calibrating an LLM judge for AI conversation practice.

You grade six transcripts before the judge does. The gap between your scores and its scores is the actual product decision.

Play it →
Green light case study screen
AI launch plansSpotify~5 min

Green light

Rolling out AI DJ to five new markets.

A six-week launch simulator. Expand, hold, restrict, or roll back while cost overruns and safety incidents land on your desk.

Play it →
Red lines case study screen
AI risk & safetyAirbnb~4 min

Red lines

A safety case for an AI trip concierge.

Eight real attack patterns against two system prompts. Every failure files itself into a NIST-mapped risk register.

Play it →
The metric detective case study screen
AI product metricsNetflix~5 min

The metric detective

An A/B readout that looks better than it is.

Topline says ship. Three planted problems say otherwise. Find them in the segments before you make the call.

Play it →

Four AI products, two lenses each.

Evaluation, RAG, multimodal, and safe agents. Each one is a working demo, then reads two ways: an engineering case study for how it's built, and a product case study for why. Every demo runs in mock mode, so it works with no API keys.

Evaluation / LLMOpsMock demo

AgentEval Studio

An evaluation and observability workbench that compares AI prompt / RAG / agent variants on quality, cost, latency, and failure modes, and recommends a release gate. Demoed as the ship/hold gate for an airline support copilot.

AI EngineeringAI Product Management
Next.jsTypeScriptAnthropic APILLM-as-judge
Case study →Live demo
RAG / Product StrategyMock demo

SignalDesk AI

An AI product-intelligence workspace that ingests user feedback, clusters pain points, finds evidence, and generates PRDs, roadmap bets, and experiment plans, every claim cited.

AI EngineeringAI Product Management
Next.jsTypeScriptAnthropic APIOpenAI embeddings
Case study →Live demo
Multimodal / Product UXMock demo

ScreenSense QA

A multimodal UX/product QA tool that reviews UI screenshots for accessibility, friction, copy clarity, and visual hierarchy, and returns prioritised, severity-scored recommendations. Ships with a worked review of a flawed SaaS checkout, each finding pinned to the exact spot on screen.

AI EngineeringAI Product Management
Next.jsTypeScriptClaude vision (claude-opus-4-8)Structured output
Case study →Live demo
Agents / Trust & SafetyMock demo

WorkflowPilot Safe Agents

A safe-agent demo that turns a business goal into a proposed multi-step workflow, runs only human-approved tool calls, and records every action in a timestamped audit trail. Demoed on a live incident: status email, ticket, and CRM update, all behind approvals.

AI EngineeringAI Product Management
Next.jsTypeScriptClaude tool-useHuman-in-the-loop
Case study →Live demo

Side builds

Smaller things, shipped for fun.

Built for myself: a pitch coach, and a music tool because I swim.

Voice AI · web app

PitchScore AI

Practise a spoken pitch in the browser. Record it, upload it privately, get it transcribed, and get a structured scorecard from a hosted open-weight model.

Next.jsSupabaseWhisper STTGroq / OllamaZodVitest
View on GitHub ↗
Poolside's studio screen with a link box, selection panel and swim kit status
Personal · Tool

Poolside: music for swimming earphones

Bone-conduction swim earphones are a USB drive with no app. Poolside turns a YouTube Music link into files that sound right underwater and copies them over safely.

  • Downloads whole playlists, converts to FLAC or 320 kb/s MP3, and matches loudness to -16 LUFS. Swim EQ presets come with a gain-matched A/B check.
  • USB copy is SHA-256 verified and never overwrites. Deletes go to a recoverable trash.
  • Ten weekly picks every Monday morning, and a DJ-style set builder that reads tempo, key and energy.
Pythonyt-dlpFFmpegVanilla JSsystemd

Lab · from scratch

And underneath the products: the stack, built by hand.

Products show I can ship. The Lab shows I know what's underneath: 45 notebooks implementing the modern NLP and LLM stack from first principles, a regex tokenizer to RLHF.

Open the Lab →
© 2026 JP · AI Product Manager
GitHubLinkedInEmail