Master Framework

Overview
Team Structure
Culture
HR
Developers and QA
Plugs and Growth: viaSocket
Growth : viaSocket
Partnership: viaSocket
Support Team
Agency partners (hold)
Marketing #hold
Tools We Use
MCP
Embed
Webinar
Investor
Custom GPTs
Automation book
AI Prompts that we are using
Automation Challenges with Solutions.
Automation Experts Guidelines
Automation Intern Training.
Automation Incentive Programme
viasocket-departments-criteria
Active Paid Subscriptions
DocStarBuilt with DocStar
  1. /
  2. Automation Challenges with Sol...

Automation Challenges with Solutions.



Challenge 1: 

Email invoices to buyers when a new entry is added to the Google sheet.

Given Data: Invoice template in Google Docs.

Requirement: Generate a PDF from the Doc and attach it to a Gmail send.


Solution:
Trigger ->  Google Sheets: New Row Added

Action 1-> Google Docs: Create from Template. This action response returns a PDF Export file (capture file/URL), which you can use and send to gmail

Action 2-> Send email from gmail attach file here.

Optional (If user want to share hosted PDF file)

Action 3-> Upload file to google drive (in a specific folder)

Action 4-> Share that PDF with anyone or specific user

_____________________________________________________________________


Challenge 2:
I want to check how many people filled the form and when 50 or 100 or 200 people filled the form, send me a notification on slack.

Solution: 

You must use Workspace Memory to build this type of automation.
Trigger -> New form submitted
Action1 -> Use memory that will keep the count and add 1 every time flow ran
MultiPath->
    ->Path1:  If count = 50 return true
          ->Action:  send slack message “total 50 people filled the form”

     ->Path2:  If count = 100 return true

           ->Action:  send slack message “total 100 people filled the form”

     ->Path1:  If count = 200 return true

           ->Action:  send slack message “total 200 people filled the form”

Solution 2:


You must use Workspace Memory to build this type of automation.
Trigger -> New form submitted
Action1 -> Use memory that will keep the count and increase by 1 every time flow ran.
Action 2 -> JS code that will return true if count in the memory reach to 50 or 100 or 200
MultiPath->
    ->Path1:  If JS code action return TRUE
          ->Action:  send slack message “total {{Count from memory response}} people filled the form”



____________________________________________________________________


Challenge 3:
Your company maintains a task tracker in viaSocket Table or Airtable. Each row represents a task with columns such as Task ID, Task Title, Assignee Name, Status, and Created At.

Whenever a new task is created, an alert should be sent to Slack #task channel.

If the task remains in Pending status for more than 2 hours, a follow-up alert must be sent to the #founder channel, including the Task Title and the Assignee Name.


Solution: 

Trigger: New row added in table (Google Sheets / Airtable / viaSocket Table).

Action 1: Send Slack message to #task with Task Title, Assignee, and Status.

Action 2: Add Delay of 2 hours.

Action 3: Fetch the same row from the table.

MultiPath -> Path1-> Condition: If Status == "Pending".

               -> Action inside condition: Send Slack message to #founder with Task Title and Assignee.



_____________________________________________________________________



Challenge 4: 


An E-commerce company wants to automate its order delivery and tracking process.

  • A new order is created, it should be sent to the Delivery Courier Service API. (which returns a Tracking ID).

  • The Delivery API provides the following endpoints: Create, Update, List(s), Delete.

  • The company wants to monitor all orders continuously, and if an order is not delivered within 3 days, an escalation alert must be sent to the Operations Manager on Slack with the Order ID and Customer Name.


:zap:

Constraints:

  • You must build this using a single workflow.

  • You are not allowed to use Delay or Memory features.

  • We don't have instant Triggers for this E-commerce company.

  • Delivery Service means services that deliver e-commerce products like DHL or BlueDart,  Use the available Delivery API endpoints to handle order status tracking.




Solution: 


Trigger:

Cron → Run every hour

Advanced Config: JS code to fetch all orders created in the last 1 hour and return them in an array to run the flow one by one.

