Discover
You're all caught up.
No one new nearby right now — check back later.
How swipes work
Like someone to show interest, or pass to see the next profile.
Rewind availability depends on your plan. Super Like credits stay spent when undone.
My profile
This is how people get to know you.
About you
Active profiles also need an approved photo to appear in Discover.
Discovery preferences
Choose who you would like to meet. Save changes to apply these preferences.
Your location
Used to find nearby people and venues. Your exact coordinates are private.
No location loaded yet.
Device location refreshes when you sign in, refresh Discover, or return to Discover. This button requests a fresh reading and saves it immediately.
Advanced location settings
For testing, enter coordinates manually. These are separate from the city on your profile.
Enable before saving a long-distance move.
Profile verification Not verified
Pass a short camera check to earn a blue tick. This confirms a camera check was passed; it does not compare your face with your photos or verify your identity. Changing your photos removes the tick until you verify again.
Upload a photo and wait for approval first. Camera frames are processed temporarily by Hushy and discarded.
More about me
Choose the options that describe you. All answers are optional and appear on your public profile. Leave a field blank to keep it private.
Optional. Choosing an answer here shares it on your profile. Leave it blank if you prefer not to share.
Interests 0 of 10 selected
Cosmic Connections
Your Sun, Moon and Rising. A little more to connect over.
Optional. Just for fun. Your birth details stay private.Private details
Private, encrypted, only ever visible to you.
Reputation badges
Positive-only, earned from post-date feedback your dates submitted about you. Only badges you currently hold are ever shown -- there is no negative badge.
Dirty Little Secret
Something you'd only tell the right person. Encrypted, private, and reviewed automatically before it can ever influence who you're matched with.
Matching verification
Check how Spark contributes to your recommendations. Comparing a profile does not send a like or create a match.
- Ranking
- Not checked
- Your secret
- Not checked
- Spark in ranking
- Not checked
Choose Check setup to read the current server configuration.
Secret similarity is one recommendation signal, not a prediction of relationship success. Your secret text stays private.
Account settings
My plan
The features available on your current plan. Features that are temporarily disabled are hidden until they become available again.
Push notifications
Requires a real signed-in session (not the debug login) -- notification preferences are owned by identity-api.
Security and safety alerts are essential: they are always delivered, even when notifications are muted. Push text is generic by default and never shows message or secret content.
Push pipeline (local test)
Queues a real SEND_PUSH job for the account this console is acting as, lets the worker deliver it, and shows what happened. Push is only a hint: your messages, matches and dates never depend on it. Provider overrides are local-only and expire after 1 hour.
Coalescing rule: the first message pushes now; further messages in the same conversation within the window (default 30 s) are counted and sent as ONE trailing push saying "You have N new messages." (a count, never content). Stale jobs (older than the type's TTL, e.g. date reminders 1 h) are dropped unsent. The "dead token" provider mode disables the account's real registered devices.
What the worker decided
| Time | Type | Outcome | Msgs | Detail |
|---|
Coalescing state (per conversation)
| Conversation | Last push | Held back | Trailing push queued | Last notified message |
|---|
Jobs
| Type | Status | Attempts | Next try | Last error |
|---|
Job queue lab (local test)
The durable PostgreSQL job queue (worker.background_jobs) with three independent worker pools: realtime (pushes, deadline transitions), scheduled and heavy. Use the scenario buttons below -- each one says what it proves and what you should see. The jobs do nothing but sleep or fail on purpose.
Scenarios (one click each)
Custom job batch
Dead jobs and alerts (operators use the Admin app)
Jobs that fail permanently become DEAD. Staff inspect, retry or cancel them in the Admin app → Job Queue (localhost:8091, log in with the dev admin token dev-secret; the dev support token dev-support-secret can look but not change). The alert drill lowers the alert thresholds for 15 minutes so a small backlog or a few dead jobs trigger the real alerts within seconds.
| Severity | Alert | Where | State | What |
|---|
Notifications the evaluator sent
| Time | Kind | Message | Sent |
|---|
Queues
| Queue | Pending | Due now | Running | Expired leases | Completed | Dead | Oldest due waiting | Queue limit |
|---|
Worker processes
| Worker | Queue | Last heartbeat |
|---|
Lab batches
| Batch | Queue | Total | Pending | Running | Done | Dead | Re-run | Waited to start, 1st attempt (avg / max) | Next retry | Last error | Finished by (jobs per worker slot) |
|---|
Business effects applied (idempotency ledger)
| Effect | Times the job tried it | Times it really happened |
|---|
Indexes on the job table
| Index | Size | Definition |
|---|
Domain events - transactional outbox (local test)
Important things that happen (a match is created, a date is planned, a safety report is filed, an account is deleted) are written as an event in the same database transaction as the change itself, so the two always commit or roll back together. A background relay then delivers each event to its consumers, at least once, with retries. Real events appear below as you use the app; the scenarios create harmless test events.
Scenarios (one click each)
Events and who received them
| Time | Event | Aggregate | Delivery status | Per consumer |
|---|
Side effects: tried vs really happened
| Effect | Times the consumer tried it | Times it really happened |
|---|
Match timeline (built by a consumer from real match events)
| Time | Match | Event | State | Aggregate version |
|---|
Consent history
Runtime config (operator only)
Not an end-user feature -- this calls the internal, token-gated /internal/v1/runtime-config admin API (see HUSHY_RUNTIME_CONFIG_ADMIN_TOKENS). For ops/support testing only.
Security
Change password and email verification
These actions affect active sessions and account access.
Account lifecycle
Server-authoritative lifecycle controls for local testing. Erasure removes ordinary product data and preserves lawful safety evidence.
Privacy requests
Request a copy of your data or review your access information. Choose JSON or CSV for the files inside the ZIP; this choice applies to each new export or access request. Archives are prepared in the background, encrypted, and available for a limited time. When ready, select Download ZIP. Rectification supports profile and preference fields only.
Correct profile or preference data
Enter a JSON object containing only fields to change. Supported fields include displayName, bio, gender, city, interestedIn, prompts, dateIdeas, heightCm, education, familyPlans, communicationStyle, loveLanguage, interests, ageRangeMin, ageRangeMax, datingIntention, and relationshipType.
Only the fields you include will be updated. Do not include credentials, private contact details, location, or safety information.Safety Center
Private safety guidance and your match history.
Safety guidance
Match history
Likes you
Accounts that liked you and haven't matched yet. Blocked/banned/paused likers, already-matched accounts, and anyone you've already swiped on never appear here.
Report a profile
Chats
A little more to discover about you two.
Just for fun. You choose what to send.Match countdown (server clock)
State and 14-day deadlines come from the server (GET /v1/matches/:id/countdown). Remaining time is counted against the server's clock, not this browser's.
Post-date feedback
Only submittable once this match has reached POST_DATE. Your feedback is confidential — your match can never see it.