The Story behind Calinda

I have always wanted a perfect calendar app. #

I loved many features that Fantastical has, I like how I can arrange events by dragging from different days on the monthly view using Readdle Calendar, I’m fond of Thunderbird because it’s light.

But I really want something more intuitive, something that combines all these, something that can even offer help proactively.

I had an idea of building an AI-driven today panel when ChatGPT was first introduced. Basically, you can start your day with the app by looking at your schedule, weather, etc, with an intuitive timeline listing out all the events and tasks you have that day. You can interact with the app like it’s your personal assistant checking availability and managing your schedules. At night you keep a diary by answering some simple questions and recording your mood, and how you feel that day. So I made the first version of Calinda.

My draft of Calinda v1 My draft of Calinda v1

After I start my postgrad studies, things get piling up so easily and my calendar looks like a mess. I have auto updated calendar subscriptions from the school, need to sync across Windows and iOS, switch between to-dos and events… It’s probably time to review Calinda.

I listed out my pain points and what kind of features I want as a user. #

image-20241112181815877

I wanna know what others think and what’s their pain point. So I first went to Reddit. #

From this post:

image-20241112184205388

What this guy wants is more like a combination of Trello, Notion and a calendar. I’ll probably dive into how you can drag and drop stuff from the inbox to calendars in the future, but now probably focus on making the calendar right. Also since we are gonna combine tasks and events here, you don’t need to do this kind of drag-and-drop, no? And you of course can mark it done. Kill two pain points with one feature.

Anyways the basic drag-and-drop to reschedule events will definitely be there.

image-20241112184928875

I would say “task” should have a deadline, otherwise it’s a goal. Even though your team may assign you a task that can be done within a week, then the end of the week is your deadline of course. Probably I’ll consider a feature that allows you to break down a task into multiple steps for you to arrange like events.

image-20241112185337440

Again, task within the calendar view.

image-20241112185428312

I’m not gonna charge you 20 dollars a month, like this is insane.

image-20241112190330802

This actually inspires me to build a better printer.

image-20241112190503784

This sounds more like a project management feature. Probably use Omnifocus or a Gantt chart would be better. But sure we can add a tick box to skip weekends when adding a multiple-day event like this.

image-20241112190746005

Right, I should’ve thought about some users who would like to keep track of their time. Apps like Forest have been doing great in incentivising users, too.

image-20241112191009907

True. Some users may put “go to gym”, “groceries” etc on the calendar, and they can be really periodic so you might wanna manage the schedule of similar events within one window.

I also went to v2ex and Xiaohongshu. #

From this post:

image-20241112191606812

Translate: If you have enough money just hire an assistant.
I have to say all these features about automatically tracking the things you’ve done are highly personalised, so unless you’re gonna code it yourself, don’t expect too much to find a universal app. Even though you gonna develop it yourself, you might find that these demands won’t be very frequent in your daily life.
And people don’t need to record everything they’ve done.
It’s better not to automate the process of review, because what you did in 2 minutes probably can be more important than what you did in 2 hours.
If you formed this habit to review it’ll be rather a quick process.

I agree that reflection should be done by ourselves, cause it’s more of a mind-growth process. But with AI I do think everyone can have their own assistants. Simply put, calendars are just CSVs/tables, skim through the blanks, analyse life/work patterns, and create some tricky events, it should not be difficult to do so.

image-20241112191310562

Translate: The calendar we subscribe to cannot be modified because it’s single-way read-only. (second and third sentence not relevant, skipped)

That’s what I’m saying about my school calendars. It’s read-only so I cannot modify them. And it’s relatively easy to achieve technically like just duplicate a version.

image-20241112192240790

Translate: In short:
· Unable to distinguish between “scheduled task execution time” and “time spent on task”
· Unable to assign multiple time slots to the same task
The most common workflow I use with my task list is:
· Jot down tasks briefly.
· Drag tasks to the calendar by clicking “Schedule Task,” using time blocking.
· Right-click on the current task to record focused time spent on it (and display it in the calendar as well).
However, during this process, I encounter a problem: for a specific task, I can only assign one time slot. This means that if I drag a task to the calendar and mark it as “completed,” it will also disappear from the “Scheduled Tasks” sidebar. The next time I need to perform this task, it will show up as a “backlog” item, which disrupts the planning for repetitive tasks.

It’s more or less similar to project management as well. If users do want to manage the progress of tasks/projects, I should consider making it a main feature then.

I reviewed some apps on the market to see how they fix these issues. #

I prioritised what should be studied further and features to develop. #

