Inspiration

Real weeks don't go the way Sunday's plan said they would. WeekSquire started from a simple habit: jot tasks down the moment they come to mind during the week, then take a few minutes on Sunday evening and let something else figure out where they actually fit, around the calendar you already have instead of a blank one.

What it does

Brain-dump tasks all week, then on Sunday an AI reads your real calendar and proposes a schedule around it. You review, tap-to-adjust, or regenerate, then confirm and it's written straight to your native calendar.

Real life doesn't wait for Sunday, so WeekSquire bends with it in the two ways that actually happen:

  1. Something new comes up mid-week that needs to happen this week, not next. WeekSquire fits it into the days you have left, even bumping something already scheduled to make room if it has to.
  2. Even with a plan, some things don't get done. At the start of the next planning session, anything left unfinished gets handled on purpose: moved to next week, sent to Someday, or dropped, never just left hanging.

Built for how real weeks actually go:

  • Recurring tasks, multi-day pins ("gym, 3x this week"), and hard deadlines, all handled differently on purpose.
  • Midweek reshuffle re-reads your calendar live and reschedules around whatever actually happened, including conflicts created outside the app entirely.
  • Per-task hour-range constraints enforced deterministically server-side, not left to the AI's judgment.
  • All-day events and native calendar conflicts detected automatically, with one-tap control over what should block scheduling.

How we built it

Expo/React Native and TypeScript, one codebase for iOS and Android. Scheduling AI is Claude via a Supabase edge function: Haiku by default, with an automatic escalation to Sonnet only when Haiku's attempt fails, omits a task, or produces a conflict, cutting average cost without giving up Sonnet's stronger constraint-following on hard weeks. Calendar access is one-way: WeekSquire reads existing events for scheduling context and writes only what it creates.

WeekSquire is subscription-only (monthly, or annual with a 14-day free trial), gated behind a single pro entitlement verified server-side on every AI request through RevenueCat's REST API, failing closed to free tier if RevenueCat is unreachable. Identity is anonymous, tied to a persisted device ID shared between RevenueCat and the app's own rate limiting. A lapsed subscription freezes Pro features instead of deleting anything.

Challenges we ran into

The AI is good at proposing a schedule, but it isn't reliable enough to be the last word on hard constraints like overlaps, pinned days, or scheduling windows. Every one of those needed an explicit, deterministic server-side check instead of relying on the model to follow instructions, since prompt-only enforcement failed in testing more than once. That split, AI for judgment calls and code for anything that has to be correct, ended up shaping most of the backend.

What we learned

Never trust prompt-only enforcement for anything that has to be correct. Every hard constraint (overlaps, pinned days, hour-range windows) eventually needed an explicit, deterministic server-side check, no matter how clearly the prompt described it. The AI is good at judgment calls, not guarantees.

Sonnet needs a real thinking budget or it silently truncates. Cutting max_tokens or effort to save latency broke real placements in testing before we tuned it back up, a reminder that a speed win isn't free if it quietly drops correctness.

Platform-specific calendar quirks compound fast. iOS's EventKit and Android's Calendar Provider disagree on almost everything: how to infer a timezone, whether a write shows up instantly elsewhere, even what "visible" means for a calendar. Something that worked cleanly on one platform silently didn't on the other more than once.

What's next

iOS shipped first, deliberately: with Android's build quota exhausted until roughly September 1st, holding iOS back risked missing the Shipaton window for both platforms, so WeekSquire went live on the App Store on August 21st instead of waiting to ship both together. Android followed in September, and WeekSquire is now live on both the App Store and Google Play (version 1.0.3). Getting there turned up a good lesson: a native calendar patch that reported as applied had never actually compiled on Android, because the build consumed a prebuilt library instead of the patched source. It was only caught by testing an event that crosses the week boundary on a real phone, and 1.0.3 fixes it on both platforms.

Now that it's live, the near-term focus is watching App Store Connect's crash metrics and the Anthropic spend graph daily, and paying close attention to real usage of midweek reshuffle and recurring tasks specifically, since that's the actual bet behind what's free versus Pro.

Keep shipping from real feedback rather than a fixed roadmap, the same way the last few months of pre-launch testing worked.

Built With

Share this project:

Updates

Submission history