Most habit apps are very good at recording a miss. By then the useful moment has gone. An accountability partner app earns its place when the miss turns into a private handoff between two people who agreed to care about it.
An accountability partner app has to make the handoff real
A reminder is a private negotiation with yourself. It can be useful, then easy to dismiss. PactBuddy takes a different route: a daily goal belongs to a pact with one trusted person. When the deadline passes, the app opens an incident and asks for proof. The buddy then gets a concrete review task.
That sequence matters because it makes the next action obvious. The person who missed has to submit proof. Their buddy can confirm it, reject it, or use a weekly vouch. The result is a short conversation with an end point, not a guilt chart that quietly grows.
Proof gives the buddy something to decide
Accountability gets vague when the only evidence is a promise. PactBuddy supports a wake-up selfie, a workout photo, or a private Screen Time result so the buddy sees the kind of proof that fits the goal. The product does not ship an abstract score and ask a friend to infer what happened.
The Screen Time path is deliberately narrow. The app lets a person select apps, categories, or web domains, then starts a daily Device Activity monitor with the chosen time limit. The selection stays on the device rather than becoming a detailed activity report for the buddy.
let event = DeviceActivityEvent(
applications: selection.applicationTokens,
categories: selection.categoryTokens,
webDomains: selection.webDomainTokens,
threshold: DateComponents(minute: limitMinutes)
)That is the actual shape of the monitor in the app. A partner sees whether the pact is ready for review, not a list of every app someone opened. Apple's Family Controls framework supplies the device-level permission model behind that choice.
A missed goal cannot disappear behind one notification
The pager is the uncomfortable part of PactBuddy, and that is intentional. Its server cadence uses five-minute gaps for the first three pages, then two-minute gaps. Every fifth ignored page also nudges the buddy. Once proof is submitted, the buddy receives a review prompt every ten minutes until the incident closes.
export const CADENCE = {
normal: { earlyPages: 300, laterPages: 120, verify: 600 },
earlyPageThreshold: 3,
buddyHeadsUpEvery: 5,
expiryHours: 12,
} as const;The notification uses Apple's time-sensitive interruption level, which is reserved for alerts a person has said they need to see. It is still a user-controlled system setting, not a loophole around someone's preferences. Apple documents how Time Sensitive notifications work.
Privacy sets the boundary for useful pressure
The product is built around one buddy, not an audience. Proof stays inside the pact. Goal Wrapped, the optional share card, uses only the goal category and verified progress. It never includes the buddy's name, private proof, an exact schedule, or a failed day.
This is a practical constraint, not just a nice message in a privacy policy. The share card is rendered locally and sent through the system share sheet. The app does not create a public profile or write a share record to its backend.
What this does not solve
A more insistent reminder cannot pick a goal for you, repair a bad schedule, or make an unreliable friend available. It also should not become a punishment machine. PactBuddy has quiet hours, limited one-hour snoozes, weekly vouches, and supportive nudges because pressure works better when the people involved can still be honest with each other.
Start with one person whose opinion changes the day
The right accountability partner is not a crowd. Pick one person, make one daily pact, and decide what proof would feel fair before the first miss. If that agreement survives a rough week, it has a chance of becoming a habit.