Amika Back

About

Amika is an experimental website. Everything you see here — portraits, names, biographies — is AI-generated fiction. It does not depict real people and is not a dating service.

Main Idea & Intentions

The site is a playful way to explore atmosphere, taste, and preference: a preview of what you might look for in real life, without pretending anyone here is available to meet.

Behind the browser sits a character engine built to answer a simple question: what might European diversity look like if you started from real demographic structure — regions, migration, jobs, psychology — instead of asking a chatbot for “a random person”?

Each profile is rolled from curated data atlases, then given a voice by local language models and a face by local image models. The goal is coherence and variety: names that fit a region, stories that match a life, portraits that feel like the same person in different settings. It is a personal enthusiast project — one home workstation, no stock photos, no cloud portrait farm.

Please treat everything on Amika as software-made fiction.

How It Works

From blank slate to someone you can browse, each character moves through eight steps on a home computer:

  1. Draw the profile. A Python generator picks age, sex, ethnic cluster, name, city, job, languages, family background, lifestyle, and personality scores from European data tables — not from a photo bank.
  2. Lock the look. Before any image exists, the engine fixes facial geometry, ethnic cues, urban style, climate-appropriate clothing, and a one-sentence visual anchor so all later photos describe the same person.
  3. Write the story. A local Ollama server turns those facts into readable text: life story, daily routine, personality depth, fun facts, relationship preferences, and the self-description you read in the browser.
  4. Plan four photos. A portrait brief sketches four scenes — for example café, street, hobby, evening — with different framing and outfits but the same locked face.
  5. Save the character. Text, facts, and image prompts are stored together as a single character file in the local library.
  6. Import and review. The Character Manager loads characters into a database so they can be checked, edited, and tracked through production.
  7. Generate portraits. Local diffusion models render a main photo plus three alternate scenes. Automated checks reject obvious failures (wrong framing, broken hands) and retry with adjusted prompts.
  8. Publish. After a final human review, approved characters — text and WebP images — go live on this site for you to browse.

What data goes into a person? Characters are grouped into ethnic clusters (for example Central Germanic, Celtic, West Slavic, Iberian, Baltic, Roma, Turkish/Caucasian, and others). Each cluster has its own tables for names, cities, migration patterns, education and jobs, languages, politics, lifestyle, family structure, and appearance tendencies. Psychology uses established models (Big Five, attachment style, communication style) so traits stay consistent across the biography.

Places

If a character’s city has a place pack, a Visit button opens a separate page for that city: a short English description written by a local Ollama model, plus four photographs of landmarks and everyday sites. Those photos are downloaded from Wikimedia Commons (public domain, CC BY, or CC BY-SA only — not hotlinked) and shown with the photographer, source, license, and download date. Amika does not own these images and does not claim copyright in them; they remain under their original licenses. A few may later be swapped for the operator’s own photographs, which are credited as such.

Technical Details

Stack & workflow

  • Generator: Python procedural engine + JSON character schema (v2.0)
  • Text: Ollama on localhost (default qwen3.6:27b; gemma4:12b as a common alternative)
  • Images: FLUX.2 Klein 4B (primary; Qwen3 text encoder inside the FLUX pipeline for long identity prompts), RealVisXL V5 Lightning (SDXL fallback), optional Stable Diffusion 3.5 Large FP8 polish pass
  • Production UI: PHP Character Manager (import → database → portraits → final review → publish)
  • Live site: PHP + MySQL on IONOS; WebP portraits in public/images/new_synthetic_portraits/
  • Output per character: 1 primary + 3 variant portraits (default 896×1152), full profile in a JSON document

Visual identity pipeline

  • Facial geometry sampling (bone structure, nose, chin) to avoid a single “model template”
  • Cluster-specific ethnic facial cues from a dedicated cue library
  • Urban look archetypes weighted by city size and occupation
  • Climate and traditional clothing hints; occupation-aware outfit styling
  • FLUX.2 variants use reference-editing from the primary image to keep identity consistent

Hardware

Everything above runs on one consumer workstation — no Midjourney API, no DALL·E backend:

  • CPU: AMD Ryzen 9 9950X
  • GPU: NVIDIA GeForce RTX 5070 Ti (16 GB VRAM)
  • RAM: 64 GB

That setup is capable but not unlimited. FLUX.2 Klein 4B requires CPU offload on 16 GB VRAM. Ollama text jobs and portrait rendering share the same machine. Each character may need several diffusion passes plus QA retries, so rosters are built in sessions, not seconds. Automated quality gates catch many failures; hand anatomy, lighting quirks, or same-face drift can still slip through. We deliberately avoid paid inference APIs — you see honest local-model output rather than a polished hosted service.

Privacy note

The optional “like” feature stores only a one-way hashed IP (HMAC-SHA256) per character so each visitor can vote once. No accounts, no marketing profiles. See Legal / Privacy for details.