If no orders available → return a "No-orders" dummy array.

Actions1:

MultiPath -> Path 1 Condition: If trigger result ≠ "No-orders"

-> Action 1 Inside Multipath: Delivery API → Create Order (returns Tracking ID)


Action 2: JS code that will call the List All Courier Items API only if the current time is between 11:00 AM – 11:59 AM and return only the items not delivered in exactly 3 days.

If no overdue orders are found → return "No-data".


Action 3 Mutipath -> path1 Condition: If JS output ≠ "No-data"

       -> Action 3 inside path1: Send Slack message to Operations Manager with escalation details.


Why Advanced Config + Dummy Array?

 So that we will know if there is an order or not to run the Create Delivery API. Otherwise, the workflow would try to run even when no orders exist.

Why Check Current Time in the Second JS Action?

 We only want to check overdue orders once a day (at 9 AM). Without this condition, the workflow would repeatedly call the List All Courier Items API every hour, which is unnecessary. users might get a few hours of delay, and we can add two or three different time periods if the user agrees.



_____________________________________________________________________


Challenge 5:
You want to:

Send an email to the contact (from Airtable / Google Sheet ) only once when the Status column changes to "Issue Solved".


:warning:

Constraint

Using the trigger “When entry updated” would fire every time any field changes, not just the status field — meaning you’d send multiple duplicate emails per record.



Solution: 

Trigger → Row Updated

 → MultiPath (if Status == "Issue Solved" and Mail_Sent != true)

 → Send Email

 → Update same row set (Mail_Sent = true)


:jigsaw:

Explanation:

 This means you need to keep one additional column in your table - e.g., Mail_Sent - to track whether the email has already been sent.


_____________________________________________________________________


Challenge 6:
You have a table of leads in Google Sheets.

  • When a lead’s “Follow-up Date” matches the current date:

  • Automatically send a personalized follow-up email using Gmail and AI.

  • If the email bounces (based on Gmail send response), update the Google Sheet column “Status” = “Invalid Email” notify Sales Lead on Slack.


Solution: 


:jigsaw:

Flow 1: Automated Follow-Up Email

Trigger:

 → Run daily once

 Advance config: (return all rows one by one)

 Advance config If condition: “If followupdate == current date”

Actions:

  • Write mail using AI

  • Send mail


:jigsaw:

Flow 2: Handle Email Bounce Reports

 Trigger:

 → Gmail: “Email Failed/Bounced”

 Actions:

  • Update google sheet

  • Send mail on slack

Note:

  •  (Why two flows): We need to use two different flows here because Gmail generally tries itself to send the mail and sometimes the report comes in 1, 2, or 3, 7 days In the second flow we will use “mail failed/bounce” as trigger.

  • Can be possible in single flow if use delay feature in same flow.



_____________________________________________________________________


Challenge 7:


:jigsaw:

Problem Statement: Missing Slack Info in Employee Database

When a new employee joins your company, as an HR you ask them to fill a joining form with details like:

  • Name

  • Joining Date

  • Department

You store this data in your Airtable / viaSocket Table / SQL Database.

After 7 days of joining, you create their Slack account, where Slack stores details such as:

  • Name

  • Email

  • Phone

  • Slack ID


:warning:

The Problem

After a year, you realize your database (Airtable / viaSocket Table / SQL DB) only has the basic information — name, joining date, and department.

 But it’s missing the important Slack details like:

  • Email

  • Phone

  • Slack ID

Now, you have thousands of records (around 1000+) of employees in your database with only their names, and you need to:

  • Get their Slack details (email, phone, Slack ID) from Slack,

  • And update your database with this information for all those employees.



Solution: 


:white_check_mark:

Solution:


:jigsaw:

Flow: Sync Slack Details to Employee Database

Trigger:

 → New user created or updated on Slack

Actions:

  • Find record already existing in the DB with “Name” (pass Slack candidate name coming from trigger)

  • Condition: If "find record action" return data exists

    • 2.1 Action: Update record with Slack ID, Email, and Mobile Number

