SparkSpark

Changelog

What changed in Spark.

A plain-English log of product updates across the mobile app, website, API, and AI systems. Internal admin-only work is left out unless it changes the product experience.

More reliable access and more natural check-ins

Spark now handles brief service interruptions without pretending you were signed out, keeps relationship roles from becoming awkward reasons to reach out, and makes completed outreach clearer in contact history.

Mobile

The Android contact picker no longer closes Spark

On newer Android phones, choosing a contact during setup could close the app before the person was added. Spark now requests the access Android requires before opening the picker. If access is declined, setup moves to manual entry instead of ending abruptly.

Reliability

A brief outage no longer looks like a logout

When Spark cannot reach the service, the app now keeps your local session and offers a retry instead of sending you to Sign In. A genuinely expired or revoked session still returns to Sign In.

AI

Family roles set the tone without becoming the topic

Knowing that someone is your daughter, parent, or sibling helps Spark sound appropriately familiar, but that role alone is no longer treated as a reason to contact them. Spark also explicitly refuses to invent setups such as claiming one person mentioned another.

Mobile

Interaction history explains completed outreach

Completing a text or email suggestion now records the correct channel. History also identifies Spark suggestions and calendar-derived interactions, while an unspecified completed suggestion reads “Outreach completed” instead of the unexplained “Other.”

Contact bios say who someone is again

Bios had gone thin, and some had disappeared entirely. Two separate causes: a bio that failed a quality check was being deleted rather than left alone, and the instructions behind the writing asked for brevity over substance. Both are fixed, and bios now carry what you would want to know in the moment before you call someone.

AI

A bio is no longer deleted when Spark cannot improve it

When Spark re-wrote a bio and the new version did not pass its own quality check, the bio you already had was removed instead of kept. That turned a failed rewrite into a blank space, including for people with plenty on file. The stored bio is now re-checked and kept when it still holds up. Text that cannot pass on its own is still removed, and a contact Spark has nothing on still has no bio, because there is nothing truthful to write.

AI

Bios carry the details you actually want

The writing instructions asked for one or two sentences and to prefer brevity over using the space available, and that is exactly what came back: an average of 146 characters against a 600 character limit, with facts left on the floor. Spark was citing four things it knew about someone and using two. A bio is what you read in the moment before you call, message, or walk in, so it now covers what they do and where, how you know them, the people closest to them, and what they care about. Interests in particular were the first thing brevity cut, and they are usually what you open with.

AI

Bios still will not go stale or tell you what to do

Longer bios raise the odds of two things a bio should never contain: a detail that is true this week and wrong the next, and advice about how to manage the relationship. Both are still refused outright, and the checks that refuse them were widened after one phrasing slipped through.

Ask Spark to show you something

Spark could always tell you what it knew. Now it can show you: ask about a person, your reminders, or what is on the calendar and a card comes back with the answer laid out, in the chat and out loud in voice alike.

AI

Cards that show rather than ask

Ask "show me what you know about Joe" and you get a card - who they are, how you know them, when you last spoke, a few highlights, and what is coming up. Same for "what reminders are set for today" and "what events are this week", including a named one like "the event for Jane's birthday". Spark still answers in words as well, so nothing is lost if you are not looking at the screen.

AI

Reminders you can check before they are set

When you set a reminder without saying exactly when - "remind me to follow up sometime next week" - Spark now proposes it on an editable card with its best guess at the time, so a wrong guess is a tap to fix rather than a reminder that fires on the wrong day. Tell it a specific time and it just files it, as before.

Mobile

Widgets are no longer squeezed into the voice sheet

A long email draft in voice mode was boxed into the bottom sheet with its shadow sliced off, and the message scrolled inside a small window with the greeting out of sight. Widgets now open over the whole screen, size themselves to what they contain, and scroll as one piece.

Mobile

Spark answers when you tap, not just when it finishes

Tapping Send, Refresh or Add on a card in voice mode was silent until the work finished, which could be several seconds with the phone face down and no way to tell whether the tap registered. Spark now says it has got it and what it is doing, then tells you the result.

AI

Photos you share actually arrive

Sharing a photo in voice mode failed outright: the picture was labelled with the wrong file type on its way out and rejected before Spark ever saw it. Photos now go through correctly, and Spark thanks you for it and tells you what it found rather than insisting it never received anything.

AI

Spark will not send a message you did not approve

With a draft on screen, Spark could decide on its own that you had approved it: the message went to your mail or texting app without you having heard or agreed to it. Approving now requires you to have actually spoken since the card appeared, so Spark cannot answer on your behalf. A request that merely contains a word like "send" no longer counts either, which had let "send Bruce a text about the game" go out as the draft already waiting for somebody else.

AI

You can keep talking while Spark works

The composer used to lock while Spark was thinking, so a correction had to wait until it finished. Anything you send now is folded into the work already in progress and treated as your latest word on it, so changing your mind mid-task no longer means starting over. Saying stop still stops it. Two quick sends at the start of a conversation also no longer create two separate conversations, which used to leave the second message somewhere you would never see it.

AI

Spark tells you it is still working

After handing something off, Spark went quiet and the screen said it was listening, so a job that was still running looked like one that had been forgotten. It now says it is working for as long as it actually is, and says so out loud when something takes a while. If a job does get stuck, Spark says that too instead of waiting forever.

Mobile

Fewer, more useful notifications from Spark

Voice conversations sent a notification after every single exchange, because answers you had already been told out loud were never marked as read. That is fixed, and the notifications that do arrive now carry the reply itself instead of "your answer is ready".

Talking to Spark now does what typing to it does

Voice mode had been a thinner version of the chat: anything Spark drafted or proposed out loud existed only in the database with no way to see or approve it, finished work was never announced, and asking it to merge two contacts quietly did nothing at all. Voice now shows the same cards, takes your answer out loud, and says when it is done.

AI

Spark says when it has finished

Spark would say "I'll let you know once it's done" and then never let you know - the work had usually finished seconds later. A completed job was being reported back to voice as still in progress, so voice kept waiting for an ending that had already happened and never read out the result. Asking "is it done?" worked, because that fetched the answer directly, which is why it only ever reported when prompted.

AI

Merging duplicate contacts by voice

Asking Spark out loud to merge two records did nothing. The request was being handled by the part of Spark that files new details rather than the part that edits existing ones, and filing has no idea what merging is - so it asked which person you meant and stopped, having changed nothing. It merges now. Saying "those are the same person" when Spark asks which one you meant also turns into a merge rather than the same question again.

AI

Drafts, reminders and events appear while you talk

Anything Spark produced by voice used to have nowhere to go. A drafted message or a proposed reminder was created and then sat unreachable, because voice could only ever show you a list of people to choose from. Every card the chat can show now appears in voice too, arriving with a nudge so you notice it if you are not looking at the screen.

AI

Answering out loud

You can now say "send it", "try again" or "not now" instead of reaching for the screen. Spark reads out the message it actually wrote, word for word, and sends exactly what it read - it had been previewing a message of its own invention aloud while a different one was queued to send.

AI

Sharing a photo by voice

Saying you wanted to show Spark a picture got a friendly "go ahead" and nothing else, since there is no way to attach anything while talking. Asking now opens a picker, and the photo goes to Spark the same way it does from the chat.

AI

When two people share a name

Spark sometimes asked which of several people you meant and then finished the job anyway, leaving a question with no way to answer it - your reply went nowhere and what you had told it was lost. It now waits properly with the names side by side. It also no longer claims you have "a few contacts named Andrew" when what you actually have is one Andrew and one Andy.

