Annie Rome

Design-minded engineer building with AI.

I care just as much about how something feels to use as how it works under the hood. Grounded in computer science and psychology, I build products that find practical ways to put AI into a business — not just a pitch deck.

Open to full-time roles in AI & software engineering

About

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

My training is in computer science and psychology. CS taught me algorithms, systems, and how to build; psychology taught me measurement, bias, and how humans interpret what they see — which is exactly where AI products succeed or quietly fail.

I do not have years of industry war stories yet. What I do have is curiosity, coursework and personal projects I can talk through in detail, and a strong appetite to grow inside a team that cares about responsible, human-aware AI engineering.

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.

Stack

Claude (Anthropic) · Markdown · Obsidian · YAML · Git · Next.js · Vercel

Live at

github.com

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.

Stack

Next.js · Prisma · PostgreSQL (Supabase) · Upstash Redis · Meta Graph API · Zod · AES-256-GCM · Jest

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.

Stack

Next.js App Router · Social Sync API · Vercel · Tailwind

Fintech · forex copy trading

Relay

A landing site and brand for an introducing broker that connects everyday traders to automated copy-trading on PU Prime — built for trust in a category notorious for the opposite.

A calm, dark visual system designed to feel more like a serious financial product than a get-rich-quick pitch, with a live market UI, a guided three-step onboarding flow, and the structured data needed to compete in a high-intent search vertical.

Inside the build

Server-side rendered Next.js with streaming for fast first paint on a content-heavy single-page experience, plus dedicated /about and /risk-disclosure subroutes for compliance copy.

Schema.org structured data (FAQPage, HowTo, Organization, FinancialProduct) wired into every section so the site earns rich SERP results in a competitive forex category.

Custom typographic system on the Outfit variable font with a dark #0B0D12 base, lifestyle photography, and a mobile-first responsive layout tuned for trust and legibility.

Stack

Next.js · React · Outfit (variable) · Schema.org · next/image

Educational game · complexity theory

NP Complete Escape Room

An interactive escape room game that teaches non-technical audiences the concepts of P vs. NP complexity theory — presented at the Undergraduate CSSME Research Conference.

Most people's eyes glaze over when you say 'NP-hard.' This project flips that: players work through a series of puzzles that are secretly structured around complexity classes, and by the time they escape, they can explain the difference between P and NP themselves. Play-testers reported improved understanding and genuine confidence explaining the concept after a single session.

Inside the build

Puzzle design maps directly to complexity theory concepts — verification vs. solving, exponential blowup, and reduction — so gameplay mechanics teach the theory without naming it.

Progressive difficulty mirrors the structure of NP completeness: early puzzles are polynomial-time solvable by design; later stages surface the core hardness without overwhelming players.

User study conducted with non-CS participants; post-session surveys showed measurable improvement in conceptual understanding and self-reported confidence explaining P vs. NP.

Presented at the University of Tampa Undergraduate CSSME Research Conference, demonstrating the viability of game-based learning for abstract computer science topics.

Stack

Python · Game Design · Algorithm Complexity · User Research

Repository

github.com