Annie Rome

Don’t read a portfolio — talk to one.

CS · Psychology · AI

Scroll

About

Two lenses, one thread: how software shapes people — and how people shape software.

My degree is a double major in computer science and psychology, and both drive how I approach work. CS gave me the foundation — algorithms, systems, how to build. Psychology gave me the other half — how people interpret, react to, and actually use the things we make. That's exactly where AI products either land with users or quietly miss.

I haven't been in the seat at a company full-time yet. What I do have is a distinctive combination of skills, a stack of personal projects I can walk through in detail, and a genuine itch to be in the middle of how AI actually gets built and shipped.

Portrait

Work

Things I have actually finished and shipped.

A working portfolio: products built for myself, deployments for paying clients, and academic work I got to chase for its own sake. The technical detail under each one is the part recruiters usually ask about — so it is right there.

AI · LLM-maintained knowledge base + chatbot

ABrain

A personal knowledge base maintained by an AI agent — and the live backend for the chatbot on this site.

  • Four core operationsIngest, Query, Lint, Maintain — each a directed agent pass that reads the current wiki state before writing, keeping the knowledge graph internally consistent as it grows.
  • Markdown-native storage readable directly in Obsidian.No database, no vendor lock-in — every page is a human-editable .md file with YAML frontmatter and wikilinks, fully versioned in git.
  • Powers the chatbot on this site.The wiki is pulled in as a git submodule, sanitized at build time (names filtered, private pages excluded), bundled with a hand-authored extras file, and streamed to visitors via Claude Haiku 4.5 with prompt caching.
  • Index and change log updated on every runthe system always knows what it knows, when it learned it, and what changed. Full history lives in git.
Claude (Anthropic)MarkdownObsidianYAMLGitNext.jsVercel

SaaS platform · multi-tenant

Social Sync

A multi-tenant API platform that connects Instagram Business accounts and serves live feed data to any client site.

  • Two Meta connection pathsfull Facebook Login (with Page insights) and Instagram-only Login (no FB Page required) — with automatic short- to long-lived token exchange on connect and a daily cron job that refreshes any token within 7 days of expiry.
  • Access tokens encrypted at rest with AES-256-GCM (PBKDF2 100K-iteration key derivation, random IV + salt per record). The data-access layer encrypts transparently, so tokens never exist in plaintext above the DB boundary.
  • Distributed rate limiting and cache pre-warming on Upstash Redis, with an in-memory fallback for local development. A 30-minute cron pre-warms media and insights so public feed reads stay hot under burst traffic.
  • Role-based access control (Admin / Client) with server-side sessions, OAuth state CSRF protection, timing-safe API key comparison, per-client CORS allowlists (no wildcards), and Zod-validated request schemas at every boundary — production-grade security posture, end-to-end.
Next.jsPrismaPostgreSQL (Supabase)Upstash RedisMeta Graph APIZodAES-256-GCMJest

Equestrian · Wellington, FL

Hesslink Williams LLC

A site for a Wellington-based hunter jumper training and horse sales program — with a live Instagram feed powered by Social Sync.

  • Next.js App Router with server components for content-heavy pages, image optimization for sales horse photos, and a layout system tuned for desktop and mobile parity.
  • Live Instagram integration via Social Sync's public APIthe team posts to Instagram, the site updates itself, no CMS or manual sync required.
  • Deployed on Vercel with a custom domain, doubling as the public proof-of-concept for the Social Sync platform.
Next.jsNext.js App RouterSocial Sync APIVercelTailwindGSAP