Note:

 Here we need to use or build a Slack trigger which supports bulk transfer.

Why only this solution:

because we runs the bulk transfer slowly, in the background.  Ensuring it doesn’t send all Bulk or 1000+ API calls at once and avoids hitting any app’s API rate limit.



_____________________________________________________________________



Challenge 7.2:   

The goal is to automate a monthly mentor feedback process through viaSocket and Slack. On the 25th of every month, a feedback form link must be sent via Slack DM to all mentors listed in the viaSocket Table. Each mentor is responsible for submitting feedback for their assigned mentee.

If a mentor fails to submit the form, the system should automatically send three daily follow-up reminders (on the 26th, 27th, and 28th). After these three days, if feedback is still not received, two actions are triggered:

  1. A Slack DM to the mentee, informing them that their mentor hasn’t filled the form and that their salary will be held.

  2. A message in the #general channel, tagging all affected mentees by their Slack IDs, warning that salaries will not be processed unless feedback is submitted within 24 hours.

Once a mentor submits their feedback, it should automatically be shared with the respective mentee.

All data (mentors, mentees, Slack IDs, and feedback) are stored in viaSocket tables, and viaSocket actions already exist for fetching records, sending DMs, and triggering forms.

The challenge is to design a single, optimized workflow—ideally without using the “Delay” feature—by leveraging conditional logic, daily triggers, and table updates to manage reminders, submissions, and notifications efficiently.



Solution: Trigger:

→ Cron that runs on 25th, 26th, 27th, and 28th of every month

→ Advance Config: Fetch data from viaSocket Table (where feedback is empty)

→ Loop over each record


---


Actions:

Action 1: Find mentor Slack ID

Action 2: Send DM to mentor (message includes feedback form link)

Action 3: Get memory key → message_sent_on_general = Yes/No

Action 4: MultiPath condition


➡️ Path 4.1: (If date is 28th)

  → Action 4.1.1: Send DM to mentee ("You are not going to get salary")

  → Action 4.1.2: Send DM to mentor ("Your mentee will not get salary")


