# GeraPersona — Full Product Summary ## What GeraPersona is the marketplace for voice + personality skins you install on robots, voice assistants (Alexa, GeraVoice), desktop AI agents (Claude-desktop, ChatGPT-desktop), and any voice-capable device or agent. Creators — professional voice actors, writers, and families recording loved ones — publish signed voice-skins with a bio, sample clip, and compatible-device manifest. Buyers browse the catalogue, listen to the 2-5 second preview, purchase, and install on their device through a single runtime. ## Why Every robot, voice assistant, and AI agent today ships with one default voice. Swapping it means learning vendor SDKs, compiling TTS models, or paying for closed platform licences. GeraPersona is the middle layer — one storefront, one billing pipeline, one runtime — that lets voice actors reach every device in the ecosystem without building 15 vendor integrations, and lets users personalise their AI without hand-editing firmware. The emotional killer-app is family voice preservation. With 30 minutes of clean audio from home videos, phone recordings, or voicemails, a grandchild can create a voice-skin of a grandparent — readable by the family robot, Alexa, or any agent that reads bedtime stories. Hollywood-style residual licensing keeps royalties in the family across generations. ## How the marketplace works 1. Creator completes Gera sign-in and Stripe Connect Express onboarding (one-time, collects identity + payout details). 2. Creator uploads a voice manifest — 2-5 second sample clip (free preview, publicly hosted) + full asset (signed + time-limited URL, post-purchase only) + semver tag + voice-model type (ElevenLabs, Coqui, Custom) + compatible-device list + bio + 1-2 paragraph persona description (speech patterns, world view, signature phrases). 3. Creator sets price in GBP pence (£1.99 minimum at launch, £49 cap). 4. Persona lands in PENDING_REVIEW. Moderators verify no unlicensed impersonation of copyrighted characters or living celebrities. Family voice-skins must have consent from the recorded person or their estate. 5. On approval the persona becomes visible in the public catalogue. The service auto-flags submissions matching known impersonation patterns (Mickey Mouse, Darth Vader, Gordon Ramsay, Morgan Freeman, etc.) with auto_reject_hint so moderators can prioritise. 6. Buyer purchases. The platform creates a Stripe PaymentIntent with application_fee_amount set to 30% (env-tunable via GERA_PERSONA_PLATFORM_FEE_BPS, default 3000bps, malformed values fail closed to default) and transfer_data.destination pointing at the creator's connected account. Stripe splits the charge automatically on capture. 7. On payment_intent.succeeded, the backend marks the purchase SUCCEEDED and increments install_count. 8. Robot / device fetches the signed bundle (time-limited URL resolved at install time, never a long-lived download link), verifies the signature, and installs into its voice pipeline. 9. Device reports install / use / uninstall events via POST /api/v1/installs/telemetry (authenticated with a fleet-scoped robot API key) so creators see real usage data. ## Revenue model - 70% to creator, 30% platform — enforced via Stripe Connect destination charges so the split happens at Stripe's level, not in app code. - Platform fee env-tunable (GERA_PERSONA_PLATFORM_FEE_BPS). Source-of-truth for fee calc lives on the backend; malformed env vars fail closed to 30%. - Founding creator offer: the first 100 personas published keep an 80/20 split for life. - Prices stored as GBP pence (Int) everywhere. Multi-currency display via the shared useCountry() hook; settlement in GBP. ## Estate royalty inheritance The first-class differentiator. Creators — especially family voice-skin authors — designate heirs in the creator dashboard. Each heir gets: - heir_user_id (Gera user) - share_percent (1..100) - signed_at timestamp - notes field for plain-language intent - revocable any time (soft delete via revoked_at) Service enforces sum of active shares ≤ 100%. The creator cannot self-designate. When the creator opts out or passes away, residuals route automatically by active shares. This is the first-class answer to the emotional use case — "I recorded my late grandfather's voice; how do I make sure the royalties go to his grandchildren for the next 70 years?" Database schema: `persona_estates` table with (creator_id, heir_user_id, share_percent, notes, signed_at, revoked_at). Unique on (creator_id, heir_user_id) so updates happen in place. CHECK constraint keeps share_percent in 1..100 at the DB layer. ## Content moderation Every new persona ships with review_status=PENDING_REVIEW. Moderators flip to APPROVED (visible to public) or REJECTED (never visible). The service surface layer (catalogue, slug lookup) refuses to return non-APPROVED rows to the public — only the creator's own dashboard sees DRAFT / PENDING_REVIEW / REJECTED personas. Impersonation flag detector scans name + bio for known copyrighted-character patterns (Mickey Mouse, Darth Vader, Yoda) and living-celebrity patterns (Gordon Ramsay, Morgan Freeman, David Attenborough, James Earl Jones). A match sets auto_reject_hint=true without blocking submission — moderators see the flag and prioritise checking for a valid talent release before approval. Uploading a celebrity voice without a signed release is grounds for immediate rejection and creator account termination. ## AI-agent interface (MCP) The @gera-services/mcp-gera-persona package registers on the public MCP catalogue. Five tools: - search_personas(query, filters) — full-text search with category / language / gender / age_range / mood / compatible_device / price band / minimum rating filters. Returns APPROVED rows only. - get_persona(slug) — full metadata including sample audio URL, version history, voice-model type. - list_categories() — returns the category tree (voice-style / language / mood / persona-type). Agents narrow search scope with this. - install_persona(robotId, personaId, version?) — triggers install on behalf of the calling user. Requires GERA_PERSONA_API_TOKEN; backend enforces user ownership. Agents must surface price + creator before invoking. - get_creator_revenue(creatorId) — lifetime revenue as a trust signal. Requires auth. Agents operating autonomously are expected to surface the purchase price and creator name to their user before calling install_persona and pass through the consent token the user signs. ## Technical architecture - Backend: services/gera-persona NestJS service, Node 20, tsc-compiled, deployed to Railway (project marvelous-gratitude, port 3109). BotBlocker middleware exempts /health + /internal/* per the Gera operational lessons doc. - Database: shared Neon Postgres via @globetura/core-database. Seven new tables: persona_categories, persona_creators, personas, persona_versions, persona_purchases, persona_installs, persona_estates. Three enums: PersonaReview, PersonaPurchaseStatus, PersonaVoiceModel. - Payments: Stripe Connect Express accounts (one per creator), destination charges (transfer_data.destination), webhooks verify signatures against STRIPE_WEBHOOK_SECRET_GERA_PERSONA. Fail-closed on unsigned events. - Frontend: apps/gera-persona-web Next.js 14 App Router, Tailwind, deployed to Vercel at persona.gera.services (subdomain of gera.services — no new TLD registered). Routes: /, /catalog, /persona/[slug], /create, /dashboard, /faq. AID artefacts: /llms.txt + /llms-full.txt static files, /robots.ts with explicit AI-crawler allow rules, /sitemap.ts, JSON-LD Organization + WebSite + SoftwareApplication on every page + FAQPage on home + FAQ routes + Product schema on persona detail. - MCP: packages/mcp-gera-persona stdio server using @modelcontextprotocol/sdk. - Audio assets: sample clips publicly hosted via MinIO/S3; full assets resolved to signed + time-limited URLs at install time (piracy gated at object-storage layer, not the app). ## Compatible devices (launch set) Robots: Boston Dynamics Spot, Unitree G1, 1X Neo, Figure 02, ROS 2-based home-built platforms. Voice assistants: Amazon Alexa, GeraVoice, Google Nest. Desktop AI: Claude-desktop, ChatGPT-desktop, custom voice-enabled agents. Voice pipelines: ElevenLabs-compatible endpoints, Coqui TTS, custom TTS integrations. Each persona version declares a compatible_devices list. The runtime reads this manifest at install time and rejects mismatches. ## Parent organisation Gera Services Ltd (UK). Unified super-ecosystem of 30 integrated products — healthcare (GeraClinic), home services (GeraHome), marketplace (GeraMarket), food delivery (GeraEats), ride-hailing (GeraRide), payments (GeraCash), insurance (GeraSure), rentals (GeraRent), agriculture (GeraFarm), education (GeraLearn), jobs (GeraJobs), podcasts (GeraCast), compliance (GeraCompliance), AI quest (PromptQuest, AI Quest), privacy (PrivacyGuard), robot skills (GeraSkills), four games (GeraCity, GeraTycoon, GeraQuest RPG, GeraRush), five 2030-infrastructure products (Nexus, Mind, Voice, Lens, Witness), and the Gera Prime everything-subscription. All products share a single sign-in and the GeraCoins loyalty currency. ## Contact - Web: https://persona.gera.services - Parent: https://gera.services - Issues: engineering@gera.services