AI

Voice keeps the thread when you switch to it

Opening voice from a contact, or from a filtered list, used to lose track of who or what you were looking at, so the same question answered worse out loud than typed. That context now carries over, and the conversation is one history: what you said by voice is in the chat afterwards, and can be undone from there.

Questions about your whole contact book

Spark was told to look things up with a tool it could not actually reach, so questions like "how many contacts do I have" or "who lives in Norfolk" got answered from memory or not at all. It can reach it now.

AI

Spark can answer questions about your contact book

Anything about the book as a whole rather than one person - how many contacts you have, which of them live in a particular town or work somewhere, whose birthday falls in March, who you have not spoken to since spring - now runs a real query against your own data instead of being guessed at or deflected. Spark had been given the instructions for this without being given the tool, so it either estimated or asked you to narrow things down.

AI

Asking Spark to delete a contact now works

Spark knew to confirm before deleting someone for good, but had no way to actually do it once you said yes. It can now, and only when you ask in as many words.

AI

Fixing a name from About Me

Spark could create a person while you were filling in your own profile but could not correct one afterwards, so a misheard surname had to be fixed from the contact's own page.

The app can report its own problems again

Two parts of the app were writing to the same local database at the same moment and getting locked out, which put a database error on screen at launch and stopped anything being recorded about what went wrong. Both are fixed, and diagnostics now report their own failures instead of going quiet.

Mobile

No more "database is locked" on launch

Two pieces of the app opened the same local file separately and raced each other for the write lock, so launching could surface a database error - and, before the previous fix, could fail every request the app made. They now share one connection and take turns.

Reliability

Diagnostics say when they are broken

Recording what the app is doing is meant to be invisible and must never interrupt you, and that had been built by discarding failures entirely - so a pipeline that had never once delivered anything looked exactly like a healthy one. Nothing had been recorded for weeks and nothing said so. Failures are now kept and reported on the next launch, which is the first launch able to report them.

Reliability

One bad record no longer blocks the rest

Diagnostics are held on the device until they can be sent. A single record the server would refuse used to stop everything queued behind it, permanently, because the whole batch was rejected before it ever left the phone - one mistyped number blocked several hundred records indefinitely. Records are now checked and repaired where possible as they leave the queue, anything unusable is set aside with a reason, and a backlog sends in one go rather than a handful every fifteen seconds.

Help that points somewhere

The help page was called "Help & feedback" but sending feedback had already moved to the menu, so the name promised something the page no longer did. It is now just Help, and it links to the full screen-by-screen docs rather than making you go looking for them.

Mobile

Help now links to the docs

There are written guides for every main screen - Home, Today, Contacts, a contact page, About Me, Steward - and nothing in the app pointed at them. Help now does, alongside the FAQ, the privacy promise, and the support center. Contact support sits at the bottom, after Legal, because it is the last resort rather than the first thing to try.

Mobile

The menu reads in a sensible order

Help, Send feedback, Rate Spark, Share Spark - roughly in the order you would want them: get unstuck, tell us it is broken, say it is good, pass it on. Previously Rate Spark sat above the help you were probably looking for.

Notifications that say something

Push notifications used to be deliberately vague - "Open Spark to see what's coming up" - so they never named anyone. They now say what is actually waiting, and tapping one takes you to it. Plus a fix for check-ins that spoke about people you know as though you had just found them.

Mobile

Notifications now tell you what they are about

Every push was written to reveal nothing: reminders, events and the daily list all read as some version of "open Spark". That was a privacy decision, and the trade was a bad one for an app about specific people - so notifications now carry their real content. "Danielle's birthday is tomorrow" instead of "Open Spark to see what's coming up". If you would rather your lock screen stayed quiet about it, iOS and Android both let you hide previews for an app while still showing that something arrived.

AI

Spark tells you when it has finished thinking

Asking Spark something can take half a minute, and if you left the app the answer just sat there until you happened to look again. You now get a notification when it lands, and tapping it reopens that conversation where you left off. If Spark could not finish, it says so rather than leaving you waiting.

Mobile

Imports let you know when they are done

Bringing in your contacts takes about a minute and has taken thirteen, which is long enough to put the phone down - and nothing told you when it finished. Now something does, whether you imported from your phone or from a file.

AI

Check-ins no longer talk like you have never met

A check-in built from your own saved note about someone opened by claiming to have just come across their business - which reads like cold outreach to a stranger you have known for years. Spark now refuses drafts that present what you already know as a discovery. Genuine news is still allowed to be news.

AI

Things happening near you are worth mentioning before they happen

A fair that opens Friday or a festival this weekend was thrown out for being dated in the future, because the freshness checks were written for events that had already happened. Local events now come through, and stay available until the day after they occur rather than expiring while they are still upcoming.

Mobile

Long bios are no longer cut off

A contact's bio stopped mid-sentence with nothing to show there was more. The text was always complete - the screen was clipping it.

Asking a better question

Spark was searching for a place's latest news, which is mostly crime and politics, and then discarding what came back. It now asks what a town is celebrating instead. Across six measured runs that nearly tripled the number of people Spark has something current to say about.

AI

Searching for what a place is celebrating, not its headlines

Every topic gets one search unless it earns more, and that search was for the topic's "latest news this week". For a city that returns crime, accidents and politics - the one kind of news Spark will never bring up - so the busiest topics reliably produced nothing. A more useful query existed but ran third, behind two that came first, which in practice meant it never ran. Places are now searched for festivals, openings, anniversaries and celebrations, and industries for launches, awards and expansions. Measured across six runs, the number of contacts Spark had current news for went from 8 to 22.

AI

An injury report is not bad news

Spark screens news for anything upsetting by looking for certain words, and a single match anywhere was enough to discard a story. That threw away a roster move mentioning injured reserve, a weekly injury report, a police department expanding its youth crisis response programs, and a submarine returning to service - the last because its class is called an attack submarine. Those words are now read in context. Genuinely difficult news is still filtered out, and a player actually getting hurt still is.

AI

News about a different school no longer reaches you

A story about William & Mary was written up as news about Villanova, because the researcher was asked whether an item was on topic and got it wrong. When the topic is a specific place, employer, team or person, Spark now checks that the story actually names it before using it.

AI

Topics that matter to more of your people get looked at harder

How deeply Spark searches a topic ignored how many of your contacts share it. A city that a dozen of your people live in was researched no more thoroughly than a single contact's employer, even though one story about it is worth telling all twelve. Widely shared topics now earn a second angle.

Chasing down the article

When research finds a real story but can only point at a publisher's front page, Spark now goes back and looks for the article itself. And a topic learned about a contact this evening is researched tonight instead of waiting for tomorrow.

AI

A second look for the story behind a bad link

Research regularly found a genuine story - a Vatican statement, a preseason result, a new restaurant opening - and then cited the publisher's home page for it, which Spark refuses because a front page is not evidence of anything. Those stories were thrown away. Spark now spends one more search looking for the article itself, and only accepts a page that actually reports the same event. It cannot use this to slip in older news: the event's own date is kept from the first pass, and every freshness and quality check runs again afterwards.

AI

Tonight's new topics are researched tonight

Spark works out what matters to a contact in the evening, then researches news against that list overnight. The two were running in the wrong order: the news list was locked in a few hours before the evening's discoveries were made, so anything newly learned about a contact sat out a full cycle and waited about 21 hours for its first research. Discovery now runs ahead of the nightly research for every US timezone.

Reliability

An early run is no longer logged as a failure

