Selected web apps that SkyPilot designed and built.
Project 1 of 5
Profile Pal
A SkyPilot product|2025–present
An AI tool that turns a short typed, spoken, or uploaded description of a rescue animal, plus an optional photo, into a ready-to-post adoption bio in the language of the rescue's choice.
Owns the product end to end. It began as her Computer Science capstone project, in response to needs that she identified while building Life4Cats Rescue. She has since revised the AI pipeline and added authentication, rate limiting, bot and spam protection, and the Supabase and Sanity integrations.
Highlights
Cost-aware AI pipeline
A two-stage pipeline on OpenAI's Responses API: GPT-5 nano extracts the animal's facts and tags the photo, then GPT-5 mini writes the bio. Keeping extraction and tagging on the smaller model and generation on the larger one cuts the cost of every bio.
Voice or text
A rescue records a description or types one, and OpenAI's Whisper model transcribes the recording.
Any language in, any language out
The description can be in any language, and the bio is written in the language that the rescue chooses, or in the description's own.
Publishes to Sanity
A rescue connects its Sanity CMS, and the app writes the bio and photo straight into the rescue's animal records through Sanity's API, in one transaction. The rescue's Sanity token is stored encrypted.
Abuse protection
Upstash Redis rate-limits requests, and Cloudflare Turnstile blocks bots and spam.
Tech stack
Frameworks
Next.js
React
Tailwind CSS
Headless UI
Integrations
OpenAI
Supabase
Sanity
Cloudinary
Upstash Redis
Cloudflare Turnstile
OpenAI: GPT-5 mini and GPT-5 nano for text and photo tagging, Whisper for speech-to-text
Languages
TypeScript
Project 2 of 5
Life4Cats Rescue
Client: Life4Cats Rescue|2024–present
The website of a cat rescue near Târgu Mureș, Romania, where visitors meet the cats up for adoption, donate, and get in touch, in English, German, and Romanian.
Owned, designed, and coded the site end to end, through the whole development cycle, working directly with the rescue.
Highlights
Multilingual
The whole site, every animal's profile included, renders in English, German, and Romanian. i18next serves the interface text from one catalogue per language, each animal's profile has a field per language in Sanity, and every language has its own prerendered URLs.
Sanity CMS
The rescue manages its animals and its pages in Sanity Studio, and Cloudinary serves the images.
Filterable adoption list
Visitors narrow the animals by type, sex, age, breed, and special needs, and by whether an animal gets on with cats, dogs, or children. The build pulls the published animals from Sanity, and the filters run instantly in the browser.
Connected to Profile Pal
Profile Pal writes a new animal's bio and photo straight into the rescue's Sanity dataset as a draft, so a listing goes from description to published without retyping.
Tech stack
Frameworks
React
Vite
React Router
Tailwind CSS
Headless UI
Integrations
Sanity
Cloudinary
PayPal
Languages
TypeScript
Project 3 of 5
Wash'Em
Client: Centre for Affordable Water and Sanitation Technology (CAWST)|2022–2023
A tool that guides humanitarian teams through assessing a crisis setting and generates tailored recommendations for a handwashing behaviour-change program.
Led the frontend. Redesigned and prototyped the interface, including the eight-stage Program Designer, a dynamic form. Coded the component library and set up the translations.
William Thorsen
Built the Program Designer engine, the logic that determines the recommendations, and integrated Auth0.
Highlights
Guided assessment
Branching form logic takes a team through the assessment and generates interventions specific to its setting. Used by 94+ organizations, including UNICEF, World Vision, and Oxfam.
Program Designer engine
The Program Designer engine is a separate package that turns the questionnaire's answers into recommendations.
Multilingual
Vue I18n serves the app and its questionnaire in English, French, and Spanish.
Partners
A collaboration of CAWST with USAID, Action contre la Faim, and the London School of Hygiene & Tropical Medicine (LSHTM).
Tech stack
Frameworks
Vue 3
Vite
Pinia
Vue Router
Vue I18n
Tailwind CSS
Headless UI
Integrations
Auth0
Sentry
Google Analytics
Languages
TypeScript
Project 4 of 5
WASH Resources
Client: Centre for Affordable Water and Sanitation Technology (CAWST)|2021
A library of CAWST's water, sanitation, and hygiene (WASH) training resources, where practitioners find materials to learn from and to teach others.
Designed and prototyped the interface, built the component library, and worked with stakeholders to build the interactive infographics from scratch.
Highlights
Component library
SkyPilot designed the interface and built a component library for dynamic content uploaded by organizations in the WASH sector. The content is documents, videos, and collections, often multilingual, that anyone can download.
Multilingual, right to left
English, French, and Spanish, plus Arabic in a right-to-left layout.
Searchable library
Algolia searches the whole collection, and visitors filter the results.
Interactive infographics
Hand-built in HTML, CSS, and TypeScript, without a charting library.
Tech stack
Frameworks
Vue 3
Vue I18n
Tailwind CSS
Integrations
Sanity
Algolia
Intercom
Auth0
Languages
TypeScript
Project 5 of 5
COVID-19 Hygiene Hub
Client: Centre for Affordable Water and Sanitation Technology (CAWST)|2020–2023
A multilingual resource hub that gives COVID-19 response teams in low- and middle-income countries evidence-based guidance on hygiene and outbreak programming.