For the technical part, I think they are not difficult to the extent that no one has built before. It’s more like how we integrate all these features into one single app, and make things intuitive and logically connected to each other.

image-20241113014953834

So for task management, users can either add tasks directly, or they can create Kanban/Gantt chart first to manage a project on a higher level, then break the project down into separate steps and tasks. They can 1) drag and drop manually, 2) use AI to auto schedule, 3) prioritise some tasks first then use AI to auto schedule.

Tasks can be dragged to the calendar –> So they become events. Or they can be assigned with deadlines –> So they become “due items”.

You can also combine the Gantt chart with the calendar view if you wanna see the higher-level planning (e.g. from 1 August to 15 August we identify this as the “brainstorming phase” for a new project. It’s not a series of full-day events).

For AI scheduling, team and personal scenarios are actually quite similar. For teams, we’ll need to:

  1. Analyse everyone’s working patterns
  2. Allow certain customisation (e.g. no weekends, at least one hour etc.)
  3. Push notifications and give recommendations if a team member’s availability changed
  4. If there’s no suitable slot, suggest some events for some members to be rescheduled (before that the app should check what events are not “locked” and also their priority preferences)

For booking slots, when displaying availability on the web, we should offer options that:

  1. Show availability only
  2. Show events at the same time but users can hide details for certain events or calendars
  3. Can compare with viewers’ own calendars, or just give suggestions if they are all using this app
  4. Time zone

For cross-platform syncing and managing subscribed calendars:

  1. iCloud is a big issue because you need the user to generate an app-only password and go through the CalDAV configuration. Fantastical needs users to create a different account.
    • For Calinda, I was thinking to ease the pain of this account migration at the very beginning. Most people stick with iCloud, Google or Outlook because it’s time-consuming and difficult to migrate to other accounts.
    • Similar to what we manage subscribed calendars (will talk about this soon), duplicate.
      • iCloud calendars can be made public by generating webcal://... which is fundamentally a ics file.
      • Outlook and Google also support exporting calendars as ics files.
      • If we can help doing this export-import by accessing the calendar (users grant us the access first), it’s probably more hassle-free because all they need to do is SSO login.
  2. For these one-way subscribed calendars, what Calinda does is duplicate that calendar, then users can edit on this duplicated version, and we keep detecting new changes on the original one. If there’s new changes we pop up notifications.

I started to build the prototype. #

I started with the main weekly view. Also I made a “Multi-size” button here so the height of each row is based on the busiest day of that week. And then some components and pop-up windows, and some featured images for the landing page.

After I finished the first draft, I worked on the landing page. It’s probably 4 pm afternoon-ish, and I worked till 3 am the next day with no breaks - probably that’s what people call the flow of mind.

So here it is, Calinda v2, desktop version.

Last thing, I wanna see if it’s commercially acceptable, and how many people would be interested in it. #

Because this project is more or less like a productivity tool that I hope everyone can use, I really don’t care about margins if that’s the case so I did this “business” stuff at the very end - still, I need to know how to price it based on costs.

The major cost would be on APIs, charged according to tokens/words and API calls. Assuming that users usually input 100 words (directly chat with the app or start an AI scheduling) and we need 500-word outputs, and for each user on average they use 500 times the AI feature, that would be $5.20 for gpt-4o, $0.2 for gpt-4o-mini, $0.52 for gpt-3.5-turbo. It seems fine cause we definitely won’t use gpt-4o all the time.

Speaking of how it’s gonna work, after getting the prompt, the built-in model will check the time window we need, and then export the calendar within that time window as a CSV file, then we’ll send the file to the model. The size of our file will be calculated for the token we use as well, so if we assume that the number of total input characters is 10,000, the output characters ~2,000 (we only need a sentence about how we gonna schedule it to be used for our natural language scheduling function built-in, not a new CSV file or codes), and API calls still ~500, for gpt-4o-mini it’s $0.34. Seems also fine, will need to check the output quality later.

Go-to-market strategy would be firstly sending some invites on social media to productivity users, to gather reviews and to refine before going public. Then partner with them to do a bit marketing to create the word-of-mouth effect. Later some campaigns. The key is that this sector has already been well defined these years especially after the concept GTD was introduced, and we will be targeting all audience who’s interested in planning their schedules (whether they have formed this habit or not). We cover advanced features to attract pro users, and at the same time make them intuitive to stay close with general users.


Calinda is named after “Kalinda”, with “Cal” so you know it’s a calendar app.

Kalinda is a character in the CBS TV series The Good Wife.

Comment

Login via Github
No Login
Webmention

What is Webmention?

Hypothes.is