A Today list built before the night's research could even start was recorded as research having missed its deadline, which is the same signal used to spot genuine research problems. Being early is now reported as its own thing, so the failure count means what it says.

Small news counts too

Spark was holding news to the standard of a story big enough to interrupt your week, then only ever using it to open a check-in that was already going out. Minor local news now clears that bar, and real stories are no longer discarded for having an untidy link.

AI

A rezoning vote is not big news, and is fine to talk about

Deciding whether news was worth mentioning leaned a quarter of its weight on how objectively important the event was. That is the right question for interrupting someone's normal rhythm, and the wrong one for opening a check-in Spark had already decided to send - so a ribbon-cutting, a routine hire, or a city council vote had to clear a bar built for championship wins. Importance is still judged, but only where it belongs: deciding whether something is big enough to reach out ahead of schedule.

AI

Real stories stopped being thrown out over a messy link

The researcher was told to withhold an event entirely if it could not produce a clean article link with verified dates - checks Spark already performs itself a moment later. So a genuine story with an untidy source was replaced by a blank placeholder before anything could record that it had been found, leaving it indistinguishable from a week with no news. A library opening, a university's convocation, and a ship returning from deployment were all lost this way. The researcher now reports what it found and lets Spark rule on the sourcing.

AI

Publishers that number their articles are reachable again

Spark confirms a link really points at the story it claims by looking for words from the headline in the web address. Outlets that identify articles by number rather than by title - ".../local-news/927996" - have no words to match, so every one of their stories failed that check no matter what it was about. Spark now recognises when an address cannot answer the question and lets its other source checks decide.

Reliability

Rejected news is now auditable

When research discarded a story, only the single headline reason was kept, and the dates and scores that produced it were not recorded at all - so it was impossible to tell a correctly-aged rejection from a miscalculated one, or a genuinely quiet week from a story that was found and dropped. Every reason is now stored alongside the evidence it was based on.

Check-ins that know who you are talking to

A replay of real accounts turned up drafts asking people about themselves, good drafts being thrown away over a shared word, and local news that was never reaching you. All fixed, and Power accounts now get the volume the tier promises.

AI

No more asking your sister about her sister

When a contact is related to you rather than to someone else, Spark stored that as "sister" with no second name attached - and then wrote to her as though the sister were a third person. The same slip ran the other way for relatives of relatives, so a daughter was asked how her daughter was doing. Spark now keeps track of which side of a relationship each person is on.

AI

Good drafts stopped being thrown away over a shared word

Spark checks that a draft sticks to one subject by comparing it against everything else it knows about a contact. Because every message opens with the person's name, and every saved note mentions them too, the name counted as a match on its own - so one incidental word like "busy" was enough to discard a perfectly good message. Names are no longer counted, and drafts refused this way now reach you.

AI

News about where people live, and where they studied

Local news and news about someone's university were being filtered out before research ever ran, so check-ins leaned almost entirely on employers - the category least likely to be written about. A contact in Norfolk can now get the Virginia Zoo's 125th anniversary, and an alum can get their school's fall semester news.

AI

News is attributed to the right organisation

Almost every school is a "University" and almost every health system is "Healthcare", and that shared word alone was enough for Spark to attach one organisation's story to another - a rival hospital's expansion filed under your contact's employer. Spark now requires a distinctive match, and will gather nothing rather than attribute a story to the wrong place.

AI

Less of the same opening, over and over

Nearly half of all check-ins opened with some form of "curious how...", which reads like a form letter when you scan a day's list. Spark now recognises the phrasings it overuses and asks for something different once one has been used - and, importantly, an unusual opening is never treated as a repeat, so distinctive writing is never the thing that gets refused.

AI

Power accounts see the volume the tier promises

Power promises fifteen check-ins a day, but the number of drafts Spark was allowed to attempt made that arithmetically impossible - it topped out around nine no matter how many contacts were due. The attempt allowance now leaves room to reach the promise, and the daily target moves from three to seven.

AI

Spark stops reaching out about its own last message

A logged "reached out" was being used as the reason for the next check-in, so Spark wrote about the subject of the message it had just sent - and then rejected its own draft for repeating itself. It now looks past its own outreach for a real reason to write.

More of the check-ins you were promised

Daily check-ins were coming up short, and the ones grounded in real news had dried up. Both are fixed.

AI

Your daily minimum is reachable again

Spark tries a bounded number of drafts each day. Ranking could spend the whole budget before the top-up pass ran, so Power accounts saw four check-ins where five were promised. The top-up pass now has attempts reserved for it.

AI

Teams, churches, and people you follow are back in the news mix

A topic only qualified for news research if it carried a pointer to the note it came from, which the extractor never wrote. A contact who is a lifelong Bills fan now qualifies on the strength of the recorded interest itself, so news check-ins are no longer almost entirely about employers.

AI

Fewer repeats, and fewer good drafts thrown away

Spark checks whether it has already raised a subject with someone recently. That check was reading the whole drafted message, so shared small talk made unrelated subjects look identical - it blocked a note about becoming a grandparent because an earlier message mentioned the same grandchild, while letting a word-for-word repeat through twice. It now compares the subject itself, and runs before writing rather than after, so a stale angle is swapped for a fresh one instead of costing you a suggestion.

AI

Power aims for seven check-ins a day

The daily target for Power moves from five to seven. It stays a target and not a quota: a contact still needs a real reason to reach out, so Spark shows fewer rather than padding the list.

Import your data back into Spark

You can now merge a previously exported archive back into your account, with a full preview before anything is written.

Mobile

Import my data

Settings then Account can now take an archive you exported earlier and merge it back in. Spark first shows you exactly what would land, and writes only after you confirm.

Privacy

A merge, never a restore

Importing only adds. Nothing already in your account is deleted or overwritten, and re-importing the same archive a second time adds nothing new.

Notifications that tell you something

Push notifications now say how much is waiting and how soon, without putting anyone's name on your lock screen.

Mobile

Worth glancing at

Instead of “Something new in Spark,” a notification now says what is actually waiting — how many suggestions are ready for today, or how far off a reminder is.

Privacy

Still nothing about your people

Notifications carry counts and timing only. Contact names, reminder text, event locations, and drafted messages stay inside Spark, where they always have.

Evidence-reviewed contact bios

Spark now keeps contact bios factual and lasting, while filtering out sensitive note details you did not approve for bio use.

AI

More useful context at a glance

Bios now focus more carefully on durable details that help you remember a person, and stay quiet when Spark does not have enough trustworthy context.

Privacy

A choice for sensitive notes

When you write a note with a sensitive lasting detail, you can choose whether Spark may consider it for that contact's bio. Choosing yes does not guarantee it will appear.

Closer relationship monitoring

Spark now watches news connected to every AI-enabled relationship each day.

AI

Every enabled relationship gets a daily look

Spark researches every eligible shared topic connected to AI-enabled contacts each day, including people who are not due for a routine check-in.

AI

Exceptional reasons can arrive early

When strongly grounded major news creates a natural reason to reach out, Spark can suggest it before the usual cadence. You still review every draft before choosing whether to send it.

Clearer subscription details

The mobile subscription screen now keeps your current plan easy to read.

Mobile

A cleaner current-plan card

The subscription screen no longer crowds the current plan with a redundant store product label, so Free, Pro, and Power remain clear at every screen size.

Contact bios that stay true

Spark now keeps contact bios focused on lasting details about the person and your relationship.

AI

Lasting context, not expired plans

Bios no longer turn recent messages, upcoming lunches, or phrases like “tomorrow” into permanent facts. They focus on supported relationship, family, work, location, and interest details that remain useful over time.

