pamm-money-manager is a PAMM (Percentage Allocation Management Module) investment platform styled after a broker platform such as Headway. The platform serves two distinct audiences in one product:
The product intent is a single, trustworthy workspace where capital allocation decisions are made against legible, instrumented performance data, and where the catalog behind those decisions is actively maintained. The register is trust-through-precision: numbers are tabular and comparable, performance reads as measured rather than marketed, and the interface behaves like a serious tool used by people committing real capital.
The reference to the Headway broker platform is used only as domain context and feature-scope inspiration. It is not a binding specification, and no Headway branding, copy, or proprietary content is reproduced.
pamm-money-manager is delivered as a first-party web application with a custom interface and application-owned identity. Two accepted human personas use it: Investor and Admin.
Current delivery. The platform is a custom-UI application backed by a server-side service layer that durably stores Money Manager catalog entries, investor allocations, portfolio positions, and submissions. Identity is application-owned: investors establish their own access through self-service enrollment, admins are provisioned or invited, and both verify themselves on return before reaching protected work.
Accepted behavior. Investors browse the Money Manager catalog, open a manager's details, allocate capital to a selected manager, and monitor their portfolio and allocations. Admins browse and manage the Money Manager catalog — adding, updating, and removing entries — and review and process incoming submissions.
Ownership. All accepted human-facing work is owned by first-party application surfaces. Durable state (allocations, portfolios, catalog entries, submissions) is owned by the platform's backend. No third-party provider surface or external destination owns any accepted capability.
Narrow exclusions. This document does not introduce adjacent capabilities that the source did not accept — for example, no trading of individual securities, no payment-gateway or withdrawal workflow, no messaging between investors and managers, no reporting/analytics suite beyond portfolio monitoring, and no account-management features beyond establishing and verifying access. The Headway reference supplies domain context only and does not import Headway's feature set.
The platform is a first-party product: every screen an investor or admin uses is built and owned by this application, and every durable fact — which managers exist, who allocated what, which submissions are pending — lives in the platform's own backend.
Access is application-owned. Because an investor's allocation and portfolio are durable, private, and must remain bound to the correct person across visits, the platform establishes identity itself rather than delegating it. An investor creates their own access through self-service enrollment; an admin's access is established by provisioning or invitation rather than open self-service. Both then verify themselves on return before reaching protected work. The anonymous entry surface and the identity surfaces are deliberately separate from the protected destinations: a protected destination never owns the interaction that grants access to itself.
The current delivery horizon covers the full accepted lifecycle for both personas — discovery, allocation, monitoring, catalog management, and submission processing. Nothing in this document is deferred to a future horizon; there are no accepted future requirements in the source.
Not applicable. No reference directive in this project declares a content_source use, so no verified factual inventory is carried into this document. The Headway reference is declared inspiration_only for domain_context and feature_reference and supplies no product names, copy, facts, or capabilities.
The page inventory below is the closed, ordered page contract for this generation. Each page appears exactly once.
Each requirement is a distinct story point with provenance, lifecycle facts, and observable acceptance. Provenance is explicit for source-stated behavior, basic_default for accepted defaults, and required_inference for indispensable inferred mechanics.
FR-1 — Browse Money Managers As an Investor, I should browse the available Money Managers so that I can find managers worth allocating capital to.
FR-2 — Review Money Manager Details As an Investor, I should open a Money Manager's details so that I can judge whether to allocate capital to that manager.
FR-3 — Allocate Capital to a Money Manager As an Investor, I should allocate capital to a selected Money Manager so that I can commit funds to that manager's strategy.
FR-4 — Monitor Portfolio As an Investor, I should monitor my portfolio so that I can see my allocations and how they are developing.
FR-5 — Manage the Money Manager Catalog As an Admin, I should manage the Money Manager catalog so that the list investors browse stays accurate and current.
FR-6 — Remove a Catalog Entry As an Admin, I should remove a catalog entry so that managers no longer offered stop appearing to investors.
FR-7 — Review and Process Submissions As an Admin, I should review and process incoming submissions so that requests reaching the platform are handled.
FR-8 — Investor Self-Service Enrollment As an Investor, I should be able to establish my own access so that I can begin using the platform without waiting on provisioning.
FR-9 — Admin Invitation or Provisioning As an Admin, I should have my access established by invitation or provisioning rather than open self-service, so that admin capability is not self-granted.
FR-10 — Returning Verification for Investor and Admin As an Investor or Admin, I should verify myself on return so that my durable allocations, portfolio, and admin work remain bound to me.
FR-11 — Durable Backend Execution As the platform, I should durably store allocations, portfolios, catalog entries, and submissions so that accepted work survives across sessions and remains correct.
Product context. The Investor is a retail investor in Indonesia evaluating where to place capital. They arrive without prior knowledge of which managers exist on the platform and need to compare managers on measured performance rather than on marketing claims. Their work is decision-oriented: they are choosing between alternatives and then living with the consequences of that choice.
Primary goal. Find a Money Manager worth allocating capital to, commit capital to that manager, and then keep watching how the resulting position develops.
Distinct accepted responsibilities.
Relevant inputs and decisions. The Investor's key inputs are the amount of capital to allocate and the choice of manager. Their central decision is which manager to commit to, made against the comparable performance figures shown in the catalog and on the manager's detail surface. Their monitoring decision is whether to allocate further or leave existing allocations in place.
Interactions with other accepted participants. The Investor does not interact directly with the Admin. The relationship is indirect and material: the Admin's catalog management determines which managers the Investor can see and allocate to, and the Admin's removal of an entry determines when a manager stops being available. The Investor's own allocations are private to them and are not visible to other investors.
Observable success. The Investor can find a manager that suits them, complete an allocation that is durably recorded against their identity, and open their portfolio to see that allocation and its current figures. Success is a complete loop: discover, decide, commit, monitor.
What makes this role different. The Investor's work is evaluative and cumulative — every action either informs a capital decision or reflects the outcome of one. Their state is private and personal, and it must persist and remain bound to them across sessions. This is unlike the Admin, whose work is operational and shared: the Admin changes what everyone else sees.
Product context. The Admin operates the platform's supply side. They are responsible for the catalog of Money Managers that investors browse, and for handling the submissions that arrive at the platform. Their work is custodial: they keep the catalog accurate so that investor-facing decisions are made against correct information.
Primary goal. Keep the Money Manager catalog managed and correct, and process incoming submissions so that nothing reaching the platform goes unhandled.
Distinct accepted responsibilities.
Relevant inputs and decisions. The Admin's inputs are the catalog entry fields they author or amend and the submission content they review. Their decisions are whether an entry should be added, changed, or removed, and how each submission should be processed.
Interactions with other accepted participants. The Admin does not interact directly with the Investor, but the Admin's work directly shapes the Investor's experience: what the Admin publishes is what the Investor can browse and allocate to, and what the Admin removes disappears from the Investor's options. This makes the Admin's accuracy consequential rather than clerical.
Observable success. The Admin can add, update, and remove catalog entries and see the catalog reflect each change, and can process a submission to a decision and see its state update. Success is a catalog that matches reality and a submission queue that does not silently accumulate.
What makes this role different. The Admin's work is authoritative and shared — it changes the state that other people act on. Their access is deliberately not self-service, because the capability they hold affects the whole platform. This is unlike the Investor, whose work is private, evaluative, and self-established.
The creative direction is authoritative for this section. It names Rasmus Andersson as the muse and the headline register as systematic product craft with a hot accent — a trading terminal that feels authored, not bootstrapped. The translation into concrete tokens follows.
Color tokens — light mode (primary mode).
| Role | Token | Value |
|---|---|---|
| Background (warm paper ground, ~60% of every screen) | --bg | #F6F3EE |
| Surface (cards, tables, forms) | --surface | #FFFFFF |
| Text / primary ink (type, buttons, dark hero panel) | --text / --primary | #141517 |
| Accent (single hot accent: primary CTAs, live allocation figure, gain deltas, focus rings, active tab underline) | --accent | #E4572E |
| Muted (labels, metadata, secondary numerals) | --muted | #8A857D |
| Hairline border (light) | --border | #E5E0D8 |
| Hairline border (dark) | --border-dark | rgba(255,255,255,0.10) |
| Dark instrument panel / admin chrome | --graphite | #141517 |
| Status — positive | --status-positive | #16A34A |
| Status — caution | --status-caution | #FACC15 |
| Status — critical | --status-critical | #EF4444 |
Color rules. Warm paper ground carries roughly 60% of every screen; white surfaces hold cards, tables, and forms with 1px #E5E0D8 hairlines. Ink #141517 is the primary for type, buttons, and the dark hero panel — near-black, never blue. Tangerine #E4572E is the single hot accent and is used sparingly and meaningfully. Muted #8A857D is for labels, metadata, and secondary numerals. Deep graphite #141517 is used for the hero panel and admin chrome so dark inserts read as instrument panels. No blue, no indigo, no gradients. The generic indigo/blue-on-white SaaS template is forbidden for this project.
Typography.
clamp(44px, 9vw, 128px) for the hero statement.clamp(28px, 4vw, 48px).font-variant-numeric: tabular-nums.Shape language. Compact, precise, rectilinear. 8px radii on cards and inputs; 6px on buttons and chips; 4px on tags and table cells. Hairline 1px borders instead of shadows for structure. A single soft elevation — 0 1px 2px rgba(20,21,23,0.06) — only on floating menus. No pills except status tags. No blobs, no organic curves; every corner is a decision.
Layout. Strict 12-column grid on a 4/8pt spacing scale, max content width 1240px, gutters at 24/32/48px. Manager cards are 3-up at 1280px, 2-up at 768px, 1-up at 375px. Tables are the signature surface: left-aligned label column, right-aligned tabular numeric columns, hairline row rules, no zebra striping. Admin surfaces use a fixed 240px left rail with a numbered section list; investor surfaces use a top bar with the live portfolio value pinned right. Every numeric figure sits in a fixed-width column so digits never shift.
Imagery. The interface is the imagery: real rendered tables, sparkline charts drawn as 1px strokes, an allocation donut rendered in CSS, and schematic diagrams of how PAMM allocation flows. Where a photograph is needed (manager avatar, hero side panel), it is a tight studio-lit portrait or a macro of a printed performance report on warm paper — never stock trading floors, never handshakes, never blue-tinted cityscapes.
Accessibility of text and controls. Headlines, wordmarks, labels, numbers, card text, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling (for example font-size: clamp(...) with its mobile size) to fit, and no other element covers any part of them. Imagery, decoration, and motion may be cropped, bled off an edge, rotated, overlapped, or cut as the direction asks, provided they cover no readable text or control.
The instrument panel hero. The public entry is a split hero on warm paper. The left 7 columns hold a stacked oversized headline — "Allocate capital to proven money managers." — set in Space Grotesk at clamp(44px, 9vw, 128px) with −0.04em tracking, ink #141517 on #F6F3EE, with a single line of body copy beneath and one tangerine CTA button plus a ghost secondary. The right 5 columns hold a dark graphite panel (#141517) that bleeds off the right edge of the viewport, containing a live-looking mock of a manager performance table: tabular numerals in white and tangerine, hairline row rules, a small sparkline, and the label LIVE ALLOCATION in 13px uppercase with +0.12em tracking. A thin 2px tangerine rule runs the full width beneath the hero as a section divider.
The concept's argument is that the product's core artefact — the performance table an investor actually decides against — is the hero image. Nothing is illustrated that the product does not do. The panel is a composition of accepted content: manager identity, performance figures, and the allocation concept. It introduces no new behavior, page, or destination. The headline, body copy, and both CTAs remain fully inside the viewport at every breakpoint; the graphite panel is the element permitted to bleed off the edge, and it carries no readable text or control across the boundary.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: flat
Landing Hero Motion Brief.
cubic-bezier(0.2, 0.8, 0.2, 1): hover states on rows and cards, focus rings that snap in, a single count-up tween on the total (600ms, ease-out), and a 200ms slide-in for the allocation drawer. No parallax, no decorative loops, no bounces.LIVE ALLOCATION micro-label visible.prefers-reduced-motion, everything collapses to instant state changes: the panel renders its final figures immediately with no count-up and no skeleton-to-value transition, and all hover, focus, and drawer transitions become instantaneous. The composed layout is unchanged and fully usable.NFR-1 — Durable state. Allocations, portfolios, catalog entries, and submissions must persist durably and survive across sessions. Provenance: required_inference (durable state is required for the accepted lifecycles to be usable). Rationale: an allocation is a commitment of capital and a portfolio is a cumulative record; neither is meaningful if it does not persist.
NFR-2 — Identity-bound private state. An investor's allocations and portfolio must remain bound to that investor and must not be visible to other investors. Provenance: required_inference. Rationale: the accepted behavior creates a durable, private, value-bearing relationship that must stay attached to the correct participant.
NFR-3 — Admin access is not self-granted. Admin capability must be established through invitation or provisioning rather than open self-service enrollment. Provenance: required_inference. Rationale: admin work changes shared platform state that investors act on.
NFR-4 — Numeric legibility. All return, allocation, and portfolio figures must be rendered with tabular numerals in fixed-width columns so digits do not shift and values remain comparable across rows. Provenance: explicit (creative direction). Rationale: the product's core content is comparable performance figures; legibility is a functional requirement, not decoration.
NFR-5 — Responsive integrity of text and controls. Headlines, wordmarks, labels, numbers, card text, and controls must remain entirely inside the viewport and their container at 375px, 768px, and 1280px, and no other element may cover any part of them. Provenance: explicit (creative direction). Rationale: the platform is used on phones and desktops, and a misread figure is a real capital risk.
NFR-6 — Reduced-motion support. With prefers-reduced-motion, all motion must collapse to instant state changes while the layout remains fully usable. Provenance: explicit (creative direction).
NFR-7 — No blue or indigo in the primary/accent role. The palette must not use blue or indigo in primary or accent roles, and the generic indigo/blue-on-white SaaS template is forbidden. Provenance: explicit (creative direction).
NFR-8 — Retryable failure surfaces. Every data-loading and data-writing surface must present a retryable error state that does not discard the user's entered data or known list content. Provenance: required_inference. Rationale: the accepted lifecycles require material failure and recovery to be usable.
custom_ui: true and a first-party web application; React is the default choice for that delivery shape.requires_backend_integration: true and durable backend execution for these entities.[Default — not specified by user].[Default — not specified by user].No source-specified technology is overridden; the source names no technology, so the above are the minimal defaults consistent with the accepted delivery shape.
Assumptions.
authority: inspiration_only with uses: [domain_context, feature_reference].app_owned_identity: true, and the accepted lifecycles require durable, private, identity-bound state.page_contract_version=1.delivery_horizon: current.Constraints.
font-variant-numeric: tabular-nums so every digit occupies the same width, keeping figures aligned and comparable across rows and columns.#141517) surface used for the hero's performance table and for admin chrome, so dark inserts read as measurement instruments rather than decoration.No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!