Build an Inbox Assistant with Aside
Use Aside to triage Gmail and track follow-ups in Google Sheets.
Introduction
30 Second Summary
Inbox requests are easy to overlook when follow-ups sit among updates that need no response. Copying each request into a separate tracker also turns a quick review into repetitive work.
In this project, you will build an inbox assistant with Aside that turns labeled Gmail messages into a Google Sheets follow-up tracker. The browser agent will also prepare replies that stay unsent until you approve them.
What You'll Build
You'll watch three practice emails become a tidy follow-up tracker while reply drafts wait for your approval.
By the end of this project, you'll have:
- A focused practice queue where you can safely test the workflow using three synthetic messages under Aside Practice.
- A live follow-up tracker that records each message in Aside Follow-Up Tracker with its priority, requested action, status, and source link.
- Reviewable reply drafts that you can compare with their source messages. You send one synthetic reply only after explicit approval.
- Secret Mission: Create a recurring routine that appends only new labeled messages. It prepares drafts without sending them automatically.
Are there any prerequisites?
You'll need a Mac running macOS 15.0 or later with internet access. You can use an existing Google Account or create one during setup.
Before We Start
This step locks in the assistant's safety boundary before any setup begins. Aside may read only Gmail messages carrying the Aside Practice label, add Sender, Subject, Priority, Requested Action, Status, plus Source Link to Aside Follow-Up Tracker, with every reply kept behind explicit human approval.
Set Up Your Practice Workspace
Your safety boundary needs a controlled workspace before an agent touches any inbox content. Synthetic messages make every later action reproducible.
You will set up Aside on a compatible Mac with its default Guard permission mode. You will then create a labeled Gmail queue plus an empty Google Sheets tracker.
In this step, get ready to:
- Set up Aside on a Mac running macOS 15.0 or later.
- Create an Aside Practice queue containing three synthetic Gmail messages.
- Create the Aside Follow-Up Tracker with its six-column header row.
Install Aside and connect your accounts
Aside requires macOS 15.0 or later. Checking compatibility first prevents an unsupported installation.
- Select the Apple menu in the top-left corner of your screen.
- Select About This Mac.
- Read the macOS version shown in the window.
✔️ I see macOS 15.0 or later
Your Mac meets the operating system requirement for Aside.
ⓧ I see an older version
The current Aside build requires macOS 15.0 or later.
- Pause this project until your Mac reports macOS 15.0 or later.
The installer places Aside in your Applications folder. This gives you a dedicated browser for the practice workflow.
- Visit the official Aside download page.
- Download Aside from the page.
- Open Aside.dmg from your Downloads folder.
- Drag the Aside icon into your Applications folder.
Aside is now installed in your Applications folder. Signing in creates your app session while Guard remains the default task permission.
- Press Cmd+Space to open Spotlight Search.
- Type Aside into the search field.
- Press Enter to launch Aside.
- Choose Sign in or create an account.
- Complete the account prompts.
- Confirm Guard is selected in Aside's task controls.
Why Keep Guard?
Guard lets Aside work in approved folders. It asks before accessing other folders.
This permission mode matches the workflow's narrow safety boundary without granting computer-wide file access.
Aside Did Not Open?
- Confirm that your Mac reports macOS 15.0 or later.
- Confirm that you dragged Aside into the Applications folder before launching it.
- Ask for targeted help with opening Aside on your Mac.
A signed-in Google Account gives this Aside workspace access to Gmail plus Google Sheets. The next choice depends on whether you already have an account.
✔️ I already have a Google Account
- Open the Google Account sign-in page in Aside.
- Sign in with your existing Google Account.
Your Google Account is now available inside Aside.
ⓧ I need a Google Account
- Open the Google Account sign-in page in Aside.
- Click Create account.
- Select Personal use.
- Enter the requested account information.
- Click Next.
- Complete the remaining account prompts.
Your new Google Account is now available inside Aside.
Aside Vault can autofill matching credentials without exposing raw passwords to the agent. Its access policy applies only if you stored the Google login in the vault.
- Open Settings in Aside if you stored the Google login in Aside Vault.
- Select Passwords.
- Select Access policy for AI agents.
- Select While unlocked.
Your accounts are connected with Guard still active. Any stored Google credential is available to the agent only while the vault is unlocked.
Create the Gmail practice queue
The Aside Practice label isolates synthetic messages from the rest of your inbox. Only messages carrying this label belong to the automation.
- Open Gmail in Aside.
- Click Create new label next to Labels.
- Enter Aside Practice as the label name.
- Click Create.
Your inbox now has a boundary the agent can follow. Messages outside Aside Practice remain beyond the workflow's scope.
- Identify the email address for your signed-in Gmail account.
- Record the address here: your Gmail address.
These sends stay inside your own inbox. The practice data remains synthetic while you learn the workflow.
The first message represents a scheduling request that needs a response.
- Click Compose in Gmail.
- Enter your Gmail address in the To field.
- Enter Practice: Reschedule Tuesday check-in as the subject.
- Enter Could we move our Tuesday 2:00 PM check-in to Wednesday 10:00 AM? Please confirm. as the message body.
- Click Send.
The first synthetic request is now in your inbox. The second message represents a missing item with a deadline.
- Click Compose in Gmail.
- Enter your Gmail address in the To field.
- Enter Practice: Missing receipt follow-up as the subject.
- Enter Please send the missing receipt by Friday and tell me when it is uploaded. as the message body.
- Click Send.
The second synthetic request is now in your inbox. The final message gives the agent an example that needs no reply.
- Click Compose in Gmail.
- Enter your Gmail address in the To field.
- Enter Practice: Weekly update, no reply needed as the subject.
- Enter The weekly update is ready. No response is required. as the message body.
- Click Send.
All three synthetic messages are ready. Applying one shared label creates the exact queue Aside may read later.
- Return to Gmail's message list in Aside.
- Select the checkbox beside Practice: Reschedule Tuesday check-in.
- Select the checkbox beside Practice: Missing receipt follow-up.
- Select the checkbox beside Practice: Weekly update, no reply needed.
- Click Labels.
- Select Aside Practice.
The Aside Practice label now contains your three synthetic messages. No reply has been sent to any of them.
Cannot Find All Three Messages?
- Confirm that each message was sent to the same Google Account currently open in Aside.
- Compare each subject against the three practice subjects shown above.
- Ask for targeted help with finding or labeling the synthetic Gmail messages.
Create the follow-up tracker
The tracker gives later tasks a persistent destination for triage results. Google Sheets automatically saves online changes as you type.
- Open sheets.google.com in a new Aside tab.
- Click New to create a blank spreadsheet.
- Click the file name at the top of the spreadsheet.
- Enter Aside Follow-Up Tracker as the new name.
- Press Enter to save the name.
Your persistent tracker now exists inside the same browser as the practice inbox. Its header row defines the structure Aside must preserve.
- Enter Sender in the first cell of row 1.
- Enter Subject in the next cell of row 1.
- Enter Priority in the next cell of row 1.
- Enter Requested Action in the next cell of row 1.
- Enter Status in the next cell of row 1.
- Enter Source Link in the next cell of row 1.
The spreadsheet should contain only these six headers. Every row beneath them remains empty for the first triage run.
Before you check, which parts of the workspace do you expect to contain content?
- Switch back to the Gmail tab from earlier.
- Select the Aside Practice label.
- Count the messages shown under the label.
- Switch back to the Aside Follow-Up Tracker tab.
- Inspect the first row of the spreadsheet.
- Inspect the rows beneath the header.
You should see exactly three messages under Aside Practice. Aside Follow-Up Tracker should show the six headers in row 1 with no data beneath them.
That is your controlled practice workspace working as intended. The agent now has safe source data plus an empty destination.
Your practice workspace is ready. Next, you will ask Aside to triage the labeled messages without changing Gmail or the tracker.
Triage the Practice Inbox
Your three synthetic Gmail messages give Aside a controlled queue to inspect. This step tests whether the browser agent can turn those messages into structured triage without changing the inbox.
Classifying messages and storing the result are separate jobs. This first run isolates scoped context so you can discover what a chat-only workflow leaves behind in the empty Google Sheet.
In this step, get ready to:
- Limit the task context to the Aside Practice label page.
- Ask Aside to classify the three practice messages without editing Gmail.
- Compare the chat table with the source messages and the unchanged tracker.
Prepare the scoped view
A page attachment tells Aside which browser page belongs to the task. Keeping the Gmail label page attached gives the agent the narrow context defined by your safety boundary.
- Switch back to Gmail in Aside.
- Select Aside Practice in the Gmail left sidebar.
- Open the Aside side panel.
- Keep the Gmail page attachment in the task composer.
The attachment should represent the Gmail page showing exactly three labeled practice messages. This confirms that the agent starts from the intended queue.
Run the scoped triage task
The task defines a six-column structure for the result. It also sets limits that protect Gmail and the tracker from changes.
Before you send the task, where do you expect the six-column result to appear?
- Create the scoped triage result by sending this task:
Read only the three messages under the Aside Practice label. Return a table with Sender, Subject, Priority, Requested Action, Status, and Source Link. Use High, Medium, or Low for Priority. Use Needs Reply or No Reply Needed for Status. Do not edit Gmail, do not open unrelated messages, do not update any spreadsheet, and do not send anything.
How Does This Task Stay Scoped?
- The label restriction limits the reading scope to the three synthetic messages.
- The six named columns make every result row easy to compare with its source message.
- The allowed values High, Medium, and Low keep priority classifications consistent.
- The status values Needs Reply and No Reply Needed separate actionable messages from informational updates.
- The final limits block Gmail edits, spreadsheet updates, unrelated messages, and sending actions.
- Wait for Aside to finish the task.
- Count the rows in the chat result.
You should see a table with Sender, Subject, Priority, Requested Action, Status, and Source Link across exactly three rows. You have the first real win: your scoped browser agent turned the practice queue into reviewable triage.
No Three-Row Table?
- Confirm that the attached page still shows the Aside Practice Gmail label.
- Check that the label still contains exactly three practice messages.
- Resend the exact task above if the result omits a row or column.
Ask for targeted help with diagnosing the incomplete triage result.
Confirm the safety boundary
A useful triage result still needs a human check against its source. This review confirms the classifications before any persistent data or communication is created.
- Compare all three table rows with their matching source messages in Gmail.
- Check that Practice: Reschedule Tuesday check-in has the status Needs Reply.
- Check that Practice: Missing receipt follow-up has the status Needs Reply.
- Check that Practice: Weekly update, no reply needed has the status No Reply Needed.
- Check that each Source Link identifies the matching Gmail message.
Before you switch back to the tracker, do you expect the chat task to have added any data rows?
- Switch back to Aside Follow-Up Tracker from earlier.
- Count the data rows beneath the header row.
You should see only the header row with no data beneath it. The useful result remains in chat because this task explicitly blocked spreadsheet updates.
- Return to the Aside Practice label from earlier.
- Open each practice thread to confirm that no reply was sent.
The label should still contain exactly three synthetic messages with no Gmail changes. Aside has interpreted the queue while preserving your approval boundary.
Your triage logic works while the tracker remains untouched. Next, you will give the result a persistent destination.
Build the Follow-Up Tracker
The triage table from earlier proves that Aside can understand your practice messages. However, that useful result still lives only inside one chat.
Now you will connect the labeled Gmail queue to the existing Google Sheets tracker. The task retains the no-send boundary.
In this step, get ready to:
- Attach the practice inbox plus the tracker to a new Aside task.
- Populate the tracker with one row for each labeled message.
- Verify every row against its source message.
Attach both pages to a new task
Scoped context tells Aside which open pages belong to a task. Attaching only the practice label plus the tracker gives the agent a clear source and destination.
- Start a new task in the Aside side panel.
- Type @ in the task composer.
- Select the Gmail tab showing the Aside Practice label.
- Type @ in the task composer again.
- Select the Google Sheet tab named Aside Follow-Up Tracker.
- Confirm that the composer shows both page attachments.
You should see the Aside Practice Gmail page plus the Aside Follow-Up Tracker sheet attached to the new task.
Populate the tracker
Structured data extraction turns each email into fields that fit the existing spreadsheet headers. The restrictions make the tracker the task's only writable destination.
- Paste the following task into the Aside composer:
Read only the messages under the Aside Practice Gmail label. Update the open Aside Follow-Up Tracker sheet with one row per message using the existing headers. Use High, Medium, or Low for Priority. Use Needs Reply or No Reply Needed for Status. Include a source link for each Gmail message. Do not modify or delete email, do not create duplicate rows, and do not send replies.
What Does This Task Do?
- The source rule confines reading to messages under the practice label.
- The header rule maps each message into the existing spreadsheet structure.
- The duplicate rule protects the tracker from repeated rows.
- The no-send rule preserves your approval boundary.
- Send the task in Aside.
- Wait for the task to finish.
- Switch back to the Aside Follow-Up Tracker tab from earlier.
You should see three data rows below the existing header row. Each row should include a priority plus a requested action.
Tracker Still Empty?
Confirm that the new task still shows both page attachments. A task with only the Gmail page lacks access to the tracker.
Ask for targeted help with diagnosing the missing tracker rows.
Verify every row
Human-in-the-loop review catches extraction mistakes before the tracker drives later work. It also confirms that each source link returns to the correct message.
Before you inspect the sheet, do you expect the tracker to match the earlier chat table row for row?
- Count the populated rows below the header row.
- Compare every row with its source message.
- Open each Source Link from the tracker.
- Return to the Aside Follow-Up Tracker tab from earlier.
- Check that Practice: Reschedule Tuesday check-in shows Needs Reply.
- Check that Practice: Missing receipt follow-up shows Needs Reply.
- Check that Practice: Weekly update, no reply needed shows No Reply Needed.
- Check that no subject appears more than once.
You should find exactly three non-duplicate data rows. Every source link should lead to its matching Gmail thread.
Gmail should remain unmodified. No reply should have been sent.
Did all three tracker rows match their source messages?
✔️ Every row matches
You have turned the temporary chat result into a verified follow-up tracker. The three messages now have persistent records without changing Gmail.
ⓧ A row needs correction
A focused correction identifies the exact subject. It specifies one field plus its replacement value.
- Return to the Aside task composer from this step.
- Write a focused correction using the mismatched row's details.
- Add a limit that only the named row may change.
- Send the correction.
- Switch back to the Aside Follow-Up Tracker tab after Aside finishes.
- Compare the corrected row with its source message.
The named value should now match its source message. The sheet should still contain exactly three data rows.
Correction Changed the Wrong Row?
Check that your correction used the full message subject. Confirm that it limited the update to one row.
Ask for help with writing a narrower tracker correction.
That is the persistent handoff working. Next, you will turn the two Needs Reply rows into reviewable drafts while keeping every send behind your approval.
Draft and Approve a Reply
Your verified Google Sheets tracker now holds persistent follow-up data from the labeled Gmail messages. The source messages remain unchanged.
The workflow becomes more useful when Aside prepares communication from the same source context. This removes the work of writing every response from scratch.
Sending a message changes another person's inbox. Human-in-the-loop approval keeps that action with you.
In this step, get ready to:
- Prepare two reply drafts for the actionable tracker rows.
- Review every draft against its source message.
- Approve one synthetic reply under the human approval boundary.
Prepare the reply drafts
A reviewable draft lets Aside help with communication without deciding what gets sent. The tracker status records which replies are waiting for your decision.
- In the Aside task composer from earlier, send this task:
For tracker rows marked Needs Reply, draft a short and polite reply based only on the source message. Update those rows to Draft Ready. Stop before sending every reply and ask for approval. Do not send, delete, archive, or relabel any message without confirmation.
How Does This Task Protect Your Inbox?
- The Needs Reply condition limits the drafting work to the two actionable messages.
- The Draft Ready status records that each response is available for review.
- The Stop before sending instruction turns the risky action into an approval checkpoint.
- The final restriction protects every message from unapproved inbox changes.
- Wait for Aside to pause after preparing the drafts.
- Check the two actionable rows in the tracker.
You should see Draft Ready on the two rows that previously showed Needs Reply. Aside should ask for approval before sending either draft.
Aside Did Not Stop for Approval?
- Confirm that the Gmail label and tracker remain attached to the task.
- Check that your task includes the exact instruction Stop before sending.
- Decline any send request until both drafts are visible for review.
Ask for targeted help with restoring the approval checkpoint.
Review every draft
Scoped context keeps each reply tied to its source message. Your review catches any detail that the source does not support.
What Makes a Draft Safe?
- A safe draft keeps every date consistent with the source message.
- A safe draft makes no new commitment.
- A safe draft does not claim that an attachment exists.
- A safe draft does not claim that requested work is complete.
- A safe draft answers only the request in its source message.
- Switch back to the Gmail tab from earlier.
- Open the thread with the subject Practice: Reschedule Tuesday check-in.
- Compare its draft with the proposed move from Tuesday at 2:00 PM to Wednesday at 10:00 AM.
- Return to the Aside Practice label.
- Open the thread with the subject Practice: Missing receipt follow-up.
- Compare its draft with the request for the missing receipt by Friday.
- Check that Practice: Weekly update, no reply needed has no reply draft.
You should find two short reply drafts that match their source requests. The weekly update should have no reply draft.
A Draft Adds Unsupported Details?
- Ask Aside to revise only the affected draft using its source message.
- Compare the revised draft with the original request.
- Keep the draft unsent until every unsupported detail is removed.
Ask for help with reviewing a draft for invented details.
Approve one reply and update the tracker
Sending one synthetic reply creates the only external action in this step. Your approval applies to one reviewed draft only.
- Choose one reviewed draft to send.
- In the Aside chat, explicitly approve only the chosen draft.
Aside should report that only your chosen reply was sent. The other actionable reply should remain an unsent draft.
- In the Aside task composer, update the tracker by sending this task:
Update only the sent message's tracker status from Draft Ready to Sent. Leave the other actionable row as Draft Ready. Leave the weekly update row as No Reply Needed.
What Does This Update Preserve?
- Only the row for the approved reply moves to Sent.
- The remaining actionable row stays at Draft Ready.
- The weekly update stays at No Reply Needed.
- The three-row tracker remains free of duplicates.
Before you compare the tracker, which status do you expect beside each message?
- Switch back to the Aside Follow-Up Tracker tab from earlier.
- Confirm that the row for the approved reply shows Sent.
- Confirm that the other actionable row shows Draft Ready.
- Confirm that the weekly-update row shows No Reply Needed.
The tracker should still contain exactly three source-linked rows. Each row should now show the correct stage of the reply workflow.
Before you inspect Gmail, how many replies do you expect to find sent?
- Return to the Aside Practice label in Gmail.
- Open the thread you approved.
- Confirm that the approved reply appears as sent.
- Return to the Aside Practice label.
- Open the other actionable thread.
- Confirm that its reply remains an unsent draft.
You should see one sent synthetic reply plus one reviewable draft. That is the approval boundary working exactly as intended.
- Return to the Aside task chat.
- Confirm that the task contains no message deletion, archive, or relabel action.
Strong work. Your assistant now prepares useful communication while leaving every send decision with you.
The Final States Do Not Match?
- Tell Aside to correct only the tracker row with the wrong status.
- Keep the remaining draft unsent while you correct the tracker.
- Check that all three original messages still appear under the Aside Practice label.
Ask for help with reconciling the draft and tracker states.
Secret mission
Make the Workflow Recurring
Add a recurring routine that processes only newly labeled practice messages. Test it with a fourth message while keeping every reply behind human approval.
Clean Up Your Resources
Clean Up Your Resources
The Aside Free plan costs $0 forever. These options let you resume the workflow, preserve its paused state, or delete the synthetic practice data before future runs consume its 500 monthly credits.
Resources you used:
- A paused Cron routine that reads only the Aside Practice label.
- A Gmail label named Aside Practice with four synthetic message threads.
- Reviewable Gmail reply drafts plus one explicitly approved synthetic reply.
- A Google Sheets file named Aside Follow-Up Tracker with four non-duplicate rows.
- A Google credential in Aside Vault if you stored one solely for this project.
Keep everything running
This option suits continued testing with synthetic or non-sensitive messages. The paused routine must be resumed before its schedule can run again.
- Return to Aside from earlier.
- Select Settings.
- Select Routines.
- Resume the paused Cron routine.
- Keep the Aside Practice label limited to synthetic or non-sensitive messages.
- Keep the Aside Follow-Up Tracker file as the workflow's persistent record.
- Review each future draft before authorizing any send.
The routine is active again with its deduplication rule intact. Every reply still waits for explicit human approval.
Pause - I'll come back to this later
Your Cron routine is already paused. This option preserves the full demonstration without allowing scheduled runs to continue.
- Return to Aside from earlier.
- Select Settings.
- Select Routines.
- Confirm the Cron routine remains paused.
- Leave the four synthetic messages under the Aside Practice label.
- Keep the Aside Follow-Up Tracker file unchanged.
- Keep the remaining reply drafts unsent.
The tracker remains ready for another demonstration. The routine cannot process new messages while it is paused.
Delete - I don't want to use this again
This option gives you a clean reset across Aside, Gmail, and Google Sheets. Deletion is permanent, but every project item here belongs to the synthetic practice workspace you created.
- Return to Aside from earlier.
- Select Settings.
- Select Routines.
- Delete the paused Cron routine using its deletion control.
The Cron routine no longer appears in the routine list. It cannot run again or consume more credits.
- Return to Gmail from earlier.
- Open the Aside Practice label.
- Select the four synthetic message threads, including the thread with the approved reply.
- Delete the selected threads using Gmail's message deletion control.
- Return to the Drafts label.
- Select any remaining drafts associated with the four practice subjects.
- Delete the selected drafts if any remain.
You should no longer see any synthetic threads under the practice label. No project drafts should remain.
- Return to the Gmail label list.
- Open the options menu for the Aside Practice label.
- Remove the Aside Practice label from the account.
The Aside Practice label no longer appears in Gmail.
- Return to the Google Sheets tab from earlier.
- Return to the file list that contains Aside Follow-Up Tracker.
- Open the file options for Aside Follow-Up Tracker.
- Delete the Aside Follow-Up Tracker file using its file deletion action.
The tracker no longer appears in the Google Sheets file list.
This final cleanup applies only when Aside Vault contains a Google credential saved solely for this project. A credential you use elsewhere should remain in the vault.
- Return to Aside from earlier.
- Select Settings.
- Select Passwords.
- Select the Google credential saved solely for this project.
- Delete the selected credential using the stored credential deletion control.
The project-only Google credential no longer appears in Aside Vault.
Nice Work!
Nice Work!
You did it! You've built a human-controlled inbox-to-spreadsheet assistant with Aside.
You've learned how to:
- Use scoped context in Gmail to classify only messages under the Aside Practice label.
- Turn temporary triage output into a persistent follow-up tracker in Google Sheets with one source-linked row per message.
- Use human-in-the-loop approval to review every reply draft. Keep the approved reply synchronized with its Sent tracker status.
- Secret Mission: Test a deduplicating recurring routine that appends the fourth source-linked message once. Pause it after Aside prepares a reviewable draft without sending automatically.
Ready to quiz yourself?