Reliability

Quiet when context is thin

Spark leaves a bio empty instead of filling it with follow-up coaching, sales language, guesses, or reminders to capture more notes.

Better check-ins and private diagnostics

Spark now searches more deliberately for timely news while keeping privacy-bounded app diagnostics that help support investigate usage and failures.

Reliability

Support can follow the path to a problem

Warnings and errors can now be connected to an ordered history of screens and named actions from the affected app session, along with app version and device context. Explicit causal links are distinguished from nearby correlated activity.

Web

Daily usage and feature health in one place

Admins can review daily active users, sessions, foreground time, feature usage, release and device breakdowns, and error trends, then narrow any result to the matching structured sessions.

Reliability

Native crashes keep their session context

When the app closes because of a native crash, Spark can connect the crash report to the activity that preceded it and process the matching release symbols for investigation.

Reliability

More reliable private diagnostics

Private diagnostics now recover more reliably after interrupted delivery and keep native crash reports tied to the session that ended, while continuing to exclude message content and screenshots.

Privacy

Diagnostics stay bounded and deletable

Diagnostics do not record message text, drafts, searches, form values, screenshots, or session replay. Deleting an account also removes its linked usage sessions and diagnostic occurrences.

Reliability

Safer live AI settings

Spark's operational AI, news, support, and sender settings now use one audited control surface. Changes validate before saving, apply globally without a redeploy, and retain history for dependable rollback.

AI

News gets the first look

On every plan, Spark targets research at people who need a check-in, explores additional credible searches when warranted, and tries contact-specific news research before falling back to personal context.

Reliability

Stronger daily quality floors

Free, Pro, and Power now target at least 1, 3, and 5 useful check-ins respectively while continuing toward the plan limit when more quality drafts exist. Spark still prefers quiet over filler.

AI

Better sources, per person

Each daily list now aims for a practical 75% news-backed mix per user, using only recent, relevant news from defensible sources and topics the person demonstrably follows. Stronger personal context can still win, and weak news is skipped.

Stricter news, safer check-ins

Spark now applies stronger source, freshness, and safety checks to news-backed outreach while preserving a useful personal check-in when optional research cannot produce a better result.

AI

Relevant news earns its place

When Spark already has safe, timely news that genuinely fits a person, it can use that before personal context. Weak or failed optional research never removes an otherwise useful personal check-in.

AI

Better relationship and timeline judgment

Check-ins now receive additional checks for relationship direction, former employers, superseded context, sensitive changes, unsupported recency, and invented conversations.

Reliability

Fewer repeated or outdated ideas

Spark avoids resurfacing the same subject through a different note or context source and leaves a slot empty when no safe, useful message is available.

AI

Stricter evidence behind news

News must resolve to a readable direct source with consistent topic, event, and date evidence. New diagnostics show where research loses coverage so broader research can be evaluated safely before rollout.

Clearer platform availability

Spark's website now points visitors only to the currently available iPhone app while Android remains in preparation.

Web

Accurate download options

Public download buttons, platform answers, and search metadata now reflect Spark's current iPhone availability. Android will return when its Play Store release is live.

Faster AI without changing the answer

Spark now uses Anthropic's prompt cache more efficiently while preserving fresh check-ins and the full Steward experience.

AI

Fresh drafts, less repeated processing

Check-ins still use the same relationship context, model, quality checks, and daily limits. Spark now avoids paying a long cache premium when a short-lived retry cache is sufficient.

Reliability

Steward keeps its complete conversation flow

Steward continues to stream responses, use tools, and preserve conversation context while reusing stable instructions for faster, less expensive follow-up turns.

Truthful check-ins and cleaner news

Spark now protects paid check-in counts with grounded retries while rejecting invented familiarity and weak news.

AI

No invented conversations or praise

Check-ins cannot imply that you recently spoke with someone or that a contact praised the recipient unless saved relationship context explicitly supports that claim.

AI

A truthful second chance

When a context-ready idea is declined, Spark makes one constrained, quality-gated drafting attempt from the same verified context before moving on.

Reliability

Weak research does not become outreach

News now needs a direct source, consistent dates, and a usable quality grade. Repeated low-yield topics cool down longer while eligible topic collection remains uncapped.

Daily reliability without lower limits

Spark now recovers interrupted notifications and news research while preserving every plan's check-in allowance.

Reliability

Notifications resume safely

Interrupted notification campaigns resume unfinished device deliveries without knowingly sending the same alert twice, and safe Today, Contacts, and onboarding destinations still open correctly.

AI

News stays complete and bounded

Spark researches the full eligible topic set with a global five-search concurrency limit. Check-ins wait for authoritative completion so unfinished research cannot be mistaken for a complete daily pass.

AI

Variety no longer beats quality

A different news angle is selected only when it is close enough in quality to the strongest check-in; paid check-in counts are unchanged.

Fresh news without an arbitrary ceiling

Spark now researches every eligible relationship topic through small, recoverable background jobs instead of stopping at a fixed daily limit.

AI

All eligible topics get a turn

News collection drains the complete eligible topic set in bounded parallel batches, while preserving confidence, relevance, freshness, cooldown, and safety filters.

Reliability

Interrupted research repairs itself

Each topic has renewable ownership, bounded retries, and minute-by-minute recovery, so a slow search or worker restart cannot duplicate the whole daily run or leave Today waiting forever.

Store updates that wait safely

Spark now keeps authenticated App Store and Google Play updates until they can be safely matched and applied.

Reliability

Early billing updates are no longer lost

When a store notification arrives before a purchase is linked to an account, Spark keeps it and retries after verification or restore instead of discarding it.

Privacy

Billing diagnostics stay aggregate-only

Support can monitor billing-processing health without exposing purchase tokens, transaction identifiers, signed store messages, or provider response details.

Specific without showing the machinery

Spark now keeps check-ins grounded in one clear detail without exposing notes, drafting instructions, or invented reasons the person came to mind.

AI

More natural, more truthful check-ins

Topics, headlines, and messages must all follow the same specific reason to reconnect. Spark filters vague milestones, internal strategy language, references to stored notes, and unsupported conversational setup before a suggestion can appear.

AI

Sharper second drafts

When a promising check-in needs correction, Spark now repairs the exact failed fields from the selected detail instead of starting over. Professional check-ins also adapt to how well you know the person and avoid sales or referral language.

AI

Clearer check-in quality diagnostics

Check-in scores now reflect whether the actual topic, headline, and message use the selected detail. Diagnostics separate first drafts from corrections and show yield by hook and relationship tier.

AI

More variety among equally strong check-ins

When several check-ins are similarly strong, Spark now favors a credible mix of news, personal context, and natural cadence while avoiding repeated news and opening phrases. Weaker ideas are never promoted just to create variety.

Safer, more reliable notifications

Spark notifications now reach all of your registered devices, keep relationship details private, and verify delayed delivery results.

Privacy

Private details stay inside Spark

Push alerts identify the kind of update—such as a reminder, event, follow-up, or Today update—without placing contact names, drafted messages, or personal relationship context in the phone notification transport.

Reliability

Independent delivery to every device

Spark now tracks each registered phone separately, safely retries devices that were not submitted during an interrupted batch, and avoids duplicate sends when a provider result is uncertain.

Reliability

Safer account switching and delivery cleanup

Registering a phone safely moves it to the account currently using it while preserving that account's other phones. Spark also checks delayed delivery receipts and removes registrations that Expo confirms are no longer valid.

Reliability

Long Steward work stays single-owner

