Skip to content

Repository files navigation

Chapter

Chapter is a private iMessage agent that turns lived memories into solo experiences worth doing. The current V1 proves the experience engine before adding human matching.

VISION.md is the product source of truth.

TODAY.md holds the current day's outcomes, while DAILY_LOG.md records the verified closeout for each day.

Current slice

  • A private Photon/iMessage channel runs through Eve.
  • Only handles in CHAPTER_TEST_IMESSAGE_HANDLE are accepted.
  • Onboarding asks for one memory, then city and optional neighborhood.
  • Convex stores the Chapter profile, raw memories, experiences, and feedback.
  • “Give me an Andy” and “Give me a Marco” trigger three concurrent Parallel research lanes, followed by one OpenRouter-composed experience.
  • Every saved experience has a typed contract and at least two verification sources.
  • Save, Pass, Done, and natural feedback update the latest experience.

The existing web shell comes from an earlier product iteration. It remains in place while the Now and You surfaces are rebuilt using the visual direction from the Chapter competition project. Together, Amelia, automatic delivery, Google Calendar, and image cards are later milestones.

Architecture

iMessage → Eve → Chapter skill → Parallel evidence → OpenRouter composition
             ↘ Convex profile, memories, experiences, feedback

Eve is deliberately thin. The portable experience object and formatter live in lib/chapter/; Convex is durable product truth.

Local development

Use Node 24:

npm install
npm run dev
npm run agent:dev

The public web app is waitlist-first. Clerk sign-in, sign-up, invitations, and /app remain installed but sit behind a server-verified shared access cookie. CHAPTER_ACCESS_PASSWORD changes the shared password, CHAPTER_ACCESS_COOKIE_SECRET signs the cookie, and CHAPTER_APP_OPEN=true reopens the web app without the shared gate. Waitlist emails are stored in the Convex waitlistEntries table.

The iMessage agent uses Photon project credentials, a private sender allowlist, and a shared CHAPTER_AGENT_SECRET configured in both the app runtime and the linked Convex deployment. Composition uses OPENROUTER_API_KEY; research uses PARALLEL_API_KEY. See docs/agent-brain.md.

Verification

npm test
npx tsc --noEmit
npm run lint
npm run build
npm run agent:build

Never commit real .env files or secrets.

About

A private iMessage agent that turns lived memories into solo experiences worth doing.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages