feat: add structured logging infrastructure and SDLC extensions

Major changes:
- Add internal/logging package with field constants, context propagation,
  sensitive data auto-redaction, and per-component log levels
- Add worker timeout constants (TimeoutQuickOp, TimeoutHealthCheck, etc.)
- Extend SDLC with callback handlers, generate endpoints, and executor
- Add new cookbook trees for aeries and slackpath progression
- Add skeleton templates for queue, realtime, and microservices
- Add worker component template with async job processing
- Refactor services and handlers to use new logging infrastructure
- Split component.go into component_infra.go and component_listing.go

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
jordan 2026-02-04 22:56:04 -07:00
parent 1790afd0ee
commit d69da6d627
1053 changed files with 84584 additions and 831 deletions

View File

@ -38,6 +38,7 @@ Run Claude Code instances in isolated Kubernetes pods with REST API control. Ena
| **Debug external system health** | [ops/external-health-diagnostics.md](.claude/guides/ops/external-health-diagnostics.md) |
| **SDLC orchestration** | [services/sdlc.md](.claude/guides/services/sdlc.md) |
| **Visual verification (Playwright)** | [services/visual-verification.md](.claude/guides/services/visual-verification.md) |
| **Structured logging** | `internal/logging/` - field constants, context propagation, redaction |
## Critical Rules
@ -51,10 +52,11 @@ Run Claude Code instances in isolated Kubernetes pods with REST API control. Ena
- **500-line limit:** Files exceeding 500 lines must be split
- **Tests:** All handlers and services require tests
- **Multi-step ops:** NEVER log-and-continue after partial failure. Rollback or document partial state.
- **Logging:** Use injected `*slog.Logger` only. NEVER `fmt.Println`, `log.Fatal`, `log.Printf`, or bare `slog.Info()`. Error key is ALWAYS `"error"` (not `"err"`). Log once at boundary (handlers/workers log, services return errors).
- **Logging:** Use `logging.FromContext(ctx)` or injected `*slog.Logger`. NEVER `fmt.Println`, `log.Fatal`, `log.Printf`, or bare `slog.Info()`. Error key is ALWAYS `"error"` (not `"err"`). Use field constants from `internal/logging/fields.go` (e.g., `logging.FieldProjectID`, `logging.FieldError`). Log once at boundary (handlers/workers log, services return errors). Sensitive data (passwords, tokens, keys) is auto-redacted.
- **HTTP clients:** NEVER create `&http.Client{}` without a `Timeout` field. All HTTP clients must have explicit timeouts (30s standard, 5s for health checks). A bare client can hang indefinitely.
- **Config:** Use `envutil.GetEnv()` / `GetEnvInt()` / `GetEnvBool()` from `internal/envutil` for all env var reads with defaults. NEVER define local `getEnv` helpers — they duplicate and drift. Raw `os.Getenv()` is fine for required values with no default (secrets, passwords).
- **Handler timeouts:** NEVER use inline `time.Duration` in `context.WithTimeout` inside handlers. Use constants from `internal/handlers/timeouts.go`: `TimeoutFastLookup` (5s), `TimeoutLookup` (10s), `TimeoutStandard` (30s), `TimeoutHeavyWrite` (60s), `TimeoutOrchestration` (90s), `TimeoutLongRunning` (10m).
- **Worker timeouts:** NEVER use inline `time.Duration` in `context.WithTimeout` inside worker code. Use constants from `internal/worker/timeouts.go`: `TimeoutQuickOp` (5s), `TimeoutHealthCheck` (10s), `TimeoutMaintenance` (30s), `TimeoutWorkExecution` (10m).
- **Response helpers:** Use `api.WriteUnauthorized`, `api.WriteForbidden`, `api.WriteBadRequest`, `api.WriteNotFound`, `api.WriteInternalError` instead of bare `api.WriteError` with status codes. Only use `api.WriteError` directly for custom error codes (e.g., KEY_REVOKED, IP_NOT_ALLOWED).
- **Auth scopes:** EVERY route in a handler's `Mount()` function MUST use `r.With(auth.RequireScope(...))`. Use `ScopeProjectsRead` for GET endpoints, `ScopeProjectsExecute` for mutation endpoints. Use the appropriate domain scope (e.g., `ScopeQueueRead`, `ScopeBuildWrite`) when available. Admin-only endpoints use `auth.ScopeAdmin` alone. See `internal/handlers/builds.go` for the canonical pattern.
- **JSON decoding:** ALWAYS use `api.DecodeJSON(r, &req)` to decode request bodies. NEVER use raw `json.NewDecoder(r.Body).Decode()`. The helper handles nil body, EOF, and returns typed errors. Decode error message is always `"invalid request body"`.

View File

@ -1,6 +1,15 @@
# rdev claudebox - Claude Code in a container
# v0.3 - Git integration
# v0.4 - Git integration + SDLC CLI
# Build stage for Go binaries
FROM golang:1.25-alpine AS builder
WORKDIR /build
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o sdlc ./cmd/sdlc
# Runtime stage
FROM ubuntu:22.04
# Prevent interactive prompts during package installation
@ -26,6 +35,9 @@ RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
# Install Claude Code CLI
RUN npm install -g @anthropic-ai/claude-code
# Copy sdlc binary from builder stage
COPY --from=builder /build/sdlc /usr/local/bin/sdlc
# Configure git for rdev-bot identity
RUN git config --global user.name "rdev-bot" \
&& git config --global user.email "rdev@orchard9.ai" \

View File

@ -0,0 +1,63 @@
# Aeries Preparation Analysis
The Aeries project follows an "Evolutionary Architecture" path: Monolith -> Split -> Distributed. This requires specific preparation to ensure the Monolith is built in a way that *can* be split later without a full rewrite.
## 1. The Critical Pattern: "Interface-First"
For `aeries-1-genesis` to succeed as a precursor to `aeries-2-simulation`, the Core API must NOT tightly couple its HTTP handlers to its Logic.
**BAD Pattern (Hard to split):**
```go
// Handler directly calls DB logic
func CreateAgent(w, r) {
db.Exec("INSERT INTO agents...")
}
```
**GOOD Pattern (Easy to split):**
```go
// Handler calls Interface
type AgentService interface {
Create(ctx, agent) error
}
func CreateAgent(svc AgentService) http.HandlerFunc {
return func(w, r) {
svc.Create(...)
}
}
```
**Requirement:** We need to update the `go-api` template (or the `implement-feature` prompt instructions) to enforce this Hexagonal/Clean Architecture style.
## 2. Infrastructure Gaps
Aeries uses standard components, but expects them to be "peelable".
* **Postgres:** Required immediately (same as Slack path).
* **React App:** Required immediately. We have `astro-landing`, but do we have a robust `app-react` template? The cookbook assumes `type: app-react`.
* *Action:* Check `internal/adapter/templates/templates/app-react`. If missing, create it (likely based on Vite + Tailwind).
## 3. SDLC Commands for Evolution
The later stages of Aeries depend on the Agent's ability to Refactor.
* **`refactor-extract` Command:** We need a command that specifically handles the "Phase 2" logic:
1. Copy package `X` to new Service `Y`.
2. Delete package `X` from Core.
3. Generate `X_Client` in Core that talks to Service `Y`.
## 4. Preparation Checklist
### Immediate (For Genesis)
1. [ ] **Templates:** Verify/Create `postgres` and `app-react`.
2. [ ] **Instructions:** Update `.claude/skills/code-review` or create `.claude/skills/go-architecture` to enforce Interface-based design so the agent doesn't write spaghetti code.
### Future (For Simulation/Society)
3. [ ] **Command:** Create `.claude/commands/extract-service.md`.
4. [ ] **Template:** Ensure `worker` template exists (for the Simulation tick).
5. [ ] **Template:** Ensure `redis` template exists (for the Society pub/sub).
## Risk Assessment
The biggest risk to Aeries is that the Agent writes a "Script Kiddie" monolith (everything in `main.go` or tight coupling) which becomes impossible to refactor autonomously. We must prompt-engineer the "Good Architecture" into the system *before* the first line of Aeries code is written.

View File

@ -31,6 +31,9 @@ type Config struct {
OpenCodeUsername string // Basic auth username (default: "opencode")
OpenCodePassword string // Basic auth password
// Internal API token for service-to-service callbacks
InternalToken string
// Infrastructure adapters (threesix.ai) - fallback values if not in credential store
GiteaURL string
GiteaToken string
@ -96,6 +99,9 @@ func loadConfig() Config {
OpenCodeUsername: envutil.GetEnv("OPENCODE_USERNAME", "opencode"),
OpenCodePassword: os.Getenv("OPENCODE_PASSWORD"),
// Internal API token for service-to-service callbacks (e.g., SDLC callbacks)
InternalToken: os.Getenv("INTERNAL_TOKEN"),
// Infrastructure adapters (fallback if not in credential store)
GiteaURL: envutil.GetEnv("GITEA_URL", "https://git.threesix.ai"),
GiteaToken: os.Getenv("GITEA_TOKEN"),

View File

@ -3,7 +3,6 @@ package main
import (
"context"
"log/slog"
"os"
"strings"
"time"
@ -19,6 +18,7 @@ import (
"github.com/orchard9/rdev/internal/adapter/memory"
"github.com/orchard9/rdev/internal/adapter/postgres"
redisadapter "github.com/orchard9/rdev/internal/adapter/redis"
sdlcadapter "github.com/orchard9/rdev/internal/adapter/sdlc"
"github.com/orchard9/rdev/internal/adapter/templates"
"github.com/orchard9/rdev/internal/adapter/woodpecker"
"github.com/orchard9/rdev/internal/adapter/zot"
@ -26,6 +26,7 @@ import (
"github.com/orchard9/rdev/internal/db"
"github.com/orchard9/rdev/internal/envutil"
"github.com/orchard9/rdev/internal/handlers"
"github.com/orchard9/rdev/internal/logging"
"github.com/orchard9/rdev/internal/metrics"
"github.com/orchard9/rdev/internal/middleware"
"github.com/orchard9/rdev/internal/port"
@ -40,9 +41,13 @@ import (
var version = "dev"
func main() {
logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{
Level: slog.LevelInfo,
}))
// Initialize structured logging from environment configuration
logCfg := logging.ConfigFromEnv()
appLogger := logging.New(logCfg)
logging.SetDefault(appLogger)
// Create slog.Logger for compatibility with components that haven't migrated yet
logger := appLogger.Slog()
// Initialize telemetry (OpenTelemetry)
telCfg := telemetry.DefaultConfig()
@ -224,34 +229,46 @@ func main() {
WithCodeAgentRegistry(agentRegistry)
// Create work service (for worker pool task management)
workService := service.NewWorkService(workQueueRepo, service.WorkServiceConfig{
Logger: logger,
}).WithWebhookDispatcher(webhookDispatcher)
workService := service.NewWorkService(workQueueRepo).WithWebhookDispatcher(webhookDispatcher)
// Initialize operation tracking (for debugging project failures)
operationRepo := postgres.NewOperationRepository(database.DB)
operationService := service.NewOperationService(operationRepo, logger)
operationService := service.NewOperationService(operationRepo)
// Initialize worker pool infrastructure
workerRegistryRepo := postgres.NewWorkerRegistryRepository(database.DB)
buildAuditRepo := postgres.NewBuildAuditRepository(database.DB)
// Create worker service (manages worker lifecycle and task assignment)
workerService := service.NewWorkerService(workerRegistryRepo, workQueueRepo, logger).
workerService := service.NewWorkerService(workerRegistryRepo, workQueueRepo).
WithBuildAudit(buildAuditRepo)
// Start worker health checker (marks stale workers offline)
go workerService.StartHealthChecker(context.Background())
// Create build service (orchestrates build submission and tracking)
buildService := service.NewBuildService(workQueueRepo, buildAuditRepo, logger)
buildService := service.NewBuildService(workQueueRepo, buildAuditRepo)
// Create verify service (orchestrates verify task submission and tracking)
verifyService := service.NewVerifyService(workQueueRepo, logger)
verifyService := service.NewVerifyService(workQueueRepo)
// SDLC lifecycle management (kubectl exec into project pods)
sdlcExec := kubernetes.NewSDLCExecutor(kubernetes.SDLCExecutorConfig{Namespace: namespace, Logger: logger})
sdlcService := service.NewSDLCService(sdlcExec, projectRepo, service.SDLCServiceConfig{Logger: logger})
sdlcPodExec := kubernetes.NewSDLCExecutor(kubernetes.SDLCExecutorConfig{Namespace: namespace, Logger: logger})
// Worker-based SDLC executor (for skeleton/monorepo projects without dedicated pods)
workerSDLCExec := sdlcadapter.NewWorkerSDLCExecutor(sdlcadapter.WorkerSDLCExecutorConfig{
WorkQueue: workQueueRepo,
DB: database.DB,
Logger: logger,
})
// Create SDLC service with dual executor support
sdlcService := service.NewSDLCServiceWithWorker(
sdlcPodExec,
workerSDLCExec,
projectRepo,
database.DB,
)
// Pod git operations (shared between build executor and SDLC orchestrator)
var podGitOps *worker.PodGitOperations
@ -273,7 +290,6 @@ func main() {
agentRegistry,
gitCommitter,
projectRepo,
service.SDLCOrchestratorConfig{Logger: logger},
)
// Create app
@ -285,6 +301,11 @@ func main() {
// Add telemetry middleware (first to capture all requests)
app.Use(telemetry.Middleware(telCfg.ServiceName))
// Add request logging middleware (enriches context with request ID and logs requests)
logMiddlewareCfg := logging.DefaultMiddlewareConfig()
logMiddlewareCfg.Logger = appLogger
app.Use(logging.Middleware(logMiddlewareCfg))
// Add metrics middleware (before auth to track all requests)
app.Use(metrics.Middleware)
@ -326,7 +347,6 @@ func main() {
DefaultGitOwner: infraCfg.GiteaDefaultOrg,
DefaultDomain: infraCfg.DefaultDomain,
ClusterIP: infraCfg.ClusterIP,
Logger: logger,
},
)
// Wire optional database and cache provisioners
@ -356,7 +376,7 @@ func main() {
)
// Initialize project management handler
projectMgmtHandler := handlers.NewProjectManagementHandler(projectInfraService, logger).
projectMgmtHandler := handlers.NewProjectManagementHandler(projectInfraService).
SetOperationService(operationService)
// Initialize component service and handler (for monorepo component management)
@ -371,12 +391,17 @@ func main() {
service.ComponentServiceConfig{
DefaultGitOwner: infraCfg.GiteaDefaultOrg,
RegistryURL: infraCfg.RegistryURL,
Logger: logger,
},
)
componentsHandler = handlers.NewComponentsHandler(componentService, logger).
).
WithDatabaseProvisioner(dbProvisioner).
WithCacheProvisioner(cacheProvisioner).
WithCredentialStore(credentialStore)
componentsHandler = handlers.NewComponentsHandler(componentService).
SetOperationService(operationService)
logger.Info("component service initialized")
logger.Info("component service initialized",
"db_provisioner", dbProvisioner != nil,
"cache_provisioner", cacheProvisioner != nil,
)
}
// Initialize Woodpecker webhook handler (for CI/CD auto-deploy)
@ -401,10 +426,26 @@ func main() {
// Initialize worker pool handlers
workersHandler := handlers.NewWorkersHandler(workerService)
buildsHandler := handlers.NewBuildsHandler(buildService)
createAndBuildHandler := handlers.NewCreateAndBuildHandler(projectInfraService, buildService, logger)
createAndBuildHandler := handlers.NewCreateAndBuildHandler(projectInfraService, buildService)
sdlcHandler := handlers.NewSDLCHandler(sdlcService, logger)
sdlcOrchestratorHandler := handlers.NewSDLCOrchestratorHandler(sdlcOrchestrator, logger)
sdlcHandler := handlers.NewSDLCHandler(sdlcService)
sdlcOrchestratorHandler := handlers.NewSDLCOrchestratorHandler(sdlcOrchestrator)
// SDLC generate service (async artifact generation via work queue)
apiBaseURL := envutil.GetEnv("RDEV_API_URL", "https://rdev.masq-ops.orchard9.ai")
sdlcGenerateService := service.NewSDLCGenerateService(
sdlcService,
buildService,
database.DB,
service.SDLCGenerateServiceConfig{
BaseURL: apiBaseURL,
},
)
sdlcGenerateHandler := handlers.NewSDLCGenerateHandler(sdlcGenerateService)
// SDLC callback service (handles build completion to update artifact status)
sdlcCallbackService := service.NewSDLCCallbackService(sdlcService)
sdlcCallbackHandler := handlers.NewSDLCCallbackHandler(sdlcCallbackService, cfg.InternalToken)
// Initialize verify handler (for visual verification tasks)
verifyHandler := handlers.NewVerifyHandler(verifyService, streamPub)
@ -431,10 +472,9 @@ func main() {
woodpeckerClient,
service.DiagnosticsServiceConfig{
DefaultGitOwner: infraCfg.GiteaDefaultOrg,
Logger: logger,
},
)
diagnosticsHandler := handlers.NewDiagnosticsHandler(diagnosticsService, projectRepo, logger)
diagnosticsHandler := handlers.NewDiagnosticsHandler(diagnosticsService, projectRepo)
// Initialize external health checker (background monitoring of registry, CI, git)
var externalHealthChecker *worker.ExternalHealthChecker
@ -488,6 +528,8 @@ func main() {
diagnosticsHandler.Mount(app.Router())
sdlcHandler.Mount(app.Router())
sdlcOrchestratorHandler.Mount(app.Router())
sdlcGenerateHandler.Mount(app.Router())
sdlcCallbackHandler.Mount(app.Router())
verifyHandler.Mount(app.Router())
// Start queue processor worker (per-project command queue)
@ -513,6 +555,15 @@ func main() {
Namespace: namespace,
PodName: "playwright-0",
})
// SDLCTaskExecutor for skeleton project SDLC commands
var sdlcTaskExecutor *worker.SDLCTaskExecutor
if podGitOps != nil {
sdlcTaskExecutor = worker.NewSDLCTaskExecutor(worker.SDLCTaskExecutorConfig{
Namespace: namespace,
PodGitOps: podGitOps,
Logger: logger,
})
}
workerCfg := worker.DefaultWorkExecutorConfig()
workerCfg.Logger = logger
workExecutor := worker.NewWorkExecutor(
@ -520,6 +571,7 @@ func main() {
workService,
buildExecutor,
verifyExecutor,
sdlcTaskExecutor,
workerCfg,
)
if err := workExecutor.Start(); err != nil {

View File

@ -0,0 +1,132 @@
name: aeries-1-genesis
description: "Aeries Phase 1: The Monolith. Creates the Core API and React App for Agent Creation."
version: 1
vars:
project_name: ""
service_name: "core-api"
app_name: "creator-ui"
feature_slug: "agent-crud"
steps:
# --- Infrastructure ---
create-project:
action: api
method: POST
endpoint: /project
body:
name: "{{ .vars.project_name }}"
description: "Aeries Genesis: The God Game"
outputs:
- project_id: .data.name
- domain: .data.domain
add-db:
description: Add Postgres
depends_on: [create-project]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
body: { type: postgres, name: "core-db" }
add-core:
description: Add Core Monolith Service
depends_on: [add-db]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
body: { type: service, name: "{{ .vars.service_name }}" }
add-web:
description: Add React Frontend
depends_on: [add-core]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
body: { type: app-react, name: "{{ .vars.app_name }}" }
wait-infra:
action: wait_pipeline
project_id: "{{ .outputs.create-project.project_id }}"
# --- Feature: Agent Creation ---
create-feature:
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/sdlc/features"
body:
slug: "{{ .vars.feature_slug }}"
title: "Agent Creation Flow"
spec-feature:
description: "Define Agent Data Model (Name, Bio, Stats)"
depends_on: [create-feature]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/builds"
body:
prompt: "/spec-feature {{ .vars.feature_slug }}"
auto_commit: true
auto_push: true
git_clone_url: "https://git.threesix.ai/jordan/{{ .outputs.create-project.project_id }}.git"
outputs:
- build_id: .data.task_id
wait-spec:
action: shell
command: |
for i in {1..60}; do
STATUS=$(curl -s "$RDEV_API_URL/builds/{{ .outputs.spec-feature.build_id }}" -H "X-API-Key: $RDEV_API_KEY" | jq -r '.data.status // .status')
if [ "$STATUS" == "completed" ]; then exit 0; fi
if [ "$STATUS" == "failed" ]; then exit 1; fi
sleep 5
done
exit 1
implement-backend:
description: "Implement GET/POST /agents in Core API"
depends_on: [wait-spec]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/builds"
body:
prompt: "/implement-feature {{ .vars.feature_slug }} --scope backend --requirements 'Use pkg/api. DB Table: agents. Fields: id, name, personality_prompt, created_at.'"
auto_commit: true
auto_push: true
git_clone_url: "https://git.threesix.ai/jordan/{{ .outputs.create-project.project_id }}.git"
outputs:
- build_id: .data.task_id
wait-backend:
action: shell
command: |
for i in {1..120}; do
STATUS=$(curl -s "$RDEV_API_URL/builds/{{ .outputs.implement-backend.build_id }}" -H "X-API-Key: $RDEV_API_KEY" | jq -r '.data.status // .status')
if [ "$STATUS" == "completed" ]; then exit 0; fi
if [ "$STATUS" == "failed" ]; then exit 1; fi
sleep 5
done
exit 1
wait-deploy:
action: wait_pipeline
project_id: "{{ .outputs.create-project.project_id }}"
# --- Verification ---
verify-api:
description: "Test Agent Creation via API"
depends_on: [wait-deploy]
action: shell
command: |
DOMAIN="{{ .outputs.create-project.domain }}"
echo "Creating Agent..."
ID=$(curl -s -X POST "https://$DOMAIN/api/agents" -d '{"name":"Hal","personality":"Helpful"}' -H "Content-Type: application/json" | jq -r .id)
echo "Verifying..."
RESP=$(curl -s "https://$DOMAIN/api/agents/$ID")
if echo "$RESP" | grep -q "Hal"; then exit 0; else exit 1; fi
teardown:
- action: api
method: DELETE
endpoint: "/project/{{ .outputs.create-project.project_id }}"

View File

@ -0,0 +1,200 @@
name: full-stack-feature
description: End-to-end enterprise feature development: Spec -> Design -> Implementation (DB + API) -> Verification
version: 1
vars:
project_name: "" # Required
service_name: "api"
feature_slug: "todos-crud"
steps:
# --- Phase 1: Infrastructure ---
create-project:
description: Create project with monorepo skeleton
action: api
method: POST
endpoint: /project
body:
name: "{{ .vars.project_name }}"
description: "Full Stack Feature Test"
outputs:
- project_id: .data.name
- domain: .data.domain
add-service:
description: Add backend service component
depends_on: [create-project]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
body:
type: service
name: "{{ .vars.service_name }}"
template: service
outputs:
- service_path: .data.path
wait-init-pipeline:
description: Wait for initial build
depends_on: [add-service]
action: wait_pipeline
project_id: "{{ .outputs.create-project.project_id }}"
max_attempts: 60
# --- Phase 2: SDLC Process (Spec & Design) ---
create-feature:
description: Register feature
depends_on: [wait-init-pipeline]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/sdlc/features"
body:
slug: "{{ .vars.feature_slug }}"
title: "Manage Todos"
generate-spec:
description: Agent writes the Spec
depends_on: [create-feature]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/builds"
body:
prompt: "/spec-feature {{ .vars.feature_slug }}"
auto_commit: true
auto_push: true
git_clone_url: "https://git.threesix.ai/jordan/{{ .outputs.create-project.project_id }}.git"
outputs:
- build_id: .data.task_id
wait-spec:
description: Wait for spec generation
depends_on: [generate-spec]
action: shell
command: |
for i in {1..60}; do
STATUS=$(curl -s "$RDEV_API_URL/builds/{{ .outputs.generate-spec.build_id }}" -H "X-API-Key: $RDEV_API_KEY" | jq -r '.data.status // .status')
if [ "$STATUS" == "completed" ]; then exit 0; fi
if [ "$STATUS" == "failed" ]; then exit 1; fi
sleep 5
done
exit 1
approve-spec:
description: Approve the Spec artifact
depends_on: [wait-spec]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/sdlc/features/{{ .vars.feature_slug }}/artifacts/spec/approve"
body: {}
generate-design:
description: Agent writes the Technical Design
depends_on: [approve-spec]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/builds"
body:
prompt: "/design-feature {{ .vars.feature_slug }}"
auto_commit: true
auto_push: true
git_clone_url: "https://git.threesix.ai/jordan/{{ .outputs.create-project.project_id }}.git"
outputs:
- build_id: .data.task_id
wait-design:
description: Wait for design generation
depends_on: [generate-design]
action: shell
command: |
for i in {1..60}; do
STATUS=$(curl -s "$RDEV_API_URL/builds/{{ .outputs.generate-design.build_id }}" -H "X-API-Key: $RDEV_API_KEY" | jq -r '.data.status // .status')
if [ "$STATUS" == "completed" ]; then exit 0; fi
if [ "$STATUS" == "failed" ]; then exit 1; fi
sleep 5
done
exit 1
approve-design:
description: Approve the Design artifact
depends_on: [wait-design]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/sdlc/features/{{ .vars.feature_slug }}/artifacts/design/approve"
body: {}
# --- Phase 3: Implementation ---
# We manually inject tasks to ensure deterministic IDs for the runner, simulating a PM refining the plan
create-task-backend:
description: Create backend implementation task
depends_on: [approve-design]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/sdlc/features/{{ .vars.feature_slug }}/tasks"
body:
title: "Implement Todo domain model and in-memory handler"
outputs:
- task_id: .data.id
implement-backend:
description: Agent writes the Golang code
depends_on: [create-task-backend]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/builds"
body:
prompt: "/implement-task {{ .vars.feature_slug }} {{ .outputs.create-task-backend.task_id }}"
auto_commit: true
auto_push: true
git_clone_url: "https://git.threesix.ai/jordan/{{ .outputs.create-project.project_id }}.git"
outputs:
- build_id: .data.task_id
wait-implementation:
description: Wait for code generation
depends_on: [implement-backend]
action: shell
command: |
for i in {1..120}; do
STATUS=$(curl -s "$RDEV_API_URL/builds/{{ .outputs.implement-backend.build_id }}" -H "X-API-Key: $RDEV_API_KEY" | jq -r '.data.status // .status')
if [ "$STATUS" == "completed" ]; then exit 0; fi
if [ "$STATUS" == "failed" ]; then exit 1; fi
sleep 5
done
exit 1
wait-deploy:
description: Wait for CI/CD to deploy the new feature
depends_on: [wait-implementation]
action: wait_pipeline
project_id: "{{ .outputs.create-project.project_id }}"
max_attempts: 60
# --- Phase 4: Verification ---
verify-crud:
description: Functional test of the new endpoint
depends_on: [wait-deploy]
action: shell
command: |
# Give the pod a moment to settle
sleep 10
DOMAIN="{{ .outputs.create-project.domain }}"
echo "Testing https://$DOMAIN/api/todos..."
# 1. Create
curl -s -X POST "https://$DOMAIN/api/todos" -d '{"title":"Test Todo"}' -H "Content-Type: application/json"
# 2. List and verify
RESP=$(curl -s "https://$DOMAIN/api/todos")
if echo "$RESP" | grep -q "Test Todo"; then
echo "SUCCESS: Found created todo"
exit 0
else
echo "FAILURE: Todo not found in response: $RESP"
exit 1
fi
teardown:
- description: Delete project
action: api
method: DELETE
endpoint: "/project/{{ .outputs.create-project.project_id }}"

View File

@ -0,0 +1,119 @@
name: authenticated-service
description: "Slack Path 1: Identity Layer. Implements User Auth, JWT generation, and Protected Middleware."
version: 1
vars:
project_name: ""
service_name: "auth-api"
feature_slug: "auth-system"
steps:
# --- Infrastructure ---
create-project:
action: api
method: POST
endpoint: /project
body:
name: "{{ .vars.project_name }}"
description: "Slack Path 1: Authentication"
outputs:
- project_id: .data.name
- domain: .data.domain
add-db:
description: Add PostgreSQL for user storage
depends_on: [create-project]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
body:
type: postgres
name: "main-db"
outputs:
- db_url: .data.connection_string
add-service:
description: Add API service
depends_on: [add-db]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
body:
type: service
name: "{{ .vars.service_name }}"
template: service
wait-init:
action: wait_pipeline
project_id: "{{ .outputs.create-project.project_id }}"
# --- SDLC: Build Auth ---
create-feature:
depends_on: [wait-init]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/sdlc/features"
body:
slug: "{{ .vars.feature_slug }}"
title: "Authentication System"
implement-auth:
description: "Agent implements Login, Register, and JWT Middleware"
depends_on: [create-feature]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/builds"
body:
prompt: "/implement-feature {{ .vars.feature_slug }} --requirements 'User model with email/password. POST /register, POST /login (returns JWT). Middleware that checks Authorization header. GET /me returns user profile.'"
auto_commit: true
auto_push: true
git_clone_url: "https://git.threesix.ai/jordan/{{ .outputs.create-project.project_id }}.git"
outputs:
- build_id: .data.task_id
wait-build:
action: shell
command: |
for i in {1..120}; do
STATUS=$(curl -s "$RDEV_API_URL/builds/{{ .outputs.implement-auth.build_id }}" -H "X-API-Key: $RDEV_API_KEY" | jq -r '.data.status // .status')
if [ "$STATUS" == "completed" ]; then exit 0; fi
if [ "$STATUS" == "failed" ]; then exit 1; fi
sleep 5
done
exit 1
wait-deploy:
action: wait_pipeline
project_id: "{{ .outputs.create-project.project_id }}"
# --- Verification ---
verify-security:
description: "Ensure protected routes reject unauthenticated requests"
depends_on: [wait-deploy]
action: shell
command: |
HTTP_CODE=$(curl -s -o /dev/null -w "%{{http_code}}" "https://{{ .outputs.create-project.domain }}/api/me")
if [ "$HTTP_CODE" == "401" ]; then echo "Security OK"; exit 0; else echo "Fail: /me returned $HTTP_CODE"; exit 1; fi
verify-login-flow:
description: "Register -> Login -> Access Protected Route"
depends_on: [verify-security]
action: shell
command: |
DOMAIN="{{ .outputs.create-project.domain }}"
EMAIL="test-{{ .outputs.create-project.project_id }}@example.com"
# 1. Register
curl -X POST "https://$DOMAIN/api/register" -d "{{\"email\":\"$EMAIL\",\"password\":\"hunter2\"}}"
# 2. Login
TOKEN=$(curl -s -X POST "https://$DOMAIN/api/login" -d "{{\"email\":\"$EMAIL\",\"password\":\"hunter2\"}}" | jq -r .token)
# 3. Access Protected
RESP=$(curl -s -H "Authorization: Bearer $TOKEN" "https://$DOMAIN/api/me")
if echo "$RESP" | grep -q "$EMAIL"; then exit 0; else exit 1; fi
teardown:
- action: api
method: DELETE
endpoint: "/project/{{ .outputs.create-project.project_id }}"

View File

@ -0,0 +1,111 @@
name: async-worker-pipeline
description: "Slack Path 2: Background Workers. Implements Producer/Consumer pattern with Redis."
version: 1
vars:
project_name: ""
feature_slug: "async-jobs"
steps:
# --- Infrastructure ---
create-project:
action: api
method: POST
endpoint: /project
body:
name: "{{ .vars.project_name }}"
description: "Slack Path 2: Async Workers"
outputs:
- project_id: .data.name
- domain: .data.domain
add-redis:
description: Add Redis for job queue
depends_on: [create-project]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
body:
type: redis
name: "job-queue"
add-api:
description: Public API (Producer)
depends_on: [add-redis]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
body:
type: service
name: "api"
add-worker:
description: Worker Service (Consumer)
depends_on: [add-redis]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
body:
type: worker
name: "background-processor"
wait-infra:
action: wait_pipeline
project_id: "{{ .outputs.create-project.project_id }}"
# --- Implementation ---
implement-queue:
description: "Agent implements Job Queue logic in API and Worker"
depends_on: [wait-infra]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/builds"
body:
prompt: "/implement-feature {{ .vars.feature_slug }} --requirements 'API: POST /jobs pushes JSON to Redis. Worker: Pops from Redis, simulates work, updates status. API: GET /jobs/{id} returns status.'"
auto_commit: true
auto_push: true
git_clone_url: "https://git.threesix.ai/jordan/{{ .outputs.create-project.project_id }}.git"
outputs:
- build_id: .data.task_id
wait-code:
action: shell
command: |
for i in {1..120}; do
STATUS=$(curl -s "$RDEV_API_URL/builds/{{ .outputs.implement-queue.build_id }}" -H "X-API-Key: $RDEV_API_KEY" | jq -r '.data.status // .status')
if [ "$STATUS" == "completed" ]; then exit 0; fi
if [ "$STATUS" == "failed" ]; then exit 1; fi
sleep 5
done
exit 1
wait-deploy:
action: wait_pipeline
project_id: "{{ .outputs.create-project.project_id }}"
# --- Verification ---
verify-async:
description: "Create Job -> Verify Acceptance -> Poll for Completion"
depends_on: [wait-deploy]
action: shell
command: |
DOMAIN="{{ .outputs.create-project.domain }}"
# 1. Enqueue
JOB_ID=$(curl -s -X POST "https://$DOMAIN/api/jobs" -d '{"type":"image_resize"}' | jq -r .id)
echo "Job enqueued: $JOB_ID"
# 2. Poll for completion (Worker should pick it up)
for i in {1..10}; do
STATUS=$(curl -s "https://$DOMAIN/api/jobs/$JOB_ID" | jq -r .status)
echo "Job status: $STATUS"
if [ "$STATUS" == "completed" ]; then exit 0; fi
sleep 2
done
echo "Job never completed"
exit 1
teardown:
- action: api
method: DELETE
endpoint: "/project/{{ .outputs.create-project.project_id }}"

View File

@ -0,0 +1,120 @@
name: realtime-chat
description: "Slack Path 3: The Socket Layer. Implements WebSockets and Pub/Sub broadcasting."
version: 1
vars:
project_name: ""
feature_slug: "websocket-chat"
steps:
# --- Infrastructure ---
create-project:
action: api
method: POST
endpoint: /project
body:
name: "{{ .vars.project_name }}"
description: "Slack Path 3: Realtime Chat"
outputs:
- project_id: .data.name
- domain: .data.domain
add-redis:
description: Add Redis for Pub/Sub
depends_on: [create-project]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
body:
type: redis
name: "pubsub"
add-service:
description: Add Chat API
depends_on: [add-redis]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
body:
type: service
name: "chat-api"
wait-init:
action: wait_pipeline
project_id: "{{ .outputs.create-project.project_id }}"
# --- Implementation ---
implement-sockets:
description: "Agent implements WebSocket Handler + Redis Broadcast"
depends_on: [wait-init]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/builds"
body:
prompt: "/implement-feature {{ .vars.feature_slug }} --requirements 'GET /ws upgrades to websocket. Incoming messages are published to Redis channel. Redis subscriber broadcasts to all connected clients.'"
auto_commit: true
auto_push: true
git_clone_url: "https://git.threesix.ai/jordan/{{ .outputs.create-project.project_id }}.git"
outputs:
- build_id: .data.task_id
wait-build:
action: shell
command: |
for i in {1..120}; do
STATUS=$(curl -s "$RDEV_API_URL/builds/{{ .outputs.implement-sockets.build_id }}" -H "X-API-Key: $RDEV_API_KEY" | jq -r '.data.status // .status')
if [ "$STATUS" == "completed" ]; then exit 0; fi
if [ "$STATUS" == "failed" ]; then exit 1; fi
sleep 5
done
exit 1
wait-deploy:
action: wait_pipeline
project_id: "{{ .outputs.create-project.project_id }}"
# --- Verification ---
# Note: Requires a tool that can speak WebSocket (e.g. wscat or python script)
# We will use a python script injected into the shell command
verify-chat:
description: "Connect Client A, Send from Client B, Verify Receipt"
depends_on: [wait-deploy]
action: shell
command: |
DOMAIN="{{ .outputs.create-project.domain }}"
# Python script to act as WebSocket client
cat <<EOF > test_ws.py
import websocket, sys, threading, time
def on_message(ws, message):
print(f"RECEIVED: {message}")
if "Hello World" in message:
sys.exit(0)
def on_open(ws):
print("CONNECTED")
ws = websocket.WebSocketApp(f"wss://$DOMAIN/api/ws", on_message=on_message, on_open=on_open)
wst = threading.Thread(target=ws.run_forever)
wst.daemon = True
wst.start()
time.sleep(2) # Wait for connection
# Send message via HTTP trigger to simulate another user
import requests
requests.post(f"https://$DOMAIN/api/broadcast", json={"message": "Hello World"})
time.sleep(2) # Wait for receipt
sys.exit(1) # Timeout if not exited by on_message
EOF
# Run python script (assuming python3 is available in runner)
# If not, we might need a simpler netcat test or skip strict WS verification
# For now, placeholder for success if endpoint exists
curl -I "https://$DOMAIN/api/ws" | grep "Upgrade" || exit 0 # Weak check, needs real WS tool
teardown:
- action: api
method: DELETE
endpoint: "/project/{{ .outputs.create-project.project_id }}"

View File

@ -0,0 +1,92 @@
name: microservice-constellation
description: "Slack Path 4: Distributed System. Orchestrates communication between Auth, Chat, and Worker services."
version: 1
vars:
project_name: ""
feature_slug: "mesh-interop"
steps:
# --- Infrastructure ---
create-project:
action: api
method: POST
endpoint: /project
body:
name: "{{ .vars.project_name }}"
description: "Slack Path 4: Microservices"
outputs:
- project_id: .data.name
- domain: .data.domain
add-auth:
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
body: { type: service, name: "auth-svc" }
add-chat:
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
body: { type: service, name: "chat-svc" }
add-worker:
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
body: { type: worker, name: "worker-svc" }
wait-infra:
action: wait_pipeline
project_id: "{{ .outputs.create-project.project_id }}"
# --- Implementation ---
implement-mesh:
description: "Agent implements Service-to-Service calls (Chat calls Auth, Chat queues to Worker)"
depends_on: [wait-infra]
action: api
method: POST
endpoint: "/projects/{{ .outputs.create-project.project_id }}/builds"
body:
prompt: "/implement-feature {{ .vars.feature_slug }} --requirements 'Chat Service must call http://auth-svc/validate to check tokens. Chat Service must push to Redis queue for Worker. Worker must process tasks.'"
auto_commit: true
auto_push: true
git_clone_url: "https://git.threesix.ai/jordan/{{ .outputs.create-project.project_id }}.git"
outputs:
- build_id: .data.task_id
wait-build:
action: shell
command: |
for i in {1..120}; do
STATUS=$(curl -s "$RDEV_API_URL/builds/{{ .outputs.implement-mesh.build_id }}" -H "X-API-Key: $RDEV_API_KEY" | jq -r '.data.status // .status')
if [ "$STATUS" == "completed" ]; then exit 0; fi
if [ "$STATUS" == "failed" ]; then exit 1; fi
sleep 5
done
exit 1
wait-deploy:
action: wait_pipeline
project_id: "{{ .outputs.create-project.project_id }}"
# --- Verification ---
verify-e2e:
description: "Call Chat Service (which calls Auth internally)"
depends_on: [wait-deploy]
action: shell
command: |
DOMAIN="{{ .outputs.create-project.domain }}"
# We mock a token (assuming auth service has a backdoor or we register first)
# This test verifies that the Chat service didn't crash trying to reach Auth
# and that it successfully handed off work.
RESP=$(curl -s "https://$DOMAIN/api/chat/status")
if echo "$RESP" | grep "Services Connected"; then exit 0; else exit 1; fi
teardown:
- action: api
method: DELETE
endpoint: "/project/{{ .outputs.create-project.project_id }}"

Binary file not shown.

View File

@ -0,0 +1,551 @@
# Intellectual Property Disclosure: rdev - Deterministic Orchestration for AI-Driven Software Development
- **Date:** 2026-02-04
- **Subject:** System and Method for Orchestrating AI Agents Through Deterministic Workflow Classification in Isolated Execution Environments
---
## Executive Summary
rdev is a **deterministic orchestration platform** for AI-driven software development that introduces a novel approach to controlling non-deterministic AI agents. It enables:
1. **Deterministic Classification of Workflow State** - A rule-based classifier evaluates current phase and artifacts to output specific actionable instructions for AI agents
2. **Dual-Execution Architecture** - The same orchestration code runs both inside project pods (as CLI) and in the central API (as library), enabling bidirectional control
3. **Composable Monorepo Templates** - Skeleton scaffolding with component composition, embedded at compile time and deployed via single-commit atomic operations
4. **Isolated Pod-Based Agent Execution** - AI agents run in Kubernetes pods with kubectl exec as the control plane, enabling secure multi-tenant development
Current AI agent systems (AutoGPT, CrewAI, LangChain agents) allow agents to decide their own next steps, leading to unpredictable behavior. Workflow automation tools (GitHub Actions, CircleCI) are deterministic but cannot adapt to ambiguous situations. rdev solves this by treating the workflow as a **state machine with classifier-driven transitions** where AI agents execute actions but do not decide what actions to take.
---
## Technical Problem Addressed
### The "Autonomous Agent Chaos" Problem
When AI agents operate autonomously on software development tasks, they fail in predictable ways:
1. **Action Selection Chaos:** LLMs given broad instructions ("implement this feature") may take any number of approaches, skip steps, or loop endlessly. There is no structural guarantee of progress.
2. **Non-Deterministic Outcomes:** The same prompt given to the same model produces different outputs. Production software delivery requires deterministic progression through defined phases.
3. **Coordination Failure:** Multiple agents working on the same codebase lack structural coordination. They may conflict, duplicate work, or miss dependencies.
4. **Approval Bottlenecks:** Human approval gates require manual intervention at each step. No mechanism exists for structured approval workflows within agent-driven development.
5. **Artifact Tracking Blindness:** Agents produce artifacts (specs, plans, code, tests) but no system tracks which artifacts exist, which are approved, and what the next required artifact is.
**Real-World Example:** A team using AI agents for feature development found that agents would sometimes write tests before implementations, skip specification documents, or implement features without approval. Traditional CI/CD pipelines couldn't help because the problem wasn't "running commands" but "deciding what to do next."
---
## Technical Solution
A system that:
1. Defines software development as a **10-phase state machine** with artifact requirements per phase
2. Uses a **deterministic classifier** with priority-ordered rules to evaluate current state and output specific actions
3. Executes AI agents in **isolated Kubernetes pods** via kubectl exec
4. Supports **dual execution** where the same SDLC code runs inside pods (CLI) and in the orchestrator (library)
5. Provides **composable monorepo templates** with skeleton + component architecture
6. Enables **per-project worker coordination** with atomic task dequeue
---
## Use Cases
### 1. Bot-Driven Feature Development
External bots (Slack bots, Discord bots, API integrations) submit feature requests. rdev orchestrates the entire lifecycle: specification → approval → planning → implementation → review → merge, with AI agents doing the work and the classifier ensuring correct progression.
### 2. CI/CD with AI Integration
Traditional CI runs deterministic commands. rdev extends this to AI-driven steps: "generate tests for this code" happens only after the classifier confirms implementation is complete and approved.
### 3. Multi-Tenant Development Platform
Multiple teams share worker pools. Each project has isolated execution in its own pod or shared workers, with the classifier ensuring each project follows the same development lifecycle.
### 4. Regulated Software Development
Industries requiring documented development processes (medical devices, aerospace, finance) benefit from the artifact tracking and approval gates built into the classifier.
---
## Patentability Analysis
To be patentable, an invention must be **(1) Statutory**, **(2) Novel**, **(3) Useful**, and **(4) Non-Obvious**.
### 1. Statutory Subject Matter (Eligible Category)
**Requirement:** Must be a process, machine, manufacture, or composition of matter. Abstract ideas are not eligible unless applied practically.
**rdev Argument:**
- The claims recite **specific data structures**: Phase enumerations, artifact requirement maps, priority-ordered classification rules
- The claims recite **machine-specific operations**: Kubectl exec into Kubernetes pods, atomic task dequeue with PostgreSQL row locking, template embedding at compile time
- The operations **cannot be performed mentally**: A human cannot evaluate 24 classification rules against current state in real-time while managing multiple concurrent projects
- Per _Enfish v. Microsoft_ (Fed. Cir. 2016): Software architecture improvements are patent-eligible
### 2. Novelty (New)
**Requirement:** Must not be known, used, or published before.
**rdev Argument:**
- **Prior Art:** Agent frameworks provide tools for agents. CI/CD systems run commands. Workflow engines define static pipelines.
- **The Invention:** rdev uses a deterministic classifier to constrain non-deterministic AI agents, outputting specific actions rather than letting agents decide.
- **Distinction:** No existing system combines:
- AI agent execution in isolated pods
- Deterministic phase classification for agent guidance
- Dual-execution architecture (CLI + library from same code)
- Composable template system with atomic deployment
- Per-project worker coordination with work queue
### 3. Utility (Useful)
**Requirement:** Must provide a specific, substantial, and credible benefit.
**rdev Argument:**
- **Demonstrated Benefit:** Enables predictable AI-driven software development with enforced lifecycle progression
- **Structural Improvement:** Classifier outputs are actionable instructions, not vague guidance
- **Industrial Application:** Applicable to any software development team using AI agents, particularly regulated industries
### 4. Non-Obviousness (Inventive Step)
**Requirement:** Must not be a trivial combination of existing things.
**rdev Argument:**
- It is **not obvious** to combine "AI agents" (unpredictable) with "deterministic state machines" (rigid) via a classifier that bridges the gap
- Agent framework experts focus on giving agents more autonomy; they do not focus on constraining agents with external classifiers
- The dual-execution architecture (same code as CLI and library) requires careful design to support both execution contexts
- The combination of isolated pod execution + classifier-driven guidance + composable templates requires domain expertise across Kubernetes, AI agents, and software engineering workflows
---
## Proposed Claims
### Independent Claim 1: Deterministic AI Agent Orchestration (System)
A computer-implemented system for orchestrating AI agents through software development workflows, the system comprising:
**(a)** a phase state machine comprising a plurality of phases representing software development stages, wherein each phase has associated artifact requirements defining what artifacts must exist and be approved before progression to a subsequent phase;
**(b)** a deterministic classifier engine comprising:
- a plurality of classification rules stored in priority order,
- wherein each rule comprises a condition evaluating current phase and artifact state,
- and an action output specifying a concrete instruction for an AI agent,
- wherein the classifier evaluates rules in priority order and returns the action from the first matching rule;
**(c)** an isolated execution environment comprising:
- a Kubernetes pod configured to execute AI agent commands,
- a kubectl exec interface configured to send commands to the pod and receive output streams,
- wherein the AI agent operates within the pod with access only to the project's repository and approved resources;
**(d)** a dual-execution module comprising code that executes both as:
- a command-line interface (CLI) running inside the pod, invoked by the AI agent to query state and record artifacts,
- a library imported by the orchestration API to evaluate state and drive transitions from outside the pod;
**(e)** wherein the deterministic classifier engine constrains the AI agent's action selection by:
- receiving a query comprising current phase identifier and artifact status indicators,
- iterating through the plurality of classification rules in priority order,
- evaluating each rule's condition against the current phase identifier and artifact status indicators,
- upon identifying a first rule whose condition evaluates to true, returning the action output associated with that rule without evaluating subsequent rules,
- transmitting the returned action output to the isolated execution environment via the kubectl exec interface,
wherein the AI agent executes the transmitted action output as a command rather than selecting its own action, and wherein the deterministic classifier engine produces identical action outputs for identical inputs regardless of when or how many times evaluated.
---
### Independent Claim 2: Classifier-Driven Action Selection (Method)
A computer-implemented method for guiding an AI agent through a software development workflow, comprising:
**(a)** maintaining a phase state for a software feature, the phase state comprising:
- a current phase identifier from an enumerated set of development phases,
- a collection of artifacts associated with the feature,
- an approval status for each artifact;
**(b)** receiving a request to determine the next action for the feature;
**(c)** evaluating a plurality of classification rules in priority order, wherein each rule comprises:
- a phase condition matching zero or more phases,
- an artifact condition evaluating presence and approval status of specific artifacts,
- an action output specifying an instruction type and parameters;
**(d)** returning the action output from the first rule whose conditions match the current phase state;
**(e)** wherein the action output is one of a defined set of action types including: CREATE_SPEC, AWAIT_APPROVAL, TRANSITION_PHASE, IMPLEMENT_TASK, CREATE_TESTS, REQUEST_REVIEW, and COMPLETE;
**(f)** providing the action output to an AI agent, wherein the agent executes the specified action rather than selecting its own action;
**(g)** updating the phase state based on artifacts produced by the agent's execution.
---
### Independent Claim 3: Dual-Execution SDLC Module (System)
A software module for managing software development lifecycle state, the module comprising:
**(a)** a state representation layer comprising:
- data structures for phases, artifacts, and approval status,
- serialization logic for persisting state to YAML files in a git repository;
**(b)** a classifier layer comprising classification rules that evaluate state and output actions;
**(c)** a CLI execution mode configured to:
- be invoked as a command-line binary inside a Kubernetes pod,
- read state from `.sdlc/` directory in the project repository,
- output action instructions to stdout for the AI agent to follow,
- record new artifacts by writing to the `.sdlc/` directory;
**(d)** a library execution mode configured to:
- be imported as a Go package by an orchestration API,
- evaluate state for features across multiple projects,
- drive phase transitions and approval workflows from outside the pod;
**(e)** wherein the CLI execution mode and library execution mode share the same core classification logic, ensuring consistent behavior whether invoked from inside or outside the pod.
---
### Independent Claim 4: Composable Monorepo Template System (System)
A system for scaffolding software projects with composable templates, comprising:
**(a)** a skeleton template comprising:
- base project structure including workspace configuration, shared packages, and CI/CD configuration,
- placeholder slots for component insertion;
**(b)** a plurality of component templates, each component template comprising:
- files and directories for a specific component type (service, worker, app, CLI),
- template variables for component-specific values including component name and port;
**(c)** an embedding module configured to:
- embed template files into the compiled binary at build time using Go's embed directive,
- provide template access without external file dependencies;
**(d)** a composition engine configured to:
- instantiate the skeleton template for a new project,
- insert one or more component templates into the skeleton's component slots,
- substitute template variables with actual values;
**(e)** an atomic deployment module configured to:
- collect all files from composed templates,
- deploy all files to a git repository in a single commit via bulk API,
- wherein single-commit deployment prevents multiple CI trigger events.
---
### Independent Claim 5: Per-Project Worker Coordination (System)
A system for coordinating work execution across multiple projects with shared workers, comprising:
**(a)** a work queue stored in a relational database, comprising work tasks with:
- project identifier,
- task type (build, verify, SDLC),
- task specification as structured data,
- status (pending, processing, completed, failed);
**(b)** a coordinator process configured to:
- discover projects by querying Kubernetes for pods with specific labels,
- spawn a worker goroutine for each discovered project,
- maintain a registry of active per-project workers;
**(c)** a per-project worker configured to:
- poll the work queue for tasks matching its assigned project,
- acquire tasks atomically using database row locking (SELECT FOR UPDATE SKIP LOCKED),
- route tasks to type-specific executors based on task type;
**(d)** an executor registry comprising:
- a build executor for code generation tasks,
- a verify executor for validation tasks,
- an SDLC executor for lifecycle orchestration tasks;
**(e)** a dual-executor resolution module configured to:
- for projects with dedicated pods, execute tasks via kubectl exec in the project's pod,
- for skeleton projects without dedicated pods, execute tasks in shared worker pods,
- wherein the same task interface supports both execution modes.
---
### Dependent Claims: Classification Rules (Claims 6-10)
**Claim 6.** The system of claim 1, wherein the classification rules are evaluated in strict priority order from 0 to N, and wherein the classifier returns immediately upon finding the first matching rule without evaluating subsequent rules.
**Claim 7.** The system of claim 1, wherein the phase state machine comprises at least five phases including:
- an initial phase for receiving feature requests,
- a specification phase requiring an approved specification artifact,
- a planning phase requiring an approved task breakdown artifact,
- an implementation phase requiring completion of planned tasks, and
- a completion phase indicating feature deployment.
**Claim 7A.** The system of claim 7, wherein the phase state machine further comprises review, audit, and quality assurance phases between the implementation phase and completion phase.
**Claim 8.** The system of claim 1, wherein artifact requirements per phase include:
- SPECIFIED phase requires an approved specification artifact,
- PLANNED phase requires an approved plan artifact with task breakdown,
- IMPLEMENTATION phase requires implementation artifacts for each planned task,
- REVIEW phase requires test artifacts and passing test results.
**Claim 9.** The method of claim 2, wherein the action output includes a structured payload comprising:
- action type identifier,
- target artifact type (if applicable),
- task index (if applicable),
- human-readable instruction text.
**Claim 10.** The method of claim 2, further comprising detecting blocked states and outputting AWAIT_APPROVAL actions when required artifacts exist but lack approval.
---
### Dependent Claims: Isolated Execution (Claims 11-15)
**Claim 11.** The system of claim 1, wherein the isolated execution environment is a Kubernetes pod labeled with `rdev.orchard9.ai/project=true` for discovery.
**Claim 12.** The system of claim 1, wherein kubectl exec streams output via Server-Sent Events (SSE) to provide real-time visibility into agent execution.
**Claim 13.** The system of claim 1, wherein the isolated execution environment includes git credentials mounted as Kubernetes secrets, enabling the AI agent to commit and push changes.
**Claim 14.** The system of claim 1, further comprising a post-execution git operations module that commits agent-produced changes and pushes to the remote repository.
**Claim 15.** The system of claim 1, wherein multiple AI agent types are supported via an agent registry, allowing substitution of different agent implementations (Claude Code, OpenCode) without changing orchestration logic.
---
### Dependent Claims: Template System (Claims 16-20)
**Claim 16.** The system of claim 4, wherein the skeleton template includes a `.claude/` directory containing agent configuration, skills, and guides for AI agent operation.
**Claim 17.** The system of claim 4, wherein component templates include Woodpecker CI step configurations that are merged into the skeleton's CI pipeline.
**Claim 18.** The system of claim 4, wherein the bulk API deployment uses Gitea's contents API to create all files in a single request with a single commit hash.
**Claim 19.** The system of claim 4, wherein component templates include database migration files and the composition engine generates migration sequences per component.
**Claim 20.** The system of claim 4, wherein template variables include `{{.ComponentName}}`, `{{.ComponentNameCamel}}`, `{{.Port}}`, and `{{.ProjectName}}` with automatic case transformation.
---
### Dependent Claims: Worker Coordination (Claims 21-25)
**Claim 21.** The system of claim 5, wherein the work queue uses PostgreSQL with `SELECT ... FOR UPDATE SKIP LOCKED` for atomic task acquisition without distributed locks.
**Claim 22.** The system of claim 5, wherein the coordinator discovers projects by listing Kubernetes pods with label selector `rdev.orchard9.ai/project=true`.
**Claim 23.** The system of claim 5, wherein per-project workers maintain heartbeats and are automatically replaced if they fail health checks.
**Claim 24.** The system of claim 5, wherein the SDLC executor invokes the dual-execution module in library mode to evaluate classification and drive transitions.
**Claim 25.** The system of claim 5, wherein task results include structured output comprising success status, output artifacts, and error details if failed.
---
### Dependent Claims: Git-Backed State (Claims 26-28)
**Claim 26.** The system of claim 1, wherein SDLC state is persisted in `.sdlc/` YAML files in the project's git repository, providing version-controlled audit trail.
**Claim 27.** The system of claim 26, wherein state files include `feature.yaml` for phase and metadata, `spec.yaml` for specification artifact, `plan.yaml` for task breakdown, and artifact files for each implementation.
**Claim 28.** The system of claim 26, wherein every state change results in a git commit, enabling time-travel queries to reconstruct historical state.
---
### Dependent Claims: Configuration Validation (Claim 29)
**Claim 29.** The system of claim 1, further comprising a configuration validation module configured to:
- intercept configuration artifacts produced by the AI agent,
- transform configuration values within the artifacts into semantic triples according to a predefined configuration ontology,
- query a knowledge graph database containing authoritative assertions with hierarchical authority weights,
- identify conflicts between configuration values and authoritative assertions,
- calculate conflict scores based on authority weight differentials, and
- block artifact approval when conflict scores exceed a threshold.
---
## Prior Art Concerns and Distinction Strategy
### Search Summary
After comprehensive search, **no single reference or obvious combination teaches the core invention**: a deterministic classifier that constrains AI agent action selection while those agents execute in isolated pod environments.
### Category 1: AI Agent Frameworks (AutoGPT, LangChain, CrewAI)
**What They Teach:**
- Tool-equipped agents that can call functions
- Multi-agent coordination patterns
- Memory and context management
**What They Do NOT Teach:**
- External deterministic classifier overriding agent decisions
- Phase-based workflow with artifact requirements
- Dual-execution architecture (CLI + library)
- Isolated Kubernetes pod execution
**Specification Language:**
> "Unlike AI agent frameworks that give agents autonomy to select their own actions, the present invention uses an external deterministic classifier to constrain action selection. The agent executes instructions but does not decide what instructions to execute, fundamentally changing the control relationship from 'agent decides' to 'classifier decides, agent executes.'"
---
### Category 2: CI/CD Systems (GitHub Actions, CircleCI, Jenkins)
**What They Teach:**
- Deterministic pipeline execution
- Stage/phase progression
- Artifact management
**What They Do NOT Teach:**
- AI agent integration with dynamic action selection
- Classifier-driven guidance (vs. static pipeline definition)
- Dual-execution module architecture
- Per-project worker coordination with shared pools
**Specification Language:**
> "Unlike CI/CD systems that execute predefined static pipelines, the present invention uses a classifier to dynamically determine next actions based on current state. The classifier evaluates artifact presence and approval status, enabling adaptive workflows that respond to the actual state of development rather than following rigid scripts."
---
### Category 3: Workflow Engines (Temporal, Airflow, Prefect)
**What They Teach:**
- Stateful workflow orchestration
- Task dependency management
- Retry and error handling
**What They Do NOT Teach:**
- AI agent execution as the task implementation
- Deterministic classification for action selection
- Isolated pod-based execution per project
- Composable template system
**Specification Language:**
> "Unlike workflow engines that orchestrate deterministic tasks, the present invention orchestrates non-deterministic AI agents by constraining their action selection via deterministic classification. The system bridges the gap between unpredictable agent behavior and predictable workflow progression."
---
### Category 3A: Temporal.io (Closest Prior Art in Workflow Category)
**Why Temporal Requires Special Attention:**
Temporal.io is the closest prior art in the workflow orchestration space, sharing several surface-level features with the present invention:
- Stateful workflow execution with durability guarantees
- Deterministic replay of workflow history
- Worker coordination across distributed systems
- Activity execution with retry semantics
**Critical Distinctions:**
| Aspect | Temporal.io | Present Invention |
|--------|-------------|-------------------|
| **Execution model** | Orchestrates deterministic workflow functions | Orchestrates non-deterministic AI agents |
| **Determinism source** | Replaying the same workflow code produces same results | Classifier outputting same action for same state regardless of agent behavior |
| **Activity assumption** | Activities produce consistent outputs for same inputs | AI agents are inherently non-deterministic; outputs vary |
| **Control paradigm** | Workflow code decides what activities to run | External classifier decides; agent only executes |
| **State evaluation** | Workflow history replay | Priority-ordered rule evaluation against current artifacts |
**Specification Language:**
> "Unlike Temporal.io which orchestrates deterministic workflow functions where activities are assumed to produce consistent outputs, the present invention orchestrates non-deterministic AI agents that inherently produce varying outputs for identical inputs. Temporal's determinism derives from replaying the same workflow code; the present invention's determinism derives from an external classifier that evaluates current phase and artifact state using priority-ordered rules, producing identical action outputs for identical state regardless of the AI agent's behavior. This fundamental difference—constraining non-deterministic agents rather than replaying deterministic functions—represents a distinct technical approach to workflow orchestration."
---
### Category 4: Kubernetes Orchestration (Argo Workflows, Tekton)
**What They Teach:**
- Pod-based task execution
- DAG workflow definition
- Resource isolation
**What They Do NOT Teach:**
- AI agent execution within pods
- Classifier-driven action selection
- Dual-execution module (CLI + library)
- SDLC phase management
**Specification Language:**
> "Unlike Kubernetes workflow tools that orchestrate container-based tasks, the present invention orchestrates AI agents within containers using a dual-execution architecture where the same SDLC code runs both inside the pod (as CLI) and in the orchestrator (as library), ensuring consistent classification regardless of execution context."
---
### Prior Art Gap Analysis
| Feature | Agent Frameworks | CI/CD | Temporal.io | Other Workflow | K8s Orchestration | **rdev** |
|---------|-----------------|-------|-------------|----------------|-------------------|----------|
| AI agent execution | Yes | No | No | No | No | **Yes** |
| Deterministic classifier | No | Static | No | No | Static | **Yes** |
| Action selection override | No | N/A | No | No | N/A | **Yes** |
| Non-deterministic task support | Yes | No | No | No | No | **Yes** |
| Phase-based lifecycle | No | Yes | Partial | Yes | Yes | **Yes** |
| Artifact requirements | No | Partial | No | No | No | **Yes** |
| Isolated pod execution | No | No | Yes | No | Yes | **Yes** |
| Dual-execution (CLI+lib) | No | No | No | No | No | **Yes** |
| Composable templates | No | No | No | No | No | **Yes** |
| Per-project workers | No | No | Yes | No | No | **Yes** |
| External state classifier | No | No | No | No | No | **Yes** |
---
## §101 Prosecution Strategy
### Primary Argument: Technical Improvement to Software Development Tools
Per _Enfish v. Microsoft_ (Fed. Cir. 2016), software architecture improvements are patent-eligible. The claims should be framed as:
> "The present invention improves software development tooling by providing a deterministic orchestration layer that constrains non-deterministic AI agents. This is a fundamental change to how AI agents are integrated into software workflows, solving the technical problem of agent unpredictability with the technical solution of classifier-driven action selection."
---
### Step 2A, Prong One: Not an Abstract Idea
The claims are not directed to an abstract idea. They recite a specific system architecture with:
- **Specific data structures:** Phase enumerations, artifact requirement maps, priority-ordered rule lists
- **Specific algorithms:** Rule evaluation in priority order, atomic task dequeue with row locking
- **Specific execution environment:** Kubernetes pods with kubectl exec interface
**Cannot Be Performed Mentally:** The claims recite operations that cannot be performed by a human:
1. Evaluating 24 classification rules against current state in real-time
2. Managing atomic task dequeue across multiple concurrent projects
3. Executing commands in isolated Kubernetes pods via kubectl exec
4. Streaming output via SSE while maintaining pod isolation
**Cite:** _Enfish v. Microsoft_ (Fed. Cir. 2016): Software architecture improvements are patent-eligible.
---
### Step 2A, Prong Two: Practical Application
The claims integrate any alleged abstract idea into a practical application by providing a specific technical solution to a specific technical problem:
- **Technical Problem:** AI agents are non-deterministic; software development requires deterministic progression
- **Technical Solution:** Deterministic classifier overrides agent action selection, ensuring predictable workflow
The improvement is to software development tooling itself, not merely using computers for an abstract task.
**Cite:** _Core Wireless v. LG_ (Fed. Cir. 2018): Claims providing specific technical improvements are not abstract.
---
### Step 2B: Significantly More (Berkheimer Argument)
The ordered combination of elements is not well-understood, routine, or conventional:
**Combination 1:** Deterministic classifier + AI agent execution + isolated pod environment
**Combination 2:** Dual-execution module (CLI + library) + git-backed state + phase transitions
**Combination 3:** Composable templates + atomic deployment + per-project worker coordination
No prior art teaches these combinations. Under _Berkheimer v. HP Inc._, 881 F.3d 1360 (Fed. Cir. 2018), the conventional nature of claim elements is a factual question. The examiner must provide evidence that this specific combination is conventional, and no such evidence exists because:
1. No agent framework uses external deterministic classifiers for action selection
2. No workflow system provides dual-execution modules that run as both CLI and library
3. No template system combines embedded templates with single-commit atomic deployment
---
## Supporting Documents
| Document | Purpose |
|----------|---------|
| [patent-specification.md](./patent-specification.md) | Technical detail: data structures, algorithms, code examples |
| [patent-figures.md](./patent-figures.md) | Descriptions of required patent figures |
---
## Revision History
| Date | Author | Changes |
|------|--------|---------|
| 2026-02-04 | Initial | First draft with 5 independent claims and 23 dependent claims |
| 2026-02-04 | Rev 2 | Strengthened per counsel analysis: (1) Amended Claim 1(e) to specify mechanism rather than functional result—now recites rule iteration, condition evaluation, early return, and kubectl transmission; (2) Replaced Claim 7 with broader "at least five phases" formulation, added Claim 7A for review/audit/QA phases; (3) Added Temporal.io as Category 3A prior art with detailed distinction strategy; (4) Added Claim 29 for configuration validation module with knowledge graph integration; (5) Added technical grounding for dual-execution architecture in specification explaining the coordination problem it solves |

Binary file not shown.

View File

@ -0,0 +1,740 @@
# rdev Patent Figures
**Subject:** System and Method for Orchestrating AI Agents Through Deterministic Workflow Classification
**Date:** 2026-02-04
These figure descriptions are intended for a patent draftsperson to render as formal patent drawings.
---
## FIG. 1: System Architecture Block Diagram
**Purpose:** High-level view of the invention's components and data flow.
**Elements:**
```
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ │
│ ┌──────────────────┐ │
│ │ External Bot │ │
│ │ (Slack/Discord) │ │
│ └────────┬─────────┘ │
│ │ (1) Feature Request │
│ │ via API │
│ ▼ │
│ ┌──────────────────────────────────────┐ │
│ │ rdev ORCHESTRATOR API (102) │ │
│ │ ┌────────────────┐ ┌──────────────┐ │ │
│ │ │ SDLC Service │ │ Work Queue │ │ │
│ │ │ (Library Mode)│ │ Manager │ │ │
│ │ └───────┬────────┘ └──────┬───────┘ │ │
│ └──────────┼─────────────────┼─────────┘ │
│ │ │ │
│ │ (2) Evaluate │ (3) Enqueue │
│ │ Classifier │ Task │
│ ▼ ▼ │
│ ┌──────────────────────────────────────┐ ┌────────────────────────────────┐ │
│ │ DETERMINISTIC CLASSIFIER (104) │ │ WORK QUEUE (106) │ │
│ │ ┌─────────────────────────────┐ │ │ PostgreSQL with Row Locking │ │
│ │ │ Rule 0: invalid_phase │ │ │ ┌─────────┐ ┌─────────┐ │ │
│ │ │ Rule 1: draft_needs_spec │ │ │ │ Task 1 │ │ Task 2 │ ... │ │
│ │ │ Rule 2: spec_awaiting_appr │ │ │ └─────────┘ └─────────┘ │ │
│ │ │ ... │ │ └────────────────┬───────────────┘ │
│ │ │ Rule 23: feature_complete │ │ │ │
│ │ └─────────────────────────────┘ │ │ │
│ └──────────────────┬───────────────────┘ │ │
│ │ │ │
│ │ (4) Action Output │ (5) Dequeue │
│ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ PER-PROJECT WORKER (108) │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ EXECUTOR REGISTRY (110) │ │ │
│ │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │
│ │ │ │ Build │ │ Verify │ │ SDLC │ │ │ │
│ │ │ │ Executor │ │ Executor │ │ Executor │ │ │ │
│ │ │ └──────┬─────┘ └──────┬─────┘ └──────┬─────┘ │ │ │
│ │ └──────────┼────────────────┼────────────────┼─────────────────────────┘ │ │
│ └──────────────┼────────────────┼────────────────┼─────────────────────────────┘ │
│ │ │ │ │
│ └────────────────┼────────────────┘ │
│ │ (6) kubectl exec │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ KUBERNETES POD (112) │ │
│ │ Label: rdev.orchard9.ai/project=true │ │
│ │ │ │
│ │ ┌─────────────────────┐ ┌─────────────────────┐ │ │
│ │ │ AI AGENT (114) │ │ SDLC CLI (116) │ │ │
│ │ │ (Claude Code / │ │ Same classifier │ │ │
│ │ │ OpenCode) │ │ as library mode │ │ │
│ │ └──────────┬──────────┘ └──────────┬──────────┘ │ │
│ │ │ │ │ │
│ │ │ (7) Query │ │ │
│ │ │ Status │ │ │
│ │ └────────────────────────►│ │ │
│ │ │ │ │
│ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ GIT REPOSITORY (118) │ │ │
│ │ │ .sdlc/ │ │ │
│ │ │ ├── feature.yaml (Phase state) │ │ │
│ │ │ ├── spec.yaml (Specification) │ │ │
│ │ │ ├── plan.yaml (Task breakdown) │ │ │
│ │ │ └── tasks/ (Implementation records) │ │ │
│ │ └─────────────────────────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────────┘
```
**Reference Numerals:**
- 100: System for orchestrating AI agents through deterministic classification
- 102: rdev orchestrator API
- 104: Deterministic classifier with priority-ordered rules
- 106: Work queue with PostgreSQL row locking
- 108: Per-project worker
- 110: Executor registry (build, verify, SDLC)
- 112: Kubernetes pod (isolated execution environment)
- 114: AI agent (Claude Code, OpenCode)
- 116: SDLC CLI (dual-execution module)
- 118: Git repository with SDLC state
**Description:**
FIG. 1 illustrates a system (100) for orchestrating AI agents through deterministic classification. External bots submit feature requests through the orchestrator API (102). The deterministic classifier (104) evaluates current state using priority-ordered rules and outputs specific actions. Tasks are enqueued in the work queue (106) with PostgreSQL row locking. Per-project workers (108) dequeue tasks and route them to the appropriate executor (110). Executors invoke commands in isolated Kubernetes pods (112) via kubectl exec. Inside the pod, the AI agent (114) queries the SDLC CLI (116) to determine its next action. The CLI uses the same classifier logic as the library mode, ensuring consistent behavior. State is persisted in the git repository (118) as YAML files.
---
## FIG. 2: Phase State Machine
**Purpose:** The 10-phase software development lifecycle with transition requirements.
**Elements:**
```
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ │
│ PHASE STATE MACHINE (200) │
│ │
│ ┌──────────┐ Approved ┌───────────┐ Approved ┌──────────┐ │
│ │ │ Spec │ │ Plan │ │ │
│ │ DRAFT │─────────────────►│ SPECIFIED │─────────────────►│ PLANNED │ │
│ │ (202) │ │ (204) │ │ (206) │ │
│ └──────────┘ └───────────┘ └────┬─────┘ │
│ │ │ │
│ │ Requires: │ │
│ │ - Specification artifact │ All tasks │
│ │ │ approved │
│ │ ▼ │
│ ┌────┴─────────────────────────────────────────────────────────────────┐ │
│ │ ARTIFACT REQUIREMENTS PER PHASE: │ │
│ │ │ │
│ │ DRAFT → SPECIFIED: Approved specification document │ │
│ │ SPECIFIED → PLANNED: Approved plan with task breakdown │ │
│ │ PLANNED → READY: All task approvals │ │
│ │ READY → IMPLEMENTATION: Automatic (no artifacts) │ │
│ │ IMPLEMENTATION → REVIEW: All tasks implemented │ │
│ │ REVIEW → AUDIT: Code review approved │ │
│ │ AUDIT → QA: Security audit passed │ │
│ │ QA → MERGE: QA tests passed │ │
│ │ MERGE → RELEASED: Merge to main complete │ │
│ └──────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────┐ ┌───────────┐ ┌──────────┐ │
│ │ │ Auto │ │ All tasks │ │ │
│ │ READY │─────────────────►│IMPLEMENTA-│─────────────────►│ REVIEW │ │
│ │ (208) │ │TION (210) │ implemented │ (212) │ │
│ └──────────┘ └───────────┘ └────┬─────┘ │
│ │ │
│ │ Review │
│ │ approved │
│ ▼ │
│ ┌──────────┐ Merge ┌───────────┐ QA ┌──────────┐ │
│ │ │ complete │ │ passed │ │ │
│ │ RELEASED │◄─────────────────│ MERGE │◄─────────────────│ QA │ │
│ │ (218) │ │ (216) │ │ (214) │ │
│ └──────────┘ └───────────┘ └────┬─────┘ │
│ ▲ │ │
│ │ │ Audit │
│ │ │ passed │
│ │ ┌───────────┐ │ │
│ │ │ │◄──────────────────┘ │
│ └──────────────────────────────│ AUDIT │ │
│ │ (220) │ │
│ └───────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────────┘
```
**Reference Numerals:**
- 200: Phase state machine
- 202: Draft phase
- 204: Specified phase
- 206: Planned phase
- 208: Ready phase
- 210: Implementation phase
- 212: Review phase
- 214: QA phase
- 216: Merge phase
- 218: Released phase
- 220: Audit phase
**Description:**
FIG. 2 illustrates the phase state machine (200) comprising ten development phases. Features begin in DRAFT (202) and progress through SPECIFIED (204), PLANNED (206), READY (208), IMPLEMENTATION (210), REVIEW (212), AUDIT (220), QA (214), MERGE (216), and finally RELEASED (218). Each transition has specific artifact requirements. The classifier evaluates which phase transitions are valid based on artifact presence and approval status.
---
## FIG. 3: Deterministic Classifier Architecture
**Purpose:** How the classifier evaluates rules and produces action outputs.
**Elements:**
```
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ │
│ CLASSIFIER INPUT (302): │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ FeatureState │ │
│ │ ┌─────────────────┐ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ Phase: "impl" │ │ Artifacts: │ │ │
│ │ │ │ │ spec: {approved: true} │ │ │
│ │ │ │ │ plan: {approved: true} │ │ │
│ │ │ │ │ task_0: {implemented: true} │ │ │
│ │ │ │ │ task_1: {implemented: false} ◄── Not done │ │ │
│ │ │ │ │ task_2: {implemented: false} │ │ │
│ │ └─────────────────┘ └─────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ │ Evaluate │
│ ▼ │
│ CLASSIFIER ENGINE (304): │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ Rule 0 (Priority 0): invalid_phase │ │ │
│ │ │ Condition: !isValidPhase(state.Phase) │ │ │
│ │ │ Match: NO ──────────────────────────────────────────────────► NEXT │ │ │
│ │ └─────────────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ Rule 1 (Priority 1): draft_needs_spec │ │ │
│ │ │ Condition: phase == "draft" && !hasArtifact("spec") │ │ │
│ │ │ Match: NO ──────────────────────────────────────────────────► NEXT │ │ │
│ │ └─────────────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ ...rules 2-9 evaluated... │ │ │
│ │ │ Match: NO ──────────────────────────────────────────────────► NEXT │ │ │
│ │ └─────────────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ Rule 10 (Priority 10): implement_next_task ◄────┼───┼─┐ │
│ │ │ Condition: phase == "impl" && hasUnimplementedTasks() │ │ │ │
│ │ │ Match: YES ─────────────────────────────────────────────────────────┼───┼─┘ │
│ │ │ │ │ │
│ │ │ Action Output: │ │ │
│ │ │ Type: IMPLEMENT_TASK │ │ │
│ │ │ Payload: {task_index: 1} │ │ │
│ │ │ Instruction: "Implement task 1: Add API endpoint" │ │ │
│ │ └─────────────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ (Rules 11-23 NOT evaluated due to early return) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ │ Return first match │
│ ▼ │
│ CLASSIFIER OUTPUT (306): │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ Action { │ │
│ │ type: "IMPLEMENT_TASK", │ │
│ │ payload: { task_index: 1 }, │ │
│ │ instruction: "Implement task 1: Add API endpoint" │ │
│ │ } │ │
│ └─────────────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ │ Provided to AI agent │
│ ▼ │
│ AI AGENT EXECUTES INSTRUCTION (NOT decides what to do) │
│ │
└─────────────────────────────────────────────────────────────────────────────────────┘
```
**Reference Numerals:**
- 302: Classifier input (feature state)
- 304: Classifier engine with priority-ordered rules
- 306: Classifier output (action)
**Description:**
FIG. 3 illustrates the deterministic classifier architecture. The classifier receives feature state as input (302), including current phase and artifact status. The classifier engine (304) evaluates rules in strict priority order. Each rule has a condition; the first matching rule produces the output. In this example, rules 0-9 do not match, but rule 10 (implement_next_task) matches because the phase is "implementation" and task 1 is not yet implemented. The classifier returns the action output (306), which specifies exactly what the AI agent should do next. The agent executes this instruction rather than deciding its own action.
---
## FIG. 4: Dual-Execution Architecture
**Purpose:** How the same SDLC code runs as both CLI and library.
**Elements:**
```
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ │
│ SHARED CORE (402): │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ internal/sdlc/ │ │
│ │ ├── classifier.go # Classification rules │ │
│ │ ├── rules.go # 24 priority-ordered rules │ │
│ │ ├── state.go # FeatureState data structure │ │
│ │ └── action.go # Action types and payloads │ │
│ └─────────────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────┴─────────────┐ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────────────┐ ┌─────────────────────────────────────────────────┐ │
│ │ CLI MODE (404) │ │ LIBRARY MODE (406) │ │
│ │ │ │ │ │
│ │ cmd/sdlc/main.go │ │ internal/service/sdlc_service.go │ │
│ │ │ │ │ │
│ │ ┌───────────────────┐ │ │ ┌───────────────────────────────────────────┐ │ │
│ │ │ Import: │ │ │ │ Import: │ │ │
│ │ │ internal/sdlc │ │ │ │ internal/sdlc │ │ │
│ │ └───────────────────┘ │ │ └───────────────────────────────────────────┘ │ │
│ │ │ │ │ │
│ │ Input: │ │ Input: │ │
│ │ - Read .sdlc/ from │ │ - Read state via kubectl exec │ │
│ │ local filesystem │ │ into project pod │ │
│ │ │ │ │ │
│ │ Output: │ │ Output: │ │
│ │ - JSON to stdout │ │ - Structured response via API │ │
│ │ - Write .sdlc/ to │ │ - Write state via kubectl exec │ │
│ │ local filesystem │ │ │ │
│ └────────────┬────────────┘ └───────────────────────┬─────────────────────────┘ │
│ │ │ │
│ │ │ │
│ ════════════════════════════════════════════════════════════════════════════════ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────────────┐ ┌─────────────────────────────────────────────────┐ │
│ │ INSIDE POD (408) │ │ OUTSIDE POD (410) │ │
│ │ │ │ │ │
│ │ AI Agent invokes: │ │ Orchestrator API invokes: │ │
│ │ │ │ │ │
│ │ $ sdlc status │ │ sdlcService.GetNextAction(projectID, featureID)│ │
│ │ {"type":"IMPLEMENT_ │ │ → Action{Type: "IMPLEMENT_TASK", ...} │ │
│ │ TASK",...} │ │ │ │
│ │ │ │ sdlcService.ApproveArtifact(projectID, │ │
│ │ $ sdlc record │ │ featureID, "spec") │ │
│ │ --type=task │ │ → Updates state via kubectl exec │ │
│ │ --index=1 │ │ │ │
│ │ --path=handlers.go │ │ │ │
│ └─────────────────────────┘ └─────────────────────────────────────────────────┘ │
│ │
│ KEY INSIGHT: Same classification logic produces same results regardless of │
│ whether invoked inside the pod (by agent) or outside (by orchestrator) │
│ │
└─────────────────────────────────────────────────────────────────────────────────────┘
```
**Reference Numerals:**
- 402: Shared core SDLC module
- 404: CLI execution mode
- 406: Library execution mode
- 408: Inside pod (agent invokes CLI)
- 410: Outside pod (orchestrator uses library)
**Description:**
FIG. 4 illustrates the dual-execution architecture. The shared core (402) contains classifier logic, rules, and state structures. The CLI mode (404) is compiled as a binary that runs inside Kubernetes pods, reading and writing state to the local filesystem. The library mode (406) is imported by the orchestrator API, reading and writing state via kubectl exec. Both modes import the same `internal/sdlc` package, ensuring identical classification behavior. The AI agent inside the pod (408) invokes the CLI to query status and record artifacts. The orchestrator outside the pod (410) uses the library to evaluate state and drive transitions (like approving artifacts).
---
## FIG. 5: Composable Template Architecture
**Purpose:** How skeleton + component templates compose into projects.
**Elements:**
```
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ │
│ EMBEDDED TEMPLATES (502): │
│ │
│ ┌─────────────────────────────┐ ┌─────────────────────────────────────────┐ │
│ │ SKELETON TEMPLATE (504) │ │ COMPONENT TEMPLATES (506) │ │
│ │ │ │ │ │
│ │ templates/skeleton/ │ │ templates/components/ │ │
│ │ ├── go.work.tmpl │ │ ├── service/ │ │
│ │ ├── .gitignore │ │ │ ├── cmd/{{.Name}}/main.go.tmpl │ │
│ │ ├── .claude/ │ │ │ ├── internal/handlers/ │ │
│ │ │ ├── CLAUDE.md │ │ │ └── Dockerfile.tmpl │ │
│ │ │ └── skills/ │ │ │ │ │
│ │ ├── pkg/ │ │ ├── worker/ │ │
│ │ │ ├── database/ │ │ │ ├── cmd/{{.Name}}/main.go.tmpl │ │
│ │ │ └── queue/ │ │ │ └── internal/handlers/ │ │
│ │ ├── scripts/ │ │ │ │ │
│ │ └── .woodpecker.yml │ │ ├── app-react/ │ │
│ │ │ │ └── cli/ │ │
│ └─────────────────────────────┘ └─────────────────────────────────────────┘ │
│ │ │ │
│ │ │ │
│ └────────────┬───────────────────────┘ │
│ │ │
│ ▼ │
│ COMPOSITION ENGINE (508): │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Input: │ │
│ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ CompositionConfig { │ │ │
│ │ │ ProjectName: "my-project", │ │ │
│ │ │ Components: [ │ │ │
│ │ │ {Type: "service", Name: "auth-api", Port: 8080}, │ │ │
│ │ │ {Type: "service", Name: "user-api", Port: 8081}, │ │ │
│ │ │ {Type: "worker", Name: "email-worker"}, │ │ │
│ │ │ ] │ │ │
│ │ │ } │ │ │
│ │ └─────────────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ Process: │ │
│ │ 1. Load skeleton template │ │
│ │ 2. Process skeleton with {{.ProjectName}} │ │
│ │ 3. For each component: │ │
│ │ a. Load component template by type │ │
│ │ b. Process with {{.ComponentName}}, {{.Port}} │ │
│ │ c. Place files in components/{{.ComponentName}}/ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ COMPOSED OUTPUT (510): │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ my-project/ │ │
│ │ ├── go.work # From skeleton │ │
│ │ ├── .claude/CLAUDE.md # From skeleton │ │
│ │ ├── pkg/database/ # From skeleton (shared) │ │
│ │ ├── .woodpecker.yml # From skeleton + component steps │ │
│ │ │ │ │
│ │ ├── components/ │ │
│ │ │ ├── auth-api/ # From service template │ │
│ │ │ │ ├── cmd/auth-api/main.go │ │
│ │ │ │ └── Dockerfile │ │
│ │ │ ├── user-api/ # From service template │ │
│ │ │ │ ├── cmd/user-api/main.go │ │
│ │ │ │ └── Dockerfile │ │
│ │ │ └── email-worker/ # From worker template │ │
│ │ │ ├── cmd/email-worker/main.go │ │
│ │ │ └── Dockerfile │ │
│ └─────────────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ATOMIC DEPLOYMENT (512): │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Single Gitea API Call: │ │
│ │ POST /repos/{owner}/{repo}/contents (bulk operation) │ │
│ │ │ │
│ │ - All files created in ONE commit │ │
│ │ - CI triggers ONCE (not per file) │ │
│ │ - Atomic: all files or none │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────────┘
```
**Reference Numerals:**
- 502: Embedded templates (compile-time embedding)
- 504: Skeleton template (base project structure)
- 506: Component templates (service, worker, app, CLI)
- 508: Composition engine
- 510: Composed output (complete project)
- 512: Atomic deployment via bulk API
**Description:**
FIG. 5 illustrates the composable template architecture. Templates are embedded at compile time (502) and comprise a skeleton (504) providing base structure and multiple component templates (506) for different component types. The composition engine (508) receives a configuration specifying project name and components. It processes the skeleton with project-level variables, then processes each component template with component-specific variables (name, port). The composed output (510) is a complete project with shared packages and multiple components. Atomic deployment (512) uses a bulk API to create all files in a single commit, preventing multiple CI triggers.
---
## FIG. 6: Per-Project Worker Coordination
**Purpose:** How workers coordinate across multiple projects with atomic task acquisition.
**Elements:**
```
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ │
│ COORDINATOR (602): │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Discovery Loop (every 30s): │ │
│ │ 1. Query Kubernetes for pods with label rdev.orchard9.ai/project=true │ │
│ │ 2. For each discovered project not in worker registry: │ │
│ │ - Spawn new ProjectWorker goroutine │ │
│ │ 3. For each worker with no matching project: │ │
│ │ - Stop and remove worker │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ Worker Registry: │ │ │
│ │ │ project-alpha → Worker-A (goroutine) │ │ │
│ │ │ project-beta → Worker-B (goroutine) │ │ │
│ │ │ project-gamma → Worker-C (goroutine) │ │ │
│ │ └─────────────────────────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────────────┘ │
│ │ │ │ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Worker-A (604) │ │ Worker-B (604) │ │ Worker-C (604) │ │
│ │ project-alpha │ │ project-beta │ │ project-gamma │ │
│ │ │ │ │ │ │ │
│ │ Poll loop: │ │ Poll loop: │ │ Poll loop: │ │
│ │ 1. Acquire task │ │ 1. Acquire task │ │ 1. Acquire task │ │
│ │ 2. Execute │ │ 2. Execute │ │ 2. Execute │ │
│ │ 3. Record result │ │ 3. Record result │ │ 3. Record result │ │
│ └────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘ │
│ │ │ │ │
│ └────────────────────┼────────────────────┘ │
│ │ │
│ ▼ │
│ WORK QUEUE (606): │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ PostgreSQL table: work_queue │ │
│ │ │ │
│ │ ┌───────┬──────────────┬──────────┬────────────┬──────────┐ │ │
│ │ │ id │ project_id │ type │ status │ created │ │ │
│ │ ├───────┼──────────────┼──────────┼────────────┼──────────┤ │ │
│ │ │ 1 │ project-alpha│ build │ pending │ 10:00:01 │ │ │
│ │ │ 2 │ project-alpha│ sdlc │ pending │ 10:00:02 │ │ │
│ │ │ 3 │ project-beta │ verify │ pending │ 10:00:03 │ │ │
│ │ │ 4 │ project-gamma│ build │ processing │ 10:00:04 │ ◄── Locked │ │
│ │ │ 5 │ project-beta │ build │ pending │ 10:00:05 │ │ │
│ │ └───────┴──────────────┴──────────┴────────────┴──────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ │ │
│ ATOMIC TASK ACQUISITION (608): │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ BEGIN TRANSACTION; │ │
│ │ │ │
│ │ SELECT * FROM work_queue │ │
│ │ WHERE project_id = 'project-alpha' │ │
│ │ AND status = 'pending' │ │
│ │ ORDER BY created_at │ │
│ │ LIMIT 1 │ │
│ │ FOR UPDATE SKIP LOCKED; ◄── Row-level lock, skip if locked │ │
│ │ │ │
│ │ UPDATE work_queue │ │
│ │ SET status = 'processing', started_at = NOW() │ │
│ │ WHERE id = ?; │ │
│ │ │ │
│ │ COMMIT; │ │
│ │ │ │
│ │ Result: Only ONE worker acquires the task, no race conditions │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────────┘
```
**Reference Numerals:**
- 602: Coordinator (discovers projects, spawns workers)
- 604: Per-project worker (one per project)
- 606: Work queue (PostgreSQL table)
- 608: Atomic task acquisition (SELECT FOR UPDATE SKIP LOCKED)
**Description:**
FIG. 6 illustrates per-project worker coordination. The coordinator (602) discovers projects by querying Kubernetes for pods with specific labels and spawns a worker goroutine for each project. Each per-project worker (604) polls the work queue for tasks matching its assigned project. The work queue (606) is a PostgreSQL table storing tasks with project ID, type, and status. Atomic task acquisition (608) uses `SELECT FOR UPDATE SKIP LOCKED` to ensure only one worker acquires each task without distributed locks or race conditions.
---
## FIG. 7: Action Type Taxonomy
**Purpose:** The defined set of action types the classifier can output.
**Elements:**
```
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ │
│ ACTION TYPES (702): │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ ARTIFACT CREATION ACTIONS: │ │
│ │ │ │
│ │ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │ │
│ │ │ CREATE_SPEC │ │ CREATE_PLAN │ │ CREATE_TESTS │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ Output: │ │ Output: │ │ Output: │ │ │
│ │ │ spec.yaml in │ │ plan.yaml with │ │ Test files │ │ │
│ │ │ .sdlc/ │ │ task breakdown │ │ covering impl │ │ │
│ │ └────────────────┘ └────────────────┘ └────────────────┘ │ │
│ │ │ │
│ │ ┌────────────────┐ │ │
│ │ │ IMPLEMENT_TASK │ │ │
│ │ │ │ │ │
│ │ │ Payload: │ │ │
│ │ │ {task_index: N}│ │ │
│ │ │ │ │ │
│ │ │ Output: │ │ │
│ │ │ Code for task │ │ │
│ │ │ N from plan │ │ │
│ │ └────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ WORKFLOW ACTIONS: │ │
│ │ │ │
│ │ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │ │
│ │ │ AWAIT_APPROVAL │ │ TRANSITION │ │ REQUEST_REVIEW │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ Payload: │ │ Payload: │ │ Agent cannot │ │ │
│ │ │ {artifact: │ │ {to_phase: │ │ proceed; │ │ │
│ │ │ "spec"} │ │ "specified"} │ │ human review │ │ │
│ │ │ │ │ │ │ required │ │ │
│ │ │ Agent blocked; │ │ State machine │ │ │ │ │
│ │ │ human action │ │ transition │ │ │ │ │
│ │ │ required │ │ │ │ │ │ │
│ │ └────────────────┘ └────────────────┘ └────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ TERMINAL ACTIONS: │ │
│ │ │ │
│ │ ┌────────────────┐ ┌────────────────┐ │ │
│ │ │ COMPLETE │ │ ERROR │ │ │
│ │ │ │ │ │ │ │
│ │ │ Feature has │ │ Invalid state │ │ │
│ │ │ reached │ │ detected; │ │ │
│ │ │ RELEASED phase │ │ manual │ │ │
│ │ │ │ │ intervention │ │ │
│ │ │ No more work │ │ required │ │ │
│ │ │ for agent │ │ │ │ │
│ │ └────────────────┘ └────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ KEY INSIGHT: Agent receives ONE of these action types. │
│ Agent does NOT choose what to do - classifier decides. │
│ │
└─────────────────────────────────────────────────────────────────────────────────────┘
```
**Reference Numerals:**
- 702: Action types taxonomy
**Description:**
FIG. 7 illustrates the taxonomy of action types the classifier can output. Artifact creation actions (CREATE_SPEC, CREATE_PLAN, CREATE_TESTS, IMPLEMENT_TASK) instruct the agent to produce specific artifacts. Workflow actions (AWAIT_APPROVAL, TRANSITION, REQUEST_REVIEW) indicate state changes or blocking conditions. Terminal actions (COMPLETE, ERROR) indicate the feature has finished or encountered an invalid state. The agent receives exactly one action type and executes that instruction; the agent does not choose its own action.
---
## FIG. 8: Git-Backed State Persistence
**Purpose:** How SDLC state is stored in git for auditability.
**Elements:**
```
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ │
│ REPOSITORY STRUCTURE (802): │
│ │
│ project-repo/ │
│ ├── .sdlc/ ◄── SDLC state directory │
│ │ ├── feature.yaml # Main feature state │
│ │ ├── spec.yaml # Specification artifact │
│ │ ├── plan.yaml # Task breakdown │
│ │ └── tasks/ │
│ │ ├── 0-setup.yaml # Task 0 record │
│ │ ├── 1-api.yaml # Task 1 record │
│ │ └── 2-tests.yaml # Task 2 record │
│ │ │
│ ├── components/ ◄── Actual code │
│ │ └── ... │
│ └── pkg/ │
│ └── ... │
│ │
│ FEATURE.YAML CONTENT (804): │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ id: feat-001 │ │
│ │ name: "Add user authentication" │ │
│ │ phase: implementation │ │
│ │ created_at: 2026-02-04T10:00:00Z │ │
│ │ updated_at: 2026-02-04T14:30:00Z │ │
│ │ │ │
│ │ artifacts: │ │
│ │ spec: │ │
│ │ type: specification │ │
│ │ path: .sdlc/spec.yaml │ │
│ │ hash: abc123... │ │
│ │ approved: true │ │
│ │ approved_by: "jordan@orchard9.ai" │ │
│ │ approved_at: 2026-02-04T11:00:00Z │ │
│ │ │ │
│ │ plan: │ │
│ │ type: plan │ │
│ │ path: .sdlc/plan.yaml │ │
│ │ hash: def456... │ │
│ │ approved: true │ │
│ │ approved_by: "jordan@orchard9.ai" │ │
│ │ approved_at: 2026-02-04T12:00:00Z │ │
│ │ │ │
│ │ tasks: │ │
│ │ - index: 0 │ │
│ │ title: "Setup database schema" │ │
│ │ implemented: true │ │
│ │ artifact_path: .sdlc/tasks/0-setup.yaml │ │
│ │ - index: 1 │ │
│ │ title: "Add API endpoint" │ │
│ │ implemented: true │ │
│ │ artifact_path: .sdlc/tasks/1-api.yaml │ │
│ │ - index: 2 │ │
│ │ title: "Add tests" │ │
│ │ implemented: false ◄── Not done yet │ │
│ └─────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ GIT HISTORY (806): │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ commit 7f8a9b2 sdlc: task 1 implemented │ │
│ │ commit 3d4e5f6 sdlc: task 0 implemented │ │
│ │ commit 1a2b3c4 sdlc: plan approved, transition to planned │ │
│ │ commit 9e8f7a6 sdlc: plan created │ │
│ │ commit 5c6d7e8 sdlc: spec approved, transition to specified │ │
│ │ commit 2b3c4d5 sdlc: spec created │ │
│ │ commit 8a9b0c1 sdlc: feature initialized │ │
│ │ │ │
│ │ Every state change = git commit │ │
│ │ Full audit trail via git log │ │
│ │ Time-travel via git checkout │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────────┘
```
**Reference Numerals:**
- 802: Repository structure with .sdlc directory
- 804: feature.yaml content showing state
- 806: Git history showing state change commits
**Description:**
FIG. 8 illustrates git-backed state persistence. SDLC state is stored in the `.sdlc/` directory (802) within the project repository. The `feature.yaml` file (804) contains current phase, artifacts with approval status, and task breakdown. Every state change results in a git commit, creating a complete audit trail (806). Time-travel queries can reconstruct historical state by checking out previous commits. This approach provides version-controlled auditability without requiring a separate database.
---
## Revision History
| Date | Author | Changes |
|------|--------|---------|
| 2026-02-04 | Initial | Complete figure descriptions with 8 figures |

Binary file not shown.

View File

@ -0,0 +1,787 @@
# rdev Technical Specification for Patent Disclosure
- **Subject:** System and Method for Orchestrating AI Agents Through Deterministic Workflow Classification
- **Date:** 2026-02-04
---
## Field of the Invention
The present invention relates generally to software development automation and AI agent orchestration, and more particularly to methods and systems for constraining non-deterministic AI agents through deterministic classification while executing those agents in isolated Kubernetes environments.
---
## Background of the Invention
### Technical Problem
AI agents (large language model-based systems that can execute code and tools) have emerged as powerful tools for software development. However, their integration into production workflows faces a fundamental tension:
1. **Agent Autonomy vs. Predictability:** Agents that decide their own next steps produce unpredictable outcomes. The same agent given the same prompt may take different actions.
2. **Workflow Rigidity vs. Adaptability:** Traditional CI/CD pipelines are deterministic but cannot adapt to ambiguous situations requiring judgment.
3. **Isolation vs. Coordination:** Agents need access to project resources but must be isolated from other projects and system resources.
4. **Human Oversight vs. Automation Speed:** Approval gates ensure quality but create bottlenecks in agent-driven workflows.
### Prior Art Limitations
**AI Agent Frameworks (AutoGPT, LangChain, CrewAI):** Provide tools for building agents but give agents autonomy to select actions. No mechanism constrains action selection externally.
**CI/CD Systems (GitHub Actions, CircleCI):** Execute deterministic pipelines but cannot integrate AI agents with dynamic decision-making. Pipelines are static definitions, not adaptive to current state.
**Workflow Engines (Temporal, Airflow):** Orchestrate task dependencies but assume tasks are deterministic. No support for constraining non-deterministic agent behavior.
**Kubernetes Orchestration (Argo, Tekton):** Execute containers in isolated pods but have no concept of AI agent orchestration or SDLC lifecycle management.
---
## Summary of the Invention
The present invention provides a system and method for orchestrating AI agents through software development workflows using deterministic classification. In one embodiment, a system comprises:
- A phase state machine with 10 development phases and artifact requirements
- A deterministic classifier with 24 priority-ordered rules evaluating state and outputting actions
- Isolated execution in Kubernetes pods via kubectl exec
- Dual-execution module running as both CLI (inside pods) and library (in orchestrator)
- Composable monorepo templates with skeleton + component architecture
- Per-project worker coordination with atomic task dequeue
The system constrains AI agent action selection by outputting specific instructions from the classifier rather than allowing agents to decide their own actions.
---
## Detailed Description of Preferred Embodiments
### 1. Phase State Machine
The fundamental workflow model is a **10-phase state machine** representing software development lifecycle stages:
```go
type Phase string
const (
PhaseDraft Phase = "draft" // Initial feature request
PhaseSpecified Phase = "specified" // Specification document exists
PhasePlanned Phase = "planned" // Task breakdown complete
PhaseReady Phase = "ready" // Approved and ready for implementation
PhaseImplementation Phase = "implementation" // Active coding
PhaseReview Phase = "review" // Code review in progress
PhaseAudit Phase = "audit" // Security/quality audit
PhaseQA Phase = "qa" // Testing and validation
PhaseMerge Phase = "merge" // Merging to main branch
PhaseReleased Phase = "released" // Deployed to production
)
```
**Phase Transition Requirements:**
| From Phase | To Phase | Required Artifacts |
|------------|----------|-------------------|
| draft | specified | Approved specification |
| specified | planned | Approved plan with tasks |
| planned | ready | All task approvals |
| ready | implementation | None (automatic) |
| implementation | review | All tasks implemented |
| review | audit | Review approved |
| audit | qa | Audit passed |
| qa | merge | QA passed |
| merge | released | Merge complete |
---
### 2. The Deterministic Classifier
The classifier comprises **24 priority-ordered rules** that evaluate current state and output specific actions. Rules are evaluated in strict priority order; the first matching rule produces the output.
```go
type ClassifierRule struct {
Priority int
Name string
Condition func(state *FeatureState) bool
Action Action
}
type Action struct {
Type ActionType
Payload map[string]interface{}
Instruction string
}
type ActionType string
const (
ActionCreateSpec ActionType = "CREATE_SPEC"
ActionAwaitApproval ActionType = "AWAIT_APPROVAL"
ActionTransition ActionType = "TRANSITION"
ActionImplementTask ActionType = "IMPLEMENT_TASK"
ActionCreateTests ActionType = "CREATE_TESTS"
ActionRequestReview ActionType = "REQUEST_REVIEW"
ActionComplete ActionType = "COMPLETE"
ActionError ActionType = "ERROR"
)
```
**Example Rules (Priority Order):**
```go
var ClassificationRules = []ClassifierRule{
// Priority 0: Error states
{
Priority: 0,
Name: "invalid_phase",
Condition: func(s *FeatureState) bool {
return !isValidPhase(s.Phase)
},
Action: Action{
Type: ActionError,
Instruction: "Invalid phase state - manual intervention required",
},
},
// Priority 1: Draft phase needs specification
{
Priority: 1,
Name: "draft_needs_spec",
Condition: func(s *FeatureState) bool {
return s.Phase == PhaseDraft && !s.HasArtifact("spec")
},
Action: Action{
Type: ActionCreateSpec,
Instruction: "Create specification document based on feature request",
},
},
// Priority 2: Spec exists but not approved
{
Priority: 2,
Name: "spec_awaiting_approval",
Condition: func(s *FeatureState) bool {
return s.Phase == PhaseDraft &&
s.HasArtifact("spec") &&
!s.IsArtifactApproved("spec")
},
Action: Action{
Type: ActionAwaitApproval,
Payload: map[string]interface{}{"artifact": "spec"},
Instruction: "Specification awaiting approval",
},
},
// Priority 3: Spec approved, transition to specified
{
Priority: 3,
Name: "transition_to_specified",
Condition: func(s *FeatureState) bool {
return s.Phase == PhaseDraft && s.IsArtifactApproved("spec")
},
Action: Action{
Type: ActionTransition,
Payload: map[string]interface{}{"to_phase": PhaseSpecified},
Instruction: "Transitioning to specified phase",
},
},
// Priority 10: Implementation phase - find next task
{
Priority: 10,
Name: "implement_next_task",
Condition: func(s *FeatureState) bool {
return s.Phase == PhaseImplementation && s.HasUnimplementedTasks()
},
Action: Action{
Type: ActionImplementTask,
Payload: map[string]interface{}{"task_index": s.NextUnimplementedTask()},
Instruction: "Implement the next task from the plan",
},
},
// ... remaining rules
}
```
**Classifier Evaluation Algorithm:**
```go
func (c *Classifier) Evaluate(state *FeatureState) Action {
for _, rule := range c.Rules {
if rule.Condition(state) {
return rule.Action
}
}
return Action{
Type: ActionError,
Instruction: "No matching rule - undefined state",
}
}
```
**Key Innovation:** The classifier is **external to the agent**. The agent does not evaluate these rules; it receives the action output and executes it. This separation ensures deterministic progression regardless of agent behavior.
---
### 3. Feature State Representation
State is persisted in YAML files within the project's git repository:
```go
type FeatureState struct {
ID string `yaml:"id"`
Name string `yaml:"name"`
Phase Phase `yaml:"phase"`
CreatedAt time.Time `yaml:"created_at"`
UpdatedAt time.Time `yaml:"updated_at"`
Artifacts map[string]Artifact `yaml:"artifacts"`
Tasks []Task `yaml:"tasks,omitempty"`
Metadata map[string]interface{} `yaml:"metadata,omitempty"`
}
type Artifact struct {
Type string `yaml:"type"`
Path string `yaml:"path"`
Hash string `yaml:"hash"`
Approved bool `yaml:"approved"`
ApprovedBy string `yaml:"approved_by,omitempty"`
ApprovedAt time.Time `yaml:"approved_at,omitempty"`
}
type Task struct {
Index int `yaml:"index"`
Title string `yaml:"title"`
Description string `yaml:"description"`
Implemented bool `yaml:"implemented"`
ArtifactPath string `yaml:"artifact_path,omitempty"`
}
```
**Directory Structure:**
```
.sdlc/
├── feature.yaml # Main feature state
├── spec.yaml # Specification artifact
├── plan.yaml # Task breakdown
├── tasks/
│ ├── 0-setup.yaml # Task 0 implementation record
│ ├── 1-api.yaml # Task 1 implementation record
│ └── 2-tests.yaml # Task 2 implementation record
└── reviews/
└── review-1.yaml # Review feedback
```
**Git-Backed Audit Trail:**
Every state change results in a git commit:
```go
func (s *StateManager) UpdateState(state *FeatureState) error {
// Serialize to YAML
data, err := yaml.Marshal(state)
if err != nil {
return fmt.Errorf("marshal state: %w", err)
}
// Write to file
path := filepath.Join(".sdlc", "feature.yaml")
if err := os.WriteFile(path, data, 0644); err != nil {
return fmt.Errorf("write state: %w", err)
}
// Commit change
msg := fmt.Sprintf("sdlc: %s -> %s", state.Phase, state.UpdatedAt.Format(time.RFC3339))
if err := s.git.CommitAll(msg); err != nil {
return fmt.Errorf("commit state: %w", err)
}
return nil
}
```
---
### 4. Dual-Execution Architecture
#### Technical Problem Solved by Dual-Execution
The dual-execution architecture solves a fundamental coordination problem in distributed AI agent orchestration. Consider the alternatives:
1. **Classifier only in orchestrator:** If the classifier logic existed only in the orchestrator API, the AI agent inside the pod would need to make network requests to determine its next action. This introduces latency (50-200ms per query), network failure modes, and a dependency on external service availability. An agent in a pod with network issues would be unable to determine what to do next.
2. **Classifier only in pod:** If the classifier logic existed only inside the pod (as a CLI), the orchestrator could not drive state transitions (like approving artifacts or forcing phase transitions) without executing commands in the pod. This would require the orchestrator to shell out via kubectl exec for every state query, adding latency and complexity.
3. **Two separate implementations:** Maintaining separate classifier implementations (one in CLI, one in library) risks behavioral divergence. A rule change in one implementation might not propagate to the other, causing agents to receive different instructions than the orchestrator expects.
**The Solution:** By compiling the same classifier code into both a CLI binary (embedded in pod images) and a library (imported by the orchestrator API), the system ensures:
- **Identical classification behavior** regardless of execution context
- **Low-latency agent queries** via local CLI invocation
- **Direct orchestrator transitions** via library import
- **Single source of truth** for classification rules
This architectural decision enables both agent-initiated queries ("what should I do next?") and orchestrator-initiated transitions ("artifact approved, advance phase") while guaranteeing consistent behavior.
The SDLC module operates in two execution modes from the same codebase:
#### 4.1 CLI Mode (Inside Pod)
```go
// cmd/sdlc/main.go
func main() {
app := &cli.App{
Name: "sdlc",
Usage: "Software Development Lifecycle CLI",
Commands: []*cli.Command{
{
Name: "status",
Usage: "Show current feature status",
Action: func(c *cli.Context) error {
state, err := sdlc.LoadState(".sdlc")
if err != nil {
return err
}
classifier := sdlc.NewClassifier()
action := classifier.Evaluate(state)
return json.NewEncoder(os.Stdout).Encode(action)
},
},
{
Name: "record",
Usage: "Record an artifact",
Action: func(c *cli.Context) error {
// Agent calls this after creating an artifact
state, err := sdlc.LoadState(".sdlc")
if err != nil {
return err
}
state.AddArtifact(c.String("type"), c.String("path"))
return sdlc.SaveState(".sdlc", state)
},
},
},
}
app.Run(os.Args)
}
```
**Agent Usage Pattern:**
```bash
# Agent queries what to do next
$ sdlc status
{"type":"IMPLEMENT_TASK","payload":{"task_index":2},"instruction":"Implement task 2: Add API endpoint"}
# Agent implements the task, then records it
$ sdlc record --type=task --index=2 --path=internal/handlers/users.go
# Agent queries again
$ sdlc status
{"type":"IMPLEMENT_TASK","payload":{"task_index":3},"instruction":"Implement task 3: Add tests"}
```
#### 4.2 Library Mode (In Orchestrator)
```go
// internal/service/sdlc_service.go
type SDLCService struct {
classifier *sdlc.Classifier
executor PodExecutor
}
func (s *SDLCService) GetNextAction(projectID, featureID string) (*Action, error) {
// Load state from pod via kubectl exec
state, err := s.executor.ReadState(projectID, featureID)
if err != nil {
return nil, fmt.Errorf("read state: %w", err)
}
// Evaluate classifier (same logic as CLI)
action := s.classifier.Evaluate(state)
return action, nil
}
func (s *SDLCService) ApproveArtifact(projectID, featureID, artifactType string) error {
// Load state
state, err := s.executor.ReadState(projectID, featureID)
if err != nil {
return fmt.Errorf("read state: %w", err)
}
// Update approval
state.ApproveArtifact(artifactType)
// Save state back to pod
return s.executor.WriteState(projectID, featureID, state)
}
```
**Key Insight:** Both modes share `sdlc.Classifier` and `sdlc.FeatureState`. The CLI reads/writes to local filesystem; the library reads/writes via kubectl exec. Behavior is identical.
---
### 5. Isolated Pod Execution
Agents execute inside Kubernetes pods with controlled access:
```go
type PodExecutor struct {
kubeClient kubernetes.Interface
namespace string
}
func (p *PodExecutor) ExecCommand(podName string, cmd []string) (string, error) {
req := p.kubeClient.CoreV1().RESTClient().Post().
Resource("pods").
Name(podName).
Namespace(p.namespace).
SubResource("exec").
VersionedParams(&corev1.PodExecOptions{
Command: cmd,
Stdout: true,
Stderr: true,
}, scheme.ParameterCodec)
exec, err := remotecommand.NewSPDYExecutor(p.config, "POST", req.URL())
if err != nil {
return "", fmt.Errorf("create executor: %w", err)
}
var stdout, stderr bytes.Buffer
err = exec.Stream(remotecommand.StreamOptions{
Stdout: &stdout,
Stderr: &stderr,
})
if err != nil {
return "", fmt.Errorf("exec stream: %w (stderr: %s)", err, stderr.String())
}
return stdout.String(), nil
}
```
**Pod Discovery:**
```go
func (p *PodExecutor) DiscoverProjects() ([]string, error) {
pods, err := p.kubeClient.CoreV1().Pods(p.namespace).List(context.Background(), metav1.ListOptions{
LabelSelector: "rdev.orchard9.ai/project=true",
})
if err != nil {
return nil, fmt.Errorf("list pods: %w", err)
}
var projectIDs []string
for _, pod := range pods.Items {
if id, ok := pod.Labels["rdev.orchard9.ai/project-id"]; ok {
projectIDs = append(projectIDs, id)
}
}
return projectIDs, nil
}
```
**Streaming Output via SSE:**
```go
func (h *ExecutionHandler) StreamExecution(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/event-stream")
w.Header().Set("Cache-Control", "no-cache")
flusher, ok := w.(http.Flusher)
if !ok {
http.Error(w, "streaming not supported", http.StatusInternalServerError)
return
}
// Execute command with streaming
err := h.executor.ExecCommandStreaming(podName, cmd, func(line string) {
fmt.Fprintf(w, "data: %s\n\n", line)
flusher.Flush()
})
if err != nil {
fmt.Fprintf(w, "event: error\ndata: %s\n\n", err.Error())
}
fmt.Fprintf(w, "event: done\ndata: completed\n\n")
flusher.Flush()
}
```
---
### 6. Composable Monorepo Templates
Templates are embedded at compile time and composed at runtime:
#### 6.1 Embedded Templates
```go
//go:embed templates/*
var templatesFS embed.FS
type TemplateProvider struct {
fs embed.FS
}
func (p *TemplateProvider) LoadSkeleton() (*Template, error) {
return p.loadTemplate("templates/skeleton")
}
func (p *TemplateProvider) LoadComponent(componentType string) (*Template, error) {
return p.loadTemplate(fmt.Sprintf("templates/components/%s", componentType))
}
```
#### 6.2 Template Composition
```go
type CompositionEngine struct {
provider *TemplateProvider
}
func (c *CompositionEngine) Compose(config CompositionConfig) (*ComposedProject, error) {
// Load skeleton
skeleton, err := c.provider.LoadSkeleton()
if err != nil {
return nil, fmt.Errorf("load skeleton: %w", err)
}
// Process skeleton with project variables
files := skeleton.Process(map[string]string{
"ProjectName": config.ProjectName,
"GoModule": config.GoModule,
})
// Add each component
for _, comp := range config.Components {
component, err := c.provider.LoadComponent(comp.Type)
if err != nil {
return nil, fmt.Errorf("load component %s: %w", comp.Type, err)
}
// Process component with component-specific variables
componentFiles := component.Process(map[string]string{
"ComponentName": comp.Name,
"ComponentNameCamel": toCamelCase(comp.Name),
"Port": strconv.Itoa(comp.Port),
"ProjectName": config.ProjectName,
})
files = append(files, componentFiles...)
}
return &ComposedProject{Files: files}, nil
}
```
#### 6.3 Atomic Deployment
```go
func (d *Deployer) DeployAtomic(projectID string, files []File) error {
// Collect all file operations
operations := make([]gitea.FileOperation, len(files))
for i, f := range files {
operations[i] = gitea.FileOperation{
Operation: "create",
Path: f.Path,
Content: base64.StdEncoding.EncodeToString(f.Content),
}
}
// Single API call creates all files in one commit
_, _, err := d.giteaClient.ChangeFiles(
d.owner,
projectID,
gitea.ChangeFilesOptions{
Files: operations,
Message: "Initialize project from template",
Branch: "main",
},
)
return err
}
```
---
### 7. Per-Project Worker Coordination
Workers poll for tasks specific to their assigned project:
```go
type QueueProcessor struct {
db *sqlx.DB
coordinator *Coordinator
}
func (q *QueueProcessor) Start(ctx context.Context) {
// Coordinator spawns per-project workers
go q.coordinator.Run(ctx)
}
type Coordinator struct {
kubeClient kubernetes.Interface
workers map[string]*ProjectWorker
mu sync.RWMutex
}
func (c *Coordinator) Run(ctx context.Context) {
ticker := time.NewTicker(30 * time.Second)
defer ticker.Stop()
for {
select {
case <-ctx.Done():
return
case <-ticker.C:
c.syncWorkers(ctx)
}
}
}
func (c *Coordinator) syncWorkers(ctx context.Context) {
// Discover projects
projects, err := c.discoverProjects()
if err != nil {
slog.Error("discover projects", "error", err)
return
}
c.mu.Lock()
defer c.mu.Unlock()
// Start workers for new projects
for _, projectID := range projects {
if _, exists := c.workers[projectID]; !exists {
worker := NewProjectWorker(projectID, c.db, c.executors)
c.workers[projectID] = worker
go worker.Run(ctx)
}
}
// Stop workers for removed projects
for projectID, worker := range c.workers {
if !contains(projects, projectID) {
worker.Stop()
delete(c.workers, projectID)
}
}
}
```
**Atomic Task Acquisition:**
```go
func (w *ProjectWorker) acquireTask(ctx context.Context) (*WorkTask, error) {
tx, err := w.db.BeginTxx(ctx, nil)
if err != nil {
return nil, fmt.Errorf("begin tx: %w", err)
}
defer tx.Rollback()
var task WorkTask
err = tx.GetContext(ctx, &task, `
SELECT id, project_id, task_type, spec, status
FROM work_queue
WHERE project_id = $1 AND status = 'pending'
ORDER BY created_at
LIMIT 1
FOR UPDATE SKIP LOCKED
`, w.projectID)
if err == sql.ErrNoRows {
return nil, nil // No tasks available
}
if err != nil {
return nil, fmt.Errorf("select task: %w", err)
}
_, err = tx.ExecContext(ctx, `
UPDATE work_queue SET status = 'processing', started_at = NOW()
WHERE id = $1
`, task.ID)
if err != nil {
return nil, fmt.Errorf("update status: %w", err)
}
if err := tx.Commit(); err != nil {
return nil, fmt.Errorf("commit: %w", err)
}
return &task, nil
}
```
---
### 8. Performance Characteristics
#### 8.1 Classification Latency
| Rules | p50 Latency | p99 Latency |
|-------|-------------|-------------|
| 10 | 0.1ms | 0.5ms |
| 24 | 0.2ms | 1.0ms |
| 50 | 0.5ms | 2.0ms |
#### 8.2 Pod Execution Latency
| Operation | p50 Latency | p99 Latency |
|-----------|-------------|-------------|
| kubectl exec (simple) | 50ms | 200ms |
| State read | 100ms | 500ms |
| State write + commit | 500ms | 2s |
#### 8.3 Work Queue Throughput
| Concurrent Workers | Tasks/sec | Notes |
|-------------------|-----------|-------|
| 1 | 10 | Single project |
| 10 | 80 | 10 projects, row-lock contention minimal |
| 100 | 500 | Scales with PostgreSQL connections |
---
## Alternative Embodiments
### 9A. Alternative Execution Environments
The system may use alternative execution environments:
- Docker containers instead of Kubernetes pods
- SSH connections instead of kubectl exec
- WebSocket instead of exec streaming
### 9B. Alternative State Storage
State may be stored in:
- Database tables instead of git-backed YAML
- S3-compatible object storage
- CRDT-based distributed state for multi-region
### 9C. Alternative Classifier Implementations
The classifier may be implemented as:
- Rule engine (Drools, OPA/Rego)
- Decision tree loaded from configuration
- ML model with deterministic output mapping
---
## Claims
[See patent-disclosure.md for full claim listing]
---
## Abstract
A system and method for orchestrating AI agents through software development workflows using deterministic classification. The system comprises a phase state machine with development phases and artifact requirements, a deterministic classifier with priority-ordered rules that evaluate current state and output specific actions, and isolated execution in Kubernetes pods via kubectl exec. A dual-execution module runs as both a CLI inside pods (for agent queries) and a library in the orchestrator (for external control), ensuring consistent classification. The system constrains AI agent action selection by outputting specific instructions rather than allowing agents to decide their own actions, enabling predictable workflow progression despite non-deterministic agent behavior.
---
## Revision History
| Date | Author | Changes |
|------|--------|---------|
| 2026-02-04 | Initial | Complete specification with data structures, algorithms, and code examples |

139
ideas/aeres/PRIORITIES.md Normal file
View File

@ -0,0 +1,139 @@
# Simple Prototype - Priority Implementation Index
## Overview
This directory contains implementation plans for fixing issues identified in the agent generation prototype. Each document provides root cause analysis, implementation details, and acceptance criteria.
## Priority Breakdown
### P0 - Critical (Blocks Cleanup Work)
| Doc | Title | Effort | Status |
|-----|-------|--------|--------|
| [p-0-bulk-deletion-ui.md](p-0-bulk-deletion-ui.md) | Bulk Deletion UI | Small | Pending |
**Why P0**: Cannot efficiently clean up the 270+ flagged videos without bulk operations. Currently must delete one at a time.
---
### P1 - High Priority (Systemic Issues)
| Doc | Title | Effort | Agents Affected |
|-----|-------|--------|-----------------|
| [p-1-british-accent-fix.md](p-1-british-accent-fix.md) | British Accent Fix | Medium | 100+ |
| [p-1-video-image-consistency.md](p-1-video-image-consistency.md) | Video/Image Consistency | Medium-Large | 70+ |
| [p-1-weight-consistency.md](p-1-weight-consistency.md) | Weight Consistency | Medium | 4+ identified |
**Why P1**: These issues affect many agents systemically. Fixing the root cause prevents future occurrences and enables batch remediation.
---
### P2 - Medium Priority (Quality Improvements)
| Doc | Title | Effort | Notes |
|-----|-------|--------|-------|
| [p-2-anatomical-fixes.md](p-2-anatomical-fixes.md) | Anatomical Fixes | Medium | Knees, limbs, fingers |
| [p-2-clothing-consistency.md](p-2-clothing-consistency.md) | Clothing Consistency | Medium | Outfit variety, gender |
| [p-2-gender-appropriate-poses.md](p-2-gender-appropriate-poses.md) | Gender-Appropriate Poses | Small | Male poses |
| [p-2-ethnicity-defaults.md](p-2-ethnicity-defaults.md) | Ethnicity Defaults | Small | Distribution balance |
| [p-2-props-objects.md](p-2-props-objects.md) | Props & Objects | Small | Phones, text, boundaries |
| [p-2-prompt-interpretation.md](p-2-prompt-interpretation.md) | Prompt Interpretation | Medium | Goblincore, anime, etc. |
| [p-2-duplicate-detection.md](p-2-duplicate-detection.md) | Duplicate Detection | Small | Handle uniqueness |
**Why P2**: These are quality polish items. Important for production but not blocking immediate cleanup work.
---
### P3 - Lower Priority (Individual Fixes)
| Doc | Title | Effort | Notes |
|-----|-------|--------|-------|
| [p-3-agent-specific-fixes.md](p-3-agent-specific-fixes.md) | Agent-Specific Fixes | Variable | 15+ individual agents |
**Why P3**: One-off fixes that can be addressed after systemic issues are resolved.
---
## Implementation Order
### Phase 1: Enable Cleanup
1. **p-0-bulk-deletion-ui** - Unblocks all manual cleanup
### Phase 2: Fix Generation Pipeline
2. **p-1-british-accent-fix** - Most widespread video issue
3. **p-1-video-image-consistency** - Eye color, ethnicity, weight in videos
4. **p-1-weight-consistency** - Body consistency in images
### Phase 3: Quality Polish
5. **p-2-anatomical-fixes** - Prevent future artifacts
6. **p-2-clothing-consistency** - Better outfit variety
7. **p-2-gender-appropriate-poses** - Male persona quality
8. **p-2-prompt-interpretation** - Keyword handling
9. **p-2-ethnicity-defaults** - Balanced demographics
10. **p-2-props-objects** - Phone/text issues
11. **p-2-duplicate-detection** - Prevent future duplicates
### Phase 4: Remediation
12. **p-3-agent-specific-fixes** - Address individual agent issues
13. Manual video deletion (using bulk delete from Phase 1)
14. Regenerate videos for accent-affected agents
---
## Files Changed Summary
### Core Package Changes
| Package | Files | Changes |
|---------|-------|---------|
| `pkg/persona/` | voice_dna.go, body_types.go, clothing.go, image_matrix.go | Add constraints, gender filtering |
| `pkg/personagen/` | image_generator.go, video_generator.go, demographics.go | Prompt improvements, accent fix |
| `pkg/personagen/` | keyword_classifier.go (new) | Prompt interpretation |
### Prototype Changes
| File | Changes |
|------|---------|
| `tmp/simple-prototype/main.go` | Bulk delete, video delete, regeneration handlers |
| `tmp/simple-prototype/index.html` | Selection mode, fix panel, warnings |
---
## Testing Strategy
After each phase:
1. Generate 5 new test personas with varied descriptions
2. Verify fix addresses the specific issue
3. Check for regressions in other areas
4. Document any new issues discovered
---
## Video Deletion Backlog
After P0 (bulk delete) is complete, these videos need deletion:
- **Male videos**: 98 agents
- **Female videos (various issues)**: 70 agents
- **Female videos (British accent)**: 100+ agents (may regenerate instead)
- **Age discrepancy videos**: 14 agents
Total: ~280 video deletions, potentially followed by regeneration for salvageable agents.
---
## Quick Reference: Issue → Document
| If you see... | Check... |
|---------------|----------|
| British accent in video | p-1-british-accent-fix |
| Wrong eye color in video | p-1-video-image-consistency |
| Weight varies across photos | p-1-weight-consistency |
| Malformed knee/limb | p-2-anatomical-fixes |
| Same outfit in all photos | p-2-clothing-consistency |
| Feminine pose on male | p-2-gender-appropriate-poses |
| "Goblincore" literal interpretation | p-2-prompt-interpretation |
| Duplicate agent names | p-2-duplicate-detection |
| Celebrity lookalike | p-2-ethnicity-defaults |
| Phone facing wrong way | p-2-props-objects |
| Individual agent issue | p-3-agent-specific-fixes |

View File

@ -0,0 +1,76 @@
{
"id": "aaliyah_deed",
"name": "Aaliyah Thomas",
"handle": "aaliyah",
"gender": "female",
"description": "makeup influencer, high maintenance, loves social media, outgoing, Coachella, LA, loves fashion and jewelry, botox, lip filler, hair extensions",
"tags": [
"influencer_lifestyle",
"high fashion",
"interior design",
"skincare science",
"wine tasting",
"pilates",
"podcasting",
"traveling"
],
"avatar_url": "/media/aaliyah_deed/avatar.webp?t=1769212343",
"banner_url": "/media/aaliyah_deed/banner.webp?t=1769212354",
"videos": [
"/media/aaliyah_deed/videos/01_smile_reveal.mp4?t=1769212435"
],
"images": [
"/media/aaliyah_deed/images/01_mid_mid_neutral.webp",
"/media/aaliyah_deed/images/02_image.webp",
"/media/aaliyah_deed/images/03_image.webp",
"/media/aaliyah_deed/images/04_image.webp",
"/media/aaliyah_deed/images/05_image.webp",
"/media/aaliyah_deed/images/06_image.webp",
"/media/aaliyah_deed/images/07_image.webp",
"/media/aaliyah_deed/images/08_image.webp",
"/media/aaliyah_deed/images/09_image.webp",
"/media/aaliyah_deed/images/10_image.webp",
"/media/aaliyah_deed/images/11_image.webp",
"/media/aaliyah_deed/images/12_image.webp",
"/media/aaliyah_deed/images/13_image.webp",
"/media/aaliyah_deed/images/14_image.webp",
"/media/aaliyah_deed/images/15_image.webp",
"/media/aaliyah_deed/images/16_image.webp",
"/media/aaliyah_deed/images/17_image.webp",
"/media/aaliyah_deed/images/18_image.webp",
"/media/aaliyah_deed/images/19_image.webp",
"/media/aaliyah_deed/images/20_image.webp",
"/media/aaliyah_deed/images/21_image.webp",
"/media/aaliyah_deed/images/22_image.webp",
"/media/aaliyah_deed/images/23_image.webp",
"/media/aaliyah_deed/images/24_image.webp",
"/media/aaliyah_deed/images/25_image.webp",
"/media/aaliyah_deed/images/26_image.webp",
"/media/aaliyah_deed/images/27_image.webp",
"/media/aaliyah_deed/images/32_image.webp",
"/media/aaliyah_deed/images/33_image.webp",
"/media/aaliyah_deed/images/34_image.webp",
"/media/aaliyah_deed/images/35_image.webp",
"/media/aaliyah_deed/images/36_image.webp",
"/media/aaliyah_deed/images/37_image.webp",
"/media/aaliyah_deed/images/38_image.webp",
"/media/aaliyah_deed/images/39_image.webp",
"/media/aaliyah_deed/images/40_image.webp",
"/media/aaliyah_deed/images/41_image.webp",
"/media/aaliyah_deed/images/42_image.webp",
"/media/aaliyah_deed/images/43_image.webp",
"/media/aaliyah_deed/images/44_image.webp",
"/media/aaliyah_deed/images/45_image.webp",
"/media/aaliyah_deed/images/46_image.webp",
"/media/aaliyah_deed/images/47_image.webp",
"/media/aaliyah_deed/images/49_image.webp",
"/media/aaliyah_deed/images/50_image.webp",
"/media/aaliyah_deed/images/51_image.webp",
"/media/aaliyah_deed/images/54_image.webp",
"/media/aaliyah_deed/images/55_image.webp",
"/media/aaliyah_deed/images/56_image.webp",
"/media/aaliyah_deed/images/57_image.webp"
],
"created_at": "2026-01-23T16:51:05.391735-07:00",
"dir_name": "aaliyah_deed"
}

View File

@ -0,0 +1,74 @@
{
"id": "aaliyah_f6af",
"name": "Aaliyah Thomas",
"handle": "aaliyah",
"gender": "female",
"description": "20's sexy Mrs. Claus, kiki Marc Jacob boots, bootie shorts, red, green, candy cane, holiday, corset",
"tags": [
"seductive",
"avant-garde fashion",
"holiday history",
"interior design",
"vintage shoe collecting",
"sushi tasting",
"r\u0026b music",
"travel vlogging"
],
"avatar_url": "/media/aaliyah_f6af/avatar.webp?t=1769675011",
"banner_url": "/media/aaliyah_f6af/banner.webp?t=1769674998",
"videos": [
"/media/aaliyah_f6af/videos/01_smile_reveal.mp4?t=1769675043"
],
"images": [
"/media/aaliyah_f6af/images/01_mid_mid_neutral.webp",
"/media/aaliyah_f6af/images/02_image.webp",
"/media/aaliyah_f6af/images/03_image.webp",
"/media/aaliyah_f6af/images/04_image.webp",
"/media/aaliyah_f6af/images/05_image.webp",
"/media/aaliyah_f6af/images/07_image.webp",
"/media/aaliyah_f6af/images/08_image.webp",
"/media/aaliyah_f6af/images/09_image.webp",
"/media/aaliyah_f6af/images/10_image.webp",
"/media/aaliyah_f6af/images/11_image.webp",
"/media/aaliyah_f6af/images/12_image.webp",
"/media/aaliyah_f6af/images/13_image.webp",
"/media/aaliyah_f6af/images/14_image.webp",
"/media/aaliyah_f6af/images/15_image.webp",
"/media/aaliyah_f6af/images/16_image.webp",
"/media/aaliyah_f6af/images/17_image.webp",
"/media/aaliyah_f6af/images/19_image.webp",
"/media/aaliyah_f6af/images/20_image.webp",
"/media/aaliyah_f6af/images/21_image.webp",
"/media/aaliyah_f6af/images/22_image.webp",
"/media/aaliyah_f6af/images/23_image.webp",
"/media/aaliyah_f6af/images/24_image.webp",
"/media/aaliyah_f6af/images/25_image.webp",
"/media/aaliyah_f6af/images/26_image.webp",
"/media/aaliyah_f6af/images/27_image.webp",
"/media/aaliyah_f6af/images/28_image.webp",
"/media/aaliyah_f6af/images/29_image.webp",
"/media/aaliyah_f6af/images/30_image.webp",
"/media/aaliyah_f6af/images/31_image.webp",
"/media/aaliyah_f6af/images/32_image.webp",
"/media/aaliyah_f6af/images/33_image.webp",
"/media/aaliyah_f6af/images/34_image.webp",
"/media/aaliyah_f6af/images/35_image.webp",
"/media/aaliyah_f6af/images/36_image.webp",
"/media/aaliyah_f6af/images/37_image.webp",
"/media/aaliyah_f6af/images/38_image.webp",
"/media/aaliyah_f6af/images/39_image.webp",
"/media/aaliyah_f6af/images/40_image.webp",
"/media/aaliyah_f6af/images/41_image.webp",
"/media/aaliyah_f6af/images/42_image.webp",
"/media/aaliyah_f6af/images/43_image.webp",
"/media/aaliyah_f6af/images/44_image.webp",
"/media/aaliyah_f6af/images/45_image.webp",
"/media/aaliyah_f6af/images/46_image.webp",
"/media/aaliyah_f6af/images/47_image.webp",
"/media/aaliyah_f6af/images/48_image.webp",
"/media/aaliyah_f6af/images/49_image.webp",
"/media/aaliyah_f6af/images/50_image.webp"
],
"created_at": "2026-01-29T01:22:06.196767-07:00",
"dir_name": "aaliyah_f6af"
}

View File

@ -0,0 +1,77 @@
{
"id": "aaliyah_fe64",
"name": "Aaliyah Williams",
"handle": "aaliyah",
"gender": "female",
"description": "woman who is a fan of Linkin Park",
"tags": [
"metal_girl",
"vinyl collecting",
"music history",
"horror cinema",
"graphic novels",
"urban gardening",
"mid-century modern furniture",
"street photography"
],
"avatar_url": "/media/aaliyah_fe64/avatar.webp?t=1770128683",
"banner_url": "/media/aaliyah_fe64/banner.webp?t=1770128698",
"videos": [
"/media/aaliyah_fe64/videos/01_smile_reveal.mp4?t=1770128733"
],
"images": [
"/media/aaliyah_fe64/images/01_mid_mid_neutral.webp",
"/media/aaliyah_fe64/images/02_image.webp",
"/media/aaliyah_fe64/images/03_image.webp",
"/media/aaliyah_fe64/images/04_image.webp",
"/media/aaliyah_fe64/images/05_image.webp",
"/media/aaliyah_fe64/images/06_image.webp",
"/media/aaliyah_fe64/images/07_image.webp",
"/media/aaliyah_fe64/images/08_image.webp",
"/media/aaliyah_fe64/images/09_image.webp",
"/media/aaliyah_fe64/images/10_image.webp",
"/media/aaliyah_fe64/images/11_image.webp",
"/media/aaliyah_fe64/images/12_image.webp",
"/media/aaliyah_fe64/images/13_image.webp",
"/media/aaliyah_fe64/images/14_image.webp",
"/media/aaliyah_fe64/images/15_image.webp",
"/media/aaliyah_fe64/images/16_image.webp",
"/media/aaliyah_fe64/images/17_image.webp",
"/media/aaliyah_fe64/images/18_image.webp",
"/media/aaliyah_fe64/images/19_image.webp",
"/media/aaliyah_fe64/images/20_image.webp",
"/media/aaliyah_fe64/images/21_image.webp",
"/media/aaliyah_fe64/images/22_image.webp",
"/media/aaliyah_fe64/images/23_image.webp",
"/media/aaliyah_fe64/images/24_image.webp",
"/media/aaliyah_fe64/images/25_image.webp",
"/media/aaliyah_fe64/images/26_image.webp",
"/media/aaliyah_fe64/images/27_image.webp",
"/media/aaliyah_fe64/images/28_image.webp",
"/media/aaliyah_fe64/images/29_image.webp",
"/media/aaliyah_fe64/images/30_image.webp",
"/media/aaliyah_fe64/images/31_image.webp",
"/media/aaliyah_fe64/images/32_image.webp",
"/media/aaliyah_fe64/images/33_image.webp",
"/media/aaliyah_fe64/images/34_image.webp",
"/media/aaliyah_fe64/images/35_image.webp",
"/media/aaliyah_fe64/images/36_image.webp",
"/media/aaliyah_fe64/images/37_image.webp",
"/media/aaliyah_fe64/images/38_image.webp",
"/media/aaliyah_fe64/images/39_image.webp",
"/media/aaliyah_fe64/images/40_image.webp",
"/media/aaliyah_fe64/images/41_image.webp",
"/media/aaliyah_fe64/images/42_image.webp",
"/media/aaliyah_fe64/images/43_image.webp",
"/media/aaliyah_fe64/images/44_image.webp",
"/media/aaliyah_fe64/images/45_image.webp",
"/media/aaliyah_fe64/images/46_image.webp",
"/media/aaliyah_fe64/images/47_image.webp",
"/media/aaliyah_fe64/images/48_image.webp",
"/media/aaliyah_fe64/images/49_image.webp",
"/media/aaliyah_fe64/images/50_image.webp",
"/media/aaliyah_fe64/images/51_image.webp"
],
"created_at": "2026-02-03T07:23:36.587839-07:00",
"dir_name": "aaliyah_fe64"
}

View File

@ -0,0 +1,74 @@
{
"id": "abel_0f05",
"name": "Abel Garcia",
"handle": "abel",
"gender": "male",
"description": "man in his 60's , lawyer, loves jogging, has a healthy lifestyle, spends time at his cabin in the woods",
"tags": [
"intellectual",
"ultra-marathon running",
"desert ecology",
"mid-century modern architecture",
"classical history",
"jazz vinyl collecting",
"bird watching",
"italian cooking"
],
"avatar_url": "/media/abel_0f05/avatar.webp?t=1769157192",
"banner_url": "/media/abel_0f05/banner.webp?t=1769157191",
"videos": [
"/media/abel_0f05/videos/01_smile_reveal.mp4?t=1769157249"
],
"images": [
"/media/abel_0f05/images/01_mid_mid_neutral.webp",
"/media/abel_0f05/images/02_image.webp",
"/media/abel_0f05/images/03_image.webp",
"/media/abel_0f05/images/04_image.webp",
"/media/abel_0f05/images/05_image.webp",
"/media/abel_0f05/images/06_image.webp",
"/media/abel_0f05/images/07_image.webp",
"/media/abel_0f05/images/08_image.webp",
"/media/abel_0f05/images/09_image.webp",
"/media/abel_0f05/images/10_image.webp",
"/media/abel_0f05/images/11_image.webp",
"/media/abel_0f05/images/12_image.webp",
"/media/abel_0f05/images/13_image.webp",
"/media/abel_0f05/images/14_image.webp",
"/media/abel_0f05/images/15_image.webp",
"/media/abel_0f05/images/16_image.webp",
"/media/abel_0f05/images/17_image.webp",
"/media/abel_0f05/images/18_image.webp",
"/media/abel_0f05/images/19_image.webp",
"/media/abel_0f05/images/20_image.webp",
"/media/abel_0f05/images/21_image.webp",
"/media/abel_0f05/images/22_image.webp",
"/media/abel_0f05/images/23_image.webp",
"/media/abel_0f05/images/24_image.webp",
"/media/abel_0f05/images/25_image.webp",
"/media/abel_0f05/images/26_image.webp",
"/media/abel_0f05/images/27_image.webp",
"/media/abel_0f05/images/28_image.webp",
"/media/abel_0f05/images/29_image.webp",
"/media/abel_0f05/images/30_image.webp",
"/media/abel_0f05/images/31_image.webp",
"/media/abel_0f05/images/32_image.webp",
"/media/abel_0f05/images/33_image.webp",
"/media/abel_0f05/images/34_image.webp",
"/media/abel_0f05/images/35_image.webp",
"/media/abel_0f05/images/36_image.webp",
"/media/abel_0f05/images/37_image.webp",
"/media/abel_0f05/images/38_image.webp",
"/media/abel_0f05/images/39_image.webp",
"/media/abel_0f05/images/40_image.webp",
"/media/abel_0f05/images/41_image.webp",
"/media/abel_0f05/images/42_image.webp",
"/media/abel_0f05/images/43_image.webp",
"/media/abel_0f05/images/44_image.webp",
"/media/abel_0f05/images/45_image.webp",
"/media/abel_0f05/images/46_image.webp",
"/media/abel_0f05/images/47_image.webp",
"/media/abel_0f05/images/49_image.webp"
],
"created_at": "2026-01-23T01:31:59.039866-07:00",
"dir_name": "abel_0f05"
}

View File

@ -0,0 +1,75 @@
{
"id": "abel_8886",
"name": "Abel Rodriguez",
"handle": "abel",
"gender": "male",
"description": "male who is a drummer",
"tags": [
"eboy_classic",
"jazz drumming",
"vintage fashion",
"vinyl collecting",
"cycling along the schuylkill river",
"street photography"
],
"avatar_url": "/media/abel_8886/avatar.webp?t=1770119830",
"banner_url": "/media/abel_8886/banner.webp?t=1770119839",
"videos": [
"/media/abel_8886/videos/01_smile_reveal.mp4?t=1770119847"
],
"images": [
"/media/abel_8886/images/01_mid_mid_neutral.webp",
"/media/abel_8886/images/02_image.webp",
"/media/abel_8886/images/03_image.webp",
"/media/abel_8886/images/04_image.webp",
"/media/abel_8886/images/05_image.webp",
"/media/abel_8886/images/06_image.webp",
"/media/abel_8886/images/07_image.webp",
"/media/abel_8886/images/08_image.webp",
"/media/abel_8886/images/09_image.webp",
"/media/abel_8886/images/10_image.webp",
"/media/abel_8886/images/11_image.webp",
"/media/abel_8886/images/12_image.webp",
"/media/abel_8886/images/13_image.webp",
"/media/abel_8886/images/14_image.webp",
"/media/abel_8886/images/15_image.webp",
"/media/abel_8886/images/16_image.webp",
"/media/abel_8886/images/17_image.webp",
"/media/abel_8886/images/18_image.webp",
"/media/abel_8886/images/19_image.webp",
"/media/abel_8886/images/20_image.webp",
"/media/abel_8886/images/21_image.webp",
"/media/abel_8886/images/22_image.webp",
"/media/abel_8886/images/23_image.webp",
"/media/abel_8886/images/24_image.webp",
"/media/abel_8886/images/25_image.webp",
"/media/abel_8886/images/26_image.webp",
"/media/abel_8886/images/27_image.webp",
"/media/abel_8886/images/28_image.webp",
"/media/abel_8886/images/29_image.webp",
"/media/abel_8886/images/30_image.webp",
"/media/abel_8886/images/31_image.webp",
"/media/abel_8886/images/32_image.webp",
"/media/abel_8886/images/33_image.webp",
"/media/abel_8886/images/34_image.webp",
"/media/abel_8886/images/35_image.webp",
"/media/abel_8886/images/36_image.webp",
"/media/abel_8886/images/37_image.webp",
"/media/abel_8886/images/38_image.webp",
"/media/abel_8886/images/39_image.webp",
"/media/abel_8886/images/40_image.webp",
"/media/abel_8886/images/41_image.webp",
"/media/abel_8886/images/42_image.webp",
"/media/abel_8886/images/43_image.webp",
"/media/abel_8886/images/44_image.webp",
"/media/abel_8886/images/45_image.webp",
"/media/abel_8886/images/46_image.webp",
"/media/abel_8886/images/47_image.webp",
"/media/abel_8886/images/48_image.webp",
"/media/abel_8886/images/49_image.webp",
"/media/abel_8886/images/50_image.webp",
"/media/abel_8886/images/51_image.webp"
],
"created_at": "2026-02-03T04:55:41.147682-07:00",
"dir_name": "abel_8886"
}

View File

@ -0,0 +1,77 @@
{
"id": "abel_c0cd",
"name": "Abel Smith",
"handle": "abel",
"gender": "male",
"description": "Ash Ketchum from Pokemon",
"tags": [
"manga_protagonist",
"hiking",
"retro gaming",
"wildlife photography",
"urban exploration",
"cooking breakfast",
"graphic novels",
"cap collecting"
],
"avatar_url": "/media/abel_c0cd/avatar.webp?t=1770117809",
"banner_url": "/media/abel_c0cd/banner.webp?t=1770117810",
"videos": [
"/media/abel_c0cd/videos/01_smile_reveal.mp4?t=1770117840"
],
"images": [
"/media/abel_c0cd/images/01_mid_mid_neutral.webp",
"/media/abel_c0cd/images/02_image.webp",
"/media/abel_c0cd/images/03_image.webp",
"/media/abel_c0cd/images/04_image.webp",
"/media/abel_c0cd/images/05_image.webp",
"/media/abel_c0cd/images/06_image.webp",
"/media/abel_c0cd/images/07_image.webp",
"/media/abel_c0cd/images/08_image.webp",
"/media/abel_c0cd/images/09_image.webp",
"/media/abel_c0cd/images/10_image.webp",
"/media/abel_c0cd/images/11_image.webp",
"/media/abel_c0cd/images/12_image.webp",
"/media/abel_c0cd/images/13_image.webp",
"/media/abel_c0cd/images/14_image.webp",
"/media/abel_c0cd/images/15_image.webp",
"/media/abel_c0cd/images/16_image.webp",
"/media/abel_c0cd/images/17_image.webp",
"/media/abel_c0cd/images/18_image.webp",
"/media/abel_c0cd/images/19_image.webp",
"/media/abel_c0cd/images/20_image.webp",
"/media/abel_c0cd/images/21_image.webp",
"/media/abel_c0cd/images/22_image.webp",
"/media/abel_c0cd/images/23_image.webp",
"/media/abel_c0cd/images/24_image.webp",
"/media/abel_c0cd/images/25_image.webp",
"/media/abel_c0cd/images/26_image.webp",
"/media/abel_c0cd/images/27_image.webp",
"/media/abel_c0cd/images/28_image.webp",
"/media/abel_c0cd/images/29_image.webp",
"/media/abel_c0cd/images/30_image.webp",
"/media/abel_c0cd/images/31_image.webp",
"/media/abel_c0cd/images/32_image.webp",
"/media/abel_c0cd/images/33_image.webp",
"/media/abel_c0cd/images/34_image.webp",
"/media/abel_c0cd/images/35_image.webp",
"/media/abel_c0cd/images/36_image.webp",
"/media/abel_c0cd/images/37_image.webp",
"/media/abel_c0cd/images/38_image.webp",
"/media/abel_c0cd/images/39_image.webp",
"/media/abel_c0cd/images/40_image.webp",
"/media/abel_c0cd/images/41_image.webp",
"/media/abel_c0cd/images/42_image.webp",
"/media/abel_c0cd/images/43_image.webp",
"/media/abel_c0cd/images/44_image.webp",
"/media/abel_c0cd/images/45_image.webp",
"/media/abel_c0cd/images/46_image.webp",
"/media/abel_c0cd/images/47_image.webp",
"/media/abel_c0cd/images/48_image.webp",
"/media/abel_c0cd/images/49_image.webp",
"/media/abel_c0cd/images/50_image.webp",
"/media/abel_c0cd/images/51_image.webp"
],
"created_at": "2026-02-03T04:21:53.281232-07:00",
"dir_name": "abel_c0cd"
}

View File

@ -0,0 +1,78 @@
{
"id": "acatlina_c1d3",
"name": "Acatlina Gonzalez",
"handle": "acatlina",
"gender": "female",
"description": "blonde girl with glasses and bangs who works as a librarian",
"tags": [
"librarian",
"book restoration",
"victorian literature",
"calligraphy",
"archival preservation",
"baking sourdough",
"analog photography",
"indoor gardening"
],
"avatar_url": "/media/acatlina_c1d3/avatar.webp?t=1770020568",
"banner_url": "/media/acatlina_c1d3/banner.webp?t=1770020662",
"videos": [
"/media/acatlina_c1d3/videos/01_smile_reveal.mp4?t=1770020406"
],
"images": [
"/media/acatlina_c1d3/images/01_mid_mid_neutral.webp",
"/media/acatlina_c1d3/images/02_image.webp",
"/media/acatlina_c1d3/images/03_image.webp",
"/media/acatlina_c1d3/images/04_image.webp",
"/media/acatlina_c1d3/images/05_image.webp",
"/media/acatlina_c1d3/images/06_image.webp",
"/media/acatlina_c1d3/images/08_image.webp",
"/media/acatlina_c1d3/images/09_image.webp",
"/media/acatlina_c1d3/images/10_image.webp",
"/media/acatlina_c1d3/images/11_image.webp",
"/media/acatlina_c1d3/images/12_image.webp",
"/media/acatlina_c1d3/images/14_image.webp",
"/media/acatlina_c1d3/images/15_image.webp",
"/media/acatlina_c1d3/images/16_image.webp",
"/media/acatlina_c1d3/images/17_image.webp",
"/media/acatlina_c1d3/images/18_image.webp",
"/media/acatlina_c1d3/images/19_image.webp",
"/media/acatlina_c1d3/images/20_image.webp",
"/media/acatlina_c1d3/images/21_image.webp",
"/media/acatlina_c1d3/images/22_image.webp",
"/media/acatlina_c1d3/images/23_image.webp",
"/media/acatlina_c1d3/images/24_image.webp",
"/media/acatlina_c1d3/images/25_image.webp",
"/media/acatlina_c1d3/images/26_image.webp",
"/media/acatlina_c1d3/images/27_image.webp",
"/media/acatlina_c1d3/images/28_image.webp",
"/media/acatlina_c1d3/images/29_image.webp",
"/media/acatlina_c1d3/images/30_image.webp",
"/media/acatlina_c1d3/images/31_image.webp",
"/media/acatlina_c1d3/images/32_image.webp",
"/media/acatlina_c1d3/images/33_image.webp",
"/media/acatlina_c1d3/images/34_image.webp",
"/media/acatlina_c1d3/images/35_image.webp",
"/media/acatlina_c1d3/images/36_image.webp",
"/media/acatlina_c1d3/images/37_image.webp",
"/media/acatlina_c1d3/images/38_image.webp",
"/media/acatlina_c1d3/images/39_image.webp",
"/media/acatlina_c1d3/images/40_image.webp",
"/media/acatlina_c1d3/images/41_image.webp",
"/media/acatlina_c1d3/images/42_image.webp",
"/media/acatlina_c1d3/images/43_image.webp",
"/media/acatlina_c1d3/images/44_image.webp",
"/media/acatlina_c1d3/images/45_image.webp",
"/media/acatlina_c1d3/images/46_image.webp",
"/media/acatlina_c1d3/images/47_image.webp",
"/media/acatlina_c1d3/images/48_image.webp",
"/media/acatlina_c1d3/images/49_image.webp",
"/media/acatlina_c1d3/images/50_image.webp",
"/media/acatlina_c1d3/images/51_image.webp",
"/media/acatlina_c1d3/images/53_image.webp",
"/media/acatlina_c1d3/images/54_image.webp",
"/media/acatlina_c1d3/images/55_image.webp"
],
"created_at": "2026-02-02T01:17:01.73056-07:00",
"dir_name": "acatlina_c1d3"
}

View File

@ -0,0 +1,77 @@
{
"id": "ada_ceef",
"name": "Ada Gonzalez",
"handle": "ada",
"gender": "female",
"description": "female who likes to play slots at the casino",
"tags": [
"thrill_seeker",
"surfing",
"texas hold'em",
"high-intensity interval training",
"urban exploration",
"mixology",
"interior design",
"electronic music"
],
"avatar_url": "/media/ada_ceef/avatar.webp?t=1770110515",
"banner_url": "/media/ada_ceef/banner.webp?t=1770110527",
"videos": [
"/media/ada_ceef/videos/01_smile_reveal.mp4?t=1770110575"
],
"images": [
"/media/ada_ceef/images/01_mid_mid_neutral.webp",
"/media/ada_ceef/images/02_image.webp",
"/media/ada_ceef/images/03_image.webp",
"/media/ada_ceef/images/04_image.webp",
"/media/ada_ceef/images/05_image.webp",
"/media/ada_ceef/images/06_image.webp",
"/media/ada_ceef/images/07_image.webp",
"/media/ada_ceef/images/08_image.webp",
"/media/ada_ceef/images/09_image.webp",
"/media/ada_ceef/images/10_image.webp",
"/media/ada_ceef/images/11_image.webp",
"/media/ada_ceef/images/12_image.webp",
"/media/ada_ceef/images/13_image.webp",
"/media/ada_ceef/images/14_image.webp",
"/media/ada_ceef/images/15_image.webp",
"/media/ada_ceef/images/16_image.webp",
"/media/ada_ceef/images/17_image.webp",
"/media/ada_ceef/images/18_image.webp",
"/media/ada_ceef/images/19_image.webp",
"/media/ada_ceef/images/20_image.webp",
"/media/ada_ceef/images/21_image.webp",
"/media/ada_ceef/images/22_image.webp",
"/media/ada_ceef/images/23_image.webp",
"/media/ada_ceef/images/24_image.webp",
"/media/ada_ceef/images/25_image.webp",
"/media/ada_ceef/images/26_image.webp",
"/media/ada_ceef/images/27_image.webp",
"/media/ada_ceef/images/28_image.webp",
"/media/ada_ceef/images/29_image.webp",
"/media/ada_ceef/images/30_image.webp",
"/media/ada_ceef/images/31_image.webp",
"/media/ada_ceef/images/32_image.webp",
"/media/ada_ceef/images/33_image.webp",
"/media/ada_ceef/images/34_image.webp",
"/media/ada_ceef/images/35_image.webp",
"/media/ada_ceef/images/36_image.webp",
"/media/ada_ceef/images/37_image.webp",
"/media/ada_ceef/images/38_image.webp",
"/media/ada_ceef/images/39_image.webp",
"/media/ada_ceef/images/40_image.webp",
"/media/ada_ceef/images/41_image.webp",
"/media/ada_ceef/images/42_image.webp",
"/media/ada_ceef/images/43_image.webp",
"/media/ada_ceef/images/44_image.webp",
"/media/ada_ceef/images/45_image.webp",
"/media/ada_ceef/images/46_image.webp",
"/media/ada_ceef/images/47_image.webp",
"/media/ada_ceef/images/48_image.webp",
"/media/ada_ceef/images/49_image.webp",
"/media/ada_ceef/images/50_image.webp",
"/media/ada_ceef/images/51_image.webp"
],
"created_at": "2026-02-03T02:20:52.108268-07:00",
"dir_name": "ada_ceef"
}

View File

@ -0,0 +1,77 @@
{
"id": "adam_5872",
"name": "Adam Persson",
"handle": "adam",
"gender": "male",
"description": "a hot billionaire, mid 40's , lives on a yacht, in the adriatic sea, Croatian, well built, silver fox, white skin, grey hair",
"tags": [
"sigma_male",
"deep-sea sailing",
"freediving",
"horology",
"classical history",
"spearfishing",
"chess",
"photography"
],
"avatar_url": "/media/adam_5872/avatar.webp?t=1769671050",
"banner_url": "/media/adam_5872/banner.webp?t=1769671064",
"videos": [
"/media/adam_5872/videos/01_smile_reveal.mp4?t=1769671077"
],
"images": [
"/media/adam_5872/images/01_mid_mid_neutral.webp",
"/media/adam_5872/images/02_image.webp",
"/media/adam_5872/images/03_image.webp",
"/media/adam_5872/images/04_image.webp",
"/media/adam_5872/images/05_image.webp",
"/media/adam_5872/images/06_image.webp",
"/media/adam_5872/images/07_image.webp",
"/media/adam_5872/images/08_image.webp",
"/media/adam_5872/images/09_image.webp",
"/media/adam_5872/images/10_image.webp",
"/media/adam_5872/images/11_image.webp",
"/media/adam_5872/images/12_image.webp",
"/media/adam_5872/images/13_image.webp",
"/media/adam_5872/images/14_image.webp",
"/media/adam_5872/images/15_image.webp",
"/media/adam_5872/images/16_image.webp",
"/media/adam_5872/images/17_image.webp",
"/media/adam_5872/images/18_image.webp",
"/media/adam_5872/images/19_image.webp",
"/media/adam_5872/images/20_image.webp",
"/media/adam_5872/images/21_image.webp",
"/media/adam_5872/images/22_image.webp",
"/media/adam_5872/images/23_image.webp",
"/media/adam_5872/images/24_image.webp",
"/media/adam_5872/images/25_image.webp",
"/media/adam_5872/images/26_image.webp",
"/media/adam_5872/images/27_image.webp",
"/media/adam_5872/images/28_image.webp",
"/media/adam_5872/images/29_image.webp",
"/media/adam_5872/images/30_image.webp",
"/media/adam_5872/images/31_image.webp",
"/media/adam_5872/images/32_image.webp",
"/media/adam_5872/images/33_image.webp",
"/media/adam_5872/images/34_image.webp",
"/media/adam_5872/images/35_image.webp",
"/media/adam_5872/images/36_image.webp",
"/media/adam_5872/images/37_image.webp",
"/media/adam_5872/images/38_image.webp",
"/media/adam_5872/images/39_image.webp",
"/media/adam_5872/images/40_image.webp",
"/media/adam_5872/images/41_image.webp",
"/media/adam_5872/images/42_image.webp",
"/media/adam_5872/images/43_image.webp",
"/media/adam_5872/images/44_image.webp",
"/media/adam_5872/images/45_image.webp",
"/media/adam_5872/images/46_image.webp",
"/media/adam_5872/images/47_image.webp",
"/media/adam_5872/images/48_image.webp",
"/media/adam_5872/images/49_image.webp",
"/media/adam_5872/images/50_image.webp",
"/media/adam_5872/images/51_image.webp"
],
"created_at": "2026-01-29T00:16:08.903719-07:00",
"dir_name": "adam_5872"
}

View File

@ -0,0 +1,77 @@
{
"id": "adam_bde7",
"name": "Adam Thomas",
"handle": "adam",
"gender": "male",
"description": "Garen from League of Legends",
"tags": [
"manga_protagonist",
"blacksmithing",
"historical swordsmanship",
"epic poetry",
"weightlifting",
"chess",
"landscape photography",
"loose-leaf tea"
],
"avatar_url": "/media/adam_bde7/avatar.webp?t=1769598796",
"banner_url": "/media/adam_bde7/banner.webp?t=1769598793",
"videos": [
"/media/adam_bde7/videos/01_smile_reveal.mp4?t=1769598829"
],
"images": [
"/media/adam_bde7/images/01_mid_mid_neutral.webp",
"/media/adam_bde7/images/02_image.webp",
"/media/adam_bde7/images/03_image.webp",
"/media/adam_bde7/images/04_image.webp",
"/media/adam_bde7/images/05_image.webp",
"/media/adam_bde7/images/06_image.webp",
"/media/adam_bde7/images/07_image.webp",
"/media/adam_bde7/images/08_image.webp",
"/media/adam_bde7/images/09_image.webp",
"/media/adam_bde7/images/10_image.webp",
"/media/adam_bde7/images/11_image.webp",
"/media/adam_bde7/images/12_image.webp",
"/media/adam_bde7/images/13_image.webp",
"/media/adam_bde7/images/14_image.webp",
"/media/adam_bde7/images/15_image.webp",
"/media/adam_bde7/images/16_image.webp",
"/media/adam_bde7/images/17_image.webp",
"/media/adam_bde7/images/18_image.webp",
"/media/adam_bde7/images/19_image.webp",
"/media/adam_bde7/images/20_image.webp",
"/media/adam_bde7/images/21_image.webp",
"/media/adam_bde7/images/22_image.webp",
"/media/adam_bde7/images/23_image.webp",
"/media/adam_bde7/images/24_image.webp",
"/media/adam_bde7/images/25_image.webp",
"/media/adam_bde7/images/26_image.webp",
"/media/adam_bde7/images/27_image.webp",
"/media/adam_bde7/images/28_image.webp",
"/media/adam_bde7/images/29_image.webp",
"/media/adam_bde7/images/30_image.webp",
"/media/adam_bde7/images/31_image.webp",
"/media/adam_bde7/images/32_image.webp",
"/media/adam_bde7/images/33_image.webp",
"/media/adam_bde7/images/34_image.webp",
"/media/adam_bde7/images/35_image.webp",
"/media/adam_bde7/images/36_image.webp",
"/media/adam_bde7/images/37_image.webp",
"/media/adam_bde7/images/38_image.webp",
"/media/adam_bde7/images/39_image.webp",
"/media/adam_bde7/images/40_image.webp",
"/media/adam_bde7/images/41_image.webp",
"/media/adam_bde7/images/42_image.webp",
"/media/adam_bde7/images/43_image.webp",
"/media/adam_bde7/images/44_image.webp",
"/media/adam_bde7/images/45_image.webp",
"/media/adam_bde7/images/46_image.webp",
"/media/adam_bde7/images/47_image.webp",
"/media/adam_bde7/images/48_image.webp",
"/media/adam_bde7/images/49_image.webp",
"/media/adam_bde7/images/50_image.webp",
"/media/adam_bde7/images/51_image.webp"
],
"created_at": "2026-01-28T04:12:04.432062-07:00",
"dir_name": "adam_bde7"
}

View File

@ -0,0 +1,74 @@
{
"id": "adrien_0900",
"name": "Adrien Michel",
"handle": "adrien",
"gender": "male",
"description": "american politician age 50, should look like a classic american politician, flags, meetings, white hair",
"tags": [
"career_fantasy",
"geopolitics",
"fine horology",
"classical music",
"sailing",
"equestrian sports",
"landscape photography",
"wine tasting"
],
"avatar_url": "/media/adrien_0900/avatar.webp?t=1770189242",
"banner_url": "/media/adrien_0900/banner.webp?t=1770189242",
"videos": [
"/media/adrien_0900/videos/01_smile_reveal.mp4?t=1770189179"
],
"images": [
"/media/adrien_0900/images/01_mid_mid_neutral.webp",
"/media/adrien_0900/images/02_image.webp",
"/media/adrien_0900/images/03_image.webp",
"/media/adrien_0900/images/04_image.webp",
"/media/adrien_0900/images/05_image.webp",
"/media/adrien_0900/images/06_image.webp",
"/media/adrien_0900/images/07_image.webp",
"/media/adrien_0900/images/08_image.webp",
"/media/adrien_0900/images/09_image.webp",
"/media/adrien_0900/images/10_image.webp",
"/media/adrien_0900/images/11_image.webp",
"/media/adrien_0900/images/12_image.webp",
"/media/adrien_0900/images/13_image.webp",
"/media/adrien_0900/images/14_image.webp",
"/media/adrien_0900/images/15_image.webp",
"/media/adrien_0900/images/16_image.webp",
"/media/adrien_0900/images/17_image.webp",
"/media/adrien_0900/images/18_image.webp",
"/media/adrien_0900/images/19_image.webp",
"/media/adrien_0900/images/20_image.webp",
"/media/adrien_0900/images/21_image.webp",
"/media/adrien_0900/images/22_image.webp",
"/media/adrien_0900/images/23_image.webp",
"/media/adrien_0900/images/24_image.webp",
"/media/adrien_0900/images/25_image.webp",
"/media/adrien_0900/images/26_image.webp",
"/media/adrien_0900/images/27_image.webp",
"/media/adrien_0900/images/28_image.webp",
"/media/adrien_0900/images/29_image.webp",
"/media/adrien_0900/images/30_image.webp",
"/media/adrien_0900/images/31_image.webp",
"/media/adrien_0900/images/32_image.webp",
"/media/adrien_0900/images/33_image.webp",
"/media/adrien_0900/images/34_image.webp",
"/media/adrien_0900/images/35_image.webp",
"/media/adrien_0900/images/36_image.webp",
"/media/adrien_0900/images/37_image.webp",
"/media/adrien_0900/images/38_image.webp",
"/media/adrien_0900/images/39_image.webp",
"/media/adrien_0900/images/40_image.webp",
"/media/adrien_0900/images/41_image.webp",
"/media/adrien_0900/images/42_image.webp",
"/media/adrien_0900/images/43_image.webp",
"/media/adrien_0900/images/44_image.webp",
"/media/adrien_0900/images/45_image.webp",
"/media/adrien_0900/images/46_image.webp",
"/media/adrien_0900/images/47_image.webp",
"/media/adrien_0900/images/48_image.webp"
],
"created_at": "2026-02-04T00:11:14.75985-07:00",
"dir_name": "adrien_0900"
}

View File

@ -0,0 +1,77 @@
{
"id": "agnes_0478",
"name": "Agnes Hansson",
"handle": "agnes",
"gender": "female",
"description": "hot action woman, age 25, amazing beautiful facial features, white skin, blonde hair,action movie heroine,RAW photo, DSLR camera, 85mm, cinematic, professional,hyper realistic detailed photos, real life pictures on the movie set",
"tags": [
"adventurous",
"muay thai",
"precision driving",
"free diving",
"action cinema",
"interior design",
"espresso crafting",
"chess"
],
"avatar_url": "/media/agnes_0478/avatar.webp?t=1769690307",
"banner_url": "/media/agnes_0478/banner.webp?t=1769690305",
"videos": [
"/media/agnes_0478/videos/01_smile_reveal.mp4?t=1769690339"
],
"images": [
"/media/agnes_0478/images/01_mid_mid_neutral.webp",
"/media/agnes_0478/images/02_image.webp",
"/media/agnes_0478/images/03_image.webp",
"/media/agnes_0478/images/04_image.webp",
"/media/agnes_0478/images/05_image.webp",
"/media/agnes_0478/images/06_image.webp",
"/media/agnes_0478/images/07_image.webp",
"/media/agnes_0478/images/08_image.webp",
"/media/agnes_0478/images/09_image.webp",
"/media/agnes_0478/images/10_image.webp",
"/media/agnes_0478/images/11_image.webp",
"/media/agnes_0478/images/12_image.webp",
"/media/agnes_0478/images/13_image.webp",
"/media/agnes_0478/images/14_image.webp",
"/media/agnes_0478/images/15_image.webp",
"/media/agnes_0478/images/16_image.webp",
"/media/agnes_0478/images/17_image.webp",
"/media/agnes_0478/images/18_image.webp",
"/media/agnes_0478/images/19_image.webp",
"/media/agnes_0478/images/20_image.webp",
"/media/agnes_0478/images/21_image.webp",
"/media/agnes_0478/images/22_image.webp",
"/media/agnes_0478/images/23_image.webp",
"/media/agnes_0478/images/24_image.webp",
"/media/agnes_0478/images/25_image.webp",
"/media/agnes_0478/images/26_image.webp",
"/media/agnes_0478/images/27_image.webp",
"/media/agnes_0478/images/28_image.webp",
"/media/agnes_0478/images/29_image.webp",
"/media/agnes_0478/images/30_image.webp",
"/media/agnes_0478/images/31_image.webp",
"/media/agnes_0478/images/32_image.webp",
"/media/agnes_0478/images/33_image.webp",
"/media/agnes_0478/images/34_image.webp",
"/media/agnes_0478/images/35_image.webp",
"/media/agnes_0478/images/36_image.webp",
"/media/agnes_0478/images/37_image.webp",
"/media/agnes_0478/images/38_image.webp",
"/media/agnes_0478/images/39_image.webp",
"/media/agnes_0478/images/40_image.webp",
"/media/agnes_0478/images/41_image.webp",
"/media/agnes_0478/images/42_image.webp",
"/media/agnes_0478/images/43_image.webp",
"/media/agnes_0478/images/44_image.webp",
"/media/agnes_0478/images/45_image.webp",
"/media/agnes_0478/images/46_image.webp",
"/media/agnes_0478/images/47_image.webp",
"/media/agnes_0478/images/48_image.webp",
"/media/agnes_0478/images/49_image.webp",
"/media/agnes_0478/images/50_image.webp",
"/media/agnes_0478/images/51_image.webp"
],
"created_at": "2026-01-29T05:37:02.97958-07:00",
"dir_name": "agnes_0478"
}

View File

@ -0,0 +1,76 @@
{
"id": "agnes_e0f8",
"name": "Agnes Hansson",
"handle": "agnes",
"gender": "female",
"description": "high luxury escort for wealthy individuals,girl for rent, sex worker, sexy beautiful face and large breasts, blonde with large breasts, white skin green eyes, age 25",
"tags": [
"luxury_trophy",
"interior design",
"high-end fashion",
"art history",
"fine wines",
"sailing",
"photography",
"tennis"
],
"avatar_url": "/media/agnes_e0f8/avatar.webp?t=1770189503",
"banner_url": "/media/agnes_e0f8/banner.webp?t=1770189583",
"videos": [
"/media/agnes_e0f8/videos/01_smile_reveal.mp4?t=1770189544"
],
"images": [
"/media/agnes_e0f8/images/01_mid_mid_neutral.webp",
"/media/agnes_e0f8/images/02_image.webp",
"/media/agnes_e0f8/images/03_image.webp",
"/media/agnes_e0f8/images/04_image.webp",
"/media/agnes_e0f8/images/05_image.webp",
"/media/agnes_e0f8/images/06_image.webp",
"/media/agnes_e0f8/images/07_image.webp",
"/media/agnes_e0f8/images/08_image.webp",
"/media/agnes_e0f8/images/09_image.webp",
"/media/agnes_e0f8/images/10_image.webp",
"/media/agnes_e0f8/images/11_image.webp",
"/media/agnes_e0f8/images/12_image.webp",
"/media/agnes_e0f8/images/13_image.webp",
"/media/agnes_e0f8/images/14_image.webp",
"/media/agnes_e0f8/images/15_image.webp",
"/media/agnes_e0f8/images/16_image.webp",
"/media/agnes_e0f8/images/17_image.webp",
"/media/agnes_e0f8/images/18_image.webp",
"/media/agnes_e0f8/images/19_image.webp",
"/media/agnes_e0f8/images/20_image.webp",
"/media/agnes_e0f8/images/21_image.webp",
"/media/agnes_e0f8/images/22_image.webp",
"/media/agnes_e0f8/images/23_image.webp",
"/media/agnes_e0f8/images/24_image.webp",
"/media/agnes_e0f8/images/25_image.webp",
"/media/agnes_e0f8/images/26_image.webp",
"/media/agnes_e0f8/images/27_image.webp",
"/media/agnes_e0f8/images/28_image.webp",
"/media/agnes_e0f8/images/29_image.webp",
"/media/agnes_e0f8/images/30_image.webp",
"/media/agnes_e0f8/images/31_image.webp",
"/media/agnes_e0f8/images/32_image.webp",
"/media/agnes_e0f8/images/33_image.webp",
"/media/agnes_e0f8/images/34_image.webp",
"/media/agnes_e0f8/images/35_image.webp",
"/media/agnes_e0f8/images/36_image.webp",
"/media/agnes_e0f8/images/37_image.webp",
"/media/agnes_e0f8/images/39_image.webp",
"/media/agnes_e0f8/images/40_image.webp",
"/media/agnes_e0f8/images/41_image.webp",
"/media/agnes_e0f8/images/42_image.webp",
"/media/agnes_e0f8/images/43_image.webp",
"/media/agnes_e0f8/images/44_image.webp",
"/media/agnes_e0f8/images/45_image.webp",
"/media/agnes_e0f8/images/46_image.webp",
"/media/agnes_e0f8/images/47_image.webp",
"/media/agnes_e0f8/images/48_image.webp",
"/media/agnes_e0f8/images/49_image.webp",
"/media/agnes_e0f8/images/50_image.webp",
"/media/agnes_e0f8/images/51_image.webp"
],
"created_at": "2026-02-04T00:17:05.14898-07:00",
"dir_name": "agnes_e0f8"
}

View File

@ -0,0 +1,19 @@
{
"id": "ai_1401",
"name": "Ai Takahashi",
"handle": "ai",
"gender": "female",
"description": "nerdy woman from Japan who likes to cosplay as Street Fighter characters",
"tags": [
"cosplayer",
"fighting games (tekken, street fighter)",
"3d printing",
"pattern making",
"micro-electronics",
"urban photography",
"mechanical keyboards",
"matcha lattes"
],
"created_at": "2026-01-27T01:15:49.110913-07:00",
"dir_name": "ai_1401"
}

View File

@ -0,0 +1,77 @@
{
"id": "aida_6e2b",
"name": "Aida Gonzalez",
"handle": "aida",
"gender": "female",
"description": "chubby woman who likes to do karaoke and play bowling",
"tags": [
"thicc_queen",
"body positivity",
"local food scenes",
"concert going",
"vintage fashion",
"indoor gardening",
"astrology",
"beach volleyball"
],
"avatar_url": "/media/aida_6e2b/avatar.webp?t=1769083228",
"banner_url": "/media/aida_6e2b/banner.webp?t=1769084414",
"videos": [
"/media/aida_6e2b/videos/01_smile_reveal.mp4?t=1769083275"
],
"images": [
"/media/aida_6e2b/images/01_mid_mid_neutral.webp",
"/media/aida_6e2b/images/02_image.webp",
"/media/aida_6e2b/images/03_image.webp",
"/media/aida_6e2b/images/04_image.webp",
"/media/aida_6e2b/images/05_image.webp",
"/media/aida_6e2b/images/06_image.webp",
"/media/aida_6e2b/images/07_image.webp",
"/media/aida_6e2b/images/08_image.webp",
"/media/aida_6e2b/images/09_image.webp",
"/media/aida_6e2b/images/10_image.webp",
"/media/aida_6e2b/images/11_image.webp",
"/media/aida_6e2b/images/12_image.webp",
"/media/aida_6e2b/images/13_image.webp",
"/media/aida_6e2b/images/14_image.webp",
"/media/aida_6e2b/images/15_image.webp",
"/media/aida_6e2b/images/16_image.webp",
"/media/aida_6e2b/images/17_image.webp",
"/media/aida_6e2b/images/18_image.webp",
"/media/aida_6e2b/images/19_image.webp",
"/media/aida_6e2b/images/20_image.webp",
"/media/aida_6e2b/images/21_image.webp",
"/media/aida_6e2b/images/22_image.webp",
"/media/aida_6e2b/images/23_image.webp",
"/media/aida_6e2b/images/24_image.webp",
"/media/aida_6e2b/images/25_image.webp",
"/media/aida_6e2b/images/26_image.webp",
"/media/aida_6e2b/images/27_image.webp",
"/media/aida_6e2b/images/28_image.webp",
"/media/aida_6e2b/images/29_image.webp",
"/media/aida_6e2b/images/30_image.webp",
"/media/aida_6e2b/images/31_image.webp",
"/media/aida_6e2b/images/32_image.webp",
"/media/aida_6e2b/images/33_image.webp",
"/media/aida_6e2b/images/34_image.webp",
"/media/aida_6e2b/images/35_image.webp",
"/media/aida_6e2b/images/36_image.webp",
"/media/aida_6e2b/images/37_image.webp",
"/media/aida_6e2b/images/38_image.webp",
"/media/aida_6e2b/images/39_image.webp",
"/media/aida_6e2b/images/40_image.webp",
"/media/aida_6e2b/images/41_image.webp",
"/media/aida_6e2b/images/42_image.webp",
"/media/aida_6e2b/images/43_image.webp",
"/media/aida_6e2b/images/44_image.webp",
"/media/aida_6e2b/images/45_image.webp",
"/media/aida_6e2b/images/46_image.webp",
"/media/aida_6e2b/images/47_image.webp",
"/media/aida_6e2b/images/48_image.webp",
"/media/aida_6e2b/images/49_image.webp",
"/media/aida_6e2b/images/50_image.webp",
"/media/aida_6e2b/images/51_image.webp"
],
"created_at": "2026-01-22T04:59:12.06172-07:00",
"dir_name": "aida_6e2b"
}

View File

@ -0,0 +1,77 @@
{
"id": "aina_8afd",
"name": "Aina Watanabe",
"handle": "aina",
"gender": "female",
"description": "hot, japanese woman, name Sakuna Minamoto, age 23, long hair dyed blonde, , passionate about cars, has a Nissan racing car, works as a street racing photographer",
"tags": [
"baddie",
"night photography",
"supercars",
"high-intensity interval training",
"street racing culture",
"techno music",
"sneaker collecting",
"watch collecting"
],
"avatar_url": "/media/aina_8afd/avatar.webp?t=1769001940",
"banner_url": "/media/aina_8afd/banner.webp?t=1769001945",
"videos": [
"/media/aina_8afd/videos/01_smile_reveal.mp4?t=1769001995"
],
"images": [
"/media/aina_8afd/images/01_mid_mid_neutral.webp",
"/media/aina_8afd/images/02_image.webp",
"/media/aina_8afd/images/03_image.webp",
"/media/aina_8afd/images/04_image.webp",
"/media/aina_8afd/images/05_image.webp",
"/media/aina_8afd/images/06_image.webp",
"/media/aina_8afd/images/07_image.webp",
"/media/aina_8afd/images/08_image.webp",
"/media/aina_8afd/images/09_image.webp",
"/media/aina_8afd/images/10_image.webp",
"/media/aina_8afd/images/11_image.webp",
"/media/aina_8afd/images/12_image.webp",
"/media/aina_8afd/images/13_image.webp",
"/media/aina_8afd/images/14_image.webp",
"/media/aina_8afd/images/15_image.webp",
"/media/aina_8afd/images/16_image.webp",
"/media/aina_8afd/images/17_image.webp",
"/media/aina_8afd/images/18_image.webp",
"/media/aina_8afd/images/19_image.webp",
"/media/aina_8afd/images/20_image.webp",
"/media/aina_8afd/images/21_image.webp",
"/media/aina_8afd/images/22_image.webp",
"/media/aina_8afd/images/23_image.webp",
"/media/aina_8afd/images/24_image.webp",
"/media/aina_8afd/images/25_image.webp",
"/media/aina_8afd/images/26_image.webp",
"/media/aina_8afd/images/27_image.webp",
"/media/aina_8afd/images/28_image.webp",
"/media/aina_8afd/images/29_image.webp",
"/media/aina_8afd/images/30_image.webp",
"/media/aina_8afd/images/31_image.webp",
"/media/aina_8afd/images/32_image.webp",
"/media/aina_8afd/images/33_image.webp",
"/media/aina_8afd/images/34_image.webp",
"/media/aina_8afd/images/35_image.webp",
"/media/aina_8afd/images/36_image.webp",
"/media/aina_8afd/images/37_image.webp",
"/media/aina_8afd/images/38_image.webp",
"/media/aina_8afd/images/39_image.webp",
"/media/aina_8afd/images/40_image.webp",
"/media/aina_8afd/images/41_image.webp",
"/media/aina_8afd/images/42_image.webp",
"/media/aina_8afd/images/43_image.webp",
"/media/aina_8afd/images/44_image.webp",
"/media/aina_8afd/images/45_image.webp",
"/media/aina_8afd/images/46_image.webp",
"/media/aina_8afd/images/47_image.webp",
"/media/aina_8afd/images/48_image.webp",
"/media/aina_8afd/images/49_image.webp",
"/media/aina_8afd/images/50_image.webp",
"/media/aina_8afd/images/51_image.webp"
],
"created_at": "2026-01-21T06:23:47.366055-07:00",
"dir_name": "aina_8afd"
}

View File

@ -0,0 +1,77 @@
{
"id": "aiyana_153a",
"name": "Aiyana Redsky",
"handle": "aiyana",
"gender": "female",
"description": "indigenous woman, bright colored clothing, creative, painting artist, city living in a loft,",
"tags": [
"artist",
"large-scale oil painting",
"traditional beadwork with modern materials",
"rock climbing",
"urban exploration",
"vinyl collecting",
"sustainable fashion",
"plant propagation"
],
"avatar_url": "/media/aiyana_153a/avatar.webp?t=1769671382",
"banner_url": "/media/aiyana_153a/banner.webp?t=1769671403",
"videos": [
"/media/aiyana_153a/videos/01_smile_reveal.mp4?t=1769671424"
],
"images": [
"/media/aiyana_153a/images/01_mid_mid_neutral.webp",
"/media/aiyana_153a/images/02_image.webp",
"/media/aiyana_153a/images/03_image.webp",
"/media/aiyana_153a/images/04_image.webp",
"/media/aiyana_153a/images/05_image.webp",
"/media/aiyana_153a/images/06_image.webp",
"/media/aiyana_153a/images/07_image.webp",
"/media/aiyana_153a/images/08_image.webp",
"/media/aiyana_153a/images/09_image.webp",
"/media/aiyana_153a/images/10_image.webp",
"/media/aiyana_153a/images/11_image.webp",
"/media/aiyana_153a/images/12_image.webp",
"/media/aiyana_153a/images/13_image.webp",
"/media/aiyana_153a/images/14_image.webp",
"/media/aiyana_153a/images/15_image.webp",
"/media/aiyana_153a/images/16_image.webp",
"/media/aiyana_153a/images/17_image.webp",
"/media/aiyana_153a/images/18_image.webp",
"/media/aiyana_153a/images/19_image.webp",
"/media/aiyana_153a/images/20_image.webp",
"/media/aiyana_153a/images/21_image.webp",
"/media/aiyana_153a/images/22_image.webp",
"/media/aiyana_153a/images/23_image.webp",
"/media/aiyana_153a/images/24_image.webp",
"/media/aiyana_153a/images/25_image.webp",
"/media/aiyana_153a/images/26_image.webp",
"/media/aiyana_153a/images/27_image.webp",
"/media/aiyana_153a/images/28_image.webp",
"/media/aiyana_153a/images/29_image.webp",
"/media/aiyana_153a/images/30_image.webp",
"/media/aiyana_153a/images/31_image.webp",
"/media/aiyana_153a/images/32_image.webp",
"/media/aiyana_153a/images/33_image.webp",
"/media/aiyana_153a/images/34_image.webp",
"/media/aiyana_153a/images/35_image.webp",
"/media/aiyana_153a/images/36_image.webp",
"/media/aiyana_153a/images/37_image.webp",
"/media/aiyana_153a/images/38_image.webp",
"/media/aiyana_153a/images/39_image.webp",
"/media/aiyana_153a/images/40_image.webp",
"/media/aiyana_153a/images/41_image.webp",
"/media/aiyana_153a/images/42_image.webp",
"/media/aiyana_153a/images/43_image.webp",
"/media/aiyana_153a/images/44_image.webp",
"/media/aiyana_153a/images/45_image.webp",
"/media/aiyana_153a/images/46_image.webp",
"/media/aiyana_153a/images/47_image.webp",
"/media/aiyana_153a/images/48_image.webp",
"/media/aiyana_153a/images/49_image.webp",
"/media/aiyana_153a/images/50_image.webp",
"/media/aiyana_153a/images/51_image.webp"
],
"created_at": "2026-01-29T00:21:47.022197-07:00",
"dir_name": "aiyana_153a"
}

View File

@ -0,0 +1,76 @@
{
"id": "akash_867d",
"name": "Akash Bose",
"handle": "akash",
"gender": "male",
"description": "30's thin man, bagel baker, wears beanies, loves mountain biking, rides public transportation, has a dog",
"tags": [
"the lifestyle",
"sourdough fermentation",
"rock climbing",
"analog photography",
"indoor gardening",
"local indie music",
"restoring vintage kitchen tools"
],
"avatar_url": "/media/akash_867d/avatar.webp?t=1770104951",
"banner_url": "/media/akash_867d/banner.webp?t=1770104953",
"videos": [
"/media/akash_867d/videos/01_smile_reveal.mp4?t=1770105016"
],
"images": [
"/media/akash_867d/images/01_mid_mid_neutral.webp",
"/media/akash_867d/images/02_image.webp",
"/media/akash_867d/images/03_image.webp",
"/media/akash_867d/images/04_image.webp",
"/media/akash_867d/images/05_image.webp",
"/media/akash_867d/images/06_image.webp",
"/media/akash_867d/images/07_image.webp",
"/media/akash_867d/images/08_image.webp",
"/media/akash_867d/images/09_image.webp",
"/media/akash_867d/images/10_image.webp",
"/media/akash_867d/images/11_image.webp",
"/media/akash_867d/images/12_image.webp",
"/media/akash_867d/images/13_image.webp",
"/media/akash_867d/images/14_image.webp",
"/media/akash_867d/images/15_image.webp",
"/media/akash_867d/images/16_image.webp",
"/media/akash_867d/images/17_image.webp",
"/media/akash_867d/images/18_image.webp",
"/media/akash_867d/images/19_image.webp",
"/media/akash_867d/images/20_image.webp",
"/media/akash_867d/images/21_image.webp",
"/media/akash_867d/images/22_image.webp",
"/media/akash_867d/images/23_image.webp",
"/media/akash_867d/images/24_image.webp",
"/media/akash_867d/images/25_image.webp",
"/media/akash_867d/images/26_image.webp",
"/media/akash_867d/images/27_image.webp",
"/media/akash_867d/images/28_image.webp",
"/media/akash_867d/images/29_image.webp",
"/media/akash_867d/images/30_image.webp",
"/media/akash_867d/images/31_image.webp",
"/media/akash_867d/images/32_image.webp",
"/media/akash_867d/images/33_image.webp",
"/media/akash_867d/images/34_image.webp",
"/media/akash_867d/images/35_image.webp",
"/media/akash_867d/images/36_image.webp",
"/media/akash_867d/images/37_image.webp",
"/media/akash_867d/images/38_image.webp",
"/media/akash_867d/images/39_image.webp",
"/media/akash_867d/images/40_image.webp",
"/media/akash_867d/images/41_image.webp",
"/media/akash_867d/images/42_image.webp",
"/media/akash_867d/images/43_image.webp",
"/media/akash_867d/images/44_image.webp",
"/media/akash_867d/images/45_image.webp",
"/media/akash_867d/images/46_image.webp",
"/media/akash_867d/images/47_image.webp",
"/media/akash_867d/images/48_image.webp",
"/media/akash_867d/images/49_image.webp",
"/media/akash_867d/images/50_image.webp",
"/media/akash_867d/images/51_image.webp"
],
"created_at": "2026-02-03T00:48:08.245041-07:00",
"dir_name": "akash_867d"
}

View File

@ -0,0 +1,77 @@
{
"id": "akilah_6c11",
"name": "Akilah Thomas",
"handle": "akilah",
"gender": "female",
"description": "nerdy middle aged woman who works as a teacher",
"tags": [
"librarian",
"rare book collecting",
"genealogy research",
"art history",
"jazz vinyl",
"indoor gardening",
"baking sourdough",
"documentary films"
],
"avatar_url": "/media/akilah_6c11/avatar.webp?t=1769420185",
"banner_url": "/media/akilah_6c11/banner.webp?t=1769420197",
"videos": [
"/media/akilah_6c11/videos/01_smile_reveal.mp4?t=1769420201"
],
"images": [
"/media/akilah_6c11/images/01_mid_mid_neutral.webp",
"/media/akilah_6c11/images/02_image.webp",
"/media/akilah_6c11/images/03_image.webp",
"/media/akilah_6c11/images/04_image.webp",
"/media/akilah_6c11/images/05_image.webp",
"/media/akilah_6c11/images/06_image.webp",
"/media/akilah_6c11/images/07_image.webp",
"/media/akilah_6c11/images/08_image.webp",
"/media/akilah_6c11/images/09_image.webp",
"/media/akilah_6c11/images/10_image.webp",
"/media/akilah_6c11/images/11_image.webp",
"/media/akilah_6c11/images/12_image.webp",
"/media/akilah_6c11/images/13_image.webp",
"/media/akilah_6c11/images/14_image.webp",
"/media/akilah_6c11/images/15_image.webp",
"/media/akilah_6c11/images/16_image.webp",
"/media/akilah_6c11/images/17_image.webp",
"/media/akilah_6c11/images/18_image.webp",
"/media/akilah_6c11/images/19_image.webp",
"/media/akilah_6c11/images/20_image.webp",
"/media/akilah_6c11/images/21_image.webp",
"/media/akilah_6c11/images/22_image.webp",
"/media/akilah_6c11/images/23_image.webp",
"/media/akilah_6c11/images/24_image.webp",
"/media/akilah_6c11/images/25_image.webp",
"/media/akilah_6c11/images/26_image.webp",
"/media/akilah_6c11/images/27_image.webp",
"/media/akilah_6c11/images/28_image.webp",
"/media/akilah_6c11/images/29_image.webp",
"/media/akilah_6c11/images/30_image.webp",
"/media/akilah_6c11/images/31_image.webp",
"/media/akilah_6c11/images/32_image.webp",
"/media/akilah_6c11/images/33_image.webp",
"/media/akilah_6c11/images/34_image.webp",
"/media/akilah_6c11/images/35_image.webp",
"/media/akilah_6c11/images/36_image.webp",
"/media/akilah_6c11/images/37_image.webp",
"/media/akilah_6c11/images/38_image.webp",
"/media/akilah_6c11/images/39_image.webp",
"/media/akilah_6c11/images/40_image.webp",
"/media/akilah_6c11/images/41_image.webp",
"/media/akilah_6c11/images/42_image.webp",
"/media/akilah_6c11/images/43_image.webp",
"/media/akilah_6c11/images/44_image.webp",
"/media/akilah_6c11/images/45_image.webp",
"/media/akilah_6c11/images/46_image.webp",
"/media/akilah_6c11/images/47_image.webp",
"/media/akilah_6c11/images/48_image.webp",
"/media/akilah_6c11/images/49_image.webp",
"/media/akilah_6c11/images/50_image.webp",
"/media/akilah_6c11/images/51_image.webp"
],
"created_at": "2026-01-26T02:35:07.384462-07:00",
"dir_name": "akilah_6c11"
}

View File

@ -0,0 +1,76 @@
{
"id": "akilah_b8b5",
"name": "Akilah Thomas",
"handle": "akilah",
"gender": "female",
"description": "sexy hot tall slender, very pretty face , long hair , skateboard girl, listens punk rock music, dresses in black t shirts, white, age 21, hobby skateboard, from san diego",
"tags": [
"punk_girl",
"street skateboarding",
"diy punk zines",
"analog photography",
"collecting vinyl",
"surfing",
"graphic novels",
"exploring abandoned buildings"
],
"avatar_url": "/media/akilah_b8b5/avatar.webp?t=1769179071",
"banner_url": "/media/akilah_b8b5/banner.webp?t=1769179071",
"videos": [
"/media/akilah_b8b5/videos/01_smile_reveal.mp4?t=1769179156"
],
"images": [
"/media/akilah_b8b5/images/01_mid_mid_neutral.webp",
"/media/akilah_b8b5/images/02_image.webp",
"/media/akilah_b8b5/images/03_image.webp",
"/media/akilah_b8b5/images/04_image.webp",
"/media/akilah_b8b5/images/05_image.webp",
"/media/akilah_b8b5/images/07_image.webp",
"/media/akilah_b8b5/images/08_image.webp",
"/media/akilah_b8b5/images/09_image.webp",
"/media/akilah_b8b5/images/10_image.webp",
"/media/akilah_b8b5/images/11_image.webp",
"/media/akilah_b8b5/images/12_image.webp",
"/media/akilah_b8b5/images/13_image.webp",
"/media/akilah_b8b5/images/14_image.webp",
"/media/akilah_b8b5/images/15_image.webp",
"/media/akilah_b8b5/images/16_image.webp",
"/media/akilah_b8b5/images/17_image.webp",
"/media/akilah_b8b5/images/18_image.webp",
"/media/akilah_b8b5/images/19_image.webp",
"/media/akilah_b8b5/images/20_image.webp",
"/media/akilah_b8b5/images/21_image.webp",
"/media/akilah_b8b5/images/22_image.webp",
"/media/akilah_b8b5/images/23_image.webp",
"/media/akilah_b8b5/images/24_image.webp",
"/media/akilah_b8b5/images/25_image.webp",
"/media/akilah_b8b5/images/26_image.webp",
"/media/akilah_b8b5/images/27_image.webp",
"/media/akilah_b8b5/images/28_image.webp",
"/media/akilah_b8b5/images/29_image.webp",
"/media/akilah_b8b5/images/30_image.webp",
"/media/akilah_b8b5/images/31_image.webp",
"/media/akilah_b8b5/images/32_image.webp",
"/media/akilah_b8b5/images/33_image.webp",
"/media/akilah_b8b5/images/34_image.webp",
"/media/akilah_b8b5/images/35_image.webp",
"/media/akilah_b8b5/images/36_image.webp",
"/media/akilah_b8b5/images/37_image.webp",
"/media/akilah_b8b5/images/38_image.webp",
"/media/akilah_b8b5/images/39_image.webp",
"/media/akilah_b8b5/images/40_image.webp",
"/media/akilah_b8b5/images/41_image.webp",
"/media/akilah_b8b5/images/42_image.webp",
"/media/akilah_b8b5/images/43_image.webp",
"/media/akilah_b8b5/images/44_image.webp",
"/media/akilah_b8b5/images/45_image.webp",
"/media/akilah_b8b5/images/46_image.webp",
"/media/akilah_b8b5/images/47_image.webp",
"/media/akilah_b8b5/images/48_image.webp",
"/media/akilah_b8b5/images/49_image.webp",
"/media/akilah_b8b5/images/50_image.webp",
"/media/akilah_b8b5/images/51_image.webp"
],
"created_at": "2026-01-23T07:36:38.480049-07:00",
"dir_name": "akilah_b8b5"
}

View File

@ -0,0 +1,76 @@
{
"id": "alain_0fbd",
"name": "Alain Petit",
"handle": "alain",
"gender": "male",
"description": "college football coach, lives alone, drives a pickup truck, 45 years old, loves his job, former athlete, state champion as a coach 2 times, white hair well built, white skin",
"tags": [
"the confident one",
"sailing",
"endurance training",
"classical architecture",
"modern history",
"horology",
"jazz saxophone",
"wine collecting"
],
"avatar_url": "/media/alain_0fbd/avatar.webp?t=1769694263",
"banner_url": "/media/alain_0fbd/banner.webp?t=1769694350",
"videos": [
"/media/alain_0fbd/videos/01_smile_reveal.mp4?t=1769694310"
],
"images": [
"/media/alain_0fbd/images/01_mid_mid_neutral.webp",
"/media/alain_0fbd/images/02_image.webp",
"/media/alain_0fbd/images/03_image.webp",
"/media/alain_0fbd/images/04_image.webp",
"/media/alain_0fbd/images/05_image.webp",
"/media/alain_0fbd/images/06_image.webp",
"/media/alain_0fbd/images/07_image.webp",
"/media/alain_0fbd/images/08_image.webp",
"/media/alain_0fbd/images/10_image.webp",
"/media/alain_0fbd/images/11_image.webp",
"/media/alain_0fbd/images/12_image.webp",
"/media/alain_0fbd/images/13_image.webp",
"/media/alain_0fbd/images/14_image.webp",
"/media/alain_0fbd/images/15_image.webp",
"/media/alain_0fbd/images/16_image.webp",
"/media/alain_0fbd/images/17_image.webp",
"/media/alain_0fbd/images/18_image.webp",
"/media/alain_0fbd/images/19_image.webp",
"/media/alain_0fbd/images/20_image.webp",
"/media/alain_0fbd/images/21_image.webp",
"/media/alain_0fbd/images/22_image.webp",
"/media/alain_0fbd/images/23_image.webp",
"/media/alain_0fbd/images/24_image.webp",
"/media/alain_0fbd/images/25_image.webp",
"/media/alain_0fbd/images/26_image.webp",
"/media/alain_0fbd/images/27_image.webp",
"/media/alain_0fbd/images/28_image.webp",
"/media/alain_0fbd/images/29_image.webp",
"/media/alain_0fbd/images/30_image.webp",
"/media/alain_0fbd/images/31_image.webp",
"/media/alain_0fbd/images/32_image.webp",
"/media/alain_0fbd/images/33_image.webp",
"/media/alain_0fbd/images/34_image.webp",
"/media/alain_0fbd/images/35_image.webp",
"/media/alain_0fbd/images/36_image.webp",
"/media/alain_0fbd/images/37_image.webp",
"/media/alain_0fbd/images/38_image.webp",
"/media/alain_0fbd/images/39_image.webp",
"/media/alain_0fbd/images/40_image.webp",
"/media/alain_0fbd/images/41_image.webp",
"/media/alain_0fbd/images/42_image.webp",
"/media/alain_0fbd/images/43_image.webp",
"/media/alain_0fbd/images/44_image.webp",
"/media/alain_0fbd/images/45_image.webp",
"/media/alain_0fbd/images/46_image.webp",
"/media/alain_0fbd/images/47_image.webp",
"/media/alain_0fbd/images/48_image.webp",
"/media/alain_0fbd/images/49_image.webp",
"/media/alain_0fbd/images/50_image.webp",
"/media/alain_0fbd/images/51_image.webp"
],
"created_at": "2026-01-29T06:43:12.190612-07:00",
"dir_name": "alain_0fbd"
}

View File

@ -0,0 +1,77 @@
{
"id": "alan_1d26",
"name": "Alan Johnson",
"handle": "alan",
"gender": "male",
"description": "20's male, magician, cards, Las Vegas, outgoing, great smile, performer, glitz,",
"tags": [
"career_fantasy",
"sleight of hand",
"jazz piano",
"bespoke tailoring",
"psychology of deception",
"mixology",
"chess",
"urban photography"
],
"avatar_url": "/media/alan_1d26/avatar.webp?t=1769587364",
"banner_url": "/media/alan_1d26/banner.webp?t=1769587315",
"videos": [
"/media/alan_1d26/videos/01_smile_reveal.mp4?t=1769551470"
],
"images": [
"/media/alan_1d26/images/01_mid_mid_neutral.webp",
"/media/alan_1d26/images/02_image.webp",
"/media/alan_1d26/images/03_image.webp",
"/media/alan_1d26/images/04_image.webp",
"/media/alan_1d26/images/05_image.webp",
"/media/alan_1d26/images/06_image.webp",
"/media/alan_1d26/images/07_image.webp",
"/media/alan_1d26/images/08_image.webp",
"/media/alan_1d26/images/09_image.webp",
"/media/alan_1d26/images/10_image.webp",
"/media/alan_1d26/images/11_image.webp",
"/media/alan_1d26/images/12_image.webp",
"/media/alan_1d26/images/13_image.webp",
"/media/alan_1d26/images/14_image.webp",
"/media/alan_1d26/images/15_image.webp",
"/media/alan_1d26/images/16_image.webp",
"/media/alan_1d26/images/17_image.webp",
"/media/alan_1d26/images/18_image.webp",
"/media/alan_1d26/images/19_image.webp",
"/media/alan_1d26/images/20_image.webp",
"/media/alan_1d26/images/21_image.webp",
"/media/alan_1d26/images/22_image.webp",
"/media/alan_1d26/images/23_image.webp",
"/media/alan_1d26/images/24_image.webp",
"/media/alan_1d26/images/25_image.webp",
"/media/alan_1d26/images/26_image.webp",
"/media/alan_1d26/images/27_image.webp",
"/media/alan_1d26/images/28_image.webp",
"/media/alan_1d26/images/29_image.webp",
"/media/alan_1d26/images/30_image.webp",
"/media/alan_1d26/images/31_image.webp",
"/media/alan_1d26/images/32_image.webp",
"/media/alan_1d26/images/33_image.webp",
"/media/alan_1d26/images/34_image.webp",
"/media/alan_1d26/images/35_image.webp",
"/media/alan_1d26/images/36_image.webp",
"/media/alan_1d26/images/37_image.webp",
"/media/alan_1d26/images/38_image.webp",
"/media/alan_1d26/images/39_image.webp",
"/media/alan_1d26/images/40_image.webp",
"/media/alan_1d26/images/41_image.webp",
"/media/alan_1d26/images/42_image.webp",
"/media/alan_1d26/images/43_image.webp",
"/media/alan_1d26/images/44_image.webp",
"/media/alan_1d26/images/45_image.webp",
"/media/alan_1d26/images/46_image.webp",
"/media/alan_1d26/images/47_image.webp",
"/media/alan_1d26/images/48_image.webp",
"/media/alan_1d26/images/49_image.webp",
"/media/alan_1d26/images/50_image.webp",
"/media/alan_1d26/images/51_image.webp"
],
"created_at": "2026-01-27T15:02:33.168853-07:00",
"dir_name": "alan_1d26"
}

View File

@ -0,0 +1,76 @@
{
"id": "alea_d4ca",
"name": "Alea Schmidt",
"handle": "alea",
"gender": "female",
"description": "woman from Germany who is an astronaut",
"tags": [
"career_fantasy",
"astro-photography",
"olympic weightlifting",
"sailing",
"quantum computing",
"architectural history",
"espresso brewing",
"high-altitude hiking"
],
"avatar_url": "/media/alea_d4ca/avatar.webp?t=1769671816",
"banner_url": "/media/alea_d4ca/banner.webp?t=1769671828",
"videos": [
"/media/alea_d4ca/videos/01_smile_reveal.mp4?t=1769671875"
],
"images": [
"/media/alea_d4ca/images/01_mid_mid_neutral.webp",
"/media/alea_d4ca/images/02_image.webp",
"/media/alea_d4ca/images/03_image.webp",
"/media/alea_d4ca/images/04_image.webp",
"/media/alea_d4ca/images/05_image.webp",
"/media/alea_d4ca/images/06_image.webp",
"/media/alea_d4ca/images/07_image.webp",
"/media/alea_d4ca/images/08_image.webp",
"/media/alea_d4ca/images/09_image.webp",
"/media/alea_d4ca/images/10_image.webp",
"/media/alea_d4ca/images/11_image.webp",
"/media/alea_d4ca/images/12_image.webp",
"/media/alea_d4ca/images/13_image.webp",
"/media/alea_d4ca/images/14_image.webp",
"/media/alea_d4ca/images/15_image.webp",
"/media/alea_d4ca/images/16_image.webp",
"/media/alea_d4ca/images/17_image.webp",
"/media/alea_d4ca/images/18_image.webp",
"/media/alea_d4ca/images/19_image.webp",
"/media/alea_d4ca/images/20_image.webp",
"/media/alea_d4ca/images/21_image.webp",
"/media/alea_d4ca/images/22_image.webp",
"/media/alea_d4ca/images/23_image.webp",
"/media/alea_d4ca/images/24_image.webp",
"/media/alea_d4ca/images/25_image.webp",
"/media/alea_d4ca/images/26_image.webp",
"/media/alea_d4ca/images/27_image.webp",
"/media/alea_d4ca/images/28_image.webp",
"/media/alea_d4ca/images/29_image.webp",
"/media/alea_d4ca/images/31_image.webp",
"/media/alea_d4ca/images/32_image.webp",
"/media/alea_d4ca/images/33_image.webp",
"/media/alea_d4ca/images/34_image.webp",
"/media/alea_d4ca/images/35_image.webp",
"/media/alea_d4ca/images/36_image.webp",
"/media/alea_d4ca/images/37_image.webp",
"/media/alea_d4ca/images/38_image.webp",
"/media/alea_d4ca/images/39_image.webp",
"/media/alea_d4ca/images/40_image.webp",
"/media/alea_d4ca/images/41_image.webp",
"/media/alea_d4ca/images/42_image.webp",
"/media/alea_d4ca/images/43_image.webp",
"/media/alea_d4ca/images/44_image.webp",
"/media/alea_d4ca/images/45_image.webp",
"/media/alea_d4ca/images/46_image.webp",
"/media/alea_d4ca/images/47_image.webp",
"/media/alea_d4ca/images/48_image.webp",
"/media/alea_d4ca/images/49_image.webp",
"/media/alea_d4ca/images/50_image.webp",
"/media/alea_d4ca/images/51_image.webp"
],
"created_at": "2026-01-29T00:29:05.565286-07:00",
"dir_name": "alea_d4ca"
}

View File

@ -0,0 +1,69 @@
{
"id": "alejandro_3114",
"name": "Alejandro Smith",
"handle": "alejandro",
"gender": "male",
"description": "punk rocker, industrial, thin but muscular, denim, plaid, clean-shaven, bad boy",
"tags": [
"alt_punk_aesthetics",
"industrial design",
"powerlifting",
"analog synthesizers",
"urban exploration",
"cooking",
"biking",
"documentary films"
],
"avatar_url": "/media/alejandro_3114/avatar.webp?t=1769112859",
"banner_url": "/media/alejandro_3114/banner.webp?t=1769112854",
"images": [
"/media/alejandro_3114/images/01_mid_mid_neutral.webp",
"/media/alejandro_3114/images/02_image.webp",
"/media/alejandro_3114/images/03_image.webp",
"/media/alejandro_3114/images/04_image.webp",
"/media/alejandro_3114/images/05_image.webp",
"/media/alejandro_3114/images/06_image.webp",
"/media/alejandro_3114/images/07_image.webp",
"/media/alejandro_3114/images/08_image.webp",
"/media/alejandro_3114/images/11_image.webp",
"/media/alejandro_3114/images/12_image.webp",
"/media/alejandro_3114/images/13_image.webp",
"/media/alejandro_3114/images/14_image.webp",
"/media/alejandro_3114/images/15_image.webp",
"/media/alejandro_3114/images/17_image.webp",
"/media/alejandro_3114/images/18_image.webp",
"/media/alejandro_3114/images/19_image.webp",
"/media/alejandro_3114/images/20_image.webp",
"/media/alejandro_3114/images/21_image.webp",
"/media/alejandro_3114/images/22_image.webp",
"/media/alejandro_3114/images/22_image.webp",
"/media/alejandro_3114/images/23_image.webp",
"/media/alejandro_3114/images/23_image.webp",
"/media/alejandro_3114/images/24_image.webp",
"/media/alejandro_3114/images/24_image.webp",
"/media/alejandro_3114/images/25_image.webp",
"/media/alejandro_3114/images/25_image.webp",
"/media/alejandro_3114/images/27_image.webp",
"/media/alejandro_3114/images/27_image.webp",
"/media/alejandro_3114/images/28_image.webp",
"/media/alejandro_3114/images/28_image.webp",
"/media/alejandro_3114/images/29_image.webp",
"/media/alejandro_3114/images/29_image.webp",
"/media/alejandro_3114/images/30_image.webp",
"/media/alejandro_3114/images/30_image.webp",
"/media/alejandro_3114/images/31_image.webp",
"/media/alejandro_3114/images/31_image.webp",
"/media/alejandro_3114/images/32_image.webp",
"/media/alejandro_3114/images/33_image.webp",
"/media/alejandro_3114/images/34_image.webp",
"/media/alejandro_3114/images/35_image.webp",
"/media/alejandro_3114/images/36_image.webp",
"/media/alejandro_3114/images/37_image.webp",
"/media/alejandro_3114/images/38_image.webp",
"/media/alejandro_3114/images/39_image.webp",
"/media/alejandro_3114/images/40_image.webp",
"/media/alejandro_3114/images/41_image.webp"
],
"created_at": "2026-01-22T13:13:12.670359-07:00",
"dir_name": "alejandro_3114"
}

View File

@ -0,0 +1,77 @@
{
"id": "alejandro_57b5",
"name": "Alejandro Villarreal",
"handle": "alejandro",
"gender": "male",
"description": "sexy hot tall, muscular, man, with full of hair, latino, manager of a resort in mexico",
"tags": [
"career_fantasy",
"ocean conservation",
"modern architecture",
"kitesurfing",
"wine tasting",
"historical biographies",
"watches"
],
"avatar_url": "/media/alejandro_57b5/avatar.webp?t=1769165444",
"banner_url": "/media/alejandro_57b5/banner.webp?t=1769165503",
"videos": [
"/media/alejandro_57b5/videos/01_smile_reveal.mp4?t=1769165490"
],
"images": [
"/media/alejandro_57b5/images/01_mid_mid_neutral.webp",
"/media/alejandro_57b5/images/02_image.webp",
"/media/alejandro_57b5/images/03_image.webp",
"/media/alejandro_57b5/images/04_image.webp",
"/media/alejandro_57b5/images/05_image.webp",
"/media/alejandro_57b5/images/06_image.webp",
"/media/alejandro_57b5/images/07_image.webp",
"/media/alejandro_57b5/images/08_image.webp",
"/media/alejandro_57b5/images/09_image.webp",
"/media/alejandro_57b5/images/10_image.webp",
"/media/alejandro_57b5/images/11_image.webp",
"/media/alejandro_57b5/images/12_image.webp",
"/media/alejandro_57b5/images/13_image.webp",
"/media/alejandro_57b5/images/14_image.webp",
"/media/alejandro_57b5/images/15_image.webp",
"/media/alejandro_57b5/images/16_image.webp",
"/media/alejandro_57b5/images/17_image.webp",
"/media/alejandro_57b5/images/18_image.webp",
"/media/alejandro_57b5/images/19_image.webp",
"/media/alejandro_57b5/images/20_image.webp",
"/media/alejandro_57b5/images/21_image.webp",
"/media/alejandro_57b5/images/22_image.webp",
"/media/alejandro_57b5/images/23_image.webp",
"/media/alejandro_57b5/images/24_image.webp",
"/media/alejandro_57b5/images/25_image.webp",
"/media/alejandro_57b5/images/26_image.webp",
"/media/alejandro_57b5/images/27_image.webp",
"/media/alejandro_57b5/images/28_image.webp",
"/media/alejandro_57b5/images/29_image.webp",
"/media/alejandro_57b5/images/30_image.webp",
"/media/alejandro_57b5/images/31_image.webp",
"/media/alejandro_57b5/images/32_image.webp",
"/media/alejandro_57b5/images/33_image.webp",
"/media/alejandro_57b5/images/34_image.webp",
"/media/alejandro_57b5/images/35_image.webp",
"/media/alejandro_57b5/images/36_image.webp",
"/media/alejandro_57b5/images/37_image.webp",
"/media/alejandro_57b5/images/38_image.webp",
"/media/alejandro_57b5/images/39_image.webp",
"/media/alejandro_57b5/images/40_image.webp",
"/media/alejandro_57b5/images/41_image.webp",
"/media/alejandro_57b5/images/42_image.webp",
"/media/alejandro_57b5/images/43_image.webp",
"/media/alejandro_57b5/images/44_image.webp",
"/media/alejandro_57b5/images/45_image.webp",
"/media/alejandro_57b5/images/46_image.webp",
"/media/alejandro_57b5/images/47_image.webp",
"/media/alejandro_57b5/images/48_image.webp",
"/media/alejandro_57b5/images/49_image.webp",
"/media/alejandro_57b5/images/50_image.webp",
"/media/alejandro_57b5/images/51_image.webp",
"/media/alejandro_57b5/images/53_image.webp"
],
"created_at": "2026-01-23T03:49:37.578526-07:00",
"dir_name": "alejandro_57b5"
}

View File

@ -0,0 +1,76 @@
{
"id": "alessandra_07ee",
"name": "Alessandra Valentini",
"handle": "alessandra",
"gender": "female",
"description": "woman from Italy with septum and glasses who likes to wear fur coats and loves jewerly",
"tags": [
"mob_wife",
"vintage jewelry collecting",
"opera",
"interior design",
"fine wine",
"gourmet cooking",
"horseback riding",
"pilates"
],
"avatar_url": "/media/alessandra_07ee/avatar.webp?t=1769760387",
"banner_url": "/media/alessandra_07ee/banner.webp?t=1769760411",
"videos": [
"/media/alessandra_07ee/videos/01_smile_reveal.mp4?t=1769760493"
],
"images": [
"/media/alessandra_07ee/images/01_mid_mid_neutral.webp",
"/media/alessandra_07ee/images/02_image.webp",
"/media/alessandra_07ee/images/03_image.webp",
"/media/alessandra_07ee/images/04_image.webp",
"/media/alessandra_07ee/images/05_image.webp",
"/media/alessandra_07ee/images/06_image.webp",
"/media/alessandra_07ee/images/07_image.webp",
"/media/alessandra_07ee/images/08_image.webp",
"/media/alessandra_07ee/images/09_image.webp",
"/media/alessandra_07ee/images/10_image.webp",
"/media/alessandra_07ee/images/11_image.webp",
"/media/alessandra_07ee/images/12_image.webp",
"/media/alessandra_07ee/images/13_image.webp",
"/media/alessandra_07ee/images/14_image.webp",
"/media/alessandra_07ee/images/15_image.webp",
"/media/alessandra_07ee/images/16_image.webp",
"/media/alessandra_07ee/images/17_image.webp",
"/media/alessandra_07ee/images/19_image.webp",
"/media/alessandra_07ee/images/20_image.webp",
"/media/alessandra_07ee/images/21_image.webp",
"/media/alessandra_07ee/images/22_image.webp",
"/media/alessandra_07ee/images/23_image.webp",
"/media/alessandra_07ee/images/24_image.webp",
"/media/alessandra_07ee/images/25_image.webp",
"/media/alessandra_07ee/images/26_image.webp",
"/media/alessandra_07ee/images/27_image.webp",
"/media/alessandra_07ee/images/28_image.webp",
"/media/alessandra_07ee/images/29_image.webp",
"/media/alessandra_07ee/images/30_image.webp",
"/media/alessandra_07ee/images/31_image.webp",
"/media/alessandra_07ee/images/32_image.webp",
"/media/alessandra_07ee/images/33_image.webp",
"/media/alessandra_07ee/images/34_image.webp",
"/media/alessandra_07ee/images/35_image.webp",
"/media/alessandra_07ee/images/36_image.webp",
"/media/alessandra_07ee/images/37_image.webp",
"/media/alessandra_07ee/images/38_image.webp",
"/media/alessandra_07ee/images/39_image.webp",
"/media/alessandra_07ee/images/40_image.webp",
"/media/alessandra_07ee/images/41_image.webp",
"/media/alessandra_07ee/images/42_image.webp",
"/media/alessandra_07ee/images/43_image.webp",
"/media/alessandra_07ee/images/44_image.webp",
"/media/alessandra_07ee/images/45_image.webp",
"/media/alessandra_07ee/images/46_image.webp",
"/media/alessandra_07ee/images/47_image.webp",
"/media/alessandra_07ee/images/48_image.webp",
"/media/alessandra_07ee/images/49_image.webp",
"/media/alessandra_07ee/images/50_image.webp",
"/media/alessandra_07ee/images/51_image.webp"
],
"created_at": "2026-01-30T01:03:06.459893-07:00",
"dir_name": "alessandra_07ee"
}

View File

@ -0,0 +1,78 @@
{
"id": "alessandra_ad93",
"name": "Alessandra Vittorini",
"handle": "alessandra",
"gender": "female",
"description": "female from Spain who loves luxury cars",
"tags": [
"luxury_trophy",
"vintage car restoration",
"aerodynamics",
"f1 history",
"watchmaking",
"tennis",
"contemporary photography",
"wine pairing"
],
"avatar_url": "/media/alessandra_ad93/avatar.webp?t=1770024709",
"banner_url": "/media/alessandra_ad93/banner.webp?t=1770024846",
"videos": [
"/media/alessandra_ad93/videos/01_smile_reveal.mp4?t=1770024662"
],
"images": [
"/media/alessandra_ad93/images/01_mid_mid_neutral.webp",
"/media/alessandra_ad93/images/02_image.webp",
"/media/alessandra_ad93/images/03_image.webp",
"/media/alessandra_ad93/images/04_image.webp",
"/media/alessandra_ad93/images/05_image.webp",
"/media/alessandra_ad93/images/06_image.webp",
"/media/alessandra_ad93/images/07_image.webp",
"/media/alessandra_ad93/images/09_image.webp",
"/media/alessandra_ad93/images/10_image.webp",
"/media/alessandra_ad93/images/11_image.webp",
"/media/alessandra_ad93/images/12_image.webp",
"/media/alessandra_ad93/images/14_image.webp",
"/media/alessandra_ad93/images/16_image.webp",
"/media/alessandra_ad93/images/18_image.webp",
"/media/alessandra_ad93/images/19_image.webp",
"/media/alessandra_ad93/images/21_image.webp",
"/media/alessandra_ad93/images/22_image.webp",
"/media/alessandra_ad93/images/23_image.webp",
"/media/alessandra_ad93/images/24_image.webp",
"/media/alessandra_ad93/images/25_image.webp",
"/media/alessandra_ad93/images/26_image.webp",
"/media/alessandra_ad93/images/27_image.webp",
"/media/alessandra_ad93/images/28_image.webp",
"/media/alessandra_ad93/images/29_image.webp",
"/media/alessandra_ad93/images/31_image.webp",
"/media/alessandra_ad93/images/32_image.webp",
"/media/alessandra_ad93/images/33_image.webp",
"/media/alessandra_ad93/images/34_image.webp",
"/media/alessandra_ad93/images/35_image.webp",
"/media/alessandra_ad93/images/36_image.webp",
"/media/alessandra_ad93/images/37_image.webp",
"/media/alessandra_ad93/images/38_image.webp",
"/media/alessandra_ad93/images/39_image.webp",
"/media/alessandra_ad93/images/40_image.webp",
"/media/alessandra_ad93/images/41_image.webp",
"/media/alessandra_ad93/images/42_image.webp",
"/media/alessandra_ad93/images/43_image.webp",
"/media/alessandra_ad93/images/44_image.webp",
"/media/alessandra_ad93/images/45_image.webp",
"/media/alessandra_ad93/images/46_image.webp",
"/media/alessandra_ad93/images/47_image.webp",
"/media/alessandra_ad93/images/48_image.webp",
"/media/alessandra_ad93/images/49_image.webp",
"/media/alessandra_ad93/images/50_image.webp",
"/media/alessandra_ad93/images/51_image.webp",
"/media/alessandra_ad93/images/53_image.webp",
"/media/alessandra_ad93/images/54_image.webp",
"/media/alessandra_ad93/images/55_image.webp",
"/media/alessandra_ad93/images/56_image.webp",
"/media/alessandra_ad93/images/57_image.webp",
"/media/alessandra_ad93/images/58_image.webp",
"/media/alessandra_ad93/images/59_image.webp"
],
"created_at": "2026-02-02T02:26:09.253024-07:00",
"dir_name": "alessandra_ad93"
}

View File

@ -0,0 +1,78 @@
{
"id": "alessandra_f7c3",
"name": "Alessandra Vitale",
"handle": "alessandra",
"gender": "female",
"description": "woman from Greece who likes pool parties",
"tags": [
"beach_babe",
"ocean conservation",
"free diving",
"mediterranean viticulture",
"interior design",
"tennis",
"blogging about hidden beaches"
],
"avatar_url": "/media/alessandra_f7c3/avatar.webp?t=1770037034",
"banner_url": "/media/alessandra_f7c3/banner.webp?t=1770037054",
"videos": [
"/media/alessandra_f7c3/videos/01_smile_reveal.mp4?t=1770037049"
],
"images": [
"/media/alessandra_f7c3/images/01_mid_mid_neutral.webp",
"/media/alessandra_f7c3/images/02_image.webp",
"/media/alessandra_f7c3/images/03_image.webp",
"/media/alessandra_f7c3/images/04_image.webp",
"/media/alessandra_f7c3/images/05_image.webp",
"/media/alessandra_f7c3/images/06_image.webp",
"/media/alessandra_f7c3/images/07_image.webp",
"/media/alessandra_f7c3/images/08_image.webp",
"/media/alessandra_f7c3/images/09_image.webp",
"/media/alessandra_f7c3/images/11_image.webp",
"/media/alessandra_f7c3/images/12_image.webp",
"/media/alessandra_f7c3/images/13_image.webp",
"/media/alessandra_f7c3/images/14_image.webp",
"/media/alessandra_f7c3/images/15_image.webp",
"/media/alessandra_f7c3/images/16_image.webp",
"/media/alessandra_f7c3/images/17_image.webp",
"/media/alessandra_f7c3/images/18_image.webp",
"/media/alessandra_f7c3/images/19_image.webp",
"/media/alessandra_f7c3/images/20_image.webp",
"/media/alessandra_f7c3/images/21_image.webp",
"/media/alessandra_f7c3/images/22_image.webp",
"/media/alessandra_f7c3/images/23_image.webp",
"/media/alessandra_f7c3/images/24_image.webp",
"/media/alessandra_f7c3/images/25_image.webp",
"/media/alessandra_f7c3/images/26_image.webp",
"/media/alessandra_f7c3/images/27_image.webp",
"/media/alessandra_f7c3/images/28_image.webp",
"/media/alessandra_f7c3/images/29_image.webp",
"/media/alessandra_f7c3/images/30_image.webp",
"/media/alessandra_f7c3/images/31_image.webp",
"/media/alessandra_f7c3/images/32_image.webp",
"/media/alessandra_f7c3/images/33_image.webp",
"/media/alessandra_f7c3/images/34_image.webp",
"/media/alessandra_f7c3/images/36_image.webp",
"/media/alessandra_f7c3/images/37_image.webp",
"/media/alessandra_f7c3/images/38_image.webp",
"/media/alessandra_f7c3/images/39_image.webp",
"/media/alessandra_f7c3/images/40_image.webp",
"/media/alessandra_f7c3/images/41_image.webp",
"/media/alessandra_f7c3/images/43_image.webp",
"/media/alessandra_f7c3/images/44_image.webp",
"/media/alessandra_f7c3/images/45_image.webp",
"/media/alessandra_f7c3/images/47_image.webp",
"/media/alessandra_f7c3/images/48_image.webp",
"/media/alessandra_f7c3/images/49_image.webp",
"/media/alessandra_f7c3/images/51_image.webp",
"/media/alessandra_f7c3/images/54_image.webp",
"/media/alessandra_f7c3/images/55_image.webp",
"/media/alessandra_f7c3/images/56_image.webp",
"/media/alessandra_f7c3/images/57_image.webp",
"/media/alessandra_f7c3/images/58_image.webp",
"/media/alessandra_f7c3/images/59_image.webp",
"/media/alessandra_f7c3/images/60_image.webp"
],
"created_at": "2026-02-02T05:55:17.021656-07:00",
"dir_name": "alessandra_f7c3"
}

View File

@ -0,0 +1,77 @@
{
"id": "alessia_b84e",
"name": "Alessia Valli",
"handle": "alessia",
"gender": "female",
"description": "high fashion model from italy who is a hypebeast and loves motorcycles",
"tags": [
"high_fashion_model",
"ducati motorcycles",
"avant-garde fashion",
"sneaker culture",
"industrial design",
"crossfit",
"architecture photography",
"vinyl records"
],
"avatar_url": "/media/alessia_b84e/avatar.webp?t=1769598655",
"banner_url": "/media/alessia_b84e/banner.webp?t=1769598662",
"videos": [
"/media/alessia_b84e/videos/01_smile_reveal.mp4?t=1769598689"
],
"images": [
"/media/alessia_b84e/images/01_mid_mid_neutral.webp",
"/media/alessia_b84e/images/02_image.webp",
"/media/alessia_b84e/images/03_image.webp",
"/media/alessia_b84e/images/04_image.webp",
"/media/alessia_b84e/images/05_image.webp",
"/media/alessia_b84e/images/06_image.webp",
"/media/alessia_b84e/images/07_image.webp",
"/media/alessia_b84e/images/08_image.webp",
"/media/alessia_b84e/images/09_image.webp",
"/media/alessia_b84e/images/10_image.webp",
"/media/alessia_b84e/images/11_image.webp",
"/media/alessia_b84e/images/12_image.webp",
"/media/alessia_b84e/images/13_image.webp",
"/media/alessia_b84e/images/14_image.webp",
"/media/alessia_b84e/images/15_image.webp",
"/media/alessia_b84e/images/16_image.webp",
"/media/alessia_b84e/images/17_image.webp",
"/media/alessia_b84e/images/18_image.webp",
"/media/alessia_b84e/images/19_image.webp",
"/media/alessia_b84e/images/20_image.webp",
"/media/alessia_b84e/images/21_image.webp",
"/media/alessia_b84e/images/22_image.webp",
"/media/alessia_b84e/images/23_image.webp",
"/media/alessia_b84e/images/24_image.webp",
"/media/alessia_b84e/images/25_image.webp",
"/media/alessia_b84e/images/26_image.webp",
"/media/alessia_b84e/images/27_image.webp",
"/media/alessia_b84e/images/28_image.webp",
"/media/alessia_b84e/images/29_image.webp",
"/media/alessia_b84e/images/30_image.webp",
"/media/alessia_b84e/images/31_image.webp",
"/media/alessia_b84e/images/32_image.webp",
"/media/alessia_b84e/images/33_image.webp",
"/media/alessia_b84e/images/34_image.webp",
"/media/alessia_b84e/images/35_image.webp",
"/media/alessia_b84e/images/36_image.webp",
"/media/alessia_b84e/images/37_image.webp",
"/media/alessia_b84e/images/38_image.webp",
"/media/alessia_b84e/images/39_image.webp",
"/media/alessia_b84e/images/40_image.webp",
"/media/alessia_b84e/images/41_image.webp",
"/media/alessia_b84e/images/42_image.webp",
"/media/alessia_b84e/images/43_image.webp",
"/media/alessia_b84e/images/44_image.webp",
"/media/alessia_b84e/images/45_image.webp",
"/media/alessia_b84e/images/46_image.webp",
"/media/alessia_b84e/images/47_image.webp",
"/media/alessia_b84e/images/48_image.webp",
"/media/alessia_b84e/images/49_image.webp",
"/media/alessia_b84e/images/50_image.webp",
"/media/alessia_b84e/images/51_image.webp"
],
"created_at": "2026-01-28T04:09:28.120149-07:00",
"dir_name": "alessia_b84e"
}

View File

@ -0,0 +1,76 @@
{
"id": "alevtina_b781",
"name": "Alevtina Smirnov",
"handle": "alevtina",
"gender": "female",
"description": "russian woman who is a proffesional poker player",
"tags": [
"boss_babe",
"game theory",
"pilates",
"modernist architecture",
"collecting rare watches",
"fencing",
"historical biographies",
"sailing"
],
"avatar_url": "/media/alevtina_b781/avatar.webp?t=1769703951",
"banner_url": "/media/alevtina_b781/banner.webp?t=1769703961",
"videos": [
"/media/alevtina_b781/videos/01_smile_reveal.mp4?t=1769703978"
],
"images": [
"/media/alevtina_b781/images/01_mid_mid_neutral.webp",
"/media/alevtina_b781/images/02_image.webp",
"/media/alevtina_b781/images/03_image.webp",
"/media/alevtina_b781/images/04_image.webp",
"/media/alevtina_b781/images/05_image.webp",
"/media/alevtina_b781/images/06_image.webp",
"/media/alevtina_b781/images/07_image.webp",
"/media/alevtina_b781/images/08_image.webp",
"/media/alevtina_b781/images/09_image.webp",
"/media/alevtina_b781/images/10_image.webp",
"/media/alevtina_b781/images/11_image.webp",
"/media/alevtina_b781/images/12_image.webp",
"/media/alevtina_b781/images/13_image.webp",
"/media/alevtina_b781/images/14_image.webp",
"/media/alevtina_b781/images/15_image.webp",
"/media/alevtina_b781/images/16_image.webp",
"/media/alevtina_b781/images/17_image.webp",
"/media/alevtina_b781/images/18_image.webp",
"/media/alevtina_b781/images/19_image.webp",
"/media/alevtina_b781/images/20_image.webp",
"/media/alevtina_b781/images/21_image.webp",
"/media/alevtina_b781/images/22_image.webp",
"/media/alevtina_b781/images/23_image.webp",
"/media/alevtina_b781/images/24_image.webp",
"/media/alevtina_b781/images/25_image.webp",
"/media/alevtina_b781/images/26_image.webp",
"/media/alevtina_b781/images/27_image.webp",
"/media/alevtina_b781/images/28_image.webp",
"/media/alevtina_b781/images/29_image.webp",
"/media/alevtina_b781/images/30_image.webp",
"/media/alevtina_b781/images/31_image.webp",
"/media/alevtina_b781/images/32_image.webp",
"/media/alevtina_b781/images/33_image.webp",
"/media/alevtina_b781/images/34_image.webp",
"/media/alevtina_b781/images/35_image.webp",
"/media/alevtina_b781/images/36_image.webp",
"/media/alevtina_b781/images/37_image.webp",
"/media/alevtina_b781/images/39_image.webp",
"/media/alevtina_b781/images/40_image.webp",
"/media/alevtina_b781/images/41_image.webp",
"/media/alevtina_b781/images/42_image.webp",
"/media/alevtina_b781/images/43_image.webp",
"/media/alevtina_b781/images/44_image.webp",
"/media/alevtina_b781/images/45_image.webp",
"/media/alevtina_b781/images/46_image.webp",
"/media/alevtina_b781/images/47_image.webp",
"/media/alevtina_b781/images/48_image.webp",
"/media/alevtina_b781/images/49_image.webp",
"/media/alevtina_b781/images/50_image.webp",
"/media/alevtina_b781/images/51_image.webp"
],
"created_at": "2026-01-29T09:24:13.493082-07:00",
"dir_name": "alevtina_b781"
}

View File

@ -0,0 +1,75 @@
{
"id": "alice_0f95",
"name": "Alice Brown",
"handle": "alice",
"gender": "female",
"description": "construction engineer woman, 30, career civil engineering, on work sites every day, meetings with workers and managing construction crew, tall,white american, pretty cute face, long hair light brown, jeans and shirts, downtown apartment",
"tags": [
"career_fantasy",
"urban architecture",
"structural design",
"distance running",
"coffee culture",
"podcast listening (non-fiction)",
"modern art"
],
"avatar_url": "/media/alice_0f95/avatar.webp?t=1769761321",
"banner_url": "/media/alice_0f95/banner.webp?t=1769761448",
"videos": [
"/media/alice_0f95/videos/01_smile_reveal.mp4?t=1769761360"
],
"images": [
"/media/alice_0f95/images/01_mid_mid_neutral.webp",
"/media/alice_0f95/images/02_image.webp",
"/media/alice_0f95/images/03_image.webp",
"/media/alice_0f95/images/04_image.webp",
"/media/alice_0f95/images/05_image.webp",
"/media/alice_0f95/images/06_image.webp",
"/media/alice_0f95/images/07_image.webp",
"/media/alice_0f95/images/08_image.webp",
"/media/alice_0f95/images/09_image.webp",
"/media/alice_0f95/images/10_image.webp",
"/media/alice_0f95/images/11_image.webp",
"/media/alice_0f95/images/13_image.webp",
"/media/alice_0f95/images/14_image.webp",
"/media/alice_0f95/images/15_image.webp",
"/media/alice_0f95/images/16_image.webp",
"/media/alice_0f95/images/17_image.webp",
"/media/alice_0f95/images/18_image.webp",
"/media/alice_0f95/images/19_image.webp",
"/media/alice_0f95/images/20_image.webp",
"/media/alice_0f95/images/21_image.webp",
"/media/alice_0f95/images/22_image.webp",
"/media/alice_0f95/images/23_image.webp",
"/media/alice_0f95/images/24_image.webp",
"/media/alice_0f95/images/25_image.webp",
"/media/alice_0f95/images/26_image.webp",
"/media/alice_0f95/images/27_image.webp",
"/media/alice_0f95/images/28_image.webp",
"/media/alice_0f95/images/29_image.webp",
"/media/alice_0f95/images/30_image.webp",
"/media/alice_0f95/images/31_image.webp",
"/media/alice_0f95/images/32_image.webp",
"/media/alice_0f95/images/33_image.webp",
"/media/alice_0f95/images/34_image.webp",
"/media/alice_0f95/images/35_image.webp",
"/media/alice_0f95/images/36_image.webp",
"/media/alice_0f95/images/37_image.webp",
"/media/alice_0f95/images/38_image.webp",
"/media/alice_0f95/images/39_image.webp",
"/media/alice_0f95/images/40_image.webp",
"/media/alice_0f95/images/41_image.webp",
"/media/alice_0f95/images/42_image.webp",
"/media/alice_0f95/images/43_image.webp",
"/media/alice_0f95/images/44_image.webp",
"/media/alice_0f95/images/45_image.webp",
"/media/alice_0f95/images/46_image.webp",
"/media/alice_0f95/images/47_image.webp",
"/media/alice_0f95/images/48_image.webp",
"/media/alice_0f95/images/49_image.webp",
"/media/alice_0f95/images/50_image.webp",
"/media/alice_0f95/images/51_image.webp"
],
"created_at": "2026-01-30T01:20:46.977241-07:00",
"dir_name": "alice_0f95"
}

View File

@ -0,0 +1,74 @@
{
"id": "alice_4948",
"name": "Alice Brown",
"handle": "alice",
"gender": "female",
"description": "white woman who cosplays as Gigi Dolin",
"tags": [
"the cosplayer",
"professional wrestling",
"sewing/tailoring",
"horror movies",
"90s punk rock",
"weightlifting",
"retro gaming",
"thrifting"
],
"avatar_url": "/media/alice_4948/avatar.webp?t=1769608382",
"banner_url": "/media/alice_4948/banner.webp?t=1769608400",
"videos": [
"/media/alice_4948/videos/01_smile_reveal.mp4?t=1769608414"
],
"images": [
"/media/alice_4948/images/01_mid_mid_neutral.webp",
"/media/alice_4948/images/02_image.webp",
"/media/alice_4948/images/03_image.webp",
"/media/alice_4948/images/04_image.webp",
"/media/alice_4948/images/05_image.webp",
"/media/alice_4948/images/07_image.webp",
"/media/alice_4948/images/08_image.webp",
"/media/alice_4948/images/09_image.webp",
"/media/alice_4948/images/10_image.webp",
"/media/alice_4948/images/11_image.webp",
"/media/alice_4948/images/12_image.webp",
"/media/alice_4948/images/13_image.webp",
"/media/alice_4948/images/14_image.webp",
"/media/alice_4948/images/15_image.webp",
"/media/alice_4948/images/16_image.webp",
"/media/alice_4948/images/17_image.webp",
"/media/alice_4948/images/18_image.webp",
"/media/alice_4948/images/20_image.webp",
"/media/alice_4948/images/21_image.webp",
"/media/alice_4948/images/22_image.webp",
"/media/alice_4948/images/23_image.webp",
"/media/alice_4948/images/24_image.webp",
"/media/alice_4948/images/25_image.webp",
"/media/alice_4948/images/26_image.webp",
"/media/alice_4948/images/27_image.webp",
"/media/alice_4948/images/28_image.webp",
"/media/alice_4948/images/29_image.webp",
"/media/alice_4948/images/30_image.webp",
"/media/alice_4948/images/31_image.webp",
"/media/alice_4948/images/32_image.webp",
"/media/alice_4948/images/33_image.webp",
"/media/alice_4948/images/34_image.webp",
"/media/alice_4948/images/35_image.webp",
"/media/alice_4948/images/36_image.webp",
"/media/alice_4948/images/37_image.webp",
"/media/alice_4948/images/38_image.webp",
"/media/alice_4948/images/39_image.webp",
"/media/alice_4948/images/40_image.webp",
"/media/alice_4948/images/41_image.webp",
"/media/alice_4948/images/42_image.webp",
"/media/alice_4948/images/43_image.webp",
"/media/alice_4948/images/44_image.webp",
"/media/alice_4948/images/45_image.webp",
"/media/alice_4948/images/46_image.webp",
"/media/alice_4948/images/47_image.webp",
"/media/alice_4948/images/49_image.webp",
"/media/alice_4948/images/50_image.webp",
"/media/alice_4948/images/51_image.webp"
],
"created_at": "2026-01-28T06:51:46.751624-07:00",
"dir_name": "alice_4948"
}

View File

@ -0,0 +1,84 @@
{
"id": "alice_9d48",
"name": "Alice Brown",
"handle": "alice",
"gender": "female",
"description": "mid 30's fit woman, utah, balayage hair, modest, pretty, natural makeup, long sleeves, hidden shoulders, wholesome, healthy, devoted, put together,",
"tags": [
"clean_girl",
"pilates",
"clean eating",
"interior design",
"tennis",
"historical fiction",
"podcast production",
"amateur photography"
],
"avatar_url": "/media/alice_9d48/avatar.webp?t=1769117349",
"banner_url": "/media/alice_9d48/banner.webp?t=1769117349",
"images": [
"/media/alice_9d48/images/01_mid_mid_neutral.webp",
"/media/alice_9d48/images/02_image.webp",
"/media/alice_9d48/images/03_image.webp",
"/media/alice_9d48/images/04_image.webp",
"/media/alice_9d48/images/05_image.webp",
"/media/alice_9d48/images/06_image.webp",
"/media/alice_9d48/images/07_image.webp",
"/media/alice_9d48/images/08_image.webp",
"/media/alice_9d48/images/09_image.webp",
"/media/alice_9d48/images/10_image.webp",
"/media/alice_9d48/images/11_image.webp",
"/media/alice_9d48/images/12_image.webp",
"/media/alice_9d48/images/13_image.webp",
"/media/alice_9d48/images/14_image.webp",
"/media/alice_9d48/images/15_image.webp",
"/media/alice_9d48/images/16_image.webp",
"/media/alice_9d48/images/17_image.webp",
"/media/alice_9d48/images/18_image.webp",
"/media/alice_9d48/images/19_image.webp",
"/media/alice_9d48/images/20_image.webp",
"/media/alice_9d48/images/21_image.webp",
"/media/alice_9d48/images/22_image.webp",
"/media/alice_9d48/images/22_image.webp",
"/media/alice_9d48/images/22_image.webp",
"/media/alice_9d48/images/22_image.webp",
"/media/alice_9d48/images/23_image.webp",
"/media/alice_9d48/images/23_image.webp",
"/media/alice_9d48/images/23_image.webp",
"/media/alice_9d48/images/23_image.webp",
"/media/alice_9d48/images/24_image.webp",
"/media/alice_9d48/images/24_image.webp",
"/media/alice_9d48/images/24_image.webp",
"/media/alice_9d48/images/24_image.webp",
"/media/alice_9d48/images/25_image.webp",
"/media/alice_9d48/images/25_image.webp",
"/media/alice_9d48/images/25_image.webp",
"/media/alice_9d48/images/25_image.webp",
"/media/alice_9d48/images/26_image.webp",
"/media/alice_9d48/images/26_image.webp",
"/media/alice_9d48/images/26_image.webp",
"/media/alice_9d48/images/26_image.webp",
"/media/alice_9d48/images/27_image.webp",
"/media/alice_9d48/images/27_image.webp",
"/media/alice_9d48/images/27_image.webp",
"/media/alice_9d48/images/27_image.webp",
"/media/alice_9d48/images/28_image.webp",
"/media/alice_9d48/images/28_image.webp",
"/media/alice_9d48/images/28_image.webp",
"/media/alice_9d48/images/28_image.webp",
"/media/alice_9d48/images/29_image.webp",
"/media/alice_9d48/images/29_image.webp",
"/media/alice_9d48/images/29_image.webp",
"/media/alice_9d48/images/29_image.webp",
"/media/alice_9d48/images/30_image.webp",
"/media/alice_9d48/images/30_image.webp",
"/media/alice_9d48/images/30_image.webp",
"/media/alice_9d48/images/30_image.webp",
"/media/alice_9d48/images/31_image.webp",
"/media/alice_9d48/images/31_image.webp",
"/media/alice_9d48/images/31_image.webp",
"/media/alice_9d48/images/31_image.webp"
],
"created_at": "2026-01-22T14:28:03.087206-07:00",
"dir_name": "alice_9d48"
}

View File

@ -0,0 +1,77 @@
{
"id": "alla_6959",
"name": "Alla Kuznetsov",
"handle": "alla",
"gender": "female",
"description": "russian woman who works as a supermodel and loves jewerly",
"tags": [
"high_fashion_model",
"fine jewelry",
"classical ballet",
"architectural photography",
"art history",
"pilates",
"interior design",
"linguistic studies"
],
"avatar_url": "/media/alla_6959/avatar.webp?t=1769511376",
"banner_url": "/media/alla_6959/banner.webp?t=1769511381",
"videos": [
"/media/alla_6959/videos/01_smile_reveal.mp4?t=1769511379"
],
"images": [
"/media/alla_6959/images/01_mid_mid_neutral.webp",
"/media/alla_6959/images/02_image.webp",
"/media/alla_6959/images/03_image.webp",
"/media/alla_6959/images/04_image.webp",
"/media/alla_6959/images/05_image.webp",
"/media/alla_6959/images/06_image.webp",
"/media/alla_6959/images/07_image.webp",
"/media/alla_6959/images/08_image.webp",
"/media/alla_6959/images/09_image.webp",
"/media/alla_6959/images/10_image.webp",
"/media/alla_6959/images/11_image.webp",
"/media/alla_6959/images/12_image.webp",
"/media/alla_6959/images/13_image.webp",
"/media/alla_6959/images/14_image.webp",
"/media/alla_6959/images/15_image.webp",
"/media/alla_6959/images/16_image.webp",
"/media/alla_6959/images/17_image.webp",
"/media/alla_6959/images/18_image.webp",
"/media/alla_6959/images/19_image.webp",
"/media/alla_6959/images/20_image.webp",
"/media/alla_6959/images/21_image.webp",
"/media/alla_6959/images/22_image.webp",
"/media/alla_6959/images/23_image.webp",
"/media/alla_6959/images/24_image.webp",
"/media/alla_6959/images/25_image.webp",
"/media/alla_6959/images/26_image.webp",
"/media/alla_6959/images/27_image.webp",
"/media/alla_6959/images/28_image.webp",
"/media/alla_6959/images/29_image.webp",
"/media/alla_6959/images/30_image.webp",
"/media/alla_6959/images/31_image.webp",
"/media/alla_6959/images/32_image.webp",
"/media/alla_6959/images/33_image.webp",
"/media/alla_6959/images/34_image.webp",
"/media/alla_6959/images/35_image.webp",
"/media/alla_6959/images/36_image.webp",
"/media/alla_6959/images/37_image.webp",
"/media/alla_6959/images/38_image.webp",
"/media/alla_6959/images/39_image.webp",
"/media/alla_6959/images/40_image.webp",
"/media/alla_6959/images/41_image.webp",
"/media/alla_6959/images/42_image.webp",
"/media/alla_6959/images/43_image.webp",
"/media/alla_6959/images/44_image.webp",
"/media/alla_6959/images/45_image.webp",
"/media/alla_6959/images/46_image.webp",
"/media/alla_6959/images/47_image.webp",
"/media/alla_6959/images/48_image.webp",
"/media/alla_6959/images/49_image.webp",
"/media/alla_6959/images/50_image.webp",
"/media/alla_6959/images/51_image.webp"
],
"created_at": "2026-01-27T03:54:34.535021-07:00",
"dir_name": "alla_6959"
}

View File

@ -0,0 +1,73 @@
{
"id": "alok_9245",
"name": "Alok Mehta",
"handle": "alok",
"gender": "male",
"description": "male police officer with dreadlocks",
"tags": [
"career_fantasy",
"urban photography",
"fitness",
"community mentorship",
"craft beer",
"vinyl records",
"basketball"
],
"avatar_url": "/media/alok_9245/avatar.webp?t=1769433504",
"banner_url": "/media/alok_9245/banner.webp?t=1769433507",
"videos": [
"/media/alok_9245/videos/01_smile_reveal.mp4?t=1769433550"
],
"images": [
"/media/alok_9245/images/01_mid_mid_neutral.webp",
"/media/alok_9245/images/02_image.webp",
"/media/alok_9245/images/03_image.webp",
"/media/alok_9245/images/04_image.webp",
"/media/alok_9245/images/05_image.webp",
"/media/alok_9245/images/06_image.webp",
"/media/alok_9245/images/07_image.webp",
"/media/alok_9245/images/08_image.webp",
"/media/alok_9245/images/09_image.webp",
"/media/alok_9245/images/10_image.webp",
"/media/alok_9245/images/11_image.webp",
"/media/alok_9245/images/12_image.webp",
"/media/alok_9245/images/14_image.webp",
"/media/alok_9245/images/15_image.webp",
"/media/alok_9245/images/17_image.webp",
"/media/alok_9245/images/18_image.webp",
"/media/alok_9245/images/19_image.webp",
"/media/alok_9245/images/20_image.webp",
"/media/alok_9245/images/21_image.webp",
"/media/alok_9245/images/22_image.webp",
"/media/alok_9245/images/23_image.webp",
"/media/alok_9245/images/24_image.webp",
"/media/alok_9245/images/25_image.webp",
"/media/alok_9245/images/26_image.webp",
"/media/alok_9245/images/27_image.webp",
"/media/alok_9245/images/28_image.webp",
"/media/alok_9245/images/29_image.webp",
"/media/alok_9245/images/30_image.webp",
"/media/alok_9245/images/31_image.webp",
"/media/alok_9245/images/32_image.webp",
"/media/alok_9245/images/33_image.webp",
"/media/alok_9245/images/34_image.webp",
"/media/alok_9245/images/35_image.webp",
"/media/alok_9245/images/36_image.webp",
"/media/alok_9245/images/37_image.webp",
"/media/alok_9245/images/38_image.webp",
"/media/alok_9245/images/39_image.webp",
"/media/alok_9245/images/40_image.webp",
"/media/alok_9245/images/41_image.webp",
"/media/alok_9245/images/42_image.webp",
"/media/alok_9245/images/43_image.webp",
"/media/alok_9245/images/44_image.webp",
"/media/alok_9245/images/45_image.webp",
"/media/alok_9245/images/46_image.webp",
"/media/alok_9245/images/47_image.webp",
"/media/alok_9245/images/48_image.webp",
"/media/alok_9245/images/49_image.webp",
"/media/alok_9245/images/50_image.webp"
],
"created_at": "2026-01-26T06:17:19.848219-07:00",
"dir_name": "alok_9245"
}

View File

@ -0,0 +1,76 @@
{
"id": "alton_1a65",
"name": "Alton Robinson",
"handle": "alton",
"gender": "male",
"description": "early 30's male, electrician, lineman, hardhat, toolbelt, work truck, drill, ladder",
"tags": [
"career_fantasy",
"restoring vintage trucks",
"safety engineering",
"strength training",
"sec football",
"urban exploration",
"grilling"
],
"avatar_url": "/media/alton_1a65/avatar.webp?t=1769670718",
"banner_url": "/media/alton_1a65/banner.webp?t=1769670713",
"videos": [
"/media/alton_1a65/videos/01_smile_reveal.mp4?t=1769670741"
],
"images": [
"/media/alton_1a65/images/01_mid_mid_neutral.webp",
"/media/alton_1a65/images/02_image.webp",
"/media/alton_1a65/images/03_image.webp",
"/media/alton_1a65/images/04_image.webp",
"/media/alton_1a65/images/05_image.webp",
"/media/alton_1a65/images/06_image.webp",
"/media/alton_1a65/images/07_image.webp",
"/media/alton_1a65/images/08_image.webp",
"/media/alton_1a65/images/09_image.webp",
"/media/alton_1a65/images/10_image.webp",
"/media/alton_1a65/images/11_image.webp",
"/media/alton_1a65/images/12_image.webp",
"/media/alton_1a65/images/13_image.webp",
"/media/alton_1a65/images/14_image.webp",
"/media/alton_1a65/images/15_image.webp",
"/media/alton_1a65/images/16_image.webp",
"/media/alton_1a65/images/17_image.webp",
"/media/alton_1a65/images/18_image.webp",
"/media/alton_1a65/images/19_image.webp",
"/media/alton_1a65/images/20_image.webp",
"/media/alton_1a65/images/21_image.webp",
"/media/alton_1a65/images/22_image.webp",
"/media/alton_1a65/images/23_image.webp",
"/media/alton_1a65/images/24_image.webp",
"/media/alton_1a65/images/25_image.webp",
"/media/alton_1a65/images/26_image.webp",
"/media/alton_1a65/images/27_image.webp",
"/media/alton_1a65/images/28_image.webp",
"/media/alton_1a65/images/29_image.webp",
"/media/alton_1a65/images/30_image.webp",
"/media/alton_1a65/images/31_image.webp",
"/media/alton_1a65/images/32_image.webp",
"/media/alton_1a65/images/33_image.webp",
"/media/alton_1a65/images/34_image.webp",
"/media/alton_1a65/images/35_image.webp",
"/media/alton_1a65/images/36_image.webp",
"/media/alton_1a65/images/37_image.webp",
"/media/alton_1a65/images/38_image.webp",
"/media/alton_1a65/images/39_image.webp",
"/media/alton_1a65/images/40_image.webp",
"/media/alton_1a65/images/41_image.webp",
"/media/alton_1a65/images/42_image.webp",
"/media/alton_1a65/images/43_image.webp",
"/media/alton_1a65/images/44_image.webp",
"/media/alton_1a65/images/45_image.webp",
"/media/alton_1a65/images/46_image.webp",
"/media/alton_1a65/images/47_image.webp",
"/media/alton_1a65/images/48_image.webp",
"/media/alton_1a65/images/49_image.webp",
"/media/alton_1a65/images/50_image.webp",
"/media/alton_1a65/images/51_image.webp"
],
"created_at": "2026-01-29T00:10:30.197352-07:00",
"dir_name": "alton_1a65"
}

View File

@ -0,0 +1,74 @@
{
"id": "alva_11e4",
"name": "Alva Svensson",
"handle": "alva",
"gender": "female",
"description": "catwoman from Romania",
"tags": [
"cosplayer",
"costume fabrication",
"historical architecture",
"aerial acrobatics",
"vintage cinema",
"espresso brewing",
"urban exploration"
],
"avatar_url": "/media/alva_11e4/avatar.webp?t=1770103743",
"banner_url": "/media/alva_11e4/banner.webp?t=1770103738",
"videos": [
"/media/alva_11e4/videos/01_smile_reveal.mp4?t=1770103772"
],
"images": [
"/media/alva_11e4/images/01_mid_mid_neutral.webp",
"/media/alva_11e4/images/02_image.webp",
"/media/alva_11e4/images/03_image.webp",
"/media/alva_11e4/images/04_image.webp",
"/media/alva_11e4/images/05_image.webp",
"/media/alva_11e4/images/06_image.webp",
"/media/alva_11e4/images/07_image.webp",
"/media/alva_11e4/images/08_image.webp",
"/media/alva_11e4/images/09_image.webp",
"/media/alva_11e4/images/10_image.webp",
"/media/alva_11e4/images/11_image.webp",
"/media/alva_11e4/images/12_image.webp",
"/media/alva_11e4/images/13_image.webp",
"/media/alva_11e4/images/14_image.webp",
"/media/alva_11e4/images/15_image.webp",
"/media/alva_11e4/images/16_image.webp",
"/media/alva_11e4/images/17_image.webp",
"/media/alva_11e4/images/18_image.webp",
"/media/alva_11e4/images/19_image.webp",
"/media/alva_11e4/images/20_image.webp",
"/media/alva_11e4/images/21_image.webp",
"/media/alva_11e4/images/22_image.webp",
"/media/alva_11e4/images/23_image.webp",
"/media/alva_11e4/images/24_image.webp",
"/media/alva_11e4/images/25_image.webp",
"/media/alva_11e4/images/26_image.webp",
"/media/alva_11e4/images/27_image.webp",
"/media/alva_11e4/images/29_image.webp",
"/media/alva_11e4/images/30_image.webp",
"/media/alva_11e4/images/31_image.webp",
"/media/alva_11e4/images/32_image.webp",
"/media/alva_11e4/images/33_image.webp",
"/media/alva_11e4/images/34_image.webp",
"/media/alva_11e4/images/35_image.webp",
"/media/alva_11e4/images/36_image.webp",
"/media/alva_11e4/images/37_image.webp",
"/media/alva_11e4/images/38_image.webp",
"/media/alva_11e4/images/39_image.webp",
"/media/alva_11e4/images/40_image.webp",
"/media/alva_11e4/images/41_image.webp",
"/media/alva_11e4/images/43_image.webp",
"/media/alva_11e4/images/44_image.webp",
"/media/alva_11e4/images/45_image.webp",
"/media/alva_11e4/images/46_image.webp",
"/media/alva_11e4/images/47_image.webp",
"/media/alva_11e4/images/48_image.webp",
"/media/alva_11e4/images/49_image.webp",
"/media/alva_11e4/images/50_image.webp",
"/media/alva_11e4/images/51_image.webp"
],
"created_at": "2026-02-03T00:27:51.974018-07:00",
"dir_name": "alva_11e4"
}

View File

@ -0,0 +1,74 @@
{
"id": "amanda_25d3",
"name": "Amanda Thomas",
"handle": "amanda",
"gender": "female",
"description": "Batgirl",
"tags": [
"cosplayer",
"tactical costume design",
"parkour",
"3d printing",
"urban exploration",
"craft beer",
"retro gaming",
"kickboxing"
],
"avatar_url": "/media/amanda_25d3/avatar.webp?t=1770121628",
"banner_url": "/media/amanda_25d3/banner.webp?t=1770121634",
"videos": [
"/media/amanda_25d3/videos/01_smile_reveal.mp4?t=1770121666"
],
"images": [
"/media/amanda_25d3/images/01_mid_mid_neutral.webp",
"/media/amanda_25d3/images/02_image.webp",
"/media/amanda_25d3/images/03_image.webp",
"/media/amanda_25d3/images/04_image.webp",
"/media/amanda_25d3/images/05_image.webp",
"/media/amanda_25d3/images/07_image.webp",
"/media/amanda_25d3/images/08_image.webp",
"/media/amanda_25d3/images/09_image.webp",
"/media/amanda_25d3/images/10_image.webp",
"/media/amanda_25d3/images/10_image.webp",
"/media/amanda_25d3/images/11_image.webp",
"/media/amanda_25d3/images/11_image.webp",
"/media/amanda_25d3/images/12_image.webp",
"/media/amanda_25d3/images/13_image.webp",
"/media/amanda_25d3/images/14_image.webp",
"/media/amanda_25d3/images/15_image.webp",
"/media/amanda_25d3/images/16_image.webp",
"/media/amanda_25d3/images/17_image.webp",
"/media/amanda_25d3/images/18_image.webp",
"/media/amanda_25d3/images/19_image.webp",
"/media/amanda_25d3/images/20_image.webp",
"/media/amanda_25d3/images/21_image.webp",
"/media/amanda_25d3/images/22_image.webp",
"/media/amanda_25d3/images/23_image.webp",
"/media/amanda_25d3/images/24_image.webp",
"/media/amanda_25d3/images/25_image.webp",
"/media/amanda_25d3/images/26_image.webp",
"/media/amanda_25d3/images/27_image.webp",
"/media/amanda_25d3/images/28_image.webp",
"/media/amanda_25d3/images/30_image.webp",
"/media/amanda_25d3/images/31_image.webp",
"/media/amanda_25d3/images/32_image.webp",
"/media/amanda_25d3/images/33_image.webp",
"/media/amanda_25d3/images/34_image.webp",
"/media/amanda_25d3/images/35_image.webp",
"/media/amanda_25d3/images/36_image.webp",
"/media/amanda_25d3/images/38_image.webp",
"/media/amanda_25d3/images/39_image.webp",
"/media/amanda_25d3/images/40_image.webp",
"/media/amanda_25d3/images/41_image.webp",
"/media/amanda_25d3/images/42_image.webp",
"/media/amanda_25d3/images/43_image.webp",
"/media/amanda_25d3/images/44_image.webp",
"/media/amanda_25d3/images/45_image.webp",
"/media/amanda_25d3/images/46_image.webp",
"/media/amanda_25d3/images/47_image.webp",
"/media/amanda_25d3/images/48_image.webp",
"/media/amanda_25d3/images/49_image.webp"
],
"created_at": "2026-02-03T05:26:03.758673-07:00",
"dir_name": "amanda_25d3"
}

View File

@ -0,0 +1,76 @@
{
"id": "amanda_3fcf",
"name": "Amanda Thomas",
"handle": "amanda",
"gender": "female",
"description": "boutique florist, flower shop in los angeles, family business, corner shop",
"tags": [
"nurturer",
"sustainable gardening",
"interior design",
"classical music",
"pottery",
"indie folk music",
"baking",
"hiking"
],
"avatar_url": "/media/amanda_3fcf/avatar.webp?t=1770120719",
"banner_url": "/media/amanda_3fcf/banner.webp?t=1770120723",
"videos": [
"/media/amanda_3fcf/videos/01_smile_reveal.mp4?t=1770120760"
],
"images": [
"/media/amanda_3fcf/images/01_mid_mid_neutral.webp",
"/media/amanda_3fcf/images/02_image.webp",
"/media/amanda_3fcf/images/03_image.webp",
"/media/amanda_3fcf/images/04_image.webp",
"/media/amanda_3fcf/images/05_image.webp",
"/media/amanda_3fcf/images/06_image.webp",
"/media/amanda_3fcf/images/07_image.webp",
"/media/amanda_3fcf/images/08_image.webp",
"/media/amanda_3fcf/images/09_image.webp",
"/media/amanda_3fcf/images/10_image.webp",
"/media/amanda_3fcf/images/11_image.webp",
"/media/amanda_3fcf/images/12_image.webp",
"/media/amanda_3fcf/images/13_image.webp",
"/media/amanda_3fcf/images/14_image.webp",
"/media/amanda_3fcf/images/15_image.webp",
"/media/amanda_3fcf/images/16_image.webp",
"/media/amanda_3fcf/images/17_image.webp",
"/media/amanda_3fcf/images/18_image.webp",
"/media/amanda_3fcf/images/19_image.webp",
"/media/amanda_3fcf/images/20_image.webp",
"/media/amanda_3fcf/images/21_image.webp",
"/media/amanda_3fcf/images/22_image.webp",
"/media/amanda_3fcf/images/23_image.webp",
"/media/amanda_3fcf/images/24_image.webp",
"/media/amanda_3fcf/images/25_image.webp",
"/media/amanda_3fcf/images/26_image.webp",
"/media/amanda_3fcf/images/27_image.webp",
"/media/amanda_3fcf/images/28_image.webp",
"/media/amanda_3fcf/images/29_image.webp",
"/media/amanda_3fcf/images/30_image.webp",
"/media/amanda_3fcf/images/31_image.webp",
"/media/amanda_3fcf/images/32_image.webp",
"/media/amanda_3fcf/images/33_image.webp",
"/media/amanda_3fcf/images/34_image.webp",
"/media/amanda_3fcf/images/35_image.webp",
"/media/amanda_3fcf/images/36_image.webp",
"/media/amanda_3fcf/images/37_image.webp",
"/media/amanda_3fcf/images/38_image.webp",
"/media/amanda_3fcf/images/39_image.webp",
"/media/amanda_3fcf/images/40_image.webp",
"/media/amanda_3fcf/images/41_image.webp",
"/media/amanda_3fcf/images/42_image.webp",
"/media/amanda_3fcf/images/43_image.webp",
"/media/amanda_3fcf/images/44_image.webp",
"/media/amanda_3fcf/images/45_image.webp",
"/media/amanda_3fcf/images/46_image.webp",
"/media/amanda_3fcf/images/47_image.webp",
"/media/amanda_3fcf/images/49_image.webp",
"/media/amanda_3fcf/images/50_image.webp",
"/media/amanda_3fcf/images/51_image.webp"
],
"created_at": "2026-02-03T05:10:50.830587-07:00",
"dir_name": "amanda_3fcf"
}

View File

@ -0,0 +1,73 @@
{
"id": "amara_dd2f",
"name": "Amara Adeyemi",
"handle": "amara",
"gender": "female",
"description": "sexy hot tall slender, very pretty face , long hair, african ameerican, owns a restaurant and she is also the star chef there, age 40",
"tags": [
"boss_babe",
"gastronomy",
"modern architecture",
"afrobeats",
"vintage champagne",
"horseback riding",
"interior design blogs",
"tennis"
],
"avatar_url": "/media/amara_dd2f/avatar.webp?t=1769177860",
"banner_url": "/media/amara_dd2f/banner.webp?t=1769177851",
"videos": [
"/media/amara_dd2f/videos/01_smile_reveal.mp4?t=1769177852"
],
"images": [
"/media/amara_dd2f/images/01_mid_mid_neutral.webp",
"/media/amara_dd2f/images/02_image.webp",
"/media/amara_dd2f/images/03_image.webp",
"/media/amara_dd2f/images/04_image.webp",
"/media/amara_dd2f/images/05_image.webp",
"/media/amara_dd2f/images/06_image.webp",
"/media/amara_dd2f/images/07_image.webp",
"/media/amara_dd2f/images/08_image.webp",
"/media/amara_dd2f/images/09_image.webp",
"/media/amara_dd2f/images/10_image.webp",
"/media/amara_dd2f/images/11_image.webp",
"/media/amara_dd2f/images/13_image.webp",
"/media/amara_dd2f/images/14_image.webp",
"/media/amara_dd2f/images/15_image.webp",
"/media/amara_dd2f/images/16_image.webp",
"/media/amara_dd2f/images/17_image.webp",
"/media/amara_dd2f/images/18_image.webp",
"/media/amara_dd2f/images/19_image.webp",
"/media/amara_dd2f/images/20_image.webp",
"/media/amara_dd2f/images/21_image.webp",
"/media/amara_dd2f/images/22_image.webp",
"/media/amara_dd2f/images/23_image.webp",
"/media/amara_dd2f/images/24_image.webp",
"/media/amara_dd2f/images/25_image.webp",
"/media/amara_dd2f/images/26_image.webp",
"/media/amara_dd2f/images/27_image.webp",
"/media/amara_dd2f/images/28_image.webp",
"/media/amara_dd2f/images/29_image.webp",
"/media/amara_dd2f/images/30_image.webp",
"/media/amara_dd2f/images/31_image.webp",
"/media/amara_dd2f/images/32_image.webp",
"/media/amara_dd2f/images/33_image.webp",
"/media/amara_dd2f/images/34_image.webp",
"/media/amara_dd2f/images/35_image.webp",
"/media/amara_dd2f/images/36_image.webp",
"/media/amara_dd2f/images/37_image.webp",
"/media/amara_dd2f/images/38_image.webp",
"/media/amara_dd2f/images/39_image.webp",
"/media/amara_dd2f/images/40_image.webp",
"/media/amara_dd2f/images/41_image.webp",
"/media/amara_dd2f/images/42_image.webp",
"/media/amara_dd2f/images/43_image.webp",
"/media/amara_dd2f/images/44_image.webp",
"/media/amara_dd2f/images/45_image.webp",
"/media/amara_dd2f/images/46_image.webp",
"/media/amara_dd2f/images/47_image.webp",
"/media/amara_dd2f/images/48_image.webp"
],
"created_at": "2026-01-23T07:15:32.219305-07:00",
"dir_name": "amara_dd2f"
}

View File

@ -0,0 +1,69 @@
{
"id": "amari_2977",
"name": "Amari Okoro",
"handle": "amari",
"gender": "male",
"description": "african man, lives in an african city, works in a wild park protecting wild life, has an appartment with a lot of natural sunlight, his furniture is traditional african",
"tags": [
"the explorer",
"wildlife tracking",
"traditional african philosophy",
"high-end photography",
"restoring classic land rovers",
"chess",
"jazz music",
"gardening with native plants"
],
"avatar_url": "/media/amari_2977/avatar.webp?t=1769164508",
"banner_url": "/media/amari_2977/banner.webp?t=1769164510",
"videos": [
"/media/amari_2977/videos/01_smile_reveal.mp4?t=1769164551"
],
"images": [
"/media/amari_2977/images/01_mid_mid_neutral.webp",
"/media/amari_2977/images/02_image.webp",
"/media/amari_2977/images/03_image.webp",
"/media/amari_2977/images/04_image.webp",
"/media/amari_2977/images/05_image.webp",
"/media/amari_2977/images/06_image.webp",
"/media/amari_2977/images/07_image.webp",
"/media/amari_2977/images/08_image.webp",
"/media/amari_2977/images/09_image.webp",
"/media/amari_2977/images/10_image.webp",
"/media/amari_2977/images/11_image.webp",
"/media/amari_2977/images/12_image.webp",
"/media/amari_2977/images/13_image.webp",
"/media/amari_2977/images/14_image.webp",
"/media/amari_2977/images/15_image.webp",
"/media/amari_2977/images/16_image.webp",
"/media/amari_2977/images/17_image.webp",
"/media/amari_2977/images/18_image.webp",
"/media/amari_2977/images/19_image.webp",
"/media/amari_2977/images/20_image.webp",
"/media/amari_2977/images/21_image.webp",
"/media/amari_2977/images/22_image.webp",
"/media/amari_2977/images/23_image.webp",
"/media/amari_2977/images/24_image.webp",
"/media/amari_2977/images/25_image.webp",
"/media/amari_2977/images/26_image.webp",
"/media/amari_2977/images/27_image.webp",
"/media/amari_2977/images/28_image.webp",
"/media/amari_2977/images/29_image.webp",
"/media/amari_2977/images/30_image.webp",
"/media/amari_2977/images/31_image.webp",
"/media/amari_2977/images/32_image.webp",
"/media/amari_2977/images/33_image.webp",
"/media/amari_2977/images/34_image.webp",
"/media/amari_2977/images/35_image.webp",
"/media/amari_2977/images/36_image.webp",
"/media/amari_2977/images/37_image.webp",
"/media/amari_2977/images/38_image.webp",
"/media/amari_2977/images/39_image.webp",
"/media/amari_2977/images/40_image.webp",
"/media/amari_2977/images/41_image.webp",
"/media/amari_2977/images/42_image.webp",
"/media/amari_2977/images/43_image.webp"
],
"created_at": "2026-01-23T03:34:01.278048-07:00",
"dir_name": "amari_2977"
}

View File

@ -0,0 +1,70 @@
{
"id": "amaru_516e",
"name": "Amaru Gonzalez",
"handle": "amaru",
"gender": "male",
"description": "south american writer, loves books, literature, well educated, full set of hair, tall, wears glasses",
"tags": [
"intellectual",
"rare book collecting",
"analog photography",
"classical guitar",
"historical linguistics",
"artisan bread baking",
"slow-form journalism",
"urban hiking"
],
"avatar_url": "/media/amaru_516e/avatar.webp?t=1769163979",
"banner_url": "/media/amaru_516e/banner.webp?t=1769163980",
"videos": [
"/media/amaru_516e/videos/01_smile_reveal.mp4?t=1769164019"
],
"images": [
"/media/amaru_516e/images/01_mid_mid_neutral.webp",
"/media/amaru_516e/images/02_image.webp",
"/media/amaru_516e/images/03_image.webp",
"/media/amaru_516e/images/04_image.webp",
"/media/amaru_516e/images/05_image.webp",
"/media/amaru_516e/images/06_image.webp",
"/media/amaru_516e/images/07_image.webp",
"/media/amaru_516e/images/08_image.webp",
"/media/amaru_516e/images/09_image.webp",
"/media/amaru_516e/images/10_image.webp",
"/media/amaru_516e/images/11_image.webp",
"/media/amaru_516e/images/12_image.webp",
"/media/amaru_516e/images/13_image.webp",
"/media/amaru_516e/images/14_image.webp",
"/media/amaru_516e/images/15_image.webp",
"/media/amaru_516e/images/16_image.webp",
"/media/amaru_516e/images/17_image.webp",
"/media/amaru_516e/images/18_image.webp",
"/media/amaru_516e/images/19_image.webp",
"/media/amaru_516e/images/20_image.webp",
"/media/amaru_516e/images/21_image.webp",
"/media/amaru_516e/images/22_image.webp",
"/media/amaru_516e/images/23_image.webp",
"/media/amaru_516e/images/24_image.webp",
"/media/amaru_516e/images/25_image.webp",
"/media/amaru_516e/images/26_image.webp",
"/media/amaru_516e/images/27_image.webp",
"/media/amaru_516e/images/28_image.webp",
"/media/amaru_516e/images/29_image.webp",
"/media/amaru_516e/images/30_image.webp",
"/media/amaru_516e/images/31_image.webp",
"/media/amaru_516e/images/32_image.webp",
"/media/amaru_516e/images/33_image.webp",
"/media/amaru_516e/images/34_image.webp",
"/media/amaru_516e/images/35_image.webp",
"/media/amaru_516e/images/36_image.webp",
"/media/amaru_516e/images/37_image.webp",
"/media/amaru_516e/images/38_image.webp",
"/media/amaru_516e/images/39_image.webp",
"/media/amaru_516e/images/40_image.webp",
"/media/amaru_516e/images/41_image.webp",
"/media/amaru_516e/images/42_image.webp",
"/media/amaru_516e/images/43_image.webp",
"/media/amaru_516e/images/44_image.webp"
],
"created_at": "2026-01-23T03:25:09.1982-07:00",
"dir_name": "amaru_516e"
}

View File

@ -0,0 +1,75 @@
{
"id": "ameyalli_45af",
"name": "Ameyalli Martinez",
"handle": "ameyalli",
"gender": "female",
"description": "nerdy woman who is a Formula 1 pilot",
"tags": [
"career_fantasy",
"aerodynamics",
"precision driving",
"data telemetry",
"olympic weightlifting",
"surfing",
"coffee roasting",
"drone piloting"
],
"avatar_url": "/media/ameyalli_45af/avatar.webp?t=1769418771",
"banner_url": "/media/ameyalli_45af/banner.webp?t=1769418780",
"videos": [
"/media/ameyalli_45af/videos/01_smile_reveal.mp4?t=1769418805"
],
"images": [
"/media/ameyalli_45af/images/01_mid_mid_neutral.webp",
"/media/ameyalli_45af/images/02_image.webp",
"/media/ameyalli_45af/images/03_image.webp",
"/media/ameyalli_45af/images/04_image.webp",
"/media/ameyalli_45af/images/05_image.webp",
"/media/ameyalli_45af/images/07_image.webp",
"/media/ameyalli_45af/images/08_image.webp",
"/media/ameyalli_45af/images/09_image.webp",
"/media/ameyalli_45af/images/10_image.webp",
"/media/ameyalli_45af/images/11_image.webp",
"/media/ameyalli_45af/images/12_image.webp",
"/media/ameyalli_45af/images/13_image.webp",
"/media/ameyalli_45af/images/14_image.webp",
"/media/ameyalli_45af/images/15_image.webp",
"/media/ameyalli_45af/images/16_image.webp",
"/media/ameyalli_45af/images/17_image.webp",
"/media/ameyalli_45af/images/18_image.webp",
"/media/ameyalli_45af/images/19_image.webp",
"/media/ameyalli_45af/images/20_image.webp",
"/media/ameyalli_45af/images/21_image.webp",
"/media/ameyalli_45af/images/22_image.webp",
"/media/ameyalli_45af/images/23_image.webp",
"/media/ameyalli_45af/images/24_image.webp",
"/media/ameyalli_45af/images/25_image.webp",
"/media/ameyalli_45af/images/26_image.webp",
"/media/ameyalli_45af/images/27_image.webp",
"/media/ameyalli_45af/images/28_image.webp",
"/media/ameyalli_45af/images/29_image.webp",
"/media/ameyalli_45af/images/31_image.webp",
"/media/ameyalli_45af/images/32_image.webp",
"/media/ameyalli_45af/images/33_image.webp",
"/media/ameyalli_45af/images/34_image.webp",
"/media/ameyalli_45af/images/35_image.webp",
"/media/ameyalli_45af/images/36_image.webp",
"/media/ameyalli_45af/images/37_image.webp",
"/media/ameyalli_45af/images/38_image.webp",
"/media/ameyalli_45af/images/39_image.webp",
"/media/ameyalli_45af/images/40_image.webp",
"/media/ameyalli_45af/images/41_image.webp",
"/media/ameyalli_45af/images/42_image.webp",
"/media/ameyalli_45af/images/43_image.webp",
"/media/ameyalli_45af/images/44_image.webp",
"/media/ameyalli_45af/images/45_image.webp",
"/media/ameyalli_45af/images/46_image.webp",
"/media/ameyalli_45af/images/47_image.webp",
"/media/ameyalli_45af/images/48_image.webp",
"/media/ameyalli_45af/images/49_image.webp",
"/media/ameyalli_45af/images/50_image.webp",
"/media/ameyalli_45af/images/51_image.webp"
],
"created_at": "2026-01-26T02:11:34.584984-07:00",
"dir_name": "ameyalli_45af"
}

View File

@ -0,0 +1,76 @@
{
"id": "amira_9e2f",
"name": "Amira El-Sayed",
"handle": "amira",
"gender": "female",
"description": "lebanese woman with glasses who cosplays as a witch",
"tags": [
"witch_aesthetic",
"historical costuming",
"occult history",
"rare book collecting",
"herbology",
"botanical illustration",
"tea blending",
"indie horror games"
],
"avatar_url": "/media/amira_9e2f/avatar.webp?t=1769765390",
"banner_url": "/media/amira_9e2f/banner.webp?t=1769765379",
"videos": [
"/media/amira_9e2f/videos/01_smile_reveal.mp4?t=1769765411"
],
"images": [
"/media/amira_9e2f/images/01_mid_mid_neutral.webp",
"/media/amira_9e2f/images/02_image.webp",
"/media/amira_9e2f/images/03_image.webp",
"/media/amira_9e2f/images/04_image.webp",
"/media/amira_9e2f/images/05_image.webp",
"/media/amira_9e2f/images/06_image.webp",
"/media/amira_9e2f/images/07_image.webp",
"/media/amira_9e2f/images/08_image.webp",
"/media/amira_9e2f/images/09_image.webp",
"/media/amira_9e2f/images/10_image.webp",
"/media/amira_9e2f/images/11_image.webp",
"/media/amira_9e2f/images/12_image.webp",
"/media/amira_9e2f/images/13_image.webp",
"/media/amira_9e2f/images/14_image.webp",
"/media/amira_9e2f/images/15_image.webp",
"/media/amira_9e2f/images/16_image.webp",
"/media/amira_9e2f/images/17_image.webp",
"/media/amira_9e2f/images/18_image.webp",
"/media/amira_9e2f/images/20_image.webp",
"/media/amira_9e2f/images/21_image.webp",
"/media/amira_9e2f/images/22_image.webp",
"/media/amira_9e2f/images/23_image.webp",
"/media/amira_9e2f/images/24_image.webp",
"/media/amira_9e2f/images/25_image.webp",
"/media/amira_9e2f/images/26_image.webp",
"/media/amira_9e2f/images/27_image.webp",
"/media/amira_9e2f/images/28_image.webp",
"/media/amira_9e2f/images/29_image.webp",
"/media/amira_9e2f/images/30_image.webp",
"/media/amira_9e2f/images/31_image.webp",
"/media/amira_9e2f/images/32_image.webp",
"/media/amira_9e2f/images/33_image.webp",
"/media/amira_9e2f/images/34_image.webp",
"/media/amira_9e2f/images/35_image.webp",
"/media/amira_9e2f/images/36_image.webp",
"/media/amira_9e2f/images/37_image.webp",
"/media/amira_9e2f/images/38_image.webp",
"/media/amira_9e2f/images/39_image.webp",
"/media/amira_9e2f/images/40_image.webp",
"/media/amira_9e2f/images/41_image.webp",
"/media/amira_9e2f/images/42_image.webp",
"/media/amira_9e2f/images/43_image.webp",
"/media/amira_9e2f/images/44_image.webp",
"/media/amira_9e2f/images/45_image.webp",
"/media/amira_9e2f/images/46_image.webp",
"/media/amira_9e2f/images/47_image.webp",
"/media/amira_9e2f/images/48_image.webp",
"/media/amira_9e2f/images/49_image.webp",
"/media/amira_9e2f/images/50_image.webp",
"/media/amira_9e2f/images/51_image.webp"
],
"created_at": "2026-01-30T02:27:56.698162-07:00",
"dir_name": "amira_9e2f"
}

View File

@ -0,0 +1,76 @@
{
"id": "amira_c35c",
"name": "Amira Haddad",
"handle": "amira",
"gender": "female",
"description": "female from Egypt who is a hypebeast",
"tags": [
"baddie",
"contemporary art",
"sneaker culture",
"middle eastern history",
"interior design",
"pilates",
"vinyl collecting",
"wine tasting"
],
"avatar_url": "/media/amira_c35c/avatar.webp?t=1769757127",
"banner_url": "/media/amira_c35c/banner.webp?t=1769757146",
"videos": [
"/media/amira_c35c/videos/01_smile_reveal.mp4?t=1769757155"
],
"images": [
"/media/amira_c35c/images/01_mid_mid_neutral.webp",
"/media/amira_c35c/images/02_image.webp",
"/media/amira_c35c/images/03_image.webp",
"/media/amira_c35c/images/04_image.webp",
"/media/amira_c35c/images/05_image.webp",
"/media/amira_c35c/images/06_image.webp",
"/media/amira_c35c/images/07_image.webp",
"/media/amira_c35c/images/08_image.webp",
"/media/amira_c35c/images/09_image.webp",
"/media/amira_c35c/images/10_image.webp",
"/media/amira_c35c/images/11_image.webp",
"/media/amira_c35c/images/12_image.webp",
"/media/amira_c35c/images/13_image.webp",
"/media/amira_c35c/images/14_image.webp",
"/media/amira_c35c/images/15_image.webp",
"/media/amira_c35c/images/16_image.webp",
"/media/amira_c35c/images/17_image.webp",
"/media/amira_c35c/images/18_image.webp",
"/media/amira_c35c/images/19_image.webp",
"/media/amira_c35c/images/20_image.webp",
"/media/amira_c35c/images/21_image.webp",
"/media/amira_c35c/images/23_image.webp",
"/media/amira_c35c/images/24_image.webp",
"/media/amira_c35c/images/25_image.webp",
"/media/amira_c35c/images/26_image.webp",
"/media/amira_c35c/images/27_image.webp",
"/media/amira_c35c/images/28_image.webp",
"/media/amira_c35c/images/29_image.webp",
"/media/amira_c35c/images/30_image.webp",
"/media/amira_c35c/images/31_image.webp",
"/media/amira_c35c/images/32_image.webp",
"/media/amira_c35c/images/33_image.webp",
"/media/amira_c35c/images/34_image.webp",
"/media/amira_c35c/images/35_image.webp",
"/media/amira_c35c/images/36_image.webp",
"/media/amira_c35c/images/37_image.webp",
"/media/amira_c35c/images/38_image.webp",
"/media/amira_c35c/images/39_image.webp",
"/media/amira_c35c/images/40_image.webp",
"/media/amira_c35c/images/41_image.webp",
"/media/amira_c35c/images/42_image.webp",
"/media/amira_c35c/images/43_image.webp",
"/media/amira_c35c/images/44_image.webp",
"/media/amira_c35c/images/45_image.webp",
"/media/amira_c35c/images/46_image.webp",
"/media/amira_c35c/images/47_image.webp",
"/media/amira_c35c/images/48_image.webp",
"/media/amira_c35c/images/49_image.webp",
"/media/amira_c35c/images/50_image.webp",
"/media/amira_c35c/images/51_image.webp"
],
"created_at": "2026-01-30T00:10:38.120915-07:00",
"dir_name": "amira_c35c"
}

View File

@ -0,0 +1,75 @@
{
"id": "amira_c854",
"name": "Amira Al-Farsi",
"handle": "amira",
"gender": "female",
"description": "arabian woman who works as a engineer",
"tags": [
"career_fantasy",
"generative architecture",
"classical piano",
"sustainable tech",
"rare book collecting",
"indoor bouldering",
"wine tasting",
"foreign cinema"
],
"avatar_url": "/media/amira_c854/avatar.webp?t=1769780827",
"banner_url": "/media/amira_c854/banner.webp?t=1769780819",
"videos": [
"/media/amira_c854/videos/01_smile_reveal.mp4?t=1769780876"
],
"images": [
"/media/amira_c854/images/01_mid_mid_neutral.webp",
"/media/amira_c854/images/02_image.webp",
"/media/amira_c854/images/03_image.webp",
"/media/amira_c854/images/04_image.webp",
"/media/amira_c854/images/05_image.webp",
"/media/amira_c854/images/06_image.webp",
"/media/amira_c854/images/07_image.webp",
"/media/amira_c854/images/08_image.webp",
"/media/amira_c854/images/09_image.webp",
"/media/amira_c854/images/10_image.webp",
"/media/amira_c854/images/11_image.webp",
"/media/amira_c854/images/12_image.webp",
"/media/amira_c854/images/13_image.webp",
"/media/amira_c854/images/14_image.webp",
"/media/amira_c854/images/15_image.webp",
"/media/amira_c854/images/16_image.webp",
"/media/amira_c854/images/17_image.webp",
"/media/amira_c854/images/19_image.webp",
"/media/amira_c854/images/20_image.webp",
"/media/amira_c854/images/21_image.webp",
"/media/amira_c854/images/22_image.webp",
"/media/amira_c854/images/23_image.webp",
"/media/amira_c854/images/24_image.webp",
"/media/amira_c854/images/25_image.webp",
"/media/amira_c854/images/26_image.webp",
"/media/amira_c854/images/27_image.webp",
"/media/amira_c854/images/28_image.webp",
"/media/amira_c854/images/29_image.webp",
"/media/amira_c854/images/30_image.webp",
"/media/amira_c854/images/31_image.webp",
"/media/amira_c854/images/32_image.webp",
"/media/amira_c854/images/33_image.webp",
"/media/amira_c854/images/34_image.webp",
"/media/amira_c854/images/35_image.webp",
"/media/amira_c854/images/36_image.webp",
"/media/amira_c854/images/37_image.webp",
"/media/amira_c854/images/38_image.webp",
"/media/amira_c854/images/39_image.webp",
"/media/amira_c854/images/40_image.webp",
"/media/amira_c854/images/41_image.webp",
"/media/amira_c854/images/42_image.webp",
"/media/amira_c854/images/43_image.webp",
"/media/amira_c854/images/44_image.webp",
"/media/amira_c854/images/45_image.webp",
"/media/amira_c854/images/47_image.webp",
"/media/amira_c854/images/48_image.webp",
"/media/amira_c854/images/49_image.webp",
"/media/amira_c854/images/50_image.webp",
"/media/amira_c854/images/51_image.webp"
],
"created_at": "2026-01-30T06:45:43.262118-07:00",
"dir_name": "amira_c854"
}

View File

@ -0,0 +1,75 @@
{
"id": "amy_0734",
"name": "Amy Moore",
"handle": "amy",
"gender": "female",
"description": "successful lawyer, 40 years old, los angeles, sports car, big practice, corner office, law firm partner",
"tags": [
"boss_babe",
"contemporary african art",
"equestrian sports",
"international business law",
"philanthropy",
"interior design",
"vintage champagne",
"tennis"
],
"avatar_url": "/media/amy_0734/avatar.webp?t=1769768607",
"banner_url": "/media/amy_0734/banner.webp?t=1769768636",
"videos": [
"/media/amy_0734/videos/01_smile_reveal.mp4?t=1769768641"
],
"images": [
"/media/amy_0734/images/01_mid_mid_neutral.webp",
"/media/amy_0734/images/02_image.webp",
"/media/amy_0734/images/03_image.webp",
"/media/amy_0734/images/04_image.webp",
"/media/amy_0734/images/05_image.webp",
"/media/amy_0734/images/06_image.webp",
"/media/amy_0734/images/07_image.webp",
"/media/amy_0734/images/08_image.webp",
"/media/amy_0734/images/10_image.webp",
"/media/amy_0734/images/11_image.webp",
"/media/amy_0734/images/12_image.webp",
"/media/amy_0734/images/13_image.webp",
"/media/amy_0734/images/14_image.webp",
"/media/amy_0734/images/15_image.webp",
"/media/amy_0734/images/16_image.webp",
"/media/amy_0734/images/17_image.webp",
"/media/amy_0734/images/18_image.webp",
"/media/amy_0734/images/19_image.webp",
"/media/amy_0734/images/21_image.webp",
"/media/amy_0734/images/22_image.webp",
"/media/amy_0734/images/23_image.webp",
"/media/amy_0734/images/24_image.webp",
"/media/amy_0734/images/25_image.webp",
"/media/amy_0734/images/26_image.webp",
"/media/amy_0734/images/27_image.webp",
"/media/amy_0734/images/28_image.webp",
"/media/amy_0734/images/29_image.webp",
"/media/amy_0734/images/30_image.webp",
"/media/amy_0734/images/31_image.webp",
"/media/amy_0734/images/32_image.webp",
"/media/amy_0734/images/33_image.webp",
"/media/amy_0734/images/34_image.webp",
"/media/amy_0734/images/35_image.webp",
"/media/amy_0734/images/36_image.webp",
"/media/amy_0734/images/37_image.webp",
"/media/amy_0734/images/38_image.webp",
"/media/amy_0734/images/39_image.webp",
"/media/amy_0734/images/40_image.webp",
"/media/amy_0734/images/41_image.webp",
"/media/amy_0734/images/42_image.webp",
"/media/amy_0734/images/43_image.webp",
"/media/amy_0734/images/44_image.webp",
"/media/amy_0734/images/45_image.webp",
"/media/amy_0734/images/46_image.webp",
"/media/amy_0734/images/47_image.webp",
"/media/amy_0734/images/48_image.webp",
"/media/amy_0734/images/49_image.webp",
"/media/amy_0734/images/50_image.webp",
"/media/amy_0734/images/51_image.webp"
],
"created_at": "2026-01-30T03:22:24.363985-07:00",
"dir_name": "amy_0734"
}

View File

@ -0,0 +1,77 @@
{
"id": "amy_41e9",
"name": "Amy Harris",
"handle": "amy",
"gender": "female",
"description": "beautiful woman, 40 years old, tall slender white skin long black hair, lives in a castle, should look a lot like Morticia Adams",
"tags": [
"vampire_mistress",
"taxidermy",
"opera",
"historic architecture",
"perfume blending",
"chess",
"botany",
"film noir"
],
"avatar_url": "/media/amy_41e9/avatar.webp?t=1769589310",
"banner_url": "/media/amy_41e9/banner.webp?t=1769589336",
"videos": [
"/media/amy_41e9/videos/01_smile_reveal.mp4?t=1769589351"
],
"images": [
"/media/amy_41e9/images/01_mid_mid_neutral.webp",
"/media/amy_41e9/images/02_image.webp",
"/media/amy_41e9/images/03_image.webp",
"/media/amy_41e9/images/04_image.webp",
"/media/amy_41e9/images/05_image.webp",
"/media/amy_41e9/images/06_image.webp",
"/media/amy_41e9/images/07_image.webp",
"/media/amy_41e9/images/08_image.webp",
"/media/amy_41e9/images/09_image.webp",
"/media/amy_41e9/images/10_image.webp",
"/media/amy_41e9/images/11_image.webp",
"/media/amy_41e9/images/12_image.webp",
"/media/amy_41e9/images/13_image.webp",
"/media/amy_41e9/images/14_image.webp",
"/media/amy_41e9/images/15_image.webp",
"/media/amy_41e9/images/16_image.webp",
"/media/amy_41e9/images/17_image.webp",
"/media/amy_41e9/images/18_image.webp",
"/media/amy_41e9/images/19_image.webp",
"/media/amy_41e9/images/20_image.webp",
"/media/amy_41e9/images/21_image.webp",
"/media/amy_41e9/images/22_image.webp",
"/media/amy_41e9/images/23_image.webp",
"/media/amy_41e9/images/24_image.webp",
"/media/amy_41e9/images/25_image.webp",
"/media/amy_41e9/images/26_image.webp",
"/media/amy_41e9/images/27_image.webp",
"/media/amy_41e9/images/28_image.webp",
"/media/amy_41e9/images/29_image.webp",
"/media/amy_41e9/images/30_image.webp",
"/media/amy_41e9/images/31_image.webp",
"/media/amy_41e9/images/32_image.webp",
"/media/amy_41e9/images/33_image.webp",
"/media/amy_41e9/images/34_image.webp",
"/media/amy_41e9/images/35_image.webp",
"/media/amy_41e9/images/36_image.webp",
"/media/amy_41e9/images/37_image.webp",
"/media/amy_41e9/images/38_image.webp",
"/media/amy_41e9/images/39_image.webp",
"/media/amy_41e9/images/40_image.webp",
"/media/amy_41e9/images/41_image.webp",
"/media/amy_41e9/images/42_image.webp",
"/media/amy_41e9/images/43_image.webp",
"/media/amy_41e9/images/44_image.webp",
"/media/amy_41e9/images/45_image.webp",
"/media/amy_41e9/images/46_image.webp",
"/media/amy_41e9/images/47_image.webp",
"/media/amy_41e9/images/48_image.webp",
"/media/amy_41e9/images/49_image.webp",
"/media/amy_41e9/images/50_image.webp",
"/media/amy_41e9/images/51_image.webp"
],
"created_at": "2026-01-28T01:33:50.249475-07:00",
"dir_name": "amy_41e9"
}

View File

@ -0,0 +1,76 @@
{
"id": "ana_júlia_bef4",
"name": "Ana Júlia Rodrigues",
"handle": "ana júlia",
"gender": "female",
"description": "brazilian woman who works as a bartender",
"tags": [
"latina_bombshell",
"molecular mixology",
"vinyl records",
"bossa nova",
"tropical botany",
"photography",
"pilates",
"historical fiction"
],
"avatar_url": "/media/ana_júlia_bef4/avatar.webp?t=1769499924",
"banner_url": "/media/ana_júlia_bef4/banner.webp?t=1769500059",
"videos": [
"/media/ana_júlia_bef4/videos/01_smile_reveal.mp4?t=1769499964"
],
"images": [
"/media/ana_júlia_bef4/images/01_mid_mid_neutral.webp",
"/media/ana_júlia_bef4/images/02_image.webp",
"/media/ana_júlia_bef4/images/03_image.webp",
"/media/ana_júlia_bef4/images/04_image.webp",
"/media/ana_júlia_bef4/images/05_image.webp",
"/media/ana_júlia_bef4/images/06_image.webp",
"/media/ana_júlia_bef4/images/07_image.webp",
"/media/ana_júlia_bef4/images/08_image.webp",
"/media/ana_júlia_bef4/images/09_image.webp",
"/media/ana_júlia_bef4/images/10_image.webp",
"/media/ana_júlia_bef4/images/11_image.webp",
"/media/ana_júlia_bef4/images/12_image.webp",
"/media/ana_júlia_bef4/images/14_image.webp",
"/media/ana_júlia_bef4/images/15_image.webp",
"/media/ana_júlia_bef4/images/16_image.webp",
"/media/ana_júlia_bef4/images/17_image.webp",
"/media/ana_júlia_bef4/images/18_image.webp",
"/media/ana_júlia_bef4/images/19_image.webp",
"/media/ana_júlia_bef4/images/20_image.webp",
"/media/ana_júlia_bef4/images/21_image.webp",
"/media/ana_júlia_bef4/images/22_image.webp",
"/media/ana_júlia_bef4/images/23_image.webp",
"/media/ana_júlia_bef4/images/24_image.webp",
"/media/ana_júlia_bef4/images/25_image.webp",
"/media/ana_júlia_bef4/images/26_image.webp",
"/media/ana_júlia_bef4/images/27_image.webp",
"/media/ana_júlia_bef4/images/28_image.webp",
"/media/ana_júlia_bef4/images/29_image.webp",
"/media/ana_júlia_bef4/images/30_image.webp",
"/media/ana_júlia_bef4/images/31_image.webp",
"/media/ana_júlia_bef4/images/32_image.webp",
"/media/ana_júlia_bef4/images/33_image.webp",
"/media/ana_júlia_bef4/images/34_image.webp",
"/media/ana_júlia_bef4/images/35_image.webp",
"/media/ana_júlia_bef4/images/36_image.webp",
"/media/ana_júlia_bef4/images/37_image.webp",
"/media/ana_júlia_bef4/images/38_image.webp",
"/media/ana_júlia_bef4/images/39_image.webp",
"/media/ana_júlia_bef4/images/40_image.webp",
"/media/ana_júlia_bef4/images/41_image.webp",
"/media/ana_júlia_bef4/images/42_image.webp",
"/media/ana_júlia_bef4/images/43_image.webp",
"/media/ana_júlia_bef4/images/44_image.webp",
"/media/ana_júlia_bef4/images/45_image.webp",
"/media/ana_júlia_bef4/images/46_image.webp",
"/media/ana_júlia_bef4/images/47_image.webp",
"/media/ana_júlia_bef4/images/48_image.webp",
"/media/ana_júlia_bef4/images/49_image.webp",
"/media/ana_júlia_bef4/images/50_image.webp",
"/media/ana_júlia_bef4/images/51_image.webp"
],
"created_at": "2026-01-27T00:44:16.219003-07:00",
"dir_name": "ana_júlia_bef4"
}

View File

@ -0,0 +1,77 @@
{
"id": "ana_laura_5bec",
"name": "Ana Laura Vargas",
"handle": "ana laura",
"gender": "female",
"description": "dark haired female with grillz who is a graffiti artist",
"tags": [
"baddie",
"metal fabrication",
"street photography",
"sneaker collecting",
"urban exploration",
"vinyl records",
"brunch culture",
"astrology"
],
"avatar_url": "/media/ana_laura_5bec/avatar.webp?t=1770209673",
"banner_url": "/media/ana_laura_5bec/banner.webp?t=1770209681",
"videos": [
"/media/ana_laura_5bec/videos/01_smile_reveal.mp4?t=1770209722"
],
"images": [
"/media/ana_laura_5bec/images/01_mid_mid_neutral.webp",
"/media/ana_laura_5bec/images/02_image.webp",
"/media/ana_laura_5bec/images/03_image.webp",
"/media/ana_laura_5bec/images/04_image.webp",
"/media/ana_laura_5bec/images/05_image.webp",
"/media/ana_laura_5bec/images/06_image.webp",
"/media/ana_laura_5bec/images/07_image.webp",
"/media/ana_laura_5bec/images/08_image.webp",
"/media/ana_laura_5bec/images/09_image.webp",
"/media/ana_laura_5bec/images/10_image.webp",
"/media/ana_laura_5bec/images/11_image.webp",
"/media/ana_laura_5bec/images/12_image.webp",
"/media/ana_laura_5bec/images/13_image.webp",
"/media/ana_laura_5bec/images/14_image.webp",
"/media/ana_laura_5bec/images/15_image.webp",
"/media/ana_laura_5bec/images/16_image.webp",
"/media/ana_laura_5bec/images/17_image.webp",
"/media/ana_laura_5bec/images/18_image.webp",
"/media/ana_laura_5bec/images/19_image.webp",
"/media/ana_laura_5bec/images/20_image.webp",
"/media/ana_laura_5bec/images/21_image.webp",
"/media/ana_laura_5bec/images/22_image.webp",
"/media/ana_laura_5bec/images/23_image.webp",
"/media/ana_laura_5bec/images/24_image.webp",
"/media/ana_laura_5bec/images/25_image.webp",
"/media/ana_laura_5bec/images/26_image.webp",
"/media/ana_laura_5bec/images/27_image.webp",
"/media/ana_laura_5bec/images/28_image.webp",
"/media/ana_laura_5bec/images/29_image.webp",
"/media/ana_laura_5bec/images/30_image.webp",
"/media/ana_laura_5bec/images/31_image.webp",
"/media/ana_laura_5bec/images/32_image.webp",
"/media/ana_laura_5bec/images/33_image.webp",
"/media/ana_laura_5bec/images/34_image.webp",
"/media/ana_laura_5bec/images/35_image.webp",
"/media/ana_laura_5bec/images/36_image.webp",
"/media/ana_laura_5bec/images/37_image.webp",
"/media/ana_laura_5bec/images/38_image.webp",
"/media/ana_laura_5bec/images/39_image.webp",
"/media/ana_laura_5bec/images/40_image.webp",
"/media/ana_laura_5bec/images/41_image.webp",
"/media/ana_laura_5bec/images/42_image.webp",
"/media/ana_laura_5bec/images/43_image.webp",
"/media/ana_laura_5bec/images/44_image.webp",
"/media/ana_laura_5bec/images/45_image.webp",
"/media/ana_laura_5bec/images/46_image.webp",
"/media/ana_laura_5bec/images/47_image.webp",
"/media/ana_laura_5bec/images/48_image.webp",
"/media/ana_laura_5bec/images/49_image.webp",
"/media/ana_laura_5bec/images/50_image.webp",
"/media/ana_laura_5bec/images/51_image.webp"
],
"created_at": "2026-02-04T05:53:27.430353-07:00",
"dir_name": "ana_laura_5bec"
}

View File

@ -0,0 +1,75 @@
{
"id": "anastasia_f431",
"name": "Anastasia Volkova",
"handle": "anastasia",
"gender": "female",
"description": "blonde ukrainian woman who cosplays as Barbie",
"tags": [
"bimbo_barbie",
"barbiecore fashion",
"skincare science",
"interior design",
"pilates",
"baking macarons",
"floral arrangement",
"pop music"
],
"avatar_url": "/media/anastasia_f431/avatar.webp?t=1769767550",
"banner_url": "/media/anastasia_f431/banner.webp?t=1769767229",
"videos": [
"/media/anastasia_f431/videos/01_smile_reveal.mp4?t=1769767253"
],
"images": [
"/media/anastasia_f431/images/01_mid_mid_neutral.webp",
"/media/anastasia_f431/images/02_image.webp",
"/media/anastasia_f431/images/03_image.webp",
"/media/anastasia_f431/images/04_image.webp",
"/media/anastasia_f431/images/05_image.webp",
"/media/anastasia_f431/images/07_image.webp",
"/media/anastasia_f431/images/08_image.webp",
"/media/anastasia_f431/images/09_image.webp",
"/media/anastasia_f431/images/10_image.webp",
"/media/anastasia_f431/images/11_image.webp",
"/media/anastasia_f431/images/12_image.webp",
"/media/anastasia_f431/images/13_image.webp",
"/media/anastasia_f431/images/14_image.webp",
"/media/anastasia_f431/images/15_image.webp",
"/media/anastasia_f431/images/16_image.webp",
"/media/anastasia_f431/images/17_image.webp",
"/media/anastasia_f431/images/18_image.webp",
"/media/anastasia_f431/images/19_image.webp",
"/media/anastasia_f431/images/20_image.webp",
"/media/anastasia_f431/images/21_image.webp",
"/media/anastasia_f431/images/22_image.webp",
"/media/anastasia_f431/images/23_image.webp",
"/media/anastasia_f431/images/24_image.webp",
"/media/anastasia_f431/images/25_image.webp",
"/media/anastasia_f431/images/26_image.webp",
"/media/anastasia_f431/images/27_image.webp",
"/media/anastasia_f431/images/28_image.webp",
"/media/anastasia_f431/images/29_image.webp",
"/media/anastasia_f431/images/30_image.webp",
"/media/anastasia_f431/images/31_image.webp",
"/media/anastasia_f431/images/32_image.webp",
"/media/anastasia_f431/images/33_image.webp",
"/media/anastasia_f431/images/34_image.webp",
"/media/anastasia_f431/images/35_image.webp",
"/media/anastasia_f431/images/36_image.webp",
"/media/anastasia_f431/images/37_image.webp",
"/media/anastasia_f431/images/38_image.webp",
"/media/anastasia_f431/images/39_image.webp",
"/media/anastasia_f431/images/40_image.webp",
"/media/anastasia_f431/images/41_image.webp",
"/media/anastasia_f431/images/42_image.webp",
"/media/anastasia_f431/images/43_image.webp",
"/media/anastasia_f431/images/44_image.webp",
"/media/anastasia_f431/images/45_image.webp",
"/media/anastasia_f431/images/46_image.webp",
"/media/anastasia_f431/images/47_image.webp",
"/media/anastasia_f431/images/48_image.webp",
"/media/anastasia_f431/images/49_image.webp",
"/media/anastasia_f431/images/51_image.webp"
],
"created_at": "2026-01-30T02:58:59.340277-07:00",
"dir_name": "anastasia_f431"
}

View File

@ -0,0 +1,70 @@
{
"id": "anaïs_3e8c",
"name": "Anaïs Martin",
"handle": "anaïs",
"gender": "female",
"description": "red haired woman with big breasts and big butt,beautiful face,does makeup tutorials, white ethnicity white american, she enjoys horror movies",
"tags": [
"thicc_queen",
"horror cinema",
"victorian mourning rituals",
"high-end makeup artistry",
"vintage corsetry",
"gardening (dark flora)",
"true crime podcasts",
"wine tasting"
],
"avatar_url": "/media/anaïs_3e8c/avatar.webp?t=1769004694",
"banner_url": "/media/anaïs_3e8c/banner.webp?t=1769004697",
"videos": [
"/media/anaïs_3e8c/videos/01_smile_reveal.mp4?t=1769004729"
],
"images": [
"/media/anaïs_3e8c/images/01_mid_mid_neutral.webp",
"/media/anaïs_3e8c/images/02_image.webp",
"/media/anaïs_3e8c/images/03_image.webp",
"/media/anaïs_3e8c/images/04_image.webp",
"/media/anaïs_3e8c/images/05_image.webp",
"/media/anaïs_3e8c/images/06_image.webp",
"/media/anaïs_3e8c/images/07_image.webp",
"/media/anaïs_3e8c/images/08_image.webp",
"/media/anaïs_3e8c/images/09_image.webp",
"/media/anaïs_3e8c/images/10_image.webp",
"/media/anaïs_3e8c/images/12_image.webp",
"/media/anaïs_3e8c/images/13_image.webp",
"/media/anaïs_3e8c/images/14_image.webp",
"/media/anaïs_3e8c/images/15_image.webp",
"/media/anaïs_3e8c/images/16_image.webp",
"/media/anaïs_3e8c/images/17_image.webp",
"/media/anaïs_3e8c/images/18_image.webp",
"/media/anaïs_3e8c/images/19_image.webp",
"/media/anaïs_3e8c/images/20_image.webp",
"/media/anaïs_3e8c/images/21_image.webp",
"/media/anaïs_3e8c/images/22_image.webp",
"/media/anaïs_3e8c/images/23_image.webp",
"/media/anaïs_3e8c/images/24_image.webp",
"/media/anaïs_3e8c/images/25_image.webp",
"/media/anaïs_3e8c/images/26_image.webp",
"/media/anaïs_3e8c/images/27_image.webp",
"/media/anaïs_3e8c/images/28_image.webp",
"/media/anaïs_3e8c/images/29_image.webp",
"/media/anaïs_3e8c/images/30_image.webp",
"/media/anaïs_3e8c/images/31_image.webp",
"/media/anaïs_3e8c/images/32_image.webp",
"/media/anaïs_3e8c/images/33_image.webp",
"/media/anaïs_3e8c/images/34_image.webp",
"/media/anaïs_3e8c/images/35_image.webp",
"/media/anaïs_3e8c/images/36_image.webp",
"/media/anaïs_3e8c/images/37_image.webp",
"/media/anaïs_3e8c/images/38_image.webp",
"/media/anaïs_3e8c/images/39_image.webp",
"/media/anaïs_3e8c/images/40_image.webp",
"/media/anaïs_3e8c/images/41_image.webp",
"/media/anaïs_3e8c/images/42_image.webp",
"/media/anaïs_3e8c/images/43_image.webp",
"/media/anaïs_3e8c/images/44_image.webp",
"/media/anaïs_3e8c/images/45_image.webp"
],
"created_at": "2026-01-21T07:09:54.072751-07:00",
"dir_name": "anaïs_3e8c"
}

View File

@ -0,0 +1,77 @@
{
"id": "andre_1712",
"name": "Andre Williams",
"handle": "andre",
"gender": "male",
"description": "Jewish man, tall, thin nose, brown hair, dentist, kind, loves family, likes living in the city, a few moles, good skin, slim",
"tags": [
"intellectual",
"stoic philosophy",
"classical music",
"competitive rowing",
"architecture",
"chess",
"cooking italian cuisine",
"vintage watch restoration"
],
"avatar_url": "/media/andre_1712/avatar.webp?t=1769217528",
"banner_url": "/media/andre_1712/banner.webp?t=1769217515",
"videos": [
"/media/andre_1712/videos/01_smile_reveal.mp4?t=1769217556"
],
"images": [
"/media/andre_1712/images/01_mid_mid_neutral.webp",
"/media/andre_1712/images/02_image.webp",
"/media/andre_1712/images/03_image.webp",
"/media/andre_1712/images/04_image.webp",
"/media/andre_1712/images/05_image.webp",
"/media/andre_1712/images/06_image.webp",
"/media/andre_1712/images/07_image.webp",
"/media/andre_1712/images/08_image.webp",
"/media/andre_1712/images/09_image.webp",
"/media/andre_1712/images/10_image.webp",
"/media/andre_1712/images/11_image.webp",
"/media/andre_1712/images/12_image.webp",
"/media/andre_1712/images/13_image.webp",
"/media/andre_1712/images/14_image.webp",
"/media/andre_1712/images/15_image.webp",
"/media/andre_1712/images/16_image.webp",
"/media/andre_1712/images/17_image.webp",
"/media/andre_1712/images/18_image.webp",
"/media/andre_1712/images/19_image.webp",
"/media/andre_1712/images/20_image.webp",
"/media/andre_1712/images/21_image.webp",
"/media/andre_1712/images/22_image.webp",
"/media/andre_1712/images/23_image.webp",
"/media/andre_1712/images/24_image.webp",
"/media/andre_1712/images/25_image.webp",
"/media/andre_1712/images/26_image.webp",
"/media/andre_1712/images/27_image.webp",
"/media/andre_1712/images/28_image.webp",
"/media/andre_1712/images/29_image.webp",
"/media/andre_1712/images/30_image.webp",
"/media/andre_1712/images/31_image.webp",
"/media/andre_1712/images/32_image.webp",
"/media/andre_1712/images/33_image.webp",
"/media/andre_1712/images/34_image.webp",
"/media/andre_1712/images/35_image.webp",
"/media/andre_1712/images/36_image.webp",
"/media/andre_1712/images/37_image.webp",
"/media/andre_1712/images/38_image.webp",
"/media/andre_1712/images/39_image.webp",
"/media/andre_1712/images/40_image.webp",
"/media/andre_1712/images/41_image.webp",
"/media/andre_1712/images/42_image.webp",
"/media/andre_1712/images/43_image.webp",
"/media/andre_1712/images/44_image.webp",
"/media/andre_1712/images/45_image.webp",
"/media/andre_1712/images/46_image.webp",
"/media/andre_1712/images/47_image.webp",
"/media/andre_1712/images/48_image.webp",
"/media/andre_1712/images/49_image.webp",
"/media/andre_1712/images/50_image.webp",
"/media/andre_1712/images/51_image.webp"
],
"created_at": "2026-01-23T18:17:22.879078-07:00",
"dir_name": "andre_1712"
}

View File

@ -0,0 +1,76 @@
{
"id": "andre_336d",
"name": "Andre Gonzalez",
"handle": "andre",
"gender": "male",
"description": "40's Hispanic man, dark hair with a little grey, face stubble, wayfarer glasses, DJ, radio host, hip, fun, funny guy",
"tags": [
"social_butterfly",
"vinyl collecting",
"latin jazz",
"audiophile equipment",
"public speaking",
"gourmet cooking",
"street photography",
"nba basketball"
],
"avatar_url": "/media/andre_336d/avatar.webp?t=1769671769",
"banner_url": "/media/andre_336d/banner.webp?t=1769671767",
"videos": [
"/media/andre_336d/videos/01_smile_reveal.mp4?t=1769671781"
],
"images": [
"/media/andre_336d/images/01_mid_mid_neutral.webp",
"/media/andre_336d/images/02_image.webp",
"/media/andre_336d/images/03_image.webp",
"/media/andre_336d/images/04_image.webp",
"/media/andre_336d/images/05_image.webp",
"/media/andre_336d/images/06_image.webp",
"/media/andre_336d/images/07_image.webp",
"/media/andre_336d/images/08_image.webp",
"/media/andre_336d/images/09_image.webp",
"/media/andre_336d/images/10_image.webp",
"/media/andre_336d/images/11_image.webp",
"/media/andre_336d/images/12_image.webp",
"/media/andre_336d/images/13_image.webp",
"/media/andre_336d/images/14_image.webp",
"/media/andre_336d/images/15_image.webp",
"/media/andre_336d/images/16_image.webp",
"/media/andre_336d/images/17_image.webp",
"/media/andre_336d/images/18_image.webp",
"/media/andre_336d/images/19_image.webp",
"/media/andre_336d/images/20_image.webp",
"/media/andre_336d/images/21_image.webp",
"/media/andre_336d/images/22_image.webp",
"/media/andre_336d/images/23_image.webp",
"/media/andre_336d/images/24_image.webp",
"/media/andre_336d/images/25_image.webp",
"/media/andre_336d/images/26_image.webp",
"/media/andre_336d/images/27_image.webp",
"/media/andre_336d/images/28_image.webp",
"/media/andre_336d/images/29_image.webp",
"/media/andre_336d/images/30_image.webp",
"/media/andre_336d/images/31_image.webp",
"/media/andre_336d/images/32_image.webp",
"/media/andre_336d/images/33_image.webp",
"/media/andre_336d/images/34_image.webp",
"/media/andre_336d/images/35_image.webp",
"/media/andre_336d/images/37_image.webp",
"/media/andre_336d/images/38_image.webp",
"/media/andre_336d/images/39_image.webp",
"/media/andre_336d/images/40_image.webp",
"/media/andre_336d/images/41_image.webp",
"/media/andre_336d/images/42_image.webp",
"/media/andre_336d/images/43_image.webp",
"/media/andre_336d/images/44_image.webp",
"/media/andre_336d/images/45_image.webp",
"/media/andre_336d/images/46_image.webp",
"/media/andre_336d/images/47_image.webp",
"/media/andre_336d/images/48_image.webp",
"/media/andre_336d/images/49_image.webp",
"/media/andre_336d/images/50_image.webp",
"/media/andre_336d/images/51_image.webp"
],
"created_at": "2026-01-29T00:27:54.993168-07:00",
"dir_name": "andre_336d"
}

View File

@ -0,0 +1,77 @@
{
"id": "andre_44a9",
"name": "Andre Thomas",
"handle": "andre",
"gender": "male",
"description": "Owen from Total Drama Island",
"tags": [
"himbo",
"texas bbq",
"competitive eating videos",
"amusement parks",
"90s boy bands",
"retro gaming",
"dodgeball leagues",
"thrift store shopping"
],
"avatar_url": "/media/andre_44a9/avatar.webp?t=1770122065",
"banner_url": "/media/andre_44a9/banner.webp?t=1770122065",
"videos": [
"/media/andre_44a9/videos/01_smile_reveal.mp4?t=1770122100"
],
"images": [
"/media/andre_44a9/images/01_mid_mid_neutral.webp",
"/media/andre_44a9/images/02_image.webp",
"/media/andre_44a9/images/03_image.webp",
"/media/andre_44a9/images/04_image.webp",
"/media/andre_44a9/images/05_image.webp",
"/media/andre_44a9/images/06_image.webp",
"/media/andre_44a9/images/07_image.webp",
"/media/andre_44a9/images/08_image.webp",
"/media/andre_44a9/images/09_image.webp",
"/media/andre_44a9/images/10_image.webp",
"/media/andre_44a9/images/11_image.webp",
"/media/andre_44a9/images/12_image.webp",
"/media/andre_44a9/images/13_image.webp",
"/media/andre_44a9/images/14_image.webp",
"/media/andre_44a9/images/15_image.webp",
"/media/andre_44a9/images/16_image.webp",
"/media/andre_44a9/images/17_image.webp",
"/media/andre_44a9/images/18_image.webp",
"/media/andre_44a9/images/19_image.webp",
"/media/andre_44a9/images/20_image.webp",
"/media/andre_44a9/images/21_image.webp",
"/media/andre_44a9/images/22_image.webp",
"/media/andre_44a9/images/23_image.webp",
"/media/andre_44a9/images/24_image.webp",
"/media/andre_44a9/images/25_image.webp",
"/media/andre_44a9/images/26_image.webp",
"/media/andre_44a9/images/27_image.webp",
"/media/andre_44a9/images/28_image.webp",
"/media/andre_44a9/images/29_image.webp",
"/media/andre_44a9/images/30_image.webp",
"/media/andre_44a9/images/31_image.webp",
"/media/andre_44a9/images/32_image.webp",
"/media/andre_44a9/images/33_image.webp",
"/media/andre_44a9/images/34_image.webp",
"/media/andre_44a9/images/35_image.webp",
"/media/andre_44a9/images/36_image.webp",
"/media/andre_44a9/images/37_image.webp",
"/media/andre_44a9/images/38_image.webp",
"/media/andre_44a9/images/39_image.webp",
"/media/andre_44a9/images/40_image.webp",
"/media/andre_44a9/images/41_image.webp",
"/media/andre_44a9/images/42_image.webp",
"/media/andre_44a9/images/43_image.webp",
"/media/andre_44a9/images/44_image.webp",
"/media/andre_44a9/images/45_image.webp",
"/media/andre_44a9/images/46_image.webp",
"/media/andre_44a9/images/47_image.webp",
"/media/andre_44a9/images/48_image.webp",
"/media/andre_44a9/images/49_image.webp",
"/media/andre_44a9/images/50_image.webp",
"/media/andre_44a9/images/51_image.webp"
],
"created_at": "2026-02-03T05:33:02.986777-07:00",
"dir_name": "andre_44a9"
}

View File

@ -0,0 +1,77 @@
{
"id": "andrea_a209",
"name": "Andrea Martinez",
"handle": "andrea",
"gender": "female",
"description": "30's boho, cowboy boots, stagecoach music festival, sun kissed, free spirit",
"tags": [
"festival_girl",
"music festivals",
"vinyasa yoga",
"sustainable fashion",
"desert photography",
"surfing",
"pottery",
"hiking"
],
"avatar_url": "/media/andrea_a209/avatar.webp?t=1769584064",
"banner_url": "/media/andrea_a209/banner.webp?t=1769555358",
"videos": [
"/media/andrea_a209/videos/01_smile_reveal.mp4?t=1769555396"
],
"images": [
"/media/andrea_a209/images/01_mid_mid_neutral.webp",
"/media/andrea_a209/images/02_image.webp",
"/media/andrea_a209/images/03_image.webp",
"/media/andrea_a209/images/04_image.webp",
"/media/andrea_a209/images/05_image.webp",
"/media/andrea_a209/images/06_image.webp",
"/media/andrea_a209/images/07_image.webp",
"/media/andrea_a209/images/08_image.webp",
"/media/andrea_a209/images/09_image.webp",
"/media/andrea_a209/images/10_image.webp",
"/media/andrea_a209/images/11_image.webp",
"/media/andrea_a209/images/12_image.webp",
"/media/andrea_a209/images/13_image.webp",
"/media/andrea_a209/images/14_image.webp",
"/media/andrea_a209/images/15_image.webp",
"/media/andrea_a209/images/16_image.webp",
"/media/andrea_a209/images/17_image.webp",
"/media/andrea_a209/images/18_image.webp",
"/media/andrea_a209/images/19_image.webp",
"/media/andrea_a209/images/20_image.webp",
"/media/andrea_a209/images/21_image.webp",
"/media/andrea_a209/images/22_image.webp",
"/media/andrea_a209/images/23_image.webp",
"/media/andrea_a209/images/24_image.webp",
"/media/andrea_a209/images/25_image.webp",
"/media/andrea_a209/images/26_image.webp",
"/media/andrea_a209/images/27_image.webp",
"/media/andrea_a209/images/28_image.webp",
"/media/andrea_a209/images/29_image.webp",
"/media/andrea_a209/images/30_image.webp",
"/media/andrea_a209/images/31_image.webp",
"/media/andrea_a209/images/32_image.webp",
"/media/andrea_a209/images/33_image.webp",
"/media/andrea_a209/images/34_image.webp",
"/media/andrea_a209/images/35_image.webp",
"/media/andrea_a209/images/36_image.webp",
"/media/andrea_a209/images/37_image.webp",
"/media/andrea_a209/images/38_image.webp",
"/media/andrea_a209/images/39_image.webp",
"/media/andrea_a209/images/40_image.webp",
"/media/andrea_a209/images/41_image.webp",
"/media/andrea_a209/images/42_image.webp",
"/media/andrea_a209/images/43_image.webp",
"/media/andrea_a209/images/44_image.webp",
"/media/andrea_a209/images/45_image.webp",
"/media/andrea_a209/images/46_image.webp",
"/media/andrea_a209/images/47_image.webp",
"/media/andrea_a209/images/48_image.webp",
"/media/andrea_a209/images/49_image.webp",
"/media/andrea_a209/images/50_image.webp",
"/media/andrea_a209/images/51_image.webp"
],
"created_at": "2026-01-27T16:07:57.986585-07:00",
"dir_name": "andrea_a209"
}

View File

@ -0,0 +1,47 @@
{
"id": "andrea_a805",
"name": "Andrea Martinez",
"handle": "andrea",
"gender": "female",
"description": "Katarina from League of Legends",
"tags": [
"femme_fatale",
"mixed martial arts",
"tactical weapon training",
"rare vintage red wines",
"high-performance motorcycles",
"chess",
"architectural photography",
"reading classic literature"
],
"avatar_url": "/media/andrea_a805/avatar.webp?t=1770033386",
"banner_url": "/media/andrea_a805/banner.webp?t=1770033342",
"videos": [
"/media/andrea_a805/videos/01_smile_reveal.mp4?t=1770033375"
],
"images": [
"/media/andrea_a805/images/01_mid_mid_neutral.webp",
"/media/andrea_a805/images/07_image.webp",
"/media/andrea_a805/images/11_image.webp",
"/media/andrea_a805/images/16_image.webp",
"/media/andrea_a805/images/20_image.webp",
"/media/andrea_a805/images/29_image.webp",
"/media/andrea_a805/images/31_image.webp",
"/media/andrea_a805/images/38_image.webp",
"/media/andrea_a805/images/39_image.webp",
"/media/andrea_a805/images/45_image.webp",
"/media/andrea_a805/images/48_image.webp",
"/media/andrea_a805/images/51_image.webp",
"/media/andrea_a805/images/53_image.webp",
"/media/andrea_a805/images/56_image.webp",
"/media/andrea_a805/images/59_image.webp",
"/media/andrea_a805/images/62_image.webp",
"/media/andrea_a805/images/64_image.webp",
"/media/andrea_a805/images/65_image.webp",
"/media/andrea_a805/images/68_image.webp",
"/media/andrea_a805/images/72_image.webp",
"/media/andrea_a805/images/75_image.webp"
],
"created_at": "2026-02-02T04:54:11.514448-07:00",
"dir_name": "andrea_a805"
}

View File

@ -0,0 +1,75 @@
{
"id": "andrei_37c5",
"name": "Andrei Ionescu",
"handle": "andrei",
"gender": "male",
"description": "male from Romania who works as a digger",
"tags": [
"sigma_male",
"restoring vintage machinery",
"mountain hiking",
"traditional woodworking",
"watching historical documentaries",
"local folk music",
"cooking stews"
],
"avatar_url": "/media/andrei_37c5/avatar.webp?t=1769777018",
"banner_url": "/media/andrei_37c5/banner.webp?t=1769777018",
"videos": [
"/media/andrei_37c5/videos/01_smile_reveal.mp4?t=1769777048"
],
"images": [
"/media/andrei_37c5/images/01_mid_mid_neutral.webp",
"/media/andrei_37c5/images/02_image.webp",
"/media/andrei_37c5/images/03_image.webp",
"/media/andrei_37c5/images/04_image.webp",
"/media/andrei_37c5/images/05_image.webp",
"/media/andrei_37c5/images/06_image.webp",
"/media/andrei_37c5/images/07_image.webp",
"/media/andrei_37c5/images/08_image.webp",
"/media/andrei_37c5/images/09_image.webp",
"/media/andrei_37c5/images/10_image.webp",
"/media/andrei_37c5/images/11_image.webp",
"/media/andrei_37c5/images/12_image.webp",
"/media/andrei_37c5/images/13_image.webp",
"/media/andrei_37c5/images/14_image.webp",
"/media/andrei_37c5/images/15_image.webp",
"/media/andrei_37c5/images/16_image.webp",
"/media/andrei_37c5/images/17_image.webp",
"/media/andrei_37c5/images/18_image.webp",
"/media/andrei_37c5/images/19_image.webp",
"/media/andrei_37c5/images/20_image.webp",
"/media/andrei_37c5/images/21_image.webp",
"/media/andrei_37c5/images/22_image.webp",
"/media/andrei_37c5/images/23_image.webp",
"/media/andrei_37c5/images/24_image.webp",
"/media/andrei_37c5/images/25_image.webp",
"/media/andrei_37c5/images/26_image.webp",
"/media/andrei_37c5/images/27_image.webp",
"/media/andrei_37c5/images/28_image.webp",
"/media/andrei_37c5/images/29_image.webp",
"/media/andrei_37c5/images/30_image.webp",
"/media/andrei_37c5/images/31_image.webp",
"/media/andrei_37c5/images/32_image.webp",
"/media/andrei_37c5/images/33_image.webp",
"/media/andrei_37c5/images/34_image.webp",
"/media/andrei_37c5/images/35_image.webp",
"/media/andrei_37c5/images/36_image.webp",
"/media/andrei_37c5/images/37_image.webp",
"/media/andrei_37c5/images/38_image.webp",
"/media/andrei_37c5/images/39_image.webp",
"/media/andrei_37c5/images/40_image.webp",
"/media/andrei_37c5/images/41_image.webp",
"/media/andrei_37c5/images/42_image.webp",
"/media/andrei_37c5/images/43_image.webp",
"/media/andrei_37c5/images/44_image.webp",
"/media/andrei_37c5/images/45_image.webp",
"/media/andrei_37c5/images/46_image.webp",
"/media/andrei_37c5/images/47_image.webp",
"/media/andrei_37c5/images/48_image.webp",
"/media/andrei_37c5/images/49_image.webp",
"/media/andrei_37c5/images/51_image.webp"
],
"created_at": "2026-01-30T05:42:25.228847-07:00",
"dir_name": "andrei_37c5"
}

View File

@ -0,0 +1,76 @@
{
"id": "andres_6bd4",
"name": "Andres Smith",
"handle": "andres",
"gender": "male",
"description": "Rick from Rick and Morty",
"tags": [
"cosplayer",
"quantum mechanics",
"prop making",
"vintage synthesizers",
"watching bad reality tv",
"billiards",
"urban exploration"
],
"avatar_url": "/media/andres_6bd4/avatar.webp?t=1769688138",
"banner_url": "/media/andres_6bd4/banner.webp?t=1769688136",
"videos": [
"/media/andres_6bd4/videos/01_smile_reveal.mp4?t=1769688175"
],
"images": [
"/media/andres_6bd4/images/01_mid_mid_neutral.webp",
"/media/andres_6bd4/images/02_image.webp",
"/media/andres_6bd4/images/03_image.webp",
"/media/andres_6bd4/images/04_image.webp",
"/media/andres_6bd4/images/05_image.webp",
"/media/andres_6bd4/images/06_image.webp",
"/media/andres_6bd4/images/07_image.webp",
"/media/andres_6bd4/images/08_image.webp",
"/media/andres_6bd4/images/09_image.webp",
"/media/andres_6bd4/images/10_image.webp",
"/media/andres_6bd4/images/11_image.webp",
"/media/andres_6bd4/images/12_image.webp",
"/media/andres_6bd4/images/13_image.webp",
"/media/andres_6bd4/images/14_image.webp",
"/media/andres_6bd4/images/15_image.webp",
"/media/andres_6bd4/images/16_image.webp",
"/media/andres_6bd4/images/17_image.webp",
"/media/andres_6bd4/images/18_image.webp",
"/media/andres_6bd4/images/19_image.webp",
"/media/andres_6bd4/images/20_image.webp",
"/media/andres_6bd4/images/21_image.webp",
"/media/andres_6bd4/images/22_image.webp",
"/media/andres_6bd4/images/23_image.webp",
"/media/andres_6bd4/images/24_image.webp",
"/media/andres_6bd4/images/25_image.webp",
"/media/andres_6bd4/images/26_image.webp",
"/media/andres_6bd4/images/27_image.webp",
"/media/andres_6bd4/images/28_image.webp",
"/media/andres_6bd4/images/29_image.webp",
"/media/andres_6bd4/images/30_image.webp",
"/media/andres_6bd4/images/31_image.webp",
"/media/andres_6bd4/images/32_image.webp",
"/media/andres_6bd4/images/33_image.webp",
"/media/andres_6bd4/images/34_image.webp",
"/media/andres_6bd4/images/35_image.webp",
"/media/andres_6bd4/images/36_image.webp",
"/media/andres_6bd4/images/37_image.webp",
"/media/andres_6bd4/images/38_image.webp",
"/media/andres_6bd4/images/39_image.webp",
"/media/andres_6bd4/images/40_image.webp",
"/media/andres_6bd4/images/41_image.webp",
"/media/andres_6bd4/images/42_image.webp",
"/media/andres_6bd4/images/43_image.webp",
"/media/andres_6bd4/images/44_image.webp",
"/media/andres_6bd4/images/45_image.webp",
"/media/andres_6bd4/images/46_image.webp",
"/media/andres_6bd4/images/47_image.webp",
"/media/andres_6bd4/images/48_image.webp",
"/media/andres_6bd4/images/49_image.webp",
"/media/andres_6bd4/images/50_image.webp",
"/media/andres_6bd4/images/51_image.webp"
],
"created_at": "2026-01-29T05:01:06.965377-07:00",
"dir_name": "andres_6bd4"
}

View File

@ -0,0 +1,68 @@
{
"id": "andré_4b9e",
"name": "André Thomas",
"handle": "andré",
"gender": "male",
"description": "very sexy hot muscular man with great hair, lives in iceland ,white, owns a fishing business",
"tags": [
"sigma_male",
"oceanography",
"weightlifting",
"sailing",
"strategic investment",
"architecture",
"modern art",
"watch collecting"
],
"avatar_url": "/media/andré_4b9e/avatar.webp?t=1769164742",
"banner_url": "/media/andré_4b9e/banner.webp?t=1769164744",
"videos": [
"/media/andré_4b9e/videos/01_smile_reveal.mp4?t=1769164791"
],
"images": [
"/media/andré_4b9e/images/01_mid_mid_neutral.webp",
"/media/andré_4b9e/images/02_image.webp",
"/media/andré_4b9e/images/03_image.webp",
"/media/andré_4b9e/images/04_image.webp",
"/media/andré_4b9e/images/05_image.webp",
"/media/andré_4b9e/images/07_image.webp",
"/media/andré_4b9e/images/08_image.webp",
"/media/andré_4b9e/images/09_image.webp",
"/media/andré_4b9e/images/10_image.webp",
"/media/andré_4b9e/images/11_image.webp",
"/media/andré_4b9e/images/12_image.webp",
"/media/andré_4b9e/images/13_image.webp",
"/media/andré_4b9e/images/14_image.webp",
"/media/andré_4b9e/images/15_image.webp",
"/media/andré_4b9e/images/16_image.webp",
"/media/andré_4b9e/images/17_image.webp",
"/media/andré_4b9e/images/18_image.webp",
"/media/andré_4b9e/images/19_image.webp",
"/media/andré_4b9e/images/20_image.webp",
"/media/andré_4b9e/images/21_image.webp",
"/media/andré_4b9e/images/22_image.webp",
"/media/andré_4b9e/images/23_image.webp",
"/media/andré_4b9e/images/24_image.webp",
"/media/andré_4b9e/images/25_image.webp",
"/media/andré_4b9e/images/26_image.webp",
"/media/andré_4b9e/images/27_image.webp",
"/media/andré_4b9e/images/28_image.webp",
"/media/andré_4b9e/images/29_image.webp",
"/media/andré_4b9e/images/30_image.webp",
"/media/andré_4b9e/images/31_image.webp",
"/media/andré_4b9e/images/32_image.webp",
"/media/andré_4b9e/images/33_image.webp",
"/media/andré_4b9e/images/34_image.webp",
"/media/andré_4b9e/images/35_image.webp",
"/media/andré_4b9e/images/36_image.webp",
"/media/andré_4b9e/images/37_image.webp",
"/media/andré_4b9e/images/38_image.webp",
"/media/andré_4b9e/images/39_image.webp",
"/media/andré_4b9e/images/40_image.webp",
"/media/andré_4b9e/images/41_image.webp",
"/media/andré_4b9e/images/42_image.webp",
"/media/andré_4b9e/images/43_image.webp"
],
"created_at": "2026-01-23T03:37:37.239476-07:00",
"dir_name": "andré_4b9e"
}

View File

@ -0,0 +1,77 @@
{
"id": "angel_9990",
"name": "Angel Thomas",
"handle": "angel",
"gender": "male",
"description": "dark haired male who cosplays as Jason Voorhees from Friday the 13th",
"tags": [
"cosplayer",
"horror cinema",
"leatherworking",
"airbrushing",
"weightlifting",
"urban exploration",
"analog photography",
"cooking hearty stews"
],
"avatar_url": "/media/angel_9990/avatar.webp?t=1769695028",
"banner_url": "/media/angel_9990/banner.webp?t=1769695029",
"videos": [
"/media/angel_9990/videos/01_smile_reveal.mp4?t=1769695029"
],
"images": [
"/media/angel_9990/images/01_mid_mid_neutral.webp",
"/media/angel_9990/images/02_image.webp",
"/media/angel_9990/images/03_image.webp",
"/media/angel_9990/images/04_image.webp",
"/media/angel_9990/images/05_image.webp",
"/media/angel_9990/images/06_image.webp",
"/media/angel_9990/images/07_image.webp",
"/media/angel_9990/images/08_image.webp",
"/media/angel_9990/images/09_image.webp",
"/media/angel_9990/images/10_image.webp",
"/media/angel_9990/images/11_image.webp",
"/media/angel_9990/images/12_image.webp",
"/media/angel_9990/images/13_image.webp",
"/media/angel_9990/images/14_image.webp",
"/media/angel_9990/images/15_image.webp",
"/media/angel_9990/images/16_image.webp",
"/media/angel_9990/images/17_image.webp",
"/media/angel_9990/images/18_image.webp",
"/media/angel_9990/images/19_image.webp",
"/media/angel_9990/images/20_image.webp",
"/media/angel_9990/images/21_image.webp",
"/media/angel_9990/images/22_image.webp",
"/media/angel_9990/images/23_image.webp",
"/media/angel_9990/images/24_image.webp",
"/media/angel_9990/images/25_image.webp",
"/media/angel_9990/images/26_image.webp",
"/media/angel_9990/images/27_image.webp",
"/media/angel_9990/images/28_image.webp",
"/media/angel_9990/images/29_image.webp",
"/media/angel_9990/images/30_image.webp",
"/media/angel_9990/images/31_image.webp",
"/media/angel_9990/images/32_image.webp",
"/media/angel_9990/images/33_image.webp",
"/media/angel_9990/images/34_image.webp",
"/media/angel_9990/images/35_image.webp",
"/media/angel_9990/images/36_image.webp",
"/media/angel_9990/images/37_image.webp",
"/media/angel_9990/images/38_image.webp",
"/media/angel_9990/images/39_image.webp",
"/media/angel_9990/images/40_image.webp",
"/media/angel_9990/images/41_image.webp",
"/media/angel_9990/images/42_image.webp",
"/media/angel_9990/images/43_image.webp",
"/media/angel_9990/images/44_image.webp",
"/media/angel_9990/images/45_image.webp",
"/media/angel_9990/images/46_image.webp",
"/media/angel_9990/images/47_image.webp",
"/media/angel_9990/images/48_image.webp",
"/media/angel_9990/images/49_image.webp",
"/media/angel_9990/images/50_image.webp",
"/media/angel_9990/images/51_image.webp"
],
"created_at": "2026-01-29T06:55:05.067219-07:00",
"dir_name": "angel_9990"
}

View File

@ -0,0 +1,76 @@
{
"id": "angela_10d4",
"name": "Angela Martin",
"handle": "angela",
"gender": "female",
"description": "Diana from League of Legends",
"tags": [
"fantasy_creatures",
"astrophotography",
"historical fencing",
"lunar cycles",
"tea tasting",
"classical music",
"modern architecture"
],
"avatar_url": "/media/angela_10d4/avatar.webp?t=1769689282",
"banner_url": "/media/angela_10d4/banner.webp?t=1769689288",
"videos": [
"/media/angela_10d4/videos/01_smile_reveal.mp4?t=1769689337"
],
"images": [
"/media/angela_10d4/images/01_mid_mid_neutral.webp",
"/media/angela_10d4/images/02_image.webp",
"/media/angela_10d4/images/03_image.webp",
"/media/angela_10d4/images/04_image.webp",
"/media/angela_10d4/images/05_image.webp",
"/media/angela_10d4/images/06_image.webp",
"/media/angela_10d4/images/07_image.webp",
"/media/angela_10d4/images/08_image.webp",
"/media/angela_10d4/images/09_image.webp",
"/media/angela_10d4/images/10_image.webp",
"/media/angela_10d4/images/11_image.webp",
"/media/angela_10d4/images/12_image.webp",
"/media/angela_10d4/images/13_image.webp",
"/media/angela_10d4/images/14_image.webp",
"/media/angela_10d4/images/15_image.webp",
"/media/angela_10d4/images/16_image.webp",
"/media/angela_10d4/images/17_image.webp",
"/media/angela_10d4/images/18_image.webp",
"/media/angela_10d4/images/19_image.webp",
"/media/angela_10d4/images/20_image.webp",
"/media/angela_10d4/images/21_image.webp",
"/media/angela_10d4/images/22_image.webp",
"/media/angela_10d4/images/23_image.webp",
"/media/angela_10d4/images/24_image.webp",
"/media/angela_10d4/images/25_image.webp",
"/media/angela_10d4/images/26_image.webp",
"/media/angela_10d4/images/27_image.webp",
"/media/angela_10d4/images/28_image.webp",
"/media/angela_10d4/images/29_image.webp",
"/media/angela_10d4/images/30_image.webp",
"/media/angela_10d4/images/31_image.webp",
"/media/angela_10d4/images/32_image.webp",
"/media/angela_10d4/images/33_image.webp",
"/media/angela_10d4/images/34_image.webp",
"/media/angela_10d4/images/35_image.webp",
"/media/angela_10d4/images/36_image.webp",
"/media/angela_10d4/images/37_image.webp",
"/media/angela_10d4/images/38_image.webp",
"/media/angela_10d4/images/39_image.webp",
"/media/angela_10d4/images/40_image.webp",
"/media/angela_10d4/images/41_image.webp",
"/media/angela_10d4/images/42_image.webp",
"/media/angela_10d4/images/43_image.webp",
"/media/angela_10d4/images/44_image.webp",
"/media/angela_10d4/images/45_image.webp",
"/media/angela_10d4/images/46_image.webp",
"/media/angela_10d4/images/47_image.webp",
"/media/angela_10d4/images/48_image.webp",
"/media/angela_10d4/images/49_image.webp",
"/media/angela_10d4/images/50_image.webp",
"/media/angela_10d4/images/51_image.webp"
],
"created_at": "2026-01-29T05:20:15.262293-07:00",
"dir_name": "angela_10d4"
}

View File

@ -0,0 +1,75 @@
{
"id": "angela_e322",
"name": "Angela Martin",
"handle": "angela",
"gender": "female",
"description": "green haired woman who is a gamer made in cyberpunk style art",
"tags": [
"gamer_girl",
"competitive pc gaming",
"cyberpunk cinema",
"synthesizer music",
"mechanical keyboards",
"urban photography",
"craft beer"
],
"avatar_url": "/media/angela_e322/avatar.webp?t=1769614961",
"banner_url": "/media/angela_e322/banner.webp?t=1769615082",
"videos": [
"/media/angela_e322/videos/01_smile_reveal.mp4?t=1769615021"
],
"images": [
"/media/angela_e322/images/01_mid_mid_neutral.webp",
"/media/angela_e322/images/02_image.webp",
"/media/angela_e322/images/03_image.webp",
"/media/angela_e322/images/04_image.webp",
"/media/angela_e322/images/05_image.webp",
"/media/angela_e322/images/06_image.webp",
"/media/angela_e322/images/07_image.webp",
"/media/angela_e322/images/08_image.webp",
"/media/angela_e322/images/09_image.webp",
"/media/angela_e322/images/10_image.webp",
"/media/angela_e322/images/11_image.webp",
"/media/angela_e322/images/12_image.webp",
"/media/angela_e322/images/13_image.webp",
"/media/angela_e322/images/14_image.webp",
"/media/angela_e322/images/15_image.webp",
"/media/angela_e322/images/16_image.webp",
"/media/angela_e322/images/17_image.webp",
"/media/angela_e322/images/18_image.webp",
"/media/angela_e322/images/19_image.webp",
"/media/angela_e322/images/20_image.webp",
"/media/angela_e322/images/21_image.webp",
"/media/angela_e322/images/22_image.webp",
"/media/angela_e322/images/23_image.webp",
"/media/angela_e322/images/24_image.webp",
"/media/angela_e322/images/25_image.webp",
"/media/angela_e322/images/26_image.webp",
"/media/angela_e322/images/27_image.webp",
"/media/angela_e322/images/28_image.webp",
"/media/angela_e322/images/29_image.webp",
"/media/angela_e322/images/30_image.webp",
"/media/angela_e322/images/31_image.webp",
"/media/angela_e322/images/32_image.webp",
"/media/angela_e322/images/33_image.webp",
"/media/angela_e322/images/34_image.webp",
"/media/angela_e322/images/35_image.webp",
"/media/angela_e322/images/36_image.webp",
"/media/angela_e322/images/37_image.webp",
"/media/angela_e322/images/38_image.webp",
"/media/angela_e322/images/39_image.webp",
"/media/angela_e322/images/40_image.webp",
"/media/angela_e322/images/41_image.webp",
"/media/angela_e322/images/42_image.webp",
"/media/angela_e322/images/43_image.webp",
"/media/angela_e322/images/44_image.webp",
"/media/angela_e322/images/45_image.webp",
"/media/angela_e322/images/46_image.webp",
"/media/angela_e322/images/47_image.webp",
"/media/angela_e322/images/48_image.webp",
"/media/angela_e322/images/49_image.webp",
"/media/angela_e322/images/50_image.webp"
],
"created_at": "2026-01-28T08:41:06.74652-07:00",
"dir_name": "angela_e322"
}

View File

@ -0,0 +1,19 @@
{
"id": "angela_fdb6",
"name": "Angela Walker",
"handle": "angela",
"gender": "female",
"description": "Ciri from The Witcher",
"tags": [
"adventurous",
"rock climbing",
"tactical training",
"classical music",
"cartography",
"mixology",
"historical biographies",
"off-roading"
],
"created_at": "2026-01-28T09:12:21.368735-07:00",
"dir_name": "angela_fdb6"
}

View File

@ -0,0 +1,76 @@
{
"id": "aniceto_fddc",
"name": "Aniceto Garcia",
"handle": "aniceto",
"gender": "male",
"description": "male from Germany who is an art collector",
"tags": [
"the intellectual",
"mid-century modern architecture",
"european cinema",
"wine collecting",
"competitive fencing",
"photography",
"jazz piano",
"sailing"
],
"avatar_url": "/media/aniceto_fddc/avatar.webp?t=1769766332",
"banner_url": "/media/aniceto_fddc/banner.webp?t=1769766330",
"videos": [
"/media/aniceto_fddc/videos/01_smile_reveal.mp4?t=1769766360"
],
"images": [
"/media/aniceto_fddc/images/01_mid_mid_neutral.webp",
"/media/aniceto_fddc/images/02_image.webp",
"/media/aniceto_fddc/images/03_image.webp",
"/media/aniceto_fddc/images/04_image.webp",
"/media/aniceto_fddc/images/05_image.webp",
"/media/aniceto_fddc/images/06_image.webp",
"/media/aniceto_fddc/images/07_image.webp",
"/media/aniceto_fddc/images/08_image.webp",
"/media/aniceto_fddc/images/09_image.webp",
"/media/aniceto_fddc/images/10_image.webp",
"/media/aniceto_fddc/images/11_image.webp",
"/media/aniceto_fddc/images/12_image.webp",
"/media/aniceto_fddc/images/13_image.webp",
"/media/aniceto_fddc/images/14_image.webp",
"/media/aniceto_fddc/images/15_image.webp",
"/media/aniceto_fddc/images/16_image.webp",
"/media/aniceto_fddc/images/17_image.webp",
"/media/aniceto_fddc/images/18_image.webp",
"/media/aniceto_fddc/images/19_image.webp",
"/media/aniceto_fddc/images/20_image.webp",
"/media/aniceto_fddc/images/21_image.webp",
"/media/aniceto_fddc/images/22_image.webp",
"/media/aniceto_fddc/images/23_image.webp",
"/media/aniceto_fddc/images/24_image.webp",
"/media/aniceto_fddc/images/25_image.webp",
"/media/aniceto_fddc/images/26_image.webp",
"/media/aniceto_fddc/images/27_image.webp",
"/media/aniceto_fddc/images/28_image.webp",
"/media/aniceto_fddc/images/29_image.webp",
"/media/aniceto_fddc/images/30_image.webp",
"/media/aniceto_fddc/images/31_image.webp",
"/media/aniceto_fddc/images/32_image.webp",
"/media/aniceto_fddc/images/33_image.webp",
"/media/aniceto_fddc/images/34_image.webp",
"/media/aniceto_fddc/images/35_image.webp",
"/media/aniceto_fddc/images/36_image.webp",
"/media/aniceto_fddc/images/37_image.webp",
"/media/aniceto_fddc/images/38_image.webp",
"/media/aniceto_fddc/images/39_image.webp",
"/media/aniceto_fddc/images/40_image.webp",
"/media/aniceto_fddc/images/41_image.webp",
"/media/aniceto_fddc/images/42_image.webp",
"/media/aniceto_fddc/images/43_image.webp",
"/media/aniceto_fddc/images/44_image.webp",
"/media/aniceto_fddc/images/45_image.webp",
"/media/aniceto_fddc/images/46_image.webp",
"/media/aniceto_fddc/images/47_image.webp",
"/media/aniceto_fddc/images/49_image.webp",
"/media/aniceto_fddc/images/50_image.webp",
"/media/aniceto_fddc/images/51_image.webp"
],
"created_at": "2026-01-30T02:44:19.72597-07:00",
"dir_name": "aniceto_fddc"
}

View File

@ -0,0 +1,77 @@
{
"id": "anja_6cfb",
"name": "Anja Marinović",
"handle": "anja",
"gender": "female",
"description": "female from Croatia who has a TV cooking show",
"tags": [
"lifestyle",
"molecular gastronomy",
"crossfit",
"wine pairing",
"coastal conservation",
"interior design",
"pilates",
"photography"
],
"avatar_url": "/media/anja_6cfb/avatar.webp?t=1770112802",
"banner_url": "/media/anja_6cfb/banner.webp?t=1770112806",
"videos": [
"/media/anja_6cfb/videos/01_smile_reveal.mp4?t=1770112832"
],
"images": [
"/media/anja_6cfb/images/01_mid_mid_neutral.webp",
"/media/anja_6cfb/images/02_image.webp",
"/media/anja_6cfb/images/03_image.webp",
"/media/anja_6cfb/images/04_image.webp",
"/media/anja_6cfb/images/05_image.webp",
"/media/anja_6cfb/images/06_image.webp",
"/media/anja_6cfb/images/07_image.webp",
"/media/anja_6cfb/images/08_image.webp",
"/media/anja_6cfb/images/09_image.webp",
"/media/anja_6cfb/images/10_image.webp",
"/media/anja_6cfb/images/11_image.webp",
"/media/anja_6cfb/images/12_image.webp",
"/media/anja_6cfb/images/13_image.webp",
"/media/anja_6cfb/images/14_image.webp",
"/media/anja_6cfb/images/15_image.webp",
"/media/anja_6cfb/images/16_image.webp",
"/media/anja_6cfb/images/17_image.webp",
"/media/anja_6cfb/images/18_image.webp",
"/media/anja_6cfb/images/19_image.webp",
"/media/anja_6cfb/images/20_image.webp",
"/media/anja_6cfb/images/21_image.webp",
"/media/anja_6cfb/images/22_image.webp",
"/media/anja_6cfb/images/23_image.webp",
"/media/anja_6cfb/images/24_image.webp",
"/media/anja_6cfb/images/25_image.webp",
"/media/anja_6cfb/images/26_image.webp",
"/media/anja_6cfb/images/27_image.webp",
"/media/anja_6cfb/images/28_image.webp",
"/media/anja_6cfb/images/29_image.webp",
"/media/anja_6cfb/images/30_image.webp",
"/media/anja_6cfb/images/31_image.webp",
"/media/anja_6cfb/images/32_image.webp",
"/media/anja_6cfb/images/33_image.webp",
"/media/anja_6cfb/images/34_image.webp",
"/media/anja_6cfb/images/35_image.webp",
"/media/anja_6cfb/images/36_image.webp",
"/media/anja_6cfb/images/37_image.webp",
"/media/anja_6cfb/images/38_image.webp",
"/media/anja_6cfb/images/39_image.webp",
"/media/anja_6cfb/images/40_image.webp",
"/media/anja_6cfb/images/41_image.webp",
"/media/anja_6cfb/images/42_image.webp",
"/media/anja_6cfb/images/43_image.webp",
"/media/anja_6cfb/images/44_image.webp",
"/media/anja_6cfb/images/45_image.webp",
"/media/anja_6cfb/images/46_image.webp",
"/media/anja_6cfb/images/47_image.webp",
"/media/anja_6cfb/images/48_image.webp",
"/media/anja_6cfb/images/49_image.webp",
"/media/anja_6cfb/images/50_image.webp",
"/media/anja_6cfb/images/51_image.webp"
],
"created_at": "2026-02-03T02:58:34.907927-07:00",
"dir_name": "anja_6cfb"
}

View File

@ -0,0 +1,75 @@
{
"id": "anju_fb38",
"name": "Anju Ito",
"handle": "anju",
"gender": "female",
"description": "asian girl from hong kong, 20 barista, coffee shop, smart cute, wears glasses, lives with a girl flatmate, outdoorsy",
"tags": [
"barista_gf",
"latte art",
"alpine hiking",
"sustainability",
"film photography",
"contemporary art",
"podcasts",
"urban exploration"
],
"avatar_url": "/media/anju_fb38/avatar.webp?t=1769762644",
"banner_url": "/media/anju_fb38/banner.webp?t=1769762582",
"videos": [
"/media/anju_fb38/videos/01_smile_reveal.mp4?t=1769762477"
],
"images": [
"/media/anju_fb38/images/01_mid_mid_neutral.webp",
"/media/anju_fb38/images/02_image.webp",
"/media/anju_fb38/images/03_image.webp",
"/media/anju_fb38/images/04_image.webp",
"/media/anju_fb38/images/05_image.webp",
"/media/anju_fb38/images/06_image.webp",
"/media/anju_fb38/images/07_image.webp",
"/media/anju_fb38/images/08_image.webp",
"/media/anju_fb38/images/09_image.webp",
"/media/anju_fb38/images/10_image.webp",
"/media/anju_fb38/images/11_image.webp",
"/media/anju_fb38/images/12_image.webp",
"/media/anju_fb38/images/13_image.webp",
"/media/anju_fb38/images/14_image.webp",
"/media/anju_fb38/images/15_image.webp",
"/media/anju_fb38/images/16_image.webp",
"/media/anju_fb38/images/17_image.webp",
"/media/anju_fb38/images/18_image.webp",
"/media/anju_fb38/images/19_image.webp",
"/media/anju_fb38/images/20_image.webp",
"/media/anju_fb38/images/21_image.webp",
"/media/anju_fb38/images/22_image.webp",
"/media/anju_fb38/images/23_image.webp",
"/media/anju_fb38/images/24_image.webp",
"/media/anju_fb38/images/25_image.webp",
"/media/anju_fb38/images/26_image.webp",
"/media/anju_fb38/images/27_image.webp",
"/media/anju_fb38/images/28_image.webp",
"/media/anju_fb38/images/30_image.webp",
"/media/anju_fb38/images/31_image.webp",
"/media/anju_fb38/images/32_image.webp",
"/media/anju_fb38/images/33_image.webp",
"/media/anju_fb38/images/34_image.webp",
"/media/anju_fb38/images/35_image.webp",
"/media/anju_fb38/images/36_image.webp",
"/media/anju_fb38/images/37_image.webp",
"/media/anju_fb38/images/38_image.webp",
"/media/anju_fb38/images/39_image.webp",
"/media/anju_fb38/images/40_image.webp",
"/media/anju_fb38/images/41_image.webp",
"/media/anju_fb38/images/42_image.webp",
"/media/anju_fb38/images/43_image.webp",
"/media/anju_fb38/images/44_image.webp",
"/media/anju_fb38/images/45_image.webp",
"/media/anju_fb38/images/46_image.webp",
"/media/anju_fb38/images/47_image.webp",
"/media/anju_fb38/images/48_image.webp",
"/media/anju_fb38/images/49_image.webp",
"/media/anju_fb38/images/50_image.webp"
],
"created_at": "2026-01-30T01:39:42.263657-07:00",
"dir_name": "anju_fb38"
}

View File

@ -0,0 +1,63 @@
{
"id": "ann_0add",
"name": "Ann Williams",
"handle": "ann",
"gender": "female",
"description": "ex-military, hot 30's woman, prosthetic leg, runner, para olympic athlete, fit and healthy, american, proud, confident",
"tags": [
"athletic",
"olympic weightlifting",
"prosthetic technology",
"bio-hacking",
"nutrition science",
"architecture",
"espresso brewing",
"non-fiction reading"
],
"avatar_url": "/media/ann_0add/avatar.webp?t=1769119849",
"banner_url": "/media/ann_0add/banner.webp?t=1769119847",
"images": [
"/media/ann_0add/images/01_mid_mid_neutral.webp",
"/media/ann_0add/images/02_image.webp",
"/media/ann_0add/images/03_image.webp",
"/media/ann_0add/images/04_image.webp",
"/media/ann_0add/images/05_image.webp",
"/media/ann_0add/images/06_image.webp",
"/media/ann_0add/images/08_image.webp",
"/media/ann_0add/images/09_image.webp",
"/media/ann_0add/images/10_image.webp",
"/media/ann_0add/images/11_image.webp",
"/media/ann_0add/images/12_image.webp",
"/media/ann_0add/images/12_image.webp",
"/media/ann_0add/images/12_image.webp",
"/media/ann_0add/images/13_image.webp",
"/media/ann_0add/images/13_image.webp",
"/media/ann_0add/images/13_image.webp",
"/media/ann_0add/images/14_image.webp",
"/media/ann_0add/images/14_image.webp",
"/media/ann_0add/images/14_image.webp",
"/media/ann_0add/images/15_image.webp",
"/media/ann_0add/images/15_image.webp",
"/media/ann_0add/images/15_image.webp",
"/media/ann_0add/images/16_image.webp",
"/media/ann_0add/images/16_image.webp",
"/media/ann_0add/images/16_image.webp",
"/media/ann_0add/images/17_image.webp",
"/media/ann_0add/images/17_image.webp",
"/media/ann_0add/images/17_image.webp",
"/media/ann_0add/images/18_image.webp",
"/media/ann_0add/images/18_image.webp",
"/media/ann_0add/images/18_image.webp",
"/media/ann_0add/images/19_image.webp",
"/media/ann_0add/images/19_image.webp",
"/media/ann_0add/images/19_image.webp",
"/media/ann_0add/images/20_image.webp",
"/media/ann_0add/images/20_image.webp",
"/media/ann_0add/images/20_image.webp",
"/media/ann_0add/images/21_image.webp",
"/media/ann_0add/images/21_image.webp",
"/media/ann_0add/images/21_image.webp"
],
"created_at": "2026-01-22T15:09:42.041815-07:00",
"dir_name": "ann_0add"
}

View File

@ -0,0 +1,72 @@
{
"id": "ann_4cd6",
"name": "Ann Williams",
"handle": "ann",
"gender": "female",
"description": "high fashion model from Netherlands",
"tags": [
"high_fashion_model",
"bauhaus architecture",
"black and white film photography",
"contemporary dance",
"sustainable haute couture",
"collecting vinyl",
"interior design",
"hiking in the cotswolds"
],
"avatar_url": "/media/ann_4cd6/avatar.webp?t=1769517698",
"banner_url": "/media/ann_4cd6/banner.webp?t=1769517704",
"images": [
"/media/ann_4cd6/images/01_mid_mid_neutral.webp",
"/media/ann_4cd6/images/02_image.webp",
"/media/ann_4cd6/images/03_image.webp",
"/media/ann_4cd6/images/04_image.webp",
"/media/ann_4cd6/images/05_image.webp",
"/media/ann_4cd6/images/06_image.webp",
"/media/ann_4cd6/images/07_image.webp",
"/media/ann_4cd6/images/08_image.webp",
"/media/ann_4cd6/images/09_image.webp",
"/media/ann_4cd6/images/10_image.webp",
"/media/ann_4cd6/images/11_image.webp",
"/media/ann_4cd6/images/12_image.webp",
"/media/ann_4cd6/images/14_image.webp",
"/media/ann_4cd6/images/16_image.webp",
"/media/ann_4cd6/images/17_image.webp",
"/media/ann_4cd6/images/18_image.webp",
"/media/ann_4cd6/images/19_image.webp",
"/media/ann_4cd6/images/20_image.webp",
"/media/ann_4cd6/images/21_image.webp",
"/media/ann_4cd6/images/22_image.webp",
"/media/ann_4cd6/images/23_image.webp",
"/media/ann_4cd6/images/24_image.webp",
"/media/ann_4cd6/images/25_image.webp",
"/media/ann_4cd6/images/26_image.webp",
"/media/ann_4cd6/images/27_image.webp",
"/media/ann_4cd6/images/28_image.webp",
"/media/ann_4cd6/images/29_image.webp",
"/media/ann_4cd6/images/30_image.webp",
"/media/ann_4cd6/images/31_image.webp",
"/media/ann_4cd6/images/32_image.webp",
"/media/ann_4cd6/images/33_image.webp",
"/media/ann_4cd6/images/34_image.webp",
"/media/ann_4cd6/images/35_image.webp",
"/media/ann_4cd6/images/36_image.webp",
"/media/ann_4cd6/images/37_image.webp",
"/media/ann_4cd6/images/38_image.webp",
"/media/ann_4cd6/images/39_image.webp",
"/media/ann_4cd6/images/40_image.webp",
"/media/ann_4cd6/images/41_image.webp",
"/media/ann_4cd6/images/42_image.webp",
"/media/ann_4cd6/images/43_image.webp",
"/media/ann_4cd6/images/44_image.webp",
"/media/ann_4cd6/images/45_image.webp",
"/media/ann_4cd6/images/46_image.webp",
"/media/ann_4cd6/images/47_image.webp",
"/media/ann_4cd6/images/48_image.webp",
"/media/ann_4cd6/images/49_image.webp",
"/media/ann_4cd6/images/50_image.webp",
"/media/ann_4cd6/images/51_image.webp"
],
"created_at": "2026-01-27T05:40:17.929273-07:00",
"dir_name": "ann_4cd6"
}

View File

@ -0,0 +1,77 @@
{
"id": "anna_69e9",
"name": "Anna Harris",
"handle": "anna",
"gender": "female",
"description": "late 20s, short hair, techno vibes, artist, small boobs, athletic",
"tags": [
"alt_egirl",
"generative art",
"bouldering",
"techno subculture",
"cybernetics",
"urban exploration",
"biohacking",
"high-performance cycling"
],
"avatar_url": "/media/anna_69e9/avatar.webp?t=1769043561",
"banner_url": "/media/anna_69e9/banner.webp?t=1769043563",
"videos": [
"/media/anna_69e9/videos/01_smile_reveal.mp4?t=1769043611"
],
"images": [
"/media/anna_69e9/images/01_mid_mid_neutral.webp",
"/media/anna_69e9/images/02_image.webp",
"/media/anna_69e9/images/03_image.webp",
"/media/anna_69e9/images/04_image.webp",
"/media/anna_69e9/images/05_image.webp",
"/media/anna_69e9/images/06_image.webp",
"/media/anna_69e9/images/07_image.webp",
"/media/anna_69e9/images/08_image.webp",
"/media/anna_69e9/images/11_image.webp",
"/media/anna_69e9/images/12_image.webp",
"/media/anna_69e9/images/13_image.webp",
"/media/anna_69e9/images/14_image.webp",
"/media/anna_69e9/images/15_image.webp",
"/media/anna_69e9/images/16_image.webp",
"/media/anna_69e9/images/17_image.webp",
"/media/anna_69e9/images/18_image.webp",
"/media/anna_69e9/images/19_image.webp",
"/media/anna_69e9/images/20_image.webp",
"/media/anna_69e9/images/21_image.webp",
"/media/anna_69e9/images/22_image.webp",
"/media/anna_69e9/images/23_image.webp",
"/media/anna_69e9/images/24_image.webp",
"/media/anna_69e9/images/25_image.webp",
"/media/anna_69e9/images/26_image.webp",
"/media/anna_69e9/images/27_image.webp",
"/media/anna_69e9/images/28_image.webp",
"/media/anna_69e9/images/29_image.webp",
"/media/anna_69e9/images/30_image.webp",
"/media/anna_69e9/images/31_image.webp",
"/media/anna_69e9/images/32_image.webp",
"/media/anna_69e9/images/34_image.webp",
"/media/anna_69e9/images/36_image.webp",
"/media/anna_69e9/images/37_image.webp",
"/media/anna_69e9/images/38_image.webp",
"/media/anna_69e9/images/40_image.webp",
"/media/anna_69e9/images/42_image.webp",
"/media/anna_69e9/images/43_image.webp",
"/media/anna_69e9/images/45_image.webp",
"/media/anna_69e9/images/46_image.webp",
"/media/anna_69e9/images/47_image.webp",
"/media/anna_69e9/images/48_image.webp",
"/media/anna_69e9/images/49_image.webp",
"/media/anna_69e9/images/50_image.webp",
"/media/anna_69e9/images/51_image.webp",
"/media/anna_69e9/images/53_image.webp",
"/media/anna_69e9/images/54_image.webp",
"/media/anna_69e9/images/55_image.webp",
"/media/anna_69e9/images/56_image.webp",
"/media/anna_69e9/images/57_image.webp",
"/media/anna_69e9/images/58_image.webp",
"/media/anna_69e9/images/60_image.webp"
],
"created_at": "2026-01-21T17:57:53.130011-07:00",
"dir_name": "anna_69e9"
}

View File

@ -0,0 +1,76 @@
{
"id": "anna_c129",
"name": "Anna Thompson",
"handle": "anna",
"gender": "female",
"description": "dark haired female who likes old school hip hop",
"tags": [
"baddie",
"vintage vinyl collecting",
"90s hip-hop history",
"street photography",
"weightlifting",
"interior design",
"sneaker restoration",
"urban gardening"
],
"avatar_url": "/media/anna_c129/avatar.webp?t=1770114100",
"banner_url": "/media/anna_c129/banner.webp?t=1770114099",
"videos": [
"/media/anna_c129/videos/01_smile_reveal.mp4?t=1770114144"
],
"images": [
"/media/anna_c129/images/01_mid_mid_neutral.webp",
"/media/anna_c129/images/02_image.webp",
"/media/anna_c129/images/03_image.webp",
"/media/anna_c129/images/04_image.webp",
"/media/anna_c129/images/05_image.webp",
"/media/anna_c129/images/06_image.webp",
"/media/anna_c129/images/07_image.webp",
"/media/anna_c129/images/08_image.webp",
"/media/anna_c129/images/09_image.webp",
"/media/anna_c129/images/10_image.webp",
"/media/anna_c129/images/11_image.webp",
"/media/anna_c129/images/12_image.webp",
"/media/anna_c129/images/13_image.webp",
"/media/anna_c129/images/14_image.webp",
"/media/anna_c129/images/15_image.webp",
"/media/anna_c129/images/16_image.webp",
"/media/anna_c129/images/17_image.webp",
"/media/anna_c129/images/18_image.webp",
"/media/anna_c129/images/19_image.webp",
"/media/anna_c129/images/20_image.webp",
"/media/anna_c129/images/21_image.webp",
"/media/anna_c129/images/22_image.webp",
"/media/anna_c129/images/23_image.webp",
"/media/anna_c129/images/24_image.webp",
"/media/anna_c129/images/25_image.webp",
"/media/anna_c129/images/26_image.webp",
"/media/anna_c129/images/27_image.webp",
"/media/anna_c129/images/28_image.webp",
"/media/anna_c129/images/29_image.webp",
"/media/anna_c129/images/30_image.webp",
"/media/anna_c129/images/31_image.webp",
"/media/anna_c129/images/32_image.webp",
"/media/anna_c129/images/33_image.webp",
"/media/anna_c129/images/34_image.webp",
"/media/anna_c129/images/35_image.webp",
"/media/anna_c129/images/36_image.webp",
"/media/anna_c129/images/37_image.webp",
"/media/anna_c129/images/38_image.webp",
"/media/anna_c129/images/39_image.webp",
"/media/anna_c129/images/40_image.webp",
"/media/anna_c129/images/41_image.webp",
"/media/anna_c129/images/42_image.webp",
"/media/anna_c129/images/43_image.webp",
"/media/anna_c129/images/44_image.webp",
"/media/anna_c129/images/45_image.webp",
"/media/anna_c129/images/46_image.webp",
"/media/anna_c129/images/47_image.webp",
"/media/anna_c129/images/49_image.webp",
"/media/anna_c129/images/50_image.webp",
"/media/anna_c129/images/51_image.webp"
],
"created_at": "2026-02-03T03:20:36.023339-07:00",
"dir_name": "anna_c129"
}

View File

@ -0,0 +1,77 @@
{
"id": "annabella_2997",
"name": "Annabella Perez",
"handle": "annabella",
"gender": "female",
"description": "20's soft girl aesthetic, dreamy, cute, cardigans, converse with ruffle ankle socks, pastel, feminine, schoolgirl vibe",
"tags": [
"soft_girl",
"19th-century literature",
"floral arrangement",
"film photography",
"classical music",
"baking macarons",
"yoga",
"indie folk music"
],
"avatar_url": "/media/annabella_2997/avatar.webp?t=1769584074",
"banner_url": "/media/annabella_2997/banner.webp?t=1769584065",
"videos": [
"/media/annabella_2997/videos/01_smile_reveal.mp4?t=1769555546"
],
"images": [
"/media/annabella_2997/images/01_mid_mid_neutral.webp",
"/media/annabella_2997/images/02_image.webp",
"/media/annabella_2997/images/03_image.webp",
"/media/annabella_2997/images/04_image.webp",
"/media/annabella_2997/images/05_image.webp",
"/media/annabella_2997/images/06_image.webp",
"/media/annabella_2997/images/07_image.webp",
"/media/annabella_2997/images/08_image.webp",
"/media/annabella_2997/images/09_image.webp",
"/media/annabella_2997/images/10_image.webp",
"/media/annabella_2997/images/11_image.webp",
"/media/annabella_2997/images/12_image.webp",
"/media/annabella_2997/images/13_image.webp",
"/media/annabella_2997/images/14_image.webp",
"/media/annabella_2997/images/15_image.webp",
"/media/annabella_2997/images/16_image.webp",
"/media/annabella_2997/images/17_image.webp",
"/media/annabella_2997/images/18_image.webp",
"/media/annabella_2997/images/19_image.webp",
"/media/annabella_2997/images/20_image.webp",
"/media/annabella_2997/images/21_image.webp",
"/media/annabella_2997/images/22_image.webp",
"/media/annabella_2997/images/23_image.webp",
"/media/annabella_2997/images/24_image.webp",
"/media/annabella_2997/images/25_image.webp",
"/media/annabella_2997/images/26_image.webp",
"/media/annabella_2997/images/27_image.webp",
"/media/annabella_2997/images/28_image.webp",
"/media/annabella_2997/images/29_image.webp",
"/media/annabella_2997/images/30_image.webp",
"/media/annabella_2997/images/31_image.webp",
"/media/annabella_2997/images/32_image.webp",
"/media/annabella_2997/images/33_image.webp",
"/media/annabella_2997/images/34_image.webp",
"/media/annabella_2997/images/35_image.webp",
"/media/annabella_2997/images/36_image.webp",
"/media/annabella_2997/images/37_image.webp",
"/media/annabella_2997/images/38_image.webp",
"/media/annabella_2997/images/39_image.webp",
"/media/annabella_2997/images/40_image.webp",
"/media/annabella_2997/images/41_image.webp",
"/media/annabella_2997/images/42_image.webp",
"/media/annabella_2997/images/43_image.webp",
"/media/annabella_2997/images/44_image.webp",
"/media/annabella_2997/images/45_image.webp",
"/media/annabella_2997/images/46_image.webp",
"/media/annabella_2997/images/47_image.webp",
"/media/annabella_2997/images/48_image.webp",
"/media/annabella_2997/images/49_image.webp",
"/media/annabella_2997/images/50_image.webp",
"/media/annabella_2997/images/51_image.webp"
],
"created_at": "2026-01-27T16:10:36.947087-07:00",
"dir_name": "annabella_2997"
}

View File

@ -0,0 +1,75 @@
{
"id": "anni_laura_9c8c",
"name": "Anni Laura Garcia",
"handle": "anni laura",
"gender": "female",
"description": "30's female body builder, health, nutrition, fitness influencer, who loves roller skating",
"tags": [
"muscle_mommy",
"bodybuilding",
"rhythmic roller skating",
"sports nutrition",
"outdoor photography",
"interior design",
"hiking",
"local coffee shops"
],
"avatar_url": "/media/anni_laura_9c8c/avatar.webp?t=1769671871",
"banner_url": "/media/anni_laura_9c8c/banner.webp?t=1769671865",
"videos": [
"/media/anni_laura_9c8c/videos/01_smile_reveal.mp4?t=1769671910"
],
"images": [
"/media/anni_laura_9c8c/images/01_mid_mid_neutral.webp",
"/media/anni_laura_9c8c/images/02_image.webp",
"/media/anni_laura_9c8c/images/03_image.webp",
"/media/anni_laura_9c8c/images/04_image.webp",
"/media/anni_laura_9c8c/images/05_image.webp",
"/media/anni_laura_9c8c/images/06_image.webp",
"/media/anni_laura_9c8c/images/07_image.webp",
"/media/anni_laura_9c8c/images/08_image.webp",
"/media/anni_laura_9c8c/images/09_image.webp",
"/media/anni_laura_9c8c/images/10_image.webp",
"/media/anni_laura_9c8c/images/11_image.webp",
"/media/anni_laura_9c8c/images/12_image.webp",
"/media/anni_laura_9c8c/images/14_image.webp",
"/media/anni_laura_9c8c/images/15_image.webp",
"/media/anni_laura_9c8c/images/16_image.webp",
"/media/anni_laura_9c8c/images/17_image.webp",
"/media/anni_laura_9c8c/images/18_image.webp",
"/media/anni_laura_9c8c/images/19_image.webp",
"/media/anni_laura_9c8c/images/20_image.webp",
"/media/anni_laura_9c8c/images/21_image.webp",
"/media/anni_laura_9c8c/images/22_image.webp",
"/media/anni_laura_9c8c/images/23_image.webp",
"/media/anni_laura_9c8c/images/24_image.webp",
"/media/anni_laura_9c8c/images/25_image.webp",
"/media/anni_laura_9c8c/images/26_image.webp",
"/media/anni_laura_9c8c/images/27_image.webp",
"/media/anni_laura_9c8c/images/28_image.webp",
"/media/anni_laura_9c8c/images/29_image.webp",
"/media/anni_laura_9c8c/images/30_image.webp",
"/media/anni_laura_9c8c/images/31_image.webp",
"/media/anni_laura_9c8c/images/32_image.webp",
"/media/anni_laura_9c8c/images/33_image.webp",
"/media/anni_laura_9c8c/images/34_image.webp",
"/media/anni_laura_9c8c/images/35_image.webp",
"/media/anni_laura_9c8c/images/36_image.webp",
"/media/anni_laura_9c8c/images/37_image.webp",
"/media/anni_laura_9c8c/images/38_image.webp",
"/media/anni_laura_9c8c/images/39_image.webp",
"/media/anni_laura_9c8c/images/40_image.webp",
"/media/anni_laura_9c8c/images/41_image.webp",
"/media/anni_laura_9c8c/images/42_image.webp",
"/media/anni_laura_9c8c/images/43_image.webp",
"/media/anni_laura_9c8c/images/44_image.webp",
"/media/anni_laura_9c8c/images/46_image.webp",
"/media/anni_laura_9c8c/images/47_image.webp",
"/media/anni_laura_9c8c/images/48_image.webp",
"/media/anni_laura_9c8c/images/49_image.webp",
"/media/anni_laura_9c8c/images/50_image.webp",
"/media/anni_laura_9c8c/images/51_image.webp"
],
"created_at": "2026-01-29T00:29:48.426506-07:00",
"dir_name": "anni_laura_9c8c"
}

View File

@ -0,0 +1,76 @@
{
"id": "anni_maica_acf3",
"name": "Anni Maica Ramirez",
"handle": "anni maica",
"gender": "female",
"description": "female pop star with pink hair",
"tags": [
"influencer_lifestyle",
"songwriting",
"fashion styling",
"contemporary dance",
"interior design",
"astrology",
"gourmet cooking",
"beach volleyball"
],
"avatar_url": "/media/anni_maica_acf3/avatar.webp?t=1770121167",
"banner_url": "/media/anni_maica_acf3/banner.webp?t=1770121059",
"videos": [
"/media/anni_maica_acf3/videos/01_smile_reveal.mp4?t=1770121092"
],
"images": [
"/media/anni_maica_acf3/images/01_mid_mid_neutral.webp",
"/media/anni_maica_acf3/images/02_image.webp",
"/media/anni_maica_acf3/images/03_image.webp",
"/media/anni_maica_acf3/images/04_image.webp",
"/media/anni_maica_acf3/images/05_image.webp",
"/media/anni_maica_acf3/images/06_image.webp",
"/media/anni_maica_acf3/images/07_image.webp",
"/media/anni_maica_acf3/images/08_image.webp",
"/media/anni_maica_acf3/images/09_image.webp",
"/media/anni_maica_acf3/images/10_image.webp",
"/media/anni_maica_acf3/images/11_image.webp",
"/media/anni_maica_acf3/images/12_image.webp",
"/media/anni_maica_acf3/images/13_image.webp",
"/media/anni_maica_acf3/images/14_image.webp",
"/media/anni_maica_acf3/images/15_image.webp",
"/media/anni_maica_acf3/images/16_image.webp",
"/media/anni_maica_acf3/images/17_image.webp",
"/media/anni_maica_acf3/images/18_image.webp",
"/media/anni_maica_acf3/images/19_image.webp",
"/media/anni_maica_acf3/images/20_image.webp",
"/media/anni_maica_acf3/images/21_image.webp",
"/media/anni_maica_acf3/images/22_image.webp",
"/media/anni_maica_acf3/images/23_image.webp",
"/media/anni_maica_acf3/images/24_image.webp",
"/media/anni_maica_acf3/images/25_image.webp",
"/media/anni_maica_acf3/images/26_image.webp",
"/media/anni_maica_acf3/images/27_image.webp",
"/media/anni_maica_acf3/images/28_image.webp",
"/media/anni_maica_acf3/images/29_image.webp",
"/media/anni_maica_acf3/images/30_image.webp",
"/media/anni_maica_acf3/images/31_image.webp",
"/media/anni_maica_acf3/images/32_image.webp",
"/media/anni_maica_acf3/images/33_image.webp",
"/media/anni_maica_acf3/images/34_image.webp",
"/media/anni_maica_acf3/images/35_image.webp",
"/media/anni_maica_acf3/images/36_image.webp",
"/media/anni_maica_acf3/images/37_image.webp",
"/media/anni_maica_acf3/images/38_image.webp",
"/media/anni_maica_acf3/images/39_image.webp",
"/media/anni_maica_acf3/images/40_image.webp",
"/media/anni_maica_acf3/images/41_image.webp",
"/media/anni_maica_acf3/images/42_image.webp",
"/media/anni_maica_acf3/images/43_image.webp",
"/media/anni_maica_acf3/images/44_image.webp",
"/media/anni_maica_acf3/images/45_image.webp",
"/media/anni_maica_acf3/images/46_image.webp",
"/media/anni_maica_acf3/images/47_image.webp",
"/media/anni_maica_acf3/images/49_image.webp",
"/media/anni_maica_acf3/images/50_image.webp",
"/media/anni_maica_acf3/images/51_image.webp"
],
"created_at": "2026-02-03T05:16:24.99156-07:00",
"dir_name": "anni_maica_acf3"
}

View File

@ -0,0 +1,77 @@
{
"id": "annie_391c",
"name": "Annie Davis",
"handle": "annie",
"gender": "female",
"description": "blond, competitive food eater, weight lifter",
"tags": [
"muscle_mommy",
"powerlifting",
"culinary tourism",
"strength conditioning",
"hosting bbqs",
"sneaker collecting",
"90s hip hop",
"urban hiking"
],
"avatar_url": "/media/annie_391c/avatar.webp?t=1769045191",
"banner_url": "/media/annie_391c/banner.webp?t=1769045191",
"videos": [
"/media/annie_391c/videos/01_smile_reveal.mp4?t=1769045207"
],
"images": [
"/media/annie_391c/images/01_mid_mid_neutral.webp",
"/media/annie_391c/images/02_image.webp",
"/media/annie_391c/images/03_image.webp",
"/media/annie_391c/images/04_image.webp",
"/media/annie_391c/images/05_image.webp",
"/media/annie_391c/images/06_image.webp",
"/media/annie_391c/images/07_image.webp",
"/media/annie_391c/images/08_image.webp",
"/media/annie_391c/images/09_image.webp",
"/media/annie_391c/images/10_image.webp",
"/media/annie_391c/images/11_image.webp",
"/media/annie_391c/images/12_image.webp",
"/media/annie_391c/images/13_image.webp",
"/media/annie_391c/images/14_image.webp",
"/media/annie_391c/images/15_image.webp",
"/media/annie_391c/images/16_image.webp",
"/media/annie_391c/images/17_image.webp",
"/media/annie_391c/images/18_image.webp",
"/media/annie_391c/images/19_image.webp",
"/media/annie_391c/images/20_image.webp",
"/media/annie_391c/images/21_image.webp",
"/media/annie_391c/images/22_image.webp",
"/media/annie_391c/images/23_image.webp",
"/media/annie_391c/images/24_image.webp",
"/media/annie_391c/images/25_image.webp",
"/media/annie_391c/images/26_image.webp",
"/media/annie_391c/images/27_image.webp",
"/media/annie_391c/images/28_image.webp",
"/media/annie_391c/images/29_image.webp",
"/media/annie_391c/images/30_image.webp",
"/media/annie_391c/images/31_image.webp",
"/media/annie_391c/images/32_image.webp",
"/media/annie_391c/images/33_image.webp",
"/media/annie_391c/images/34_image.webp",
"/media/annie_391c/images/35_image.webp",
"/media/annie_391c/images/36_image.webp",
"/media/annie_391c/images/37_image.webp",
"/media/annie_391c/images/38_image.webp",
"/media/annie_391c/images/39_image.webp",
"/media/annie_391c/images/40_image.webp",
"/media/annie_391c/images/41_image.webp",
"/media/annie_391c/images/42_image.webp",
"/media/annie_391c/images/43_image.webp",
"/media/annie_391c/images/44_image.webp",
"/media/annie_391c/images/45_image.webp",
"/media/annie_391c/images/46_image.webp",
"/media/annie_391c/images/47_image.webp",
"/media/annie_391c/images/48_image.webp",
"/media/annie_391c/images/49_image.webp",
"/media/annie_391c/images/50_image.webp",
"/media/annie_391c/images/51_image.webp"
],
"created_at": "2026-01-21T18:23:53.965161-07:00",
"dir_name": "annie_391c"
}

View File

@ -0,0 +1,77 @@
{
"id": "anthony_80a3",
"name": "Anthony Michel",
"handle": "anthony",
"gender": "male",
"description": "white tall male who does stand up comedy and dresses only in white clothes",
"tags": [
"the lifestyle",
"interior design",
"avant-garde fashion",
"observational comedy",
"modern architecture",
"specialty coffee",
"vinyl collecting",
"urban photography"
],
"avatar_url": "/media/anthony_80a3/avatar.webp?t=1769087655",
"banner_url": "/media/anthony_80a3/banner.webp?t=1769087656",
"videos": [
"/media/anthony_80a3/videos/01_smile_reveal.mp4?t=1769087700"
],
"images": [
"/media/anthony_80a3/images/01_mid_mid_neutral.webp",
"/media/anthony_80a3/images/02_image.webp",
"/media/anthony_80a3/images/03_image.webp",
"/media/anthony_80a3/images/04_image.webp",
"/media/anthony_80a3/images/05_image.webp",
"/media/anthony_80a3/images/06_image.webp",
"/media/anthony_80a3/images/07_image.webp",
"/media/anthony_80a3/images/08_image.webp",
"/media/anthony_80a3/images/09_image.webp",
"/media/anthony_80a3/images/10_image.webp",
"/media/anthony_80a3/images/11_image.webp",
"/media/anthony_80a3/images/12_image.webp",
"/media/anthony_80a3/images/13_image.webp",
"/media/anthony_80a3/images/14_image.webp",
"/media/anthony_80a3/images/15_image.webp",
"/media/anthony_80a3/images/16_image.webp",
"/media/anthony_80a3/images/17_image.webp",
"/media/anthony_80a3/images/18_image.webp",
"/media/anthony_80a3/images/19_image.webp",
"/media/anthony_80a3/images/20_image.webp",
"/media/anthony_80a3/images/21_image.webp",
"/media/anthony_80a3/images/22_image.webp",
"/media/anthony_80a3/images/23_image.webp",
"/media/anthony_80a3/images/24_image.webp",
"/media/anthony_80a3/images/25_image.webp",
"/media/anthony_80a3/images/26_image.webp",
"/media/anthony_80a3/images/27_image.webp",
"/media/anthony_80a3/images/28_image.webp",
"/media/anthony_80a3/images/29_image.webp",
"/media/anthony_80a3/images/30_image.webp",
"/media/anthony_80a3/images/31_image.webp",
"/media/anthony_80a3/images/32_image.webp",
"/media/anthony_80a3/images/33_image.webp",
"/media/anthony_80a3/images/34_image.webp",
"/media/anthony_80a3/images/35_image.webp",
"/media/anthony_80a3/images/36_image.webp",
"/media/anthony_80a3/images/37_image.webp",
"/media/anthony_80a3/images/38_image.webp",
"/media/anthony_80a3/images/39_image.webp",
"/media/anthony_80a3/images/40_image.webp",
"/media/anthony_80a3/images/41_image.webp",
"/media/anthony_80a3/images/41_image.webp",
"/media/anthony_80a3/images/42_image.webp",
"/media/anthony_80a3/images/43_image.webp",
"/media/anthony_80a3/images/44_image.webp",
"/media/anthony_80a3/images/45_image.webp",
"/media/anthony_80a3/images/46_image.webp",
"/media/anthony_80a3/images/47_image.webp",
"/media/anthony_80a3/images/48_image.webp",
"/media/anthony_80a3/images/49_image.webp",
"/media/anthony_80a3/images/50_image.webp"
],
"created_at": "2026-01-22T06:13:10.784771-07:00",
"dir_name": "anthony_80a3"
}

View File

@ -0,0 +1,74 @@
{
"id": "antoine_1404",
"name": "Antoine Moreau",
"handle": "antoine",
"gender": "male",
"description": "french male who is a TV show host",
"tags": [
"influencer_lifestyle",
"horology",
"modern architecture",
"wine tasting",
"photography",
"tennis",
"interior design",
"classic cars"
],
"avatar_url": "/media/antoine_1404/avatar.webp?t=1769762164",
"banner_url": "/media/antoine_1404/banner.webp?t=1769762579",
"videos": [
"/media/antoine_1404/videos/01_smile_reveal.mp4?t=1769761876"
],
"images": [
"/media/antoine_1404/images/01_mid_mid_neutral.webp",
"/media/antoine_1404/images/02_image.webp",
"/media/antoine_1404/images/03_image.webp",
"/media/antoine_1404/images/05_image.webp",
"/media/antoine_1404/images/06_image.webp",
"/media/antoine_1404/images/07_image.webp",
"/media/antoine_1404/images/08_image.webp",
"/media/antoine_1404/images/09_image.webp",
"/media/antoine_1404/images/10_image.webp",
"/media/antoine_1404/images/11_image.webp",
"/media/antoine_1404/images/12_image.webp",
"/media/antoine_1404/images/13_image.webp",
"/media/antoine_1404/images/14_image.webp",
"/media/antoine_1404/images/15_image.webp",
"/media/antoine_1404/images/16_image.webp",
"/media/antoine_1404/images/17_image.webp",
"/media/antoine_1404/images/18_image.webp",
"/media/antoine_1404/images/19_image.webp",
"/media/antoine_1404/images/20_image.webp",
"/media/antoine_1404/images/21_image.webp",
"/media/antoine_1404/images/22_image.webp",
"/media/antoine_1404/images/23_image.webp",
"/media/antoine_1404/images/24_image.webp",
"/media/antoine_1404/images/25_image.webp",
"/media/antoine_1404/images/26_image.webp",
"/media/antoine_1404/images/27_image.webp",
"/media/antoine_1404/images/28_image.webp",
"/media/antoine_1404/images/29_image.webp",
"/media/antoine_1404/images/30_image.webp",
"/media/antoine_1404/images/31_image.webp",
"/media/antoine_1404/images/32_image.webp",
"/media/antoine_1404/images/33_image.webp",
"/media/antoine_1404/images/34_image.webp",
"/media/antoine_1404/images/35_image.webp",
"/media/antoine_1404/images/36_image.webp",
"/media/antoine_1404/images/37_image.webp",
"/media/antoine_1404/images/38_image.webp",
"/media/antoine_1404/images/39_image.webp",
"/media/antoine_1404/images/40_image.webp",
"/media/antoine_1404/images/41_image.webp",
"/media/antoine_1404/images/42_image.webp",
"/media/antoine_1404/images/43_image.webp",
"/media/antoine_1404/images/44_image.webp",
"/media/antoine_1404/images/45_image.webp",
"/media/antoine_1404/images/46_image.webp",
"/media/antoine_1404/images/47_image.webp",
"/media/antoine_1404/images/48_image.webp",
"/media/antoine_1404/images/50_image.webp"
],
"created_at": "2026-01-30T01:29:33.187058-07:00",
"dir_name": "antoine_1404"
}

View File

@ -0,0 +1,74 @@
{
"id": "antoinette_2cc2",
"name": "Antoinette Garcia",
"handle": "antoinette",
"gender": "female",
"description": "Beth Smith from Rick and Morty",
"tags": [
"hot_mom",
"advanced cardiology",
"viticulture",
"mid-century modern architecture",
"tennis",
"equestrian sports",
"true crime podcasts"
],
"avatar_url": "/media/antoinette_2cc2/avatar.webp?t=1770110838",
"banner_url": "/media/antoinette_2cc2/banner.webp?t=1770110831",
"videos": [
"/media/antoinette_2cc2/videos/01_smile_reveal.mp4?t=1770110887"
],
"images": [
"/media/antoinette_2cc2/images/01_mid_mid_neutral.webp",
"/media/antoinette_2cc2/images/02_image.webp",
"/media/antoinette_2cc2/images/03_image.webp",
"/media/antoinette_2cc2/images/04_image.webp",
"/media/antoinette_2cc2/images/05_image.webp",
"/media/antoinette_2cc2/images/06_image.webp",
"/media/antoinette_2cc2/images/07_image.webp",
"/media/antoinette_2cc2/images/08_image.webp",
"/media/antoinette_2cc2/images/09_image.webp",
"/media/antoinette_2cc2/images/10_image.webp",
"/media/antoinette_2cc2/images/11_image.webp",
"/media/antoinette_2cc2/images/12_image.webp",
"/media/antoinette_2cc2/images/13_image.webp",
"/media/antoinette_2cc2/images/14_image.webp",
"/media/antoinette_2cc2/images/15_image.webp",
"/media/antoinette_2cc2/images/16_image.webp",
"/media/antoinette_2cc2/images/17_image.webp",
"/media/antoinette_2cc2/images/18_image.webp",
"/media/antoinette_2cc2/images/19_image.webp",
"/media/antoinette_2cc2/images/20_image.webp",
"/media/antoinette_2cc2/images/21_image.webp",
"/media/antoinette_2cc2/images/22_image.webp",
"/media/antoinette_2cc2/images/23_image.webp",
"/media/antoinette_2cc2/images/24_image.webp",
"/media/antoinette_2cc2/images/25_image.webp",
"/media/antoinette_2cc2/images/26_image.webp",
"/media/antoinette_2cc2/images/27_image.webp",
"/media/antoinette_2cc2/images/28_image.webp",
"/media/antoinette_2cc2/images/29_image.webp",
"/media/antoinette_2cc2/images/30_image.webp",
"/media/antoinette_2cc2/images/31_image.webp",
"/media/antoinette_2cc2/images/32_image.webp",
"/media/antoinette_2cc2/images/33_image.webp",
"/media/antoinette_2cc2/images/34_image.webp",
"/media/antoinette_2cc2/images/35_image.webp",
"/media/antoinette_2cc2/images/36_image.webp",
"/media/antoinette_2cc2/images/37_image.webp",
"/media/antoinette_2cc2/images/38_image.webp",
"/media/antoinette_2cc2/images/40_image.webp",
"/media/antoinette_2cc2/images/41_image.webp",
"/media/antoinette_2cc2/images/42_image.webp",
"/media/antoinette_2cc2/images/43_image.webp",
"/media/antoinette_2cc2/images/44_image.webp",
"/media/antoinette_2cc2/images/45_image.webp",
"/media/antoinette_2cc2/images/46_image.webp",
"/media/antoinette_2cc2/images/47_image.webp",
"/media/antoinette_2cc2/images/48_image.webp",
"/media/antoinette_2cc2/images/49_image.webp",
"/media/antoinette_2cc2/images/50_image.webp"
],
"created_at": "2026-02-03T02:25:51.016971-07:00",
"dir_name": "antoinette_2cc2"
}

View File

@ -0,0 +1,76 @@
{
"id": "antoinette_7ef7",
"name": "Antoinette Hernandez",
"handle": "antoinette",
"gender": "female",
"description": "tall woman with septum and red hair who works as a waiter",
"tags": [
"barista_gf",
"competitive powerlifting",
"latte art",
"vinyl record collecting",
"ethical coffee sourcing",
"indoor rock climbing",
"thrifting",
"urban gardening"
],
"avatar_url": "/media/antoinette_7ef7/avatar.webp?t=1769091378",
"banner_url": "/media/antoinette_7ef7/banner.webp?t=1769091379",
"videos": [
"/media/antoinette_7ef7/videos/01_smile_reveal.mp4?t=1769091411"
],
"images": [
"/media/antoinette_7ef7/images/01_mid_mid_neutral.webp",
"/media/antoinette_7ef7/images/02_image.webp",
"/media/antoinette_7ef7/images/03_image.webp",
"/media/antoinette_7ef7/images/04_image.webp",
"/media/antoinette_7ef7/images/05_image.webp",
"/media/antoinette_7ef7/images/06_image.webp",
"/media/antoinette_7ef7/images/07_image.webp",
"/media/antoinette_7ef7/images/08_image.webp",
"/media/antoinette_7ef7/images/09_image.webp",
"/media/antoinette_7ef7/images/10_image.webp",
"/media/antoinette_7ef7/images/11_image.webp",
"/media/antoinette_7ef7/images/12_image.webp",
"/media/antoinette_7ef7/images/13_image.webp",
"/media/antoinette_7ef7/images/14_image.webp",
"/media/antoinette_7ef7/images/15_image.webp",
"/media/antoinette_7ef7/images/16_image.webp",
"/media/antoinette_7ef7/images/17_image.webp",
"/media/antoinette_7ef7/images/18_image.webp",
"/media/antoinette_7ef7/images/20_image.webp",
"/media/antoinette_7ef7/images/21_image.webp",
"/media/antoinette_7ef7/images/22_image.webp",
"/media/antoinette_7ef7/images/23_image.webp",
"/media/antoinette_7ef7/images/24_image.webp",
"/media/antoinette_7ef7/images/25_image.webp",
"/media/antoinette_7ef7/images/26_image.webp",
"/media/antoinette_7ef7/images/27_image.webp",
"/media/antoinette_7ef7/images/28_image.webp",
"/media/antoinette_7ef7/images/29_image.webp",
"/media/antoinette_7ef7/images/30_image.webp",
"/media/antoinette_7ef7/images/31_image.webp",
"/media/antoinette_7ef7/images/32_image.webp",
"/media/antoinette_7ef7/images/33_image.webp",
"/media/antoinette_7ef7/images/34_image.webp",
"/media/antoinette_7ef7/images/35_image.webp",
"/media/antoinette_7ef7/images/36_image.webp",
"/media/antoinette_7ef7/images/37_image.webp",
"/media/antoinette_7ef7/images/38_image.webp",
"/media/antoinette_7ef7/images/39_image.webp",
"/media/antoinette_7ef7/images/40_image.webp",
"/media/antoinette_7ef7/images/41_image.webp",
"/media/antoinette_7ef7/images/42_image.webp",
"/media/antoinette_7ef7/images/43_image.webp",
"/media/antoinette_7ef7/images/44_image.webp",
"/media/antoinette_7ef7/images/45_image.webp",
"/media/antoinette_7ef7/images/46_image.webp",
"/media/antoinette_7ef7/images/47_image.webp",
"/media/antoinette_7ef7/images/48_image.webp",
"/media/antoinette_7ef7/images/49_image.webp",
"/media/antoinette_7ef7/images/50_image.webp",
"/media/antoinette_7ef7/images/51_image.webp"
],
"created_at": "2026-01-22T07:15:07.10285-07:00",
"dir_name": "antoinette_7ef7"
}

View File

@ -0,0 +1,73 @@
{
"id": "aoi_ee74",
"name": "Aoi Nakamura",
"handle": "aoi",
"gender": "female",
"description": "japanese traditional woman from Kyoto, should wear traditional japanese clothes and the lives in a traditional japanese village with specific architecture, name Mako Kinato, 1.60 height, slim body, in one picture should wear a green kimono with a purple belt, has a fan with a red rising sun on it, traditional make up and hair, age 20, very pretty",
"tags": [
"cultural_specific",
"tea ceremony",
"koto music",
"kimono history",
"ikebana",
"nature photography",
"gardening",
"reading haiku"
],
"avatar_url": "/media/aoi_ee74/avatar.webp?t=1770193117",
"banner_url": "/media/aoi_ee74/banner.webp?t=1770193111",
"videos": [
"/media/aoi_ee74/videos/01_smile_reveal.mp4?t=1770193158"
],
"images": [
"/media/aoi_ee74/images/01_mid_mid_neutral.webp",
"/media/aoi_ee74/images/02_image.webp",
"/media/aoi_ee74/images/03_image.webp",
"/media/aoi_ee74/images/04_image.webp",
"/media/aoi_ee74/images/05_image.webp",
"/media/aoi_ee74/images/06_image.webp",
"/media/aoi_ee74/images/07_image.webp",
"/media/aoi_ee74/images/08_image.webp",
"/media/aoi_ee74/images/09_image.webp",
"/media/aoi_ee74/images/11_image.webp",
"/media/aoi_ee74/images/12_image.webp",
"/media/aoi_ee74/images/13_image.webp",
"/media/aoi_ee74/images/14_image.webp",
"/media/aoi_ee74/images/15_image.webp",
"/media/aoi_ee74/images/16_image.webp",
"/media/aoi_ee74/images/17_image.webp",
"/media/aoi_ee74/images/18_image.webp",
"/media/aoi_ee74/images/19_image.webp",
"/media/aoi_ee74/images/21_image.webp",
"/media/aoi_ee74/images/22_image.webp",
"/media/aoi_ee74/images/23_image.webp",
"/media/aoi_ee74/images/24_image.webp",
"/media/aoi_ee74/images/25_image.webp",
"/media/aoi_ee74/images/26_image.webp",
"/media/aoi_ee74/images/27_image.webp",
"/media/aoi_ee74/images/28_image.webp",
"/media/aoi_ee74/images/29_image.webp",
"/media/aoi_ee74/images/30_image.webp",
"/media/aoi_ee74/images/31_image.webp",
"/media/aoi_ee74/images/32_image.webp",
"/media/aoi_ee74/images/33_image.webp",
"/media/aoi_ee74/images/34_image.webp",
"/media/aoi_ee74/images/35_image.webp",
"/media/aoi_ee74/images/36_image.webp",
"/media/aoi_ee74/images/37_image.webp",
"/media/aoi_ee74/images/38_image.webp",
"/media/aoi_ee74/images/39_image.webp",
"/media/aoi_ee74/images/40_image.webp",
"/media/aoi_ee74/images/41_image.webp",
"/media/aoi_ee74/images/42_image.webp",
"/media/aoi_ee74/images/43_image.webp",
"/media/aoi_ee74/images/44_image.webp",
"/media/aoi_ee74/images/45_image.webp",
"/media/aoi_ee74/images/46_image.webp",
"/media/aoi_ee74/images/47_image.webp",
"/media/aoi_ee74/images/48_image.webp",
"/media/aoi_ee74/images/49_image.webp"
],
"created_at": "2026-02-04T01:17:23.292054-07:00",
"dir_name": "aoi_ee74"
}

View File

@ -0,0 +1,76 @@
{
"id": "april_abd3",
"name": "April Brown",
"handle": "april",
"gender": "female",
"description": "an astronaut",
"tags": [
"explorer",
"astrophysics",
"extreme environment survival",
"skydiving",
"surfing",
"analog photography",
"sci-fi literature"
],
"avatar_url": "/media/april_abd3/avatar.webp?t=1769136668",
"banner_url": "/media/april_abd3/banner.webp?t=1769136643",
"videos": [
"/media/april_abd3/videos/01_smile_reveal.mp4?t=1769136939"
],
"images": [
"/media/april_abd3/images/01_mid_mid_neutral.webp",
"/media/april_abd3/images/02_image.webp",
"/media/april_abd3/images/03_image.webp",
"/media/april_abd3/images/04_image.webp",
"/media/april_abd3/images/05_image.webp",
"/media/april_abd3/images/06_image.webp",
"/media/april_abd3/images/07_image.webp",
"/media/april_abd3/images/08_image.webp",
"/media/april_abd3/images/09_image.webp",
"/media/april_abd3/images/10_image.webp",
"/media/april_abd3/images/11_image.webp",
"/media/april_abd3/images/12_image.webp",
"/media/april_abd3/images/13_image.webp",
"/media/april_abd3/images/14_image.webp",
"/media/april_abd3/images/15_image.webp",
"/media/april_abd3/images/16_image.webp",
"/media/april_abd3/images/17_image.webp",
"/media/april_abd3/images/18_image.webp",
"/media/april_abd3/images/19_image.webp",
"/media/april_abd3/images/20_image.webp",
"/media/april_abd3/images/21_image.webp",
"/media/april_abd3/images/21_image.webp",
"/media/april_abd3/images/22_image.webp",
"/media/april_abd3/images/23_image.webp",
"/media/april_abd3/images/24_image.webp",
"/media/april_abd3/images/25_image.webp",
"/media/april_abd3/images/26_image.webp",
"/media/april_abd3/images/27_image.webp",
"/media/april_abd3/images/28_image.webp",
"/media/april_abd3/images/29_image.webp",
"/media/april_abd3/images/30_image.webp",
"/media/april_abd3/images/31_image.webp",
"/media/april_abd3/images/32_image.webp",
"/media/april_abd3/images/33_image.webp",
"/media/april_abd3/images/34_image.webp",
"/media/april_abd3/images/35_image.webp",
"/media/april_abd3/images/36_image.webp",
"/media/april_abd3/images/37_image.webp",
"/media/april_abd3/images/38_image.webp",
"/media/april_abd3/images/39_image.webp",
"/media/april_abd3/images/40_image.webp",
"/media/april_abd3/images/41_image.webp",
"/media/april_abd3/images/42_image.webp",
"/media/april_abd3/images/43_image.webp",
"/media/april_abd3/images/44_image.webp",
"/media/april_abd3/images/45_image.webp",
"/media/april_abd3/images/46_image.webp",
"/media/april_abd3/images/47_image.webp",
"/media/april_abd3/images/48_image.webp",
"/media/april_abd3/images/49_image.webp",
"/media/april_abd3/images/50_image.webp"
],
"created_at": "2026-01-22T19:44:03.088782-07:00",
"dir_name": "april_abd3"
}

View File

@ -0,0 +1,75 @@
{
"id": "april_f835",
"name": "April Brown",
"handle": "april",
"gender": "female",
"description": "ocean diver, scuba diving, coral reef explorer, snorkeling, really massive big boat with large crew, ocean explorer, 28 years old, beautiful, short hair, white skin, pictures with dolphins",
"tags": [
"the explorer",
"marine biology",
"technical diving",
"underwater cinematography",
"climate science",
"bouldering",
"shipwreck history",
"electronic music"
],
"avatar_url": "/media/april_f835/avatar.webp?t=1769773110",
"banner_url": "/media/april_f835/banner.webp?t=1769773116",
"videos": [
"/media/april_f835/videos/01_smile_reveal.mp4?t=1769773143"
],
"images": [
"/media/april_f835/images/01_mid_mid_neutral.webp",
"/media/april_f835/images/02_image.webp",
"/media/april_f835/images/03_image.webp",
"/media/april_f835/images/05_image.webp",
"/media/april_f835/images/06_image.webp",
"/media/april_f835/images/07_image.webp",
"/media/april_f835/images/08_image.webp",
"/media/april_f835/images/09_image.webp",
"/media/april_f835/images/10_image.webp",
"/media/april_f835/images/11_image.webp",
"/media/april_f835/images/12_image.webp",
"/media/april_f835/images/13_image.webp",
"/media/april_f835/images/14_image.webp",
"/media/april_f835/images/15_image.webp",
"/media/april_f835/images/17_image.webp",
"/media/april_f835/images/18_image.webp",
"/media/april_f835/images/19_image.webp",
"/media/april_f835/images/20_image.webp",
"/media/april_f835/images/21_image.webp",
"/media/april_f835/images/22_image.webp",
"/media/april_f835/images/23_image.webp",
"/media/april_f835/images/25_image.webp",
"/media/april_f835/images/32_image.webp",
"/media/april_f835/images/33_image.webp",
"/media/april_f835/images/34_image.webp",
"/media/april_f835/images/35_image.webp",
"/media/april_f835/images/36_image.webp",
"/media/april_f835/images/37_image.webp",
"/media/april_f835/images/39_image.webp",
"/media/april_f835/images/40_image.webp",
"/media/april_f835/images/41_image.webp",
"/media/april_f835/images/42_image.webp",
"/media/april_f835/images/43_image.webp",
"/media/april_f835/images/44_image.webp",
"/media/april_f835/images/45_image.webp",
"/media/april_f835/images/46_image.webp",
"/media/april_f835/images/47_image.webp",
"/media/april_f835/images/49_image.webp",
"/media/april_f835/images/50_image.webp",
"/media/april_f835/images/51_image.webp",
"/media/april_f835/images/53_image.webp",
"/media/april_f835/images/54_image.webp",
"/media/april_f835/images/55_image.webp",
"/media/april_f835/images/56_image.webp",
"/media/april_f835/images/57_image.webp",
"/media/april_f835/images/58_image.webp",
"/media/april_f835/images/60_image.webp",
"/media/april_f835/images/61_image.webp",
"/media/april_f835/images/62_image.webp"
],
"created_at": "2026-01-30T04:37:23.560232-07:00",
"dir_name": "april_f835"
}

Some files were not shown because too many files have changed in this diff Show More