Long-running background conversations now renew ownership while they work, preventing another worker from repeating actions while preserving live, incremental streaming.

One clear reason to reach out

Spark now gives each check-in draft one focused piece of personal context, improving useful output without relaxing quality safeguards.

AI

Focused drafts for context-rich contacts

After choosing a reason to reconnect, Spark keeps unrelated notes, news, and background details out of the drafting context. This reduces crowded or off-topic messages while preserving prior feedback and sensitive-topic boundaries.

More variety without losing the person

Spark can move past an unhelpful check-in angle while keeping other meaningful reasons to reconnect eligible.

AI

Feedback applies to the angle

When a check-in idea is not useful, Spark temporarily rests that specific personal detail or news event instead of hiding every possible check-in for that person.

AI

Specific reasons, not relationship-management jargon

Check-in headlines now say what is actually worth asking about and filter out generic prompts or internal-sounding advice about touches, momentum, and staying top of mind.

AI

News follows real interests

Spark now requires stronger evidence before a topic can drive news research, so private life details, vague concepts, and passing mentions are less likely to become awkward check-ins.

AI

Better news earns its place

News now clears progressively stronger quality checks before it can shape a draft or interrupt normal contact rotation, keeping merely usable headlines from turning into weak outreach.

Reliability

Clearer check-in diagnostics

Support can now trace low check-in counts through contact coverage, drafting attempts, daily output, and the exact quality or failure reasons that filtered candidates.

Check-ins that learn when to move on

Spark now rotates relationships more thoughtfully, treats dismissals as real feedback, and requires verifiably fresh news.

AI

Less repetition after a dismissal

Dismissed angles get a longer rest, repeated dismissals pause that subject, and the same news event stays suppressed even when another article describes it differently.

AI

One natural reason to reach out

Check-ins now stay focused on one timely subject instead of packing everything Spark knows into one message. Fresh news remains the usual first choice, while recent sent messages help rotate in an occasional business, family, hobby, or life check-in without repeating the same angle.

AI

The best check-in appears first

News-backed and personal check-ins now share one quality score based on the strength and specificity of the reason to reach out, relationship relevance, timing, novelty, and message simplicity. Great personal outreach can outrank weak news, while genuinely important news still rises to the top.

AI

Fresh news with direct provenance

News-backed check-ins now require a direct dated source, a verified event date, and a short freshness window. Spark compares multiple distinct results when available, keeps the strongest safe story, and gives more uncovered topics a chance to be researched without letting archive pages or old stories masquerade as current news.

Reliability

Hard topic boundaries stay hard

When you tell Spark a person cannot or should not discuss a subject, that exclusion now carries through future topic research, drafted messages, and contact bios.

More room to share photos

Spark now supports richer photo conversations without disrupting uploads from the current App Store version.

Reliability

Photo uploads stay compatible

New app versions can attach up to four photos in one size-safe Spark message, while existing app versions keep their original single-photo upload capacity during the rollout.

A clearer way to add people

Contacts now has one obvious add button and keeps AI-contact management visible where it belongs.

Mobile

One add-contact menu

Replaced the Contacts overflow button with a plus button that offers phone import, CSV import, manual entry, or a guided conversation with Spark. AI-contact selection now appears as a dedicated callout above the contact list instead of being mixed into the add menu.

A clearer sparks-to-fire ritual

Home's fire now moves through distinct sparks, embers, and flame stages so completing weekly relationship progress feels earned.

Mobile

A more meaningful fire progression

Refined the Home campfire so weekly progress moves from sparks to glowing red embers, then a restrained flame after halfway, with the full hand-drawn fire reserved for goal completion. Light mode now gives sparks and wisps stronger contrast, Week mode shows how many distinct relationships have been nurtured so far this year, and the artwork automatically fits the usable height on shorter phones without shrinking readable text or controls.

A fire that grows with your relationships

Spark's Home fire grows into a warm campfire as weekly relationship touches add up.

Mobile

A living fire on Home

Replaced the placeholder flame with a theme-aware campfire whose layered flames, sparks, crossed logs, and glowing coals grow with weekly progress, warm when the goal is completed, and settle into a still composition when Reduced Motion is enabled.

More thoughtful daily check-ins

Spark now favors timely, specific outreach ideas, avoids repeating the same angle, and puts the strongest check-ins first.

AI

Quality comes before filling the list

Daily check-in limits remain plan-based, while a smaller minimum scales with the number of AI-enabled contacts. Spark no longer fills unused capacity with a repeated generic message when a useful draft is unavailable.

AI

Repeated angles get breathing room

Spark suppresses the same outreach hook for seven days without hiding a genuinely new reason to contact someone.

Mobile

The best check-ins appear first

Today orders generated check-ins by their saved quality score, with specific notes, events, dates, and news favored over thinner context.

Mobile

Check-in timing is easier to control

New Free contacts start weekly and new Pro or Power contacts start monthly. You can choose a default in Preferences and change any person's frequency directly from their contact page.

Reliability

Quiet accounts stay quiet

Spark pauses AI check-ins after 30 days without an app open, while birthdays and reminders continue normally.

AI

Draft quality learns from real edits

Spark records whether a sent draft was unchanged, lightly edited, or substantially rewritten, gives a promising but flawed draft one bounded corrective attempt, and prevents ordinary notes from inventing birthday or anniversary timing.

AI

Steward files people and images more carefully

Spark catches likely duplicate contacts even when one record includes a middle or compound surname, understands explicit merge requests, verifies that stated family relationships and explicit home-anniversary dates were actually filed—even after an empty acknowledgement or an unrelated batch write—avoids unsupported conclusions from a photo's background, and accepts up to four images in one size-safe message.

Mobile

A shorter path to the real Spark

Onboarding now requires one real person before setup completes, keeps its demo optional and user-paced, and hands context capture to the same full Steward—with text, voice, and images—used throughout the app.

Mobile

The fire explains the goal

Home now uses a consistent native flame-and-embers visual without the confusing crossed sticks, plus mode-specific plain-language progress guidance, a useful zero state, and a distinct-people count for the year.

Mobile

Yearly progress counts people, too

The Year view now shows how many distinct people you have reached, alongside the fire goal.

Reliability

Helpful reminders without nagging

Spark can gently resume unfinished setup, welcome back an inactive user, or suggest adding context, with a shared seven-day cap and a preference to turn these reminders off.

Background work that finishes reliably

Spark hardened purchases, contact summaries, import follow-through, notifications, and service health checks.

Reliability

New App Store purchases unlock promptly

Spark can now activate a verified Apple-signed subscription while Apple's status service is still catching up, instead of leaving a completed purchase on the Free plan.

Reliability

Contact summaries refresh after quick edits

Debounced contact-summary jobs now use the same validated contract as manual and daily refreshes, so rapid context changes are processed instead of rejected.

Reliability

Spark resumes after contact imports

Background Steward conversations now reliably continue after an imported contact is ready, including reminder and event confirmation follow-through.

Reliability

Safer AI routing and deploy checks

Optional AI canaries are skipped when credentials are unavailable, and production health checks now distinguish a running API from one that is ready to serve database-backed requests.

First-contact onboarding that recovers

Spark made the real first-contact walkthrough resilient to slow requests and brief connection interruptions.

Reliability

First contact imports finish in the background

The onboarding contact card now uses Spark's durable import job and safely resumes after transient polling failures. Retrying a timed-out Spark message also reconnects to the accepted work instead of creating a duplicate turn.

Voice conversations that remember

Spark now keeps Voice and Text in one continuous conversation and understands its relationship-assistant role more clearly when speaking.