➡️ Path 4.2: (If date is 28 && If message_sent_on_general = No)

  → Action 4.2.1: Find all records where feedback is null/empty

  → Action 4.2.2: Send Slack message on #general channel (tag mentees)

  → Action 4.2.3: Update memory → `message_sent_on_general = Yes



_____________________________________________________________________


Challenge 9:


New leads are added to Airtable with fields Lead Name, Email, Notes.

You want:

Use AI to determine the lead’s category: “Hot”, “Warm”, “Cold”.

If “Hot”, send to Slack channel #sales-hot-leads.

If “Warm”, create a follow-up task in Google Tasks

If “Cold”, just update Airtable “Next Review Date” = +7 days.

Constraint:

You can't use Multipath (IF condition).



Solution: 


#

1️⃣ Trigger — Airtable

  • Trigger when a new record is created in the Leads table.

  • Capture fields:

    • Lead Name

    • Email

    • Notes

#

2️⃣ Action — AI Categorization

  • Use an AI Text Classification model to analyze the “Notes” field.

  • The model returns one of: “Hot”, “Warm”, or “Cold”.

#

3️⃣ Action — JavaScript Logic

The JavaScript step will:

  1. Receive the AI classification result along with lead details.

  2. Check the category value returned by AI.

  3. Perform API operations accordingly:

    • If “Hot” → Call Slack API to post a message in the #sales-hot-leads channel with lead details.

    • If “Warm” → Call Google Tasks API to create a “Follow-up” task for the lead (due in 2 days).

    • If “Cold” → Call Airtable API to update the same record by setting the Next Review Date to 7 days from today.

  4. Return a confirmation message summarizing which action was executed.

#

✅ Outcome Summary

Lead Category

Action Taken

Hot

Send Slack notification to sales channel

Warm

Create a follow-up Google Task

Cold

Update Airtable with “Next Review Date” = +7 days









Challenge 9.1

An E-commerce company uses Shopify for online orders and Airtable for order tracking.
When a new order is created in Shopify, the system must automatically create a corresponding record in Airtable.
If the Airtable record already exists (matching by Order ID), it should be updated instead of duplicated.
If an order is cancelled in Shopify, the system should update Airtable’s “Order Status” column to “Cancelled” and send a Slack message to the Logistics Manager.
The workflow should handle both creation and cancellation using a single flow and avoid duplicate updates even during Shopify API retries.


Solution : 1️⃣ Trigger — Shopify
Triggered when a new order is created or updated in Shopify.




2️⃣ Action — JavaScript Logic
Handles both order creation/update and cancellation in one step.

  • Searches Airtable by Order ID.

  • If found → updates the record.

  • If not found → creates a new record.

  • If order is cancelled → updates Airtable status to “Cancelled” and sends a Slack alert.

  • Ensures no duplicate updates using Shopify’s event ID or timestamp.




3️⃣ Action — Airtable
Creates or updates the record based on Order ID.




4️⃣ Action — Slack
Sends a cancellation notification to the Logistics Manager channel when an order is cancelled.

 _________________________________________________________________


Challenge 10:
A company is conducting a large hiring drive where around 1,000 candidates are expected to appear. The company wants to automatically save the data of every candidate who visits the drive with the following conditions: If the candidate’s college name is IET or DAVV, store the data in a different Table/Sheet/Database. If the mobile number does not start with “91”, automatically add “91” before saving it to the database. If the candidate’s email domain contains “gmail.com”, send a welcome email that includes a coding-related motivational quote. If the email domain is not gmail.com, send only a basic welcome email.  


Solution: 


1️⃣ Trigger — Candidate Form Submission
Triggered whenever a new candidate submits their details.

2️⃣ Action — JavaScript Logic

  • Check if College Name = IET or DAVV → save data to a separate table/sheet.

  • If Mobile doesn’t start with “91” → add “91” before saving.

  • If Email Domain = gmail.com → send a welcome email with a motivational coding quote.

  • Else → send a basic welcome email.

3️⃣ Actions — Database & Email

  • Save candidate data (with corrected mobile and table logic).

  • Send the appropriate email based on domain.


Challenge 10.2 

Build the most optimized solution possible for the above workflow.


Solution : Receive candidate data (name, college, email, mobile, etc.).

  1. Normalize mobile number:

    • If it doesn’t start with "91", prefix "91".

  2. Check college name:

    • If college is IET or DAVV, save to a separate table/database.

    • Otherwise, save to the main candidate table.

  3. Check email domain:

    • If domain is gmail.com, send a welcome email with a motivational coding quote.

    • Else, send a basic welcome email.

  4. Return a success message confirming where the data was stored and which email type was sent.


_____________________________________________________________________



Challenge 11:
Simple Automation Challenge 11.1
Goal:
 A student recently started an agency business and wants to improve his business vocabulary automatically.
Automation Idea:
 He wants to receive one new vocabulary word every day via email.
 Each email should include:

  • The word

  • Its meaning in Hindi and English

  • Real-world use cases

At the same time, every word should be saved to a database (like a Google Sheet or table) with these columns:

  1. Word

  2. Hindi Meaning

  3. English Meaning

  4. Use Cases

The system should not repeat any word that has already been sent.
Constraints:

  • No constraints. (We can use any app or approach.)

:large_blue_circle:
  • For one full year, the system must ensure no vocabulary word repeats.

  • After one year, the system should start sending 10 previously learned words per day (as a revision).

  • The daily email will include those 10 words with their Hindi meanings, English meanings, and use cases.

  • After all words completed (10 each day), start with new words again.

Constraints:

  • The database (where all words are stored) can return only 200 rows at a time, so we need logic to handle data in batches when revising.

__________________________________________________________________________________________________


Solution: (By Kushagra)

11.1 Solution : -

  • Trigger - cron (which runs daily), with a retrieve data step of sheets to fetch all the stored words

  • Step 1 - Call AI with all the words fetched from sheet and a prompt which says

You are an AI assistant generating a daily vocabulary word for an email.
I will give you a list of words that have already been used.
Your task:

1. Generate a new English word NOT present in the given list.
2. Provide:

The word

Hindi meaning

English meaning

Real world use cases (at least 2–3 sentences)

3. Return the final answer in the following JSON format:
{
  "emailContent": "<string with the full email content ready to send>",
  "wordDetails": {
    "word": "<word>",
    "hindiMeaning": "<hindi meaning>",
    "englishMeaning": "<english meaning>",
    "useCases": [
      "<use case 1>",
      "<use case 2>",
      "<use case 3>"
    ]
  }
}
  • Step 2 - Send Mail (send mail to the target person, and use the mail content returned by AI)

  • Step 3 - Add new row in sheet (add the new word details in the sheet)

Mail content is not necessary to be generated by ai, we can just get the new words details, and use them in a manually written message which sending mail

11.2 Solution (6 steps) : -

  • Data will be stored in 2 sheets - one with all the words data and another one with 2 values (current word count and revised word count)

  • Trigger - Cron which runs daily

  • Step 1 - JS code ( this will call the data fetching api from sheet in loop to fetch all the data as there is a limit of 200 rows and also fetch data from sheet 2)

  • Step 2 - Call AI (Send the current list of words and the two values fetched from sheet 2, along with a detailed prompt which will explain the AI what to do)

  • Step 3 - Send Mail

  • Step 4 - Update Sheet 2 for the 2 values

  • Step 5 - If condition, to check if a new word was generated or old words were revised

  • Step 6 - Add new row in sheet 1 (if new word added condition is true)



_____________________________________________________________________



Challenge 12:
A multinational enterprise operates across multiple regions (US, EU, APAC) and runs over 200 tools, cloud functions, and integrations.
Each system continuously sends real-time alerts via webhooks to a central monitoring system.
Each alert includes:


alert_id, service_name, region, severity, type, description, timestamp
:dart:
  1. Automatically create and maintain regional “Incident Summary Tasks” in tools (Trello, Airtable, or Sheets.)

    • Only one active task per region per 7-day window. (No duplicate cards in last 7 days.)

    • Append all related alerts for that week to that same task and share summary on mail once in a week.

:construction:
  1. Build using single workflow

________________________________________________________________________________________Complex Automation Challenge 12.2
Extend the simple challenge:

  1. Escalate alerts dynamically based on trend and context.

    • If more than 10 alerts in 7 days → Notify Regional Ops Manager.

    • If alert frequency doubles compared to last week → Notify Global CTO.

    • If same alert reappears 3+ times in 24 hours, trigger auto-remediation via internal Fix API.

  2. Predict upcoming incident spikes using AI trend analysis and send proactive early-warning notifications.

  3. Human-in-loop intervention:

    • If AI flags “Potential false positive”, pause escalation and await manual Ops review via Gmail or Slack approval.

    • Continue workflow once approved or rejected.

  4. Generate and distribute a weekly AI-written “Incident Intelligence Report” summarizing all incidents by category, region, and trend, automatically sent to leadership.

:construction:
  1. Build using single workflow

________________________________________________________________________________________


Solution: 

12.1 (By Ashish Sahu)
Step Action to Use :

1 Trigger: Webhook Incoming Event (main trigger)  
2 Find/Check Existing Task (Search by Region + Date <= 7 days)  
3A If task exists → Update Task (Append alert details)  
3B If no task exists → Create New Task  
4→ Send Summary Mail.

_____________________________________________________________________



Challenge 13:

:jigsaw:
  1. Design a database (Sheet/Table) to store email data (like recipient email, subject, message, sender account, etc.).

  2. Create a workflow logic using viaSocket to automatically distribute and send emails — making sure:

    • Each email ID only sends up to 400 emails a day.

    • Emails are evenly divided among the 8 accounts.

    • Sending happens in batches using BCC.

:dart:
  • No email ID exceeds the daily limit (400).

  • All 10,000 emails are sent efficiently.

  • The workflow can run daily until all emails are sent.

Note: In the thread just number of steps you used to build this logic



Solution: (By Roy)

  1. cron daily

  2. Workspace memory store offset

  3. Find Row - Limit 3200, map offset from step 2.

  4. Update memory workspace- offset fetched from step 3.

  5. AI step- Configure 8 email and give proper to split 3200/8 for each email .

_____________________________________________________________________



Challenge 14:

:large_green_circle:
  • There are 8 different sender email IDs available. Emails should be sent alternately from these accounts to ensure equal distribution.

  • Each email must be sent individually in the “To” field (not in BCC).

  • Each sender email ID can send a maximum of 200 emails per day.

  • The system should continue sending emails daily until all contacts in the database have received their email.

:large_blue_circle:
  1. When new rows are found in the database (meaning new contacts are manually added), the system should automatically start sending emails to these new email addresses.

  2. When no new rows are found in the database, the system should instead send a follow-up email in the same email thread using the original message’s thread ID.


Solution: (By Ajit)


Daily Cron Execution

  • The cron job will run every day at 12:00 AM.

Fetch Client Data

  • Retrieve client records from the database one by one using a loop.

  • Each record must include: Row Number, Status, Name, and Email.

Email Sending Logic (Using JavaScript)

  • Use 8 different sender email IDs to send emails.

  • Emails should be sent only to clients whose status is “unsent.”

  • Logic based on row number ranges:

    • Rows 1 to 200 → send using Email ID 1

    • Rows 201 to 400 → send using Email ID 2

    • Rows 401 to 600 → send using Email ID 3

    • Rows 601 to 800 → send using Email ID 4

    • Rows 801 to 1000 → send using Email ID 5

    • Rows 1001 to 1200 → send using Email ID 6

    • Rows 1201 to 1400 → send using Email ID 7

    • Rows 1401 to 1600 → send using Email ID 8

  • As soon as row number 1600 is reached, the workflow must stop.

  • Use JavaScript code to generate email body dynamically.

Update Client Record

  • After sending each email, update the client sheet and mark the status as "sent".

Email Mapping in Code

  • In the send-email function, map the data properly:

    • To Email

    • From Email (based on row number logic)

    • Email Body (generated using JavaScript)


_____________________________________________________________________


Challenge 15:

Problem Statement
A client wants to automate their daily Slack “Focus of the Day” routine using viaSocket.
Current process:


  • Every day, the client manually sends the message “What’s your focus of the day?” to 4 different Slack channels.

  • Team members reply to this message in the thread with their daily focus updates.

What the client wants to automate:

  1. Automatically send the message “What’s your focus of the day?” every day to all 4 Slack channels.

  2. Wait for 5 hours after sending the message.

  3. Retrieve all thread replies for each channel using the Slack actions available in viaSocket.

  4. Filter out unique users and capture:

    • Slack user ID

    • Their focus message (text)

    • Slack Channel name/Team name/TeamID

  5. Send each user’s response one by one to another workflow for further processing.

  6. Check attendance:

    • Compare which Slack users have not replied.

    • For users who missed sending their focus OR sent focus message in the thread after 10 AM mark them as “absent” in Keka.

  7. The client already has a database mapping:

    • Slack ID

    • Email ID

    • Team Name

    • Keka Account ID

  • You have 30 minutes to solve this without using AI agents.

  •  Make sure to reply in the thread like: "Solved in 10 steps in 15 mins."

  • I will help you learn automation only if I know that you genuinely want to learn, so make sure to mention the time you took to solve this automation challenge.


Solution: (By Ravi Sir)


Trigger:
We will call Cron, and then attach an Action (JS Code) where we will mention the channel IDs of all channels and the channel ID we want to send the Focus message on, and then use the “Run individually” option to trigger the flow for each channel.Actions:
→ First, we will send a normal Slack message to the respective channel.
→ Then, we will add a Delay for a random time between 5 to 7 hours.
→ After delay, we will retrieve the message replies (thread messages) from Slack.
→ Next, we will retrieve the database records for that specific channel name/team name.
→ Then, we will write a JS code step to compare who has replied with the database data and identify all team members and their Slack IDs.
→ This JS step will return all members’ details (team member name, Slack ID, Keka ID, focus text, and absent flag – true/false). The JS code will then send data for all team members one by one to another flow using a webhook or API trigger.
→ In another flow, it will check the absent flag, and if it is true, the system will mark the user as absent in Keka.

_____________________________________________________________________


Challenge 16:
Problem Statement — “AI-Powered Employee Appraisal Flow Using Keka”Every company conducts annual appraisals to evaluate employee performance. The goal is to automatically generate AI-driven appraisal reports for each employee using data available in Keka APIs, such as attendance, login/logout times, leave details, and holidays — without any manual work.

Objective:
To create an automated workflow that:

  1. Collects employee data (attendance, leaves, holidays) from Keka APIs for a 12-month period.

  2. Calculates:

    • Total leaves taken (categorized by type: medical, floater, etc.)

    • Total attendance days.

    • Average login and logout times.

    • Total working hours and punctuality (based on login time).

    • Overdue or irregular attendance.

    • Sandwich leaves (leaves taken before and after holidays).

  3. Generates an AI-based performance summary that describes what the employee achieved or how consistent they were throughout the year.

  4. Send the report 10 days before a employee is completing 12 months in the company.

    Constraints :

  • Each flow in viaSocket has a maximum runtime of 50 seconds, so long-running calculations must be divided into multiple smaller flows.

  • Keka APIs only allow 3 months of attendance data per call, so the system must iterate across four quarterly periods to gather the full year.

Key Data Sources (from Keka APIs):

  1. Get All Employees  (which returns Keka IDs and name of employees)

  2. Get Employee Attendance (start date – end date) – 3 months per call (return only dates when attendance marked, time of login and logou)

  3. Get Declared company's Holiday.

  4. Get Leaves by Keka ID of employee  (Requested, assigned, approved, paid, type)

Expected Workflow Output:

  • Attendance regularity

  • Working hour patterns

  • Leave patterns and punctuality

  • Observed work discipline

  • AI-generated yearly performance summary in natural language

You have total 1 hours to build this workflow.
Note: Reply in the thread like Total number of steps, number of flow (if any), Total time taken to build.


Solution: 

WhatsApp Image 2025-12-10 at 12.52.58_ac19efa8.jpg

Flow 1 :
first we set one scheduler for every day at one time
after that get the data from keka api it will give you ID and name
and then with the help of id we are getting joining date
then cal. the day from joining data to now and if total days + 10 = 365 day or 366 day then we send one post api which is sending the Id of that user

Flow 2 :
if this post api hit then take the Id if their is to many id then take it one by one
then create one loop in that loop we are getting 3 month data from keka api and calculate all the attendence and all
it will run 4 times
after the we got all the data then send it to AI and generate report
then send msg.

_____________________________________________________________________


Challenge 17:


Solution: 



_____________________________________________________________________


Challenge 18:


Solution: 



_____________________________________________________________________


Challenge 19:


Solution: 



_____________________________________________________________________


Challenge 20:


Solution: 



_____________________________________________________________________


Challenge 21:


Solution: 



_____________________________________________________________________


Challenge 22:


Solution: 



_____________________________________________________________________


Challenge 23:


Solution: 



_____________________________________________________________________


Challenge 24:


Solution: 



_____________________________________________________________________


Challenge 25:


Solution: 



_____________________________________________________________________


Challenge 26:


Solution: 



_____________________________________________________________________


Challenge 27:


Solution: 



_____________________________________________________________________


Challenge 28:


Solution: 



_____________________________________________________________________


Challenge 29:


Solution: 



_____________________________________________________________________


Challenge 30:


Solution: 



_____________________________________________________________________


Challenge 31:


Solution: 



_____________________________________________________________________



Was this helpful?
DocStarBuilt with DocStar
Was this helpful?