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.

Inspired by Andrej Karpathy's idea of a living knowledge system. I drop sources — documents, papers, notes — into a raw/ folder; an agent ingests them, extracts entities, concepts, and claims, and builds a structured wiki of interlinked markdown pages. Unlike ChatGPT or NotebookLM, knowledge compounds: connections are pre-built, contradictions are pre-flagged, and every page stays consistent with the whole. The wiki also doubles as the source of truth for the 'Ask Annie' chatbot on this site — when you talk to it, you're talking to me through my own knowledge base.

Inside the build

Four core operations — Ingest, 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 run — the system always knows what it knows, when it learned it, and what changed. Full history lives in git.

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.

Built solo end-to-end as the infrastructure layer other products plug into: each tenant authorizes once via Meta OAuth, then any number of downstream sites consume normalized feed data through a public, per-client API. Clients get a slug and an API key; their website hits one endpoint and gets formatted feed JSON back. I handle OAuth, token encryption, automatic refresh, rate limiting, and caching — clients never touch Meta's Graph API directly. Live in production, currently powering the Instagram feed on the Hesslink Williams site.

Inside the build

Two Meta connection paths — full 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.

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.

Designed and built the full site for the team around Geoffrey Hesslink: programs, sales, media, and contact — a real production deployment for a working business, not a template.

Inside the build

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 API — the 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.