Reliability

Eligible beta accounts can start Voice

Voice now honors unmetered beta access while retaining each plan's daily voice allowance, instead of incorrectly reporting an empty monthly credit balance.

Mobile

Voice and Text now share history

Finalized Voice transcripts are saved in the same Spark conversation as typed messages, so switching modes or reopening a conversation preserves the thread. Raw audio and partial transcripts are not stored. Transcripts start hidden, and Android voice replies use the loudspeaker instead of the quiet earpiece route.

AI

Voice Spark knows its role and boundaries

Voice sessions now receive recent conversation history plus clear guidance about Spark's relationship data, supported actions, privacy boundaries, and reviewed-before-sending outreach. Questions about contacts now consult the data-aware Steward instead of guessing that a lookup failed.

Reliability

Honest transcript save status

Voice transcript warnings now appear only after automatic save retries fail, with a Retry action for recovering the unsaved entries.

Mobile

Spoken answers and formatted chat

Voice tool answers now wait for the next available audio turn instead of being dropped when the session is busy. Spark also renders assistant Markdown in Text and Voice and filters internal tool markup out of conversation messages.

Mobile

System theme changes repaint every list

Notifications, reminders, history, dates, relationships, imports, and other mobile lists now update their row backgrounds immediately when the device switches between light and dark appearance.

Mobile

Reliable haptics on iPhone and Android

Buttons, selections, confirmations, warnings, and the Contacts alphabet rail now use safe platform-native feedback with Android compatibility fallbacks and no accidental double vibrations.

Mobile

Visible Sign out action on Android

The side menu now keeps its Sign out action above Android's system navigation controls.

Reliability

Android devices can register for notifications

Spark's Android app now includes its Firebase Cloud Messaging configuration, allowing devices to register for push notifications and receive reminders.

Mobile

Show or hide passwords while typing

Password fields across sign-in, account creation, password reset and changes, and sensitive confirmations now have independent accessible visibility controls on iPhone and Android.

Mobile

Clean sign-out navigation

Signing out now transitions to the login screen once instead of navigating there twice.

Mobile

Controls stay clear of system UI

Onboarding, authentication, menus, overlays, sheets, and fixed actions now respect Android and iPhone safe areas, including three-button navigation and landscape cutouts. Guided onboarding highlights also align to the controls they describe.

Reliability

Onboarding imports merge the same person

Importing the same device contact during onboarding now uses Spark's canonical server-side phone and email matching, preventing national and international phone formats from creating duplicate contacts or consuming extra AI-contact slots.

Faster Android contacts

Spark made large contact lists smoother to scroll and search on Android, with a tactile alphabet rail and reliable live theme changes.

Mobile

Quicker contact browsing on Android

Large contact lists now do less off-screen rendering during normal scrolling, keep search typing responsive, and use lightweight rows during alphabet-rail scrubbing. The rail also provides Android haptic ticks and contact rows repaint correctly when the System theme changes.

Smoother goal editing

Spark made the Home goal slider track your finger smoothly on iPhone and Android.

Mobile

The Home goal slider no longer jumps

Dragging the weekly or yearly goal in the Home edit sheet now stays anchored to your finger instead of jumping as it crosses the slider thumb and filled track.

Clearer iOS license terms

Spark now consistently identifies Apple's standard license as the Terms of Use for the iOS app.

Mobile

Apple Terms of Use on iOS

The iOS upgrade and legal screens now open Apple's standard End User License Agreement directly, while Spark's service and subscription terms remain available separately.

Web

Aligned public EULA page

Spark's public EULA page now points to Apple's standard agreement and clarifies how it works alongside Spark's Terms of Service and Subscription Terms. Links between the public legal documents now open their correct web pages.

Privacy

Safer account deletion guidance

Account deletion now clearly explains which data is removed or anonymized, notes the narrow records that may be retained, and warns that App Store or Google Play subscriptions must be canceled separately to stop future billing.

Mobile launch fixes

Spark tightened Android polish, voice mode cleanup, device registration, and subscription plan changes ahead of the next store builds.

Mobile

Voice mode now stops when you leave it

Switching Spark chat back to Text or closing the Spark sheet now tears down the live voice session, including mic input, remote audio, WebRTC state, and speaker routing.

Mobile

Android launch polish

Fixed Android keyboard avoidance, haptics, device detail navigation, goal-slider dragging, subscription plan chips, contact-page spacing, and bottom safe-area behavior.

API

Cleaner voice replies and Android billing changes

Improved Steward voice-session response gating so replies do not overlap, and hardened Google Play subscription upgrades so moving from Pro to Power replaces the existing plan.

Android subscription plan changes

Spark fixed Android subscription plan changes so upgrades replace the current plan instead of creating overlapping active subscriptions.

Mobile

Android upgrades now replace the current plan

Changing from Pro to Power on Android now sends Google Play the current subscription token and replacement mode, so the old plan is replaced instead of starting a second active subscription.

API

Google Play replacement chains reconcile cleanly

The subscription backend now records Google Play linked purchase tokens and expires the superseded Pro row when a Power upgrade is verified.

Marketing page polish

Spark's public site now presents the How it works walkthrough more consistently and makes the admin dashboard easier to reach.

Web

Consistent walkthrough screenshots

The How it works page now keeps each phone screenshot frame the same size and centers the closing call-to-action copy beneath its heading.

Web

Admin link in the footer

The marketing footer now includes an admin link that routes admins to the dashboard and shows an admin login link for everyone else.

A real first-contact onboarding flow

Spark's onboarding now shows the product loop with a sample relationship, then walks new users through real app surfaces to import a first contact, add useful context, and review a real check-in.

Mobile

See Spark work before you set anything up

New users now watch a clearly labeled, tap-through sample movie of Spark's real loop - tell Spark about someone, see memory filed, then see the next-day check-in it earns - before being asked to add a single contact. Notifications, calendar, profession, and profile questions no longer block first run.

Mobile

Setup checklist on Today

A dismissible checklist at the top of Today tracks real setup progress - people added, AI contacts picked, context given, notifications, calendar, and about-you - and routes each item to the right place. It disappears on its own once everything is done.

Mobile

Try Spark on real app surfaces

After the sample movie, onboarding now guides new users through the real Home screen, real Spark sheet, real contact import card, a real contact profile, Today, and Home's fire habit view instead of switching to a separate setup surface. The first real contact flow now extracts topics, researches useful news, and prepares a real pending check-in before walking the user to Today.

Mobile

Smoother onboarding guidance

The onboarding spotlight now keeps its previous target while the next control is measured, then animates the highlighted area and tooltip into place so the real-surface walkthrough feels calmer as users move across screens and sheets.

Mobile

Clearer iPhone Contacts access

When iOS is only sharing a limited set of contacts, the import screen now explains why the list is short and offers a direct Manage iOS access action plus refresh.

Reliability

Sturdier phone contact imports

Phone contact imports now hand selected contacts to a server-side job before Spark does the heavy import work, so switching apps or a mobile request timeout is much less likely to strand a carefully chosen contact list.

Reliability

Better diagnostics for unexpected app handoffs

Spark now records privacy-safe breadcrumbs whenever the mobile app intentionally opens a browser, Settings, share sheet, Maps, Messages, Mail, subscriptions, or App Store review surface, making rare reports of unexpected iOS app switches easier to trace.

Mobile

Finish contact context later

After importing contacts, users can now leave the one-by-one context step from the top bar, keep selected contacts enabled, and return to the contact list without losing the setup they already completed.

AI

New contacts start with Spark when there is room

