Your points have places to go. PointUp brings scattered loyalty balances into one travel portfolio, helps you keep them current, and makes the next useful step clearer: protect an expiring balance, reach a trip goal, or compare a qualified redemption plan.
Start with the memberships you already have. Record balances yourself or capture them from supported signed-in program pages with your consent. Explore transfer and redemption estimates, ask PointUp to explain them, and review proposed changes before they affect your portfolio.
This repository, jckail/point_bot, contains the modern TypeScript PointUp app.
The earlier Python/Selenium implementation is preserved under
legacy/python-selenium/. The legacy deployed
application and its data require a separate migration and acceptance process;
modern source or a passing CI run does not establish that migration is complete.
- Organize memberships, balance history, valuations, expiry context, notes and tags.
- Set trip goals, track progress, import/export your portfolio and share selected totals.
- Capture supported balances through the Chrome extension and consented agent flows.
- Compare deterministic transfer/redemption estimates with card eligibility and source qualifications.
- Ask the assistant about authorized portfolio data; review its balance/goal proposals separately.
- Use the same portfolio through web, MCP, a typed API client and chat/worker surfaces.
The source catalog currently contains 190 programs in nine categories. That is reference coverage, not a promise of automatic access to 190 loyalty wallets. Real provider sync needs an authorized configured adapter; live award search needs a qualified data source. Editorial values and sweet spots are estimates, not bookable prices. Feature status separates implemented features, demo/configuration paths and remaining acceptance.
Requirements: Docker with Compose v2.
docker compose up --buildOpen http://localhost:3000/dashboard. The local stack uses a fixed seeded demo user and simulated sync; it needs no Clerk, AWS or provider account. Mailpit is at http://localhost:8025, and the MCP endpoint is http://localhost:8787/mcp. The bootstrap log supplies local connection details.
npm run docker:smoke
npm run docker:downUse onboarding for the first useful portfolio and local development for Docker profiles, native setup and jobs. Development auth belongs on loopback; production uses Clerk. The demo is a product tour, not an authenticated production/provider test.
| Read | Purpose |
|---|---|
| Product | Audience hypotheses, value, core journeys and trust boundaries |
| Features | Current feature inventory and qualification limits |
| Roadmap | Outcomes, dependencies and acceptance rather than stale shipped checkboxes |
| Business plan | Customer, pricing and cost hypotheses to test |
| Onboarding | User and local-demo starting paths |
| Brand | Visual identity, voice and truthful capability language |
PointUp is a TypeScript monorepo with a framework-independent domain/application core, Next.js/React web app, Drizzle/PostgreSQL persistence and Clerk identity. Shared contracts and use cases support web, workers, MCP, bots and the native Chrome extension. Docker is the packaging baseline. The selected AWS runtime is ECS/Fargate; Supabase PostgreSQL preparation and Kubernetes preparation have separate integration and release gates.
| Path | Responsibility |
|---|---|
apps/web |
User interface, authenticated HTTP API, server actions and web composition |
apps/worker |
Sync, digests, alerts, watches, events, retention and migrations |
apps/mcp, apps/bot |
MCP and chat delivery surfaces |
apps/extension |
MV3 capture, review and assistant surface |
packages/core |
Domain, use cases, contracts, adapters, shared composition and Drizzle migrations |
packages/api-client |
Typed fetch client used by external surfaces |
plugins |
Claude plugin and generated ChatGPT Action specification |
infra |
Standalone AWS CDK application and infrastructure tests |
e2e |
Standalone MCP HTTP smoke package; its fake API is not provider acceptance |
Read architecture and CONTRIBUTING
before implementation. API details live in api.md; the current
OpenAPI route is /api/v1/openapi.json.
npm ci
npm run lint
npm run typecheck
npm run test
npm run buildThese are verification commands, not a recommendation to run overlapping heavy
jobs. Follow the contributor/resource coordination rules. Database changes use
npm run db:generate and npm run db:migrate; commit generated migrations and
preserve production backup, journal and activation gates.
- Providers and vaults, extension, agents, assistant and optimizer
- Semantic releases, AWS secrets, Supabase deployment and Kubernetes preparation
- Reconciliation, release verification and release backlog
- Security review, events and observability
Keep source releases, local browser qualification, provider connectivity, identity/data migration and AWS activation distinct. Use the dedicated release and deployment guides; direct application-stack deployment bypasses those gates. For questions about PointUp, the preferred contact is jordan@quarg.io.
The PointUp brand kit includes the modern orange and blue logo, 34 editable vector assets, accessible palette guidance and the verified Superdesign board.