Contacts created manually, through imports, shared cards, calendar attendees, or Spark chat now default to Spark suggestions on while the account still has AI-contact capacity. In Spark chat, only the primary newly-created person in a turn is auto-enabled.

AI

Quick questions learn from your check-ins

Spark's daily quick questions now factor in which check-ins you actually sent or dismissed, deepening the topics that land and steering away from the ones you pass on.

AI

Grok provider trial support

AI Operations can now configure xAI/Grok as an OpenAI-compatible provider for local quality and cost trials. Daily check-in drafts can also run a small Grok canary with Sonnet fallback when parsing or quality checks fail.

AI

Lower-cost news research

Scheduled news research now uses the economy search route, focuses on contacts close to check-in eligibility, and caps each run more tightly so Spark spends less on background research without weakening user-visible drafting.

AI

Steward model benchmarks

Added a production-derived Steward benchmark runner so Spark can compare Sonnet, Grok, and future models on dense relationship filing and real chat/tool behavior before routing live traffic.

Mobile

Calmer guided tour

The full-app walkthrough no longer launches itself right after onboarding. Page-level help remains available from the help button on every major screen.

Android polish and smarter contact search

Spark shipped the latest Android launch polish, better contact search, and backend Steward reliability improvements.

Mobile

Android subscription chips and spacing

Polished Android plan cards, fixed Pro plan subscription chip alignment with an Android-specific baseline correction, contact page spacing, and edit-contact actions so the Android app lines up more closely with the iOS experience.

Mobile

Search contacts by full and preferred names

Contact search now matches full names and preferred names more reliably, making it easier to find the right person from larger contact lists.

Reliability

Large Steward messages route more safely

Improved backend routing for dense Steward requests so large relationship updates support bigger family graphs, retry compactly when the first structured plan is truncated, and no longer fall through to a generic success message when the planner cannot safely file them.

Daily AI reliability and Android subscription webhooks

Spark made daily check-ins and quick questions more reliable, and added Google Play subscription notifications so Android billing changes can update accounts without waiting for a manual sync.

AI

Daily check-ins fill the promised count

Daily generation now fills eligible AI-enabled contacts up to the user's tier budget, using stronger contextual drafts first and plain fallback check-ins only when needed.

AI

Smarter quick questions

Context requests now prioritize broad relationship gaps like how you know someone, family, work, hometown, and hobbies before asking narrow topic-specific questions.

Reliability

News research no longer blocks the whole day

If same-day news research is still running, check-ins retry later; if news research fails, Spark still generates the day from older news and saved relationship context.

Reliability

Google Play subscription updates

Added backend handling for Google Play Real-time Developer Notifications, so Android renewals, cancellations, holds, and refunds can refresh Spark subscription state after Google sends an update.

Account deletion guidance

Spark added a dedicated public account-deletion page for store listing review and users who need deletion instructions outside the app.

Privacy

Public account-deletion URL

Added dedicated account-deletion documentation that explains how to delete a Spark account in the app, how to request deletion by email, what active product data is deleted, what narrow records may be retained, and the backup retention window.

Contact setup and filtering polish

Spark added smoother contact sharing, sturdier Steward app switching, faster AI-contact filtering, and an easier way to finish AI setup later.

Mobile

Steward draft survives app switching

Kept the Steward sheet open when users briefly switch apps, so typed draft text stays in place while they reference another message or app.

API

Quieter scoped Steward filing

Hardened scoped Steward filing so a bulk contact-facts call can recover when the model includes the current contact's name instead of omitting the already-known contact id.

Mobile

Cleaner notifications inbox

Removed the internal notification type label from inbox rows so reminders and follow-ups no longer show raw enum text like REMINDER_FIRING.

Mobile

Consistent share contact sheet

Updated the Share contact chooser to use Spark's standard sheet presentation, including the shared drag handle, backdrop dismissal, safe-area spacing, and busy-state handling.

Mobile

AI contacts filter

Added an AI enabled status filter to the Contacts Sort & Filter sheet so users can quickly see who Spark is actively helping with.

Mobile

Do context setup later

Added a Do this later action to the AI-contact context step so selected contacts stay enabled without forcing users to skip every person one by one.

Sharing, check-ins, and AI reliability

Spark now supports Spark-to-Spark contact sharing, steadier daily check-ins, and fresher AI route health checks.

Reliability

Automatic AI route health checks

Added a daily backend health-check sweep for configured AI models so Steward and other AI features do not become unavailable simply because a manual model test aged out.

AI

Check-in floor fallback

Spark can top up quiet Today lists with plain cadence check-ins for eligible AI-enabled contacts when richer news or relationship hooks do not fill the daily check-in target.

Mobile

Spark-to-Spark contact sharing

Contact and About Me share actions now offer a Spark import link alongside vCard export. Receivers can preview the contact, create a new record, or merge into a suggested existing match after signup/onboarding.

Web

Shared contact link fallback

Shared contact links now have a web fallback page that helps recipients open Spark or install the app if the native app is not already handling the link.

API

Contact share invites

Added server-backed contact-share invites with hashed tokens, expiry, authenticated previews, conservative payload snapshots, and additive import/merge handling.

Contact summaries refresh faster

Spark now updates AI contact summaries shortly after relationship context changes.

AI

Near-real-time contact summaries

When durable relationship context changes, Spark schedules a debounced bio refresh so contact summaries catch up shortly after the edit without firing one AI call per change.

Android release prep

Spark now has the app identifiers, product catalog, and purchase verification path needed for Google Play release testing.

Mobile

Google Play subscriptions

Added Android subscription product and base-plan support for Pro and Power, including Google Play purchase, restore, manage-subscription, and review links.

API

Android receipt verification

Added Google Play Developer API verification for Android purchase tokens and published Google Play product/base-plan IDs through the pricing config.

Web

Android app identity

Updated Play Store links and admin pricing controls for the Android package com.sparkrm.app.

Manual deploys: guides, prompts, and public docs

Spark now has public product guides, in-app walkthroughs, and low-noise review and sharing prompts.

Mobile

Guided walkthroughs

Added a cohesive first-run guided journey that walks through Home, Spark, Today, Contacts, a contact page, and the Steward sheet with real taps and navigation. Page-level walkthroughs remain replayable from the help button.

Web

Public docs

Added expanded public guides that match the in-app walkthroughs so users can understand Spark's core surfaces in more depth, with a searchable docs layout for faster browsing.

Mobile

Review and sharing prompts

Added earned App Store review prompts and native sharing prompts after positive usage moments. Prompts are throttled and stop once the user rates, says they already reviewed, or shares Spark.

Mobile

Contact detail pages

Restored dedicated read-only contact details and important dates pages for contacts and About Me, with focused edit sheets for individual phone, email, address, and date records.

API

Durable prompt state

Added server-side state for tutorial views and growth prompts so completed prompts stay completed across devices.

AI

More reliable daily check-ins

Improved news discovery and check-in drafting so paid users are more likely to see specific, useful suggestions when Spark has enough relationship context.

AI

Paid-user About Me summaries

Added an AI-managed About Me bio for paid users, generated from explicit profile context so Spark can better ground Steward replies and outreach drafts without mixing it into writing voice.

Mobile

Walkthrough touch recovery

Hardened the in-app walkthrough overlay so interrupted tooltip tours cannot leave the app looking normal while blocking taps.

Mobile

App resume touch recovery

Hardened the Spark Steward sheet so closing it cannot leave an invisible modal layer blocking taps.

Mobile

Steward sheet close polish

Restored the Steward sheet's native modal behavior so closing it keeps the app tappable without exposing tabs, hiding the composer, or leaving extra space below the sheet.

Manual deploy: profile and contact polish

The contact and About Me surfaces moved closer to a single, consistent contact-card experience.

Mobile

Contact editing redesign

Updated contact editing with grouped iOS-style inputs, inline phone/email/address/link editing, custom labels, primary selectors, and clearer destructive actions.

Mobile

About Me overhaul

Made the user's own profile look and behave more like a contact detail page, including edit, notes, reminders, relationships, contact details, and share-contact actions.

API

User-level contact details

Added user-level phones, emails, links, addresses, important dates, notes, and relationships so Spark can remember context about the user as richly as it remembers contacts.

Mobile

Preferences cleanup

Refined notification timing, quiet hours, device details, drawer pages, and unsaved-change confirmations for editable screens.

Manual deploy: better daily suggestions

Daily check-ins became more grounded, more deliberate, and better aligned with the overnight generation schedule.

AI

News-grounded check-ins

Improved the check-in selection and drafting pipeline so fresh news can become a specific outreach hook when it is relevant enough.

Reliability

News before generation

Daily generation now waits for the relevant news research cache before drafting check-ins, reducing stale or generic suggestions.

API

No rollover check-ins

Reinforced the rule that each day gets its own suggestions. Yesterday's pending check-ins go stale instead of rolling into Today.

Manual deploy: launch hardening

A set of fixes tightened onboarding, account deletion, scheduling, notifications, and relationship display.

Mobile

Onboarding simplification

Removed the explicit timezone confirmation step and moved correction into preferences.

Mobile

Quieter document checks

Legal-document checks now happen quietly unless the user actually needs to accept updated documents.

API

Account deletion callback fix

Fixed the mobile account-deletion confirmation path so email callbacks work correctly with the user's authenticated session.

API

Background worker split

Separated background job execution from the API runtime so scheduled work can scale without slowing normal app requests.

API

Snooze wake notifications

Snoozed suggestions and quick questions now wake back up at the chosen time instead of being lost in the next-day sweep.

Manual deploy: website, copy, and news ranking

The public site, product positioning, and news-aware suggestion pipeline moved closer to launch-ready shape.

Web

Marketing copy polish

Refined public site copy, pricing language, launch pages, and the core tagline around real connections.

AI

News-ranked check-ins

Added a ranking layer that can use fresh, relevant news as a stronger reason to check in when it fits the contact.

API

Runtime AI provider imports

Hardened the AI provider loading path so production deployments use the configured runtime providers consistently.

Privacy

Legal and privacy readiness

Updated public legal and privacy support pages for App Store launch readiness.

Web 0.5.0

Spark's website and AI operations foundations improved ahead of launch, with public-facing AI quality work and internal reliability controls.

AI

Model routing controls

Improved how Spark routes AI work to the right model class, which supports better quality, cost control, and reliability for suggestions and Steward conversations.

Reliability

AI health and cost guardrails

Added stronger operational checks around AI providers, model readiness, and cost tracking so user-facing AI features can be monitored safely.

Web

Launch site refinements

Continued polishing the public site, pricing explanations, and launch copy for the App Store submission window.

Mobile 1.8.0 and API 0.7.2

The post-import setup flow, Today empty states, and Steward filing reliability all improved.

Mobile

Warm-up after import

Completed contact imports now route into warm-up so users can quickly teach Spark context about the people they just added.

Mobile

Clearer Today setup states

Improved empty and setup states on Today so new users understand what Spark needs before daily suggestions can appear.

API

Steward filing hardening

Made contact filing more reliable when Spark turns a user's notes or conversation into structured relationship memory.

Mobile 1.7.x and API 0.6-0.7

Spark's AI quality, Steward filing, and launch readiness improved across several rapid releases.

AI

Suggestion quality pass

Improved AI suggestion quality so check-ins and drafted messages are more specific, less generic, and better aligned with saved context.

API

Safer relationship filing

Prevented self-relationships and improved global filing planner behavior so Spark handles relationship facts more carefully.

Mobile

Steward sheet stability

Hardened the Steward sheet rendering path so filing results and tool-call summaries appear more reliably.

Reliability

Launch readiness checks

Added operational runbooks and verification passes around jobs, support flows, demo accounts, and App Store readiness.

Mobile 1.5-1.6, API 0.4-0.5, and Web 0.4.0

Today, subscriptions, milestone handling, marketing pages, analytics, and launch observability all moved forward.

Mobile

Today page revamp

Improved Today with day-of milestones, better suggestion bucketing, and clearer handling for event-driven and AI-driven nudges.

API

Subscription verification fix

Fixed App Store purchase verification so subscriptions relink correctly to the user who verifies the transaction.

AI

Steward speed and quality work

Improved Steward's model path, planner caching, and filing quality so conversations can produce better structured memory with less latency.

Mobile

Crash reporting and analytics

Added launch-ready mobile crash reporting and product analytics while keeping analytics manually scoped and privacy-conscious.

Web

Marketing overhaul

Refreshed the public website with stronger SEO, vertical pages, and launch-ready Spark positioning.

Mobile 1.4.x, API 0.3.x, and Web 0.3.x

Spark completed its brand transition, refined pricing, and shipped a broad voice-mode and quality pass.

Mobile

Voice mode polish

Improved the voice experience for talking to Spark, including interaction polish around recording and filing.

AI

Cost and quality overhaul

Adjusted AI behavior, routing, and limits so Spark can preserve quality while keeping launch costs sustainable.

Web

Pricing and intro offer alignment

Aligned annual pricing and first-month-free introductory offer messaging with App Store Connect.

Web

Spark brand cleanup

Finished replacing old Mauve/Kickstart public references with Spark across user-facing surfaces.

Mobile 1.3.0, API 0.2.0, and Web 0.2.0

Voice, the yearly fire goal, and the Home experience became core parts of Spark's relationship ritual.

Mobile

Steward voice mode

Added the voice path for talking to Spark so users can capture relationship context without typing.

Mobile

Yearly fire goal

Added a longer-term fire goal so weekly relationship work contributes to a visible yearly rhythm.

Mobile

Home polish

Refined the Home experience around sparks, fire progress, and the user's relationship habit.

API

Voice-ready backend

Added the server-side pieces needed to support voice sessions and route spoken context into Spark's filing system.

Mobile 1.2.0 and API 0.1.0

Relationship management foundations expanded with reminders, events, interaction logging, calendar work, and stronger Steward support.

API

Reminder and event tooling

Added AI-aware tools for creating and managing reminders and events from Steward conversations.

Mobile

Interaction logging

Improved the path for logging texts, calls, emails, in-person meetings, and other touchpoints with contacts.

Mobile

Calendar and Steward polish

Refined the calendar and Steward experiences so important dates, reminders, and filed context are easier to work with.

API

Contact deletion support

Added stronger contact deletion behavior for cases where a contact really should be removed rather than archived.

Mobile 1.1.x and API 0.0.2

Subscription management and early AI quota policy became more complete.

Mobile

Expanded subscription management

Improved the in-app subscription management path so users can understand and manage their Spark plan more clearly.

API

Unmetered Steward quota policy

Added support for unmetered Steward quota policy so beta/support users can be handled without breaking normal limits.

Reliability

iOS OTA release path

Improved the release path for publishing iOS over-the-air updates safely.

Mobile 1.0.2

Spark's mobile app received a broad performance pass.

Mobile

Render and list performance

Improved app-wide rendering and list performance so larger contact sets and repeated daily use feel smoother.