Back to Pulse
Product updates

What’s new in Pulse

A clear record of improvements shipped across the public product, interactive demo and signed-in workspace.

Current deployment 2026.09.24:2018 IST
Version 1.37.1
24 September 2026
Everyone
Latest release

Dropping a card into an empty board column now works

Dragging a task into a column that had no cards in it was close to impossible — the card would land in the next column along instead. Anyone whose In Progress column was empty could not get a task into In Progress at all. Whatever is under the cursor now wins.

  • The board decided where a card landed by comparing the dragged card’s corners to every column’s corners. A column is a tall box, so its corners sit far from your cursor, while a card in the next column sits right under it — and won. An empty column had no cards of its own to catch the drop, so it lost every time.
  • It now uses the target your cursor is actually inside. Empty columns catch a drop like any other.
  • Found from the board activity log: seven consecutive drags from To Do in forty seconds, every one landing in Review, on an account with no In Progress tasks at all.
  • No SQL step for this release.
Version 1.37.0
24 September 2026
Everyone

Budget filter on influencers, what an employee applied for, and searchable long dropdowns

Three small things. Influencers can be filtered by what you are willing to pay a reel. The team directory shows what each hired person originally applied for. And the longest dropdowns in the app — starting with the 43-year graduation list on the public application form — can now be typed into instead of scrolled.

  • Influencers: a “Budget ₹/reel” box next to the status and category filters. Anyone at or under your number shows; anyone above it shows only if their rate is negotiable, because that is a conversation rather than a no.
  • Team directory: an “Applied for” column showing the role each hired person applied for. Visible to HR and super admins only — the directory is company-wide but an application is not.
  • The public job application: the graduation year (43 options) and the role you are applying for (16) can now be typed into. Same for the graduation year on the trainee form.
  • This is the first pass of a wider sweep — about fifty more dropdowns across the app are on the list, the ones that grow with your data first.
  • No SQL step for this release.
Version 1.36.0
24 September 2026
Everyone

Interviewers can close their own rounds

The interview scheduling shipped in 1.34.0 sent the interviewer a task, an email and the candidate’s full page — and then gave them nowhere to write down what happened, so every outcome came back to HR by hand. The candidate page now carries the rounds themselves, and whoever is running one can record where it got to, the outcome and their feedback without going through HR at all.

  • The candidate page (/c/…) now shows every interview round: when it is, how long, where, who is running it, where it has got to and what came of it.
  • A round assigned to you is marked “Yours to run” and can be closed out from that page — status, outcome and feedback — with no HR round-trip.
  • What you record lands on the candidate’s timeline immediately, so HR sees it without being told.
  • An outcome cannot be recorded against a round still being arranged; the interview has to be marked completed first. Enforced on the server, not just in the form.
  • Interviewers can record an outcome but cannot move the date or swap the interviewer — the arrangements stay with HR.
  • The candidate page also now shows the 1st screening: result, notice period, points discussed and HR’s notes. Notice period was being recorded and shown nowhere.
  • No SQL step for this release.
Version 1.35.0
24 September 2026
Everyone

Training work gets reviewed, and people who have left stop filling up HR screens

A training task could be submitted but never checked — there was no screen for it, so every submission sat on “submitted” forever and trainees could not tell what had been looked at. There is now a Submissions tab in Training Admin, and trainees can see their own work, their feedback and which assessment questions they got wrong. Separately, hiring now records a joining date, and staff who have left no longer appear on the attendance roster or the leave summary.

  • Training Admin → Submissions: open what a trainee sent, score it, write feedback, then Approve or Send back for rework. Sending it back requires a note.
  • Trainees now see their own submission again after sending it — their answer, their link, and the file they uploaded — plus the feedback and score, and a Submit again button when work is sent back. Before, the answer vanished the moment they clicked Submit.
  • The badge on a submitted task read “Submitted · Submitted” because nothing ever changed its state. It now reads Awaiting review, Approved or Needs rework.
  • After an assessment, trainees see which questions they got wrong, the right answer and the explanation. Pulse had always worked this out and then thrown it away, leaving a failing trainee with only a percentage.
  • Hiring someone now asks for their joining date. It was never recorded, so payroll had no start date for them and a September joiner counted in every month back to April; their salary also took effect from the day HR clicked Hire rather than the day they start.
  • Attendance → team timesheet: “Show employees with no entries” no longer lists people who had already left, each one permanently Pending. The list is scoped to the date being viewed, so opening a past day still shows whoever worked it.
  • HR leave rows for people who have left showed a raw id such as “5ab51029” instead of a name, because the name lookup only loaded current staff. Fixed.
  • The financial-year leave summary now hides people who have left by default, with a tick to bring them back when you need the full-year figures.
  • No SQL step for this release.
Version 1.34.0
23 September 2026
Administrators

1st screening and interview scheduling

The screening call and the interviews that follow it are now recorded in Pulse instead of living in somebody’s head. HR writes down what came out of the screening; each interview round gets its own date, interviewer, status and outcome; and the person asked to run it gets a task, an email and the candidate’s full page — resume, experience, CTC, notice period and the screening notes — rather than a copy of a few fields.

  • “1st screening” on any candidate, under the ⋯ menu: screening status, result, notice period, points discussed and your notes. It is filed on their timeline and does not move their stage — you still decide that yourself.
  • “Schedule an interview” raises a round with a date and time, length, mode, link or place, and an interviewer. Rounds show on the candidate card as R1, R2 … and open for editing when clicked.
  • Each round carries its own status — Interview scheduling, Interview scheduled, Interview completed, Feedback pending, Closed — and, separately, an outcome of Selected, Rejected, Hold or Next round. They are separate because an interview can be finished with nobody having written up a decision, which is the case worth being able to see.
  • Assigning a round shares the candidate with that person at the same time. Before, a task could point at a candidate page the assignee was not allowed to open.
  • The interviewer can record the outcome and feedback themselves, without going back to HR.
  • An interviewer from outside Pulse can be named in free text instead of picked from the list.
  • Follow-up tasks are no longer created against a project that has to be named exactly “Learning”. Renaming that project used to stop tasks being created with only a warning nobody read.
  • Stage follow-up tasks now carry the candidate’s page link too, instead of repeating a few fields into the description.
  • The seven pipeline stages are unchanged. Interview states belong to an interview, not to the candidate, and a candidate can genuinely be in two of them at once across two rounds.
  • Requires one SQL step before publishing.
Version 1.33.0
23 September 2026
Administrators

Hire on the Colladome email, and send the onboarding email from Pulse

Hiring someone now asks for the Colladome mailbox you created for them. That becomes their Pulse login instead of the personal address they applied from, and the password is emailed to that mailbox rather than shown on screen. Separately, the welcome email — joining date, mailbox, Slack, onboarding portal — can be sent from Pulse instead of being retyped by hand.

  • The Hire dialog has a required “Official Colladome email” field. Their Pulse login is created on that address, not their gmail.
  • No password is shown any more. Pulse emails it to the new mailbox, which only they can read, and they still set their own on first sign-in. Nothing sensitive appears on screen or is stored.
  • If the login email cannot be delivered — usually because the mailbox is not created on Hostinger yet — you are told exactly that, and can use Forgot password on the sign-in page once it exists.
  • “Send onboarding email” on any hired candidate, under the ⋯ menu: joining date, what they are joining as, their Colladome email, webmail link, login time, Slack invite and the onboarding portal, in the shape HR was already sending by hand.
  • The mailbox password in that email is typed at send time and never saved in Pulse — so a resend needs it typed again. You can also leave it out entirely and send it over WhatsApp, which is safer.
  • Sending is recorded on the candidate’s timeline (who and when, never the password), so the next person can see it was done.
  • Requires one SQL step before publishing.
Version 1.32.1
23 September 2026
Administrators

Who gets candidate emails is a setting, the emails read properly, and a wrong project can be corrected from the timesheet

Three fixes. Sandhya and Sweksha come off the internal candidate emails without losing any access. The internal email no longer says “Previous stage: hired” when someone is hired, and stops printing an empty internal note. And a reviewer who spots the wrong project on a timesheet row can correct it there.

  • Internal candidate emails now follow a “Candidate updates” notification setting instead of being fixed to whoever holds HR admin or super admin. Anyone can be taken off without changing their role — and without a code change next time.
  • Sandhya and Sweksha are switched off as part of this release. Their roles and every other access are untouched.
  • The internal email said “Previous stage: hired” when a candidate was hired, because hire passed the new stage instead of the old one. It now reads “Moved from: interview 1”, and says nothing at all when there is nothing to say.
  • “Internal note (not sent to the candidate): —” no longer appears when there is no note. When there is one, the internal note and the message sent to the candidate are two clearly separated blocks, the same as on the Candidates tab.
  • Timesheet: reviewing a day, click the Project on any row to move that task to the right project. The dialog says plainly that this moves every hour ever logged against that task, because the project belongs to the task, not to the row.
  • Requires one SQL step before publishing.
Version 1.32.0
21 September 2026
Administrators

Expense invoices, challans and receipts — one place, month by month

Finance → Expense docs is the repository for everything the company was billed or paid out on: purchase invoices for ITC, GST and TDS challans, payment receipts. Pick a month and download the whole set as a zip with an index for the CA. Client invoices are not here — those stay under Invoices.

  • Attach as many documents as an expense needs — the invoice and the receipt for paying it both — instead of the single file an expense allowed before. The vendor, amount, GST/ITC, invoice number and payment status come from the expense, so there is one set of numbers, never two.
  • Challans and anything that is not a purchase can be filed on their own with a payee, reference and amount — a GST payment is not an expense row, so it has nowhere else to live.
  • “<n> expenses with no purchase invoice attached”, largest ITC first: exactly the list the CA asks for, and the one that would have caught August’s ₹10,051.66 of credit Pulse could not evidence.
  • Three figures at the top: documents this month, ITC with an invoice on file, ITC with none.
  • “Download <month>” builds a zip foldered by document type with an index CSV (date, payee, expense, category, invoice number, amount, GST/ITC, payment status, file name) — the monthly set to hand over.
  • Search across vendor, file name, invoice number and notes; filter by document type and whether it carries ITC.
  • Files go in the existing private expense-proofs store; only Finance Admins, admins and super admins can see or add them.
  • Requires one SQL step before publishing.
Version 1.31.1
21 September 2026
Signed-in teams

Notes on a candidate, internal and external, without changing their stage

Until now a note could only be written while moving a candidate to another stage — so a call that changed nothing had nowhere to go. Every candidate now has Add note, with two clearly separated boxes: an internal note the candidate never sees, and a message that is emailed to them only if you tick the box.

  • “Add note” on every candidate card and inside the expanded view. Their stage does not change.
  • Two boxes, labelled and colour-coded: grey with a padlock = internal, team only; tinted with an envelope = message to the candidate. The tick that sends the email is right under the message, and is only available once the box has text.
  • The history is now “Notes & stage history” and shows the same two blocks for every entry, so you can tell at a glance what the candidate has actually been told — on the Candidates tab and on shared candidate pages.
  • Internal notes stay editable (the pencil from 1.30.0); a message already emailed to a candidate is not editable, because they already have it.
  • HR and super admins get a copy of every note email, with the internal note alongside it.
  • Requires one SQL step before publishing.
Version 1.31.0
21 September 2026
Signed-in teams

Candidates tab laid out like Creators

The Candidates tab now reads the way the Creators page does: count tiles per stage, one search box with two filters, one compact card per person with a stage dropdown, and everything else tucked away until you open it.

  • Seven stage tiles at the top (Pending, Shortlisted, Future, Interview 1, Interview 2, Hired, Rejected) — click one to filter, click again to go back to “In the pipeline” (everyone not yet hired or rejected).
  • One card per candidate: name, stage, role, email, phone, location, experience, CTC, applied date, and the latest stage remark on one line. Click the card for full details and the complete stage history.
  • Actions are three things instead of eight buttons: Resume, WhatsApp, and a stage dropdown that opens the same move / hire / reject / reset dialogs as before. Share for review, Send assessment, candidate page and Delete live under the ⋯ menu.
  • Export the current list as CSV, same as Creators.
  • The recovery lists (applications that never saved, started-but-not-submitted forms) and the stage-dates table are collapsed at the bottom — still there, no longer the first thing on the page.
  • No data or permission changes; nothing to run before publishing.
Version 1.30.0
20 September 2026
Signed-in teams

Create a task while punching out, fix a hiring remark, attach files to a task, and an Invoices tab

Four small asks from the team, shipped together: log hours against work that had no task yet, correct an HR stage remark after the call actually happens, attach PDFs and images when creating or editing a task, and a Finance tab that is just the invoice register.

  • Punch out → Log this session: “Worked on something with no task? Create one now”. Title, project, due date and priority; the task is assigned to you, lands in To Do and is added to the log so you can put hours on it straight away. Both the header punch-out and the Attendance page.
  • Hiring: the internal remark on any stage entry has a pencil. “Call not answered” can become what was discussed once the call happens. The timeline marks it (edited); the note already emailed to the candidate is left as sent. HR admins and super admins, on the Candidates tab and on shared candidate pages.
  • Tasks: “Attach PDF / images” on New task and Edit task — PDF, images, Office files or zips up to 25 MB each. They land in the task’s Attachments, the same place the task page already shows. Edit task also lists what is attached and lets you remove a file.
  • Finance → Invoices: the invoice register on its own — raised, received, outstanding and overdue for the period at the top; New invoice, Edit, Exclude, Zoho sync and Export live here. Collections keeps Record payment, Followed up and the bank matching.
  • Finance tabs now open from a link: /finance?tab=invoices, ?tab=gst, ?tab=tds, ?tab=reconciliation.
  • Requires one SQL step before publishing (two columns on candidate_stage_events).
Version 1.29.0
18 September 2026
Signed-in teams

Assessments: send an assignment over WhatsApp, track the work that comes back

HR keeps a list of assessments (a name and a Drive link). From the Candidates tab or a candidate page, HR or an interviewer sends one over WhatsApp; Pulse records it, and the returned work is uploaded against the same record for the next reviewer.

  • HR Admin → Assessments: add, edit, archive assessments. Each shows how many times it was sent.
  • “Send assessment” on every open candidate (Candidates tab and candidate page): choose the assessment, check the number, edit the message, and WhatsApp opens with it. The send is recorded with who sent it and when.
  • Status per send: Sent → Work received → Reviewed (or Withdrawn). HR or the sender uploads the returned file (up to 15 MB); anyone the candidate is shared with can open it from the candidate page.
  • Requires one SQL step before publishing.
Version 1.28.3
18 September 2026
Signed-in teams

A bar at the top when emails are failing

When Pulse's outgoing email is failing, an amber bar says so and why, in plain words. Nothing in Pulse waits for email: stage moves, hires, rejections, candidate shares, reviews and feedback all save regardless.

  • The bar appears when the last hour holds two or more failed sends and no success since; it checks every five minutes and disappears on its own once emails deliver.
  • The reason is translated: sending quota used up, login refused, settings missing, server refusing.
  • Reviewed every place Pulse sends email — none blocks the action on a failed send.
Version 1.28.2
18 September 2026
Administrators

Emails go out one at a time, with a retry

Hostinger rejects several emails sent at the same moment from one mailbox (relay error 502). Pulse now sends them one after another and retries once, so a stage move that sends two emails no longer loses one.

  • All transactional email from Pulse is queued in order; a 5xx or network failure is retried once after 1.5 seconds.
  • Send test emails on Access & Roles should now show five Delivered rows.
Version 1.28.1
18 September 2026
Administrators

Hiring: a failed candidate email is now shown, with the reason

Moving a candidate saved the stage and said nothing when the email did not leave. The dialog now shows the delivery error so HR knows the candidate has not been told.

  • Move-stage, Hire and Reject: if the candidate’s email or the HR copy fails, a red message names which one and the provider’s reason.
  • Every attempt is still logged in notification_deliveries for the audit trail.
Version 1.28.0
18 September 2026
Signed-in teams

Candidate pages: share a candidate with the interviewer

Every candidate gets a short link (pulse.colladome.com/c/…) with the resume, HR notes, package and full profile. HR shares it with whoever interviews; they leave their feedback on the same page.

  • HR Admin → Applications: “Share for review” on every candidate. Pick one or more people and an optional note; each gets an email and a bell notification with the link.
  • The candidate page shows profile, package (current and expected CTC, contract rate), the candidate’s note, HR notes and stage history, the resume (opens with a 5-minute link), and who it is shared with.
  • Interviewers add a recommendation (Advance / Hold / Do not proceed), a 1–5 rating and comments. HR admins are emailed on every submission, and the Applications list shows each reviewer’s verdict.
  • Access: signed-in Pulse users only, and only the people HR shared the candidate with (HR admins and super admins always). Forwarding the link gives nobody else access; HR can remove a person from the page.
  • Requires one SQL step before publishing.
Version 1.27.0
18 September 2026
Administrators

Hiring: internal note and message to candidate, kept apart

Every stage change now has two boxes: an internal note the candidate never sees, and an optional message that goes into the candidate’s email.

  • Move-stage, Hire and Reject dialogs: “Internal note (team only)” and “Message to candidate” are separate fields. Only the second reaches the candidate, appended under the standard stage text.
  • Internal notes, rejection categories and salary were never emailed to candidates before either; the labels now say so, so nobody has to guess.
  • The HR / super-admin copy shows both, labelled “Internal note” and “Message sent to the candidate”.
  • Candidate history on the Applications tab shows the internal note and, on its own line, what was sent to the candidate.
  • Requires one SQL step before publishing.
Version 1.26.0
18 September 2026
Administrators

Project Manager role

A project manager sees every project and client, not only the ones they have a task on. The role is granted from HR Admin → Access & Roles.

  • New role “Project Manager” on Access & Roles. Holders get the full Projects and Clients pages (not “My Projects”), every project’s detail page and its tasks, and can manage tasks on any project.
  • It does not open money: invoices, payments and project burn stay with finance, admins and super admins.
  • Akash is given the role by the SQL step, so nothing to tick for him.
  • Requires one SQL step before publishing.
Version 1.25.1
17 September 2026
Signed-in teams

Signal Admin tick fixed; task moves say why they fail

Ticking Signal Admin on Access & Roles was refused by a stale check. Moving a task between columns now leaves a record of who moved it, and a refused move says why.

  • Access & Roles: ticking “Signal Admin” no longer fails with “Invalid enum value”.
  • Tasks: dragging a card to another column is written to the task’s activity as a status change, with “moved on the board”. A card moved back by a colleague is no longer a mystery.
  • Tasks: a status change the database refuses now shows an error instead of “Status updated” with nothing changed.
  • Tasks: the dependency message names the task in the way, e.g. “Finish ‘Website copy’ (Review) first”, instead of “blocked by an incomplete dependency”.
  • Board: after a card changes column the board re-reads from the database, so it shows the true position even if someone else moved the card meanwhile.
Version 1.25.0
17 September 2026
Administrators

Signal Admin role

Signals can now be handed to anyone from HR Admin → Access & Roles, not only the Business Development department.

  • New role “Signal Admin” on Access & Roles. It opens Signals and puts the person on the daily update.
  • Everyone who already had Signals — the Business Development department and every super admin — is given the role, so the roles page shows who has it.
  • Requires two SQL steps before publishing: the role value, then the grants (Postgres will not do both in one go).
Version 1.24.2
17 September 2026
Signed-in teams

Signals page no longer scrolls sideways

A long link in a spam message stretched the entries column past the screen and pushed the whole page sideways. Long text now wraps inside its card.

  • Signals: both columns can shrink to the screen; messages and page links wrap anywhere; the one-line preview is capped at 160 characters.
  • Leads: same wrapping on the message and action log.
Version 1.24.1
16 September 2026
Signed-in teams

Signals: Forminator forms too, certain junk filed on arrival, leads CSV

The website's contact form and pop-up are Forminator forms, not only Elementor; both now post into Signals. Entries that cannot be anything but spam are filed as junk the moment they arrive, and the real ones export as a sheet.

  • colladome.com runs two form plugins. The site snippet now catches Forminator submissions as well as Elementor Pro ones, with the Forminator submission number carried as the reference (#1124 and so on), and the pop-up form recognised by name.
  • Junk in two grades. Certain — no email or phone, Cyrillic or forum-code spam, two or more links, a domain for a name, the usual bot signatures — is filed as Junk on arrival, still listed, one click to undo. Likely — SEO and lead-list pitches — keeps the “Looks like junk” hint for a human call.
  • Leads tab gains a CSV of the real ones: when it came in, source, reference, name, company, contact, message, owner, status, last action.
  • Message fields named Textarea or Text are read as the message.
Version 1.24.0
17 September 2026
Signed-in teams

Signals: the social-signal sheet and the evening Slack update, in one place

Sandhya’s ask. Website contact-form and pop-up entries post themselves into Pulse; BD marks each real or junk with one click, types the counts for the channels that cannot be automated, and sends the day’s update once — to Slack and by email. Every real one becomes a lead with an owner, a status and an action log.

  • Delivery → Signals, for the Business Development department, its head, admins and super admins. No new role: it reads the department on the profile.
  • Website entries: colladome.com’s Elementor forms post to Pulse (a one-time webhook setting on the site; the key lives in Lovable secrets). Each arrives as Unreviewed with a “looks like junk” hint from the obvious tells — no contact details, SEO and backlink pitches, two or more links. Real / Junk / All remaining junk.
  • Counted by hand: LinkedIn and Instagram comments, post mentions, blog comments, Google reviews for Jaipur and Hyderabad (with unreplied), LinkedIn newsletter. Numbers for the day, saved with the update.
  • The update: written in the exact shape the team already posts, from the numbers; editable; Copy, or Send — Slack (when SLACK_SIGNALS_WEBHOOK_URL is set) and email to everyone in BD plus super admins, with an in-app note. History shows which days were sent.
  • Leads: a real signal becomes a lead — owner, New → Contacted → Qualified → Won / Lost, an action log with who did what and when. Oldest untouched first; anything with no action for more than three working days is flagged, and lands on the dashboard’s Needs your attention for BD.
  • History: last 30 days by day — website total / real / junk, the hand counts, and whether the update went out. Replaces the sheet’s Forms tab.
  • Requires the signals migration before publishing, then WEBSITE_SIGNAL_SECRET (and optionally SLACK_SIGNALS_WEBHOOK_URL) in Lovable secrets, and the webhook URL on the two Elementor forms.
Version 1.23.1
16 September 2026
Administrators

Never-saved card: matched by name and date, and dismissable

1.23.0 cleared a lost upload only when the same file was later saved. Harshita’s later application carried a different file, so she stayed listed. Two more ways to clear a false alarm.

  • A resume whose filename starts with a person’s name is not lost if an application in that name landed between a day before and three days after the last attempt — that is one person retrying and succeeding.
  • New “Already applied” button on each row for HR to clear one by hand; it stays cleared.
  • Requires the orphaned_resume_dismissals migration before publishing.
Version 1.23.0
16 September 2026
Administrators

Half-finished applications are kept, and the never-saved card stops crying wolf

Until now nothing a visitor typed on Apply, the trainee form or the creator page was stored until they pressed Submit. It is now saved as they type, once there is a name, email or phone, and HR and the content team see who stopped halfway. The “Applications that never saved” card no longer lists a person whose retry succeeded.

  • Apply, Trainee and Creator forms save what has been typed two seconds after the visitor pauses, from the moment there is a name, email, phone or Instagram handle. A refresh continues the same draft; a successful Submit closes it.
  • HR → Candidates: new card “Started applying, never submitted” — name, contact, which step they reached, when they last typed, and every field they filled, with a CSV. Dismiss removes one from the list. Creators gets the same card for the creator form.
  • Drafts are visible to HR admins and super admins (Apply, Trainee) and content admins and super admins (Creator); the public page can only write its own draft. Sixty days are shown.
  • Applications that never saved: a resume whose filename was later saved under a new upload is one person retrying and succeeding, not a lost candidate, and is no longer listed. This is why Harshita Kushwah sat on the card for a week while her application was already in the pipeline. Since the 11 September fixes there have been no genuine failures.
  • Payment-request and feedback emails to the team now carry a reply-to of the vendor or colleague who raised them, so replying reaches them instead of noreply@.
  • Requires the form_drafts migration (also updates list_orphaned_resumes) before publishing.
Version 1.22.3
16 September 2026
Administrators

Time, not just date, on applications

Candidates from Apply and creators from the influencer page now show when they applied to the minute, everywhere the date appeared alone.

  • HR → Candidates: the stage-dates table shows the time under each date, so two moves on the same day read in order.
  • Creators: the card shows date, year and time; the CSV export carries the same. The “Applications that never saved” card gains the year.
Version 1.22.2
16 September 2026
Signed-in teams

Needs your attention: says when it cannot load, ignores not-punched-in leave

The dashboard card could show only Timesheets while quietly dropping your overdue tasks and reviews if one of its queries failed. It now says so instead. Auto-generated not-punched-in leave no longer counts as an approval waiting on you.

  • If any of the card’s queries fails, the card shows the error rather than an incomplete list that reads as “nothing overdue”. The first day of 1.22.0 hid every task section this way while the API’s schema cache still lacked the new column.
  • Leave to approve excludes “not punched in” rows: attendance generates those, nobody asked for them, and they are an HR clean-up rather than a request waiting on the approver.
  • Waiting for your review now also catches tasks in the content states (In review, Ready to publish) where you are the reviewer, not only the plain Review state.
Version 1.22.1
16 September 2026
Administrators

Keep for future from any stage

1.22.0 offered “Keep for future” only on shortlisted candidates, so from Pending the Future tab looked empty and unreachable. It is now offered wherever a candidate is still in play.

  • Hiring: “Keep for future” appears on Pending, Shortlisted, Interview 1 and Interview 2 candidates. It still asks what to keep them in mind for and still sends the candidate nothing.
  • Reminder: 1.22.0 needs its SQL run in Lovable before the feedback button, the new task statuses, the Future stage and the dashboard card work. Until it is run, “Report a problem” says the pulse_feedback table cannot be found and moving a candidate to Future is refused. The same file now also asks the API to reload its schema cache, so the new table is visible the moment the SQL finishes.
Version 1.22.0
16 September 2026
Signed-in teams

Stuck tasks get named, approvals land on the dashboard, and Pulse takes feedback

Six asks from the team in one release: tasks that stop moving are chased, everything waiting on you sits in one card, anyone can report a bug or an idea from the sidebar, the Glassdoor link works when signed out, a vendor budget can be split across projects, and hiring gets a Future bucket.

  • Tasks: four new statuses — Blocked, Waiting for approval, Waiting for input and On hold — in the status picker on every task. They stay in the To Do column with an amber badge, so a parked task is never mistaken for one nobody has started, and parking a task is allowed even while a dependency is open.
  • Tasks: every task now records when its status last changed. A task that sits in the same stage for more than three working days (Sunday and the 2nd and 4th Saturday do not count) is a stuck task. Monday to Friday at 09:30 the assignee gets it in the app and by email — only their own, only while it is stuck. Blocked, Waiting and On hold tasks are left alone; that is what those statuses are for. The category is “Stuck task reminder” in Notification Preferences.
  • Dashboard: a “Needs your attention” card at the top. Your overdue, stuck and parked tasks and the reviews people have asked you for; then whatever you can approve — expenses if you are finance, leave if you are HR, timesheets for your reporting scope, content in review if you are a content editor — each with a link to the page that does it. Empty means empty; the card says so.
  • Feedback: “Report a problem or idea” at the foot of the sidebar. Bug, broken link, workflow issue or feature suggestion, one line and optional detail; the page you were on is attached automatically. Every super admin is emailed, and Administration → Feedback lists the reports with New / Looking / Done / Won’t do and an admin note.
  • Glassdoor: the profile link now opens Colladome’s public company page on Glassdoor, so it works whether or not the person has a Glassdoor account.
  • Vendor budgets: a budget can be split across projects, each with its own amount, and the amounts must add up to the approved total — the database refuses a split that exceeds it. The vendor sheet’s By project table gains an Approved column so it can be read against what was recorded, and the vendor portal shows the split on the engagement.
  • Vendor portal: the engagements list had been reading two columns that no longer exist since budgets became single-month; it now loads.
  • Hiring: a Future tab between Shortlisted and Interview 1 for candidates worth keeping but not for this opening. “Keep for future” asks what to keep them in mind for, sends the candidate nothing, and “Back to Shortlisted” returns them without emailing them again.
  • Requires the pulse_1_22_0 migration before publishing (new task statuses, status_changed_at, pulse_feedback, vendor_budget_projects, the hiring status, the Glassdoor URL). The daily reminder runs from the same recurring-notifications job as the other digests.
Version 1.21.3
15 September 2026
Administrators

GST: months paid in full stop reading as carried forward

April to July were settled by challan, yet the ledger carried ₹1,16,092 forward. The return had set off input credit Pulse never knew about; Pulse now records that set-off per month and the payable matches the challan.

  • Pulse works out GST payable as output tax minus the credit on purchase invoices it holds. The filed GSTR-3B set off more — purchases never entered as expenses, and the credit-ledger balance brought forward from last year. Inside Pulse the difference could only ever be paid in cash, so every mapped month still showed a balance.
  • New per-month record of what the return actually did: output tax, ITC used, cash paid, ARN and filing date, and the amount set off beyond Pulse’s own credit. The payable now subtracts it. April 88,682, May 14,219, June 6,563, July 6,628 — read from the four filed returns — are recorded.
  • The GST ledger shows a new table, “Input credit set off in the return”, so the number is explained rather than silently absorbed. It carries the note that April’s figure includes ₹54,513 brought forward from FY 2025-26.
  • April to July are marked filed with their ARNs; the report no longer says 0 of 12 months filed.
  • Guard unchanged: a liability is never reduced below what has already been settled against it, so re-running the materialiser after a set-off cannot orphan a challan.
  • Requires the gst_itc_setoffs migration before publishing.
Version 1.21.2
15 September 2026
Everyone

One footer on every public page

Apply, the trainee form, the creator page, the home page, Contact and the client centre all end the same way now — the same links, in the same order, in the page’s own palette.

  • The marketing footer takes a dark tone for the cream-and-gold pages (Apply, Trainee, Creators) and keeps the theme tone elsewhere. One component, two palettes, no drift.
  • Apply had its own four-link footer and the trainee page had none; both now carry the full set: product links, careers, trainee programme, creator programme, contact, privacy, terms, release notes, socials, email and phone.
  • The home-page footer’s Features and Teams links were page anchors that went nowhere from any other page; they are gone, and the Pulse link goes to the home page.
  • Offices line (Jaipur · Hyderabad · Dubai · Portland) and the copyright line appear everywhere, not only on Apply.
Version 1.21.1
15 September 2026
Everyone

The creator page previews properly when shared

Sharing pulse.colladome.com/influencers on WhatsApp or Instagram showed a cropped photo and half a sentence. It now shows a proper card, and search engines get the whole story.

  • A share image drawn for the purpose — 1200×630, the studio photo with the title, the URL and the logo on it — replaces the raw 1920×1280 photo. The tags said 1200×630 while the image was not, which is exactly the mismatch WhatsApp drops.
  • Every share tag the page needs is set on the page itself: image type, size and alt, locale, secure URL, the Twitter card and its alt. Nothing is inherited from the app shell any more.
  • Structured data for search: the page, the organisation with its Jaipur address, breadcrumbs, and the questions creators ask as an FAQ — so a search result can carry them.
  • The questions themselves are on the page, above the footer: who it is for, whether it is paid, where the studio is, what to bring, how long a shoot takes, what happens after applying.
  • robots.txt and sitemap.xml exist for the first time. The sitemap lists the public pages; robots keeps crawlers out of sign-in, the API and the onboarding links.
Version 1.21.0
15 September 2026
Administrators

Nano creators can apply at pulse.colladome.com/influencers

A public page for the creator programme in Jaipur — the podcast studio, how it works, and a two-minute form. Applications land in a Creators list that content admins and super admins work through.

  • pulse.colladome.com/influencers: the studio photographed as it is, three steps, and one form asking exactly what the content team needs to make a call — handle, followers, category, where in Jaipur, rate per reel and per day, negotiable or not, own cameraman, how soon they can come, travel charges, portfolio. Built for a phone.
  • Every yes/no is a pair of pills rather than a checkbox, the rupee fields carry the symbol, and the Instagram link fills itself in from the handle. Pasting a full profile URL into the username field is tolerated.
  • A WhatsApp number is asked for (optional). Without it the only way to reach a creator is an Instagram DM, which is where good candidates go quiet.
  • Submissions are saved before any email is sent; the content team gets one email per application with the whole form in it and a link to the list. If the email fails the application is still saved.
  • New Creators page under Delivery for content admins and super admins: search, filter by status and category, expand for the full answers, set a status (New, Contacted, Shortlisted, Booked, Not a fit), keep internal notes, export the filtered list as CSV. Nothing is deleted — a creator marked Not a fit stays visible, so the same person applying twice is obvious.
  • Nobody signed in can insert into the table; the public page writes through the server with the service role, the same way Apply and the demo-request form do. Reading and updating is limited to is_content_editor(), the check the Content Calendar already uses.
  • Requires the influencer_applications migration before publishing.
Version 1.20.5
14 September 2026
Administrators

Candidates hear from us at every stage

Shortlisted, first interview, second interview, hired and rejected all write to the candidate now, with an internal copy to HR Admins and super admins. Only shortlisting did before.

  • Every stage change emails the candidate. Applying already sent an acknowledgement; from there the pipeline was silent, and silence is the thing candidates complain about and the reason good ones take another offer.
  • One place holds the wording for all five, written to be read by somebody waiting to hear rather than by the person clicking the button.
  • A rejected candidate is told they are not going forward and never why. “High Package” or “Communication Skills” in an email helps nobody and invites an argument; the category and the reason go in the internal copy.
  • Internal copies resolve from roles — HR Admin and super admin — so adding somebody to either puts them on these emails with no configuration.
  • Every send happens after the stage is saved and can never undo it. If the candidate’s address bounces the move still stands and the screen says the email did not go.
Version 1.20.4
14 September 2026
Administrators

Vendor invites were being refused by the database

Every vendor invite failed with “Your account hasn’t been set up yet”. Not the button — Pulse refuses to create any login that is neither staff nor an authorised portal account, and vendors had no way to be authorised.

  • handle_new_user() fires on every login creation. It had a branch for a client portal account and then a gate that refuses anybody with no role grant and no profile. A vendor has neither, so the login was never created and the invite errored.
  • Vendors now get the same authorisation clients have: a service-only ticket bound to one user id and one email, created immediately before the login is requested and consumed by the gate. No door is left open — a login attempt without a ticket is refused exactly as before.
  • A Colladome address is refused as a vendor login. Somebody who is both staff and a vendor login would be sent to the vendor portal and nowhere else.
  • If the login cannot be created the reservation is released, so a failed invite does not block a retry for five minutes.
  • Verified on PostgreSQL 16 against a copy of the trigger: the invite is refused without a ticket — reproducing the exact error — and with one it creates the profile and active portal membership, gives no staff role, no leave balance and no salary row.
Version 1.20.3
14 September 2026
Administrators

Milestones, paid requests, portal access — and the ten candidates get an email

The half-built parts finished: milestones can be entered, an approved request marks itself paid when the bank pays it, portal access is visible and revocable, and the recovered candidates can be written to in one click.

  • Milestones can be added, edited and deleted from the vendor view when you open it as a preview. Vendors see them and cannot change them. That tab is no longer permanently empty.
  • An approved payment request shows as paid once the bank has actually paid it. Derived from the bank line against the payment group rather than stored, so it cannot go stale and needs no background job.
  • Vendor portal access is listed on the Vendors page with a switch. Inviting somebody is easy to forget about; an account that should have been switched off a year ago was visible nowhere.
  • New card on HR Admin: recovered candidates who have not heard from us, with one button to write to all of them. The email apologises, says it was our fault, and asks them to reply with role, CTC and notice period — it does NOT send them back to the Apply form, because asking somebody who pressed Submit nine times to do it a tenth time is how the last of their patience gets spent.
  • Who has been written to is recorded as a stage event, so nobody is emailed twice, and the card disappears once everybody has been contacted.
Version 1.20.2
14 September 2026
Administrators

One vendor view, filtered by project

Clicking a vendor now opens the full page rather than a side panel — the same page the vendor sees — and everything on it filters by project.

  • A project filter sits above the figures and drives all of them. The headline numbers recompute with it, because a total that ignores the filter under it is worse than having no filter.
  • New By project tab: what this vendor has cost each project, recorded against paid against outstanding. The statement answers when somebody was paid; this answers what for.
  • Clicking a vendor opens the full vendor view instead of a side panel, so you and the vendor are reading the same page. A row with no vendor record has no page to open and keeps the panel.
  • The preview banner carries a link back to Vendors, since the page is now somewhere you land rather than something that slides over.
Version 1.20.1
14 September 2026
Administrators

One vendor, one row — and three numbers that were wrong

Akash appeared twice, ₹2,20,000 that had reached him read as owed, and almost every vendor carried a red “over by” badge that meant nothing. All three were reporting faults, not data faults.

  • A cost with no vendor link used to get its own row, keyed on the name in its title — which is why Akash Jangid appeared twice, once as the vendor record and once as a name. Names now resolve back to the vendor record, ignoring case, spacing and punctuation, so one person is one row.
  • An expense somebody paid out of their own pocket and was reimbursed for counted as unpaid. The company settles the employee, not the vendor — but the vendor has had their money, which is what this page reports. That is Akash’s ₹2,20,000.
  • The “over by” badge compared a whole year of cost against whatever budgets happened to exist — and budgets have only ever been set for a month or two, so it flagged nearly everyone as wildly over. It now compares only cost dated in months that vendor actually has a budget for.
  • The vendor drawer gains By project: what this vendor has cost each project, recorded against paid against owed. A month view answers whether you are behind on paying somebody; this answers which client is carrying them.
  • Preview a vendor’s portal from the vendor list, exactly as a client portal is previewed — you see what they see, marked as a preview, without needing their login.
  • Give a vendor portal access from the same list: one click, a provisioned login and an emailed temporary password.
Version 1.20.0
14 September 2026
Administrators

Vendor portal

Vendors can see what they have been paid, what is owed, when the next payment is due and what they are working to — and raise a payment request with their invoice and the project split.

  • A vendor login is an external account like a client one: it opens the vendor portal and nothing else. Every read and write checks portal membership on the server and then scopes to that vendor, so a loosened policy cannot leak one vendor’s money to another.
  • The vendor raises a payment request with the invoice attached AND the project split — ₹1,00,000 as ₹60,000 on one project and ₹40,000 on another. Splitting a vendor payment across projects is the most tedious job in reconciliation and has been reconstructed from bank narrations weeks later; the vendor knows the answer on the day they invoice.
  • Approving a request records the cost: one entry per project line, all sharing one payment group — the same shape a split bank payment already uses, so the payment reconciles against the group later with no extra work. GST and TDS are apportioned by each line’s share of the invoice, so a split never loses or invents tax.
  • Those entries are created PENDING. Creation is automatic; entering project burn is still a decision somebody makes. A vendor typing a number into a form must not be able to move the P&L.
  • Vendors maintain their own PAN, GSTIN, address and bank details — but not their name, payment terms or TDS rate, which are Colladome’s to set. A vendor changing the rate they are taxed at would be a hole, not a feature.
  • Engagements now carry the day of the month they are paid on, default the 20th, and the portal shows the next occurrence — clamped in short months, so the 31st never silently becomes the 1st.
  • Payment request alerts go to super admins only, resolved from the super_admins table rather than a setting, because those emails name amounts, vendors and invoice numbers.
  • The vendor-invoices storage bucket is created by migration. The resumes bucket was made by hand and exists in no migration, which is why a fresh environment silently loses every upload.
Version 1.19.15
14 September 2026
Administrators

Vendors by financial year, and candidates hear when they are shortlisted

Two things asked for while the vendor portal is being built: a year view on Vendors, and an automatic email the moment somebody is shortlisted.

  • Vendors now takes a financial year as well as a month, the same picker the Finance page uses. A month view hides anything with a lag — a vendor invoiced in May and paid in July reads as a May debt and a July windfall — and the year is where the cost and the payment land together.
  • Every figure on the page moved to the shared period helpers rather than comparing month strings, so budgets, recorded cost, paid and due all follow the selection. Setting a budget still needs a single month: with a year selected it defaults to the current one.
  • Moving a candidate to Shortlisted now emails them — shortlisted, someone will be in touch, reply if anything has changed — and sends an internal copy with their details and the remark.
  • The internal copy goes to everyone holding the HR Admin role, plus the standing HR address, rather than a hard-coded list. Adding somebody to HR Admin is all it takes to put them on these emails; if a person should be receiving them and is not, check their role.
  • The email is sent after the stage is saved and cannot undo it. A mail server being down must never leave a shortlisted candidate showing as pending.
Version 1.19.14
14 September 2026
Administrators

Vendors: paid money was being reported as still owed

Akash Jangid showed ₹7,30,950 still owed with ₹0 paid from May onwards, while every one of those payments was mapped in Bank Reconciliation. The money was recorded correctly; the Vendors page could not see it.

  • A bank payment reaches a cost by three different routes: a vendor payment allocation, a whole-line match, or a split-payment group where one payment covers several project costs. The Vendors page read only the first, so “Split across 5 projects” payments — which is most of the large vendor ones — counted as nothing paid.
  • All three are now read, with the allocation winning where one exists because it is the precise record. This is the same test the rest of Pulse already uses to decide whether an expense has been paid from the bank; this page was the odd one out.
  • The cost is credited, never the bank line. A ₹1,47,000 payment covering a ₹21,700 cost and four others credits ₹21,700 against that cost, not ₹1,47,000 — otherwise a vendor would read as wildly overpaid.
  • Those payments now also appear in the vendor’s Payouts list, not just in the Paid column.
  • Nothing in the data changed. Bank Reconciliation was right all along; only the reporting was wrong.
Version 1.19.13
14 September 2026
Administrators

Recovered candidates now actually leave the list

Ten of the seventeen lost candidates are in Pending. Two things got in the way and are fixed: the card would not clear, and a phone number could end up glued to the front of an email address.

  • Somebody who pressed Submit eight times has eight uploads of the same file. Recovering them attached only the newest, so they reappeared on the card with “tried 7 times” and the count never fell. A filename now leaves the list as soon as ANY of its uploads belongs to a candidate — the repeats are one person retrying, not seven people.
  • PDFs often run a phone number straight into an email address with no space — “0976-137-1059zenasbrr@gmail.com”. That whole string was being read as the address. The trimmed version is now offered first, the original is kept as a one-click alternative, and the form says what it spotted rather than quietly choosing.
  • Ten people recovered: Deepankar Das, Nikita Solanki, Dharamsoth Pavan Nayak, Vijendra Patidar, Manish Kumar Mishra, Vishvnath Pareek, Anubhav Khare, Jabbad Hussain Ansari, Rajveer Singh and Zenas Santos. Seven of the seventeen were people who retried later and got through, and the duplicate check caught them.
Version 1.19.12
11 September 2026
Administrators

Turn a lost resume into a pending candidate

The 17 people whose application never saved can now be added to the hiring pipeline from inside Pulse — no downloading, no retyping.

  • Every row on “Applications that never saved” now has “Add to Pending”. Pulse opens the resume itself, reads the name, email, phone, location and years of experience out of it, and shows them in a form.
  • It is a form, not a one-click import, and deliberately so: nothing these people typed on the Apply page was ever stored — the save is what failed — so every value comes from unstructured resume text and is a guess. HR confirms it before a candidate record exists.
  • The personal address wins when a resume quotes several: a Gmail/Outlook-style address is preferred over a former employer’s, and every other address found is offered as a one-click alternative.
  • If the email already belongs to a candidate, the form says who and at what stage, so somebody who later applied successfully is not added twice.
  • The new candidate carries the resume, is marked “Recovered from failed submission”, and the note on the record says the form data was never stored and the details need confirming with the candidate.
  • Scanned PDFs with no selectable text say so rather than producing an empty candidate.
  • Recovering someone removes them from this card — they stop being a resume with nobody behind it — and they appear under Pending. The card itself stays, and keeps catching future failures.
Version 1.19.11
11 September 2026
Administrators

Get all the lost resumes in one click

The 17 resumes on the lost-candidates card are the only record of those people. Collecting them was two clicks each; it is now one click for all of them.

  • “Open resume” opened a preview tab, which meant saving the file was another two clicks per candidate. The signed link now carries an attachment header, so it saves straight to your machine.
  • New “Download all” button on the card. Chrome asks once to allow multiple downloads; after that it works through the list and reports how many succeeded. A single bad link no longer abandons the rest.
  • Worth knowing, because it decides what can be recovered: nothing the candidate typed was ever stored. The resume uploads first and the application row is written second, and that write is what failed — there is no draft, no failure log, and the acknowledgement emails only go out after a successful save. The resume really is all we hold on these 17.
Version 1.19.10
11 September 2026
Administrators

The lost-candidates card actually works now

Release 1.19.9 shipped a card that could never load, and hid itself when it failed — so it looked like there was nothing to see. There are 17 lost candidates behind it.

  • “Applications that never saved” read storage.objects straight over the REST API. Supabase only serves the public schema there, so every call failed — the card was never going to appear, on any environment. It now goes through a new list_orphaned_resumes() function, which reads storage from inside the database.
  • The card returned nothing both when the list was empty and when the query failed, which is why the failure was silent. A failed load now shows a visible error with a Try again button. An empty list still hides the card; a broken one no longer can.
  • Counting the retries needed its own step. Grouping alongside a “keep the newest upload” filter reported 1 attempt for everybody, because window functions are evaluated after the filter — so the worst case would have read “tried 1 time” instead of 8.
  • Verified against a copy of the real storage contents: 17 people, 70 attempts, and a resume that did reach us correctly stays off the list.
Version 1.19.9
11 September 2026
Administrators

See the candidates whose application never saved

Sixteen people attached a resume and pressed Submit between 25 August and 11 September and none of them reached us. There was nowhere in Pulse to see that. There is now.

  • HR Admin now shows “Applications that never saved” above the candidate list: every resume sitting in storage with no application row, which means somebody pressed Submit and the save failed.
  • Repeated uploads of the same file are one person retrying, so they are grouped. “Tried 8 times” is how hard that candidate persisted before giving up — the worst case was 8 attempts in under three minutes.
  • Each row opens the resume through a short-lived signed link, HR-only. The resume is the only thing we hold on these people, so it is where their contact details have to come from.
  • Why this was invisible: the existing resume download is keyed to an application row, and by definition a failed submit has none. The 70 uploads behind these 16 people had no route into the UI at all.
  • The card disappears when the list is empty, so in normal operation it is not in the way.
Version 1.19.8
11 September 2026
Everyone

Apply page: three bugs that were losing us candidates

Applicants were being shown a raw error payload, told required fields were empty when they were filled, and given “Failed to fetch” with no way forward. All three are fixed.

  • Salary fields rejected anyone who typed the rupee amount. The server capped current_ctc_lpa and expected_ctc_lpa at 100000 — neither a sane figure in lakhs nor in rupees — and an applicant entering 300000 for ₹3,00,000 was shown Zod’s raw JSON on screen. The fields are now labelled “per year, in lakhs” with an example, and entering a rupee figure gives “This is in lakhs per year — enter 3 for ₹3,00,000” before anything is submitted.
  • Validation messages stayed on screen after being fixed. onSubmit never cleared the error state when every step passed, and nothing cleared a field’s error when it was edited — so “Please choose one” sat under a filled dropdown and “Expected contract rate is required” under a filled box. Errors now clear as each field is edited and before every submit.
  • Server errors reached applicants verbatim. A new applyErrorMessage() turns a Zod payload into the field and what to do, and turns the browser’s “Failed to fetch” into “We could not reach the server — check your connection and press Submit again. Your answers are still on the page.”
  • The trainee form’s resume upload now retries once before failing. Resumes upload straight from the applicant’s browser to storage, and on a phone that request is the likeliest thing to drop — which is what “Failed to fetch” was.
  • Known risk, not fixed here: the application-resumes storage bucket is not created by any migration. It exists only if it was made by hand in Supabase, so a fresh environment has no bucket and every resume upload fails.
Version 1.19.7
11 September 2026
Administrators

Approved expenses can be edited again

Every expense in Pulse is approved, and the Expenses list refused to let any of them be edited — so a GST amount or a TDS figure could never be added to one. That block is gone.

  • Release 20260910120000 dropped the database trigger that froze approved expenses, on the principle that approval records an expense is REAL, not that it is FINISHED. The Expenses list kept its own copy of the old rule and disabled the Edit button for anything counted towards burn, so the database allowed the edit and the screen would not offer it.
  • Edit is now available on every expense whatever its approval status. This is what unblocks GST and TDS data entry on the 183 already-approved expenses.
  • Delete stays blocked for a counted expense, because it feeds burn and may be matched to a bank payment. The tooltip now says to edit it instead.
  • Added a database guard in its place: an expense cannot be reduced below what has already been settled against it from bank payments. Everything else — date, title, category, project, GST, TDS, vendor — is freely editable.
  • approved_by and approved_at are untouched, so who signed off and when is still on record.
Version 1.19.6
11 September 2026
Administrators

GST input credit needs the invoice

Two parts of Pulse disagreed about how much GST you owe. The database claimed input credit on purchases with no invoice on file; the Tax screen never did. The database now follows the same rule.

  • materialize_tax_liabilities() claimed gst_input_credit on every expense regardless of gst_invoice_available, while the Tax Compliance screen claimed it only when the flag reads “yes”. The two reported different GST payable for the same month, differing by exactly the GST on every expense whose invoice is still pending.
  • The ledger was the optimistic side, and gst_liabilities is what the settle dialog pays against — so the figure being paid from was claiming credit against invoices that do not exist.
  • The database now requires gst_invoice_available = ‘yes’ before an expense contributes input credit, matching recoverableGst() in the app. Stated GST payable will RISE by whatever was being claimed without an invoice, and fall again as invoices are attached.
  • Nothing needs re-entering: the amount is still calculated when the bill is entered, the flag alone decides whether it is claimed. Ticking an expense to ‘yes’ now releases its credit in the ledger and on the Tax screen at the same time.
  • The existing guard stands — a liability is never reduced below what has already been settled against it.
Version 1.19.5
11 September 2026
Administrators

Search the bank narration, and a correction

Bank Reconciliation can now be searched by narration text. Also corrects release 1.19.1 below, which described a bug that did not exist.

  • Added a search box to Bank Reconciliation that matches the narration, the date and the amount. Terms are ANDed, so “gst 2026-08” narrows twice.
  • This is how the tax lines get found: a GST challan always carries “/GST/” in its narration and income tax carries “/DTAX/”, so nine tax payments can be pulled out of 120 unmapped debits by typing four characters instead of reading every row.
  • CORRECTION to 1.19.1: that release claimed cell A1 of the Company Tally Office tab reads “Net” and that this broke every paste. It does not — A1 reads “Date”. The diagnosis was wrong, the paste failure it described was not the real failure, and the change shipped under it fixed nothing. The header detection it introduced is harmless and stays, but the reason given for it was false. The real cause of the paste failure is still unknown.
Version 1.19.4
10 September 2026
Administrators

Filter expenses by GST treatment

Whoever handles GST reconciliation can now pull up exactly the expenses that need them, instead of scrolling 183 rows.

  • Added a GST filter to Expenses: invoice available, invoice pending, or no GST invoice.
  • “GST invoice available” is the state that matters most — it is the only one whose input credit is reclaimable, and the only one that reduces an expense’s project burn by the reclaimable amount. Everything else is checked against it.
Version 1.19.3
10 September 2026
Administrators

Find the bank lines you still have to classify

Bank Reconciliation could tell you 79 debits were unmapped but gave you no way to look at them. Now it has a status filter.

  • Added a status filter to Bank Reconciliation: unmapped, mapped, owner withdrawals, internal transfers, or lines already matched to an expense.
  • “Unmapped — still to do” is the one that matters: it shows exactly the backlog the summary card counts, so the list can be worked down instead of read line by line.
  • Added the total value of whatever is currently filtered next to the row count, so you can see how much money the remaining backlog represents.
Version 1.19.2
10 September 2026
Administrators

Owner current accounts read right across a year

The financial-year view of the owner current accounts reported zeros for every figure. It was reading a table that only fills up when a month is closed.

  • Fixed the year view of the owner current accounts, which read only current_account_months — a table that holds a row per month only once that month has been CLOSED. With no month ever closed it was empty, so withdrawals, personal spend and closing balance all showed ₹0 despite the single-month view showing real figures.
  • Rebuilt the year the way the single-month panel builds it: approved personal spend and matched bank withdrawals month by month, opening balance carried forward, with a closed month’s signed-off figures taking precedence over the live calculation.
  • Replaced the “Total taken” column, which added the salary/owner withdrawal on top of the bank withdrawals it is derived from and so counted the same money twice.
Version 1.19.1
10 September 2026
Administrators

Company Tally paste works again (WITHDRAWN — see 1.19.5)

Pasting the Office tab into Shubham Tally failed every time with “headers were not found”. The importer was looking for the wrong thing.

  • WITHDRAWN: the claim below is wrong. Cell A1 reads “Date”, not “Net”, so this was never the cause of the paste failure. Kept only so the version history stays honest. Original text: Fixed the Company Tally importer, which required cell A1 of the Office tab to read “Date”. It reads “Net”, because that cell labels the headline total underneath it rather than naming the column — so no header row was ever found and every paste was rejected.
  • Anchored header detection on the “Pulse Entry ID” column instead, which is unique in the sheet, and left column A free to carry whatever caption it needs.
  • Made the column-mismatch error say what the column actually reads, not just what was expected, so the next mismatch is obvious at a glance.
Version 1.19.0
10 September 2026
Administrators

See a whole financial year, not just a month

Finance can now be read a full financial year at a time. A month on its own hides anything with a lag between the work, the invoice and the payment — a cost incurred in May and collected in July reads as a May loss and a July windfall. The year is where they land together.

  • Added a Financial year option to the Finance period picker, alongside the months. Every tab honours it — P&L, Collections, Salary, Expenses, GST, TDS, Bank and Bank Reconciliation.
  • Made a recurring expense count once for every month it was actually live, so a monthly subscription is twelve months of cost in a year view rather than one.
  • Added a read-only year view of the owner current accounts: total withdrawn, salary taken and personal spend recovered across the whole year.
  • Added a read-only year view of salary burn, month by month, marking which salary sheets are still unapproved.
  • Named the unapproved months in the provisional-salary warning instead of saying “some months”.
  • Kept every action that belongs to one month — GST filing, TDS deposit, salary sheet approval, closing a current account — read-only while a year is selected, and said so on screen, so a year can never be filed as if it were a month.
Version 1.18.0
10 September 2026
Administrators

Vendors, on one screen

The Vendors page is now a single month view with one row per vendor. Everything else — history, payouts, budgets — sits behind clicking that row.

  • Replaced six stacked sections with one table: pick a month, see every vendor's approved budget, cost recorded, paid and due on one line.
  • Added a vendor drill-in: month-by-month history and every payout with the work month it settled.
  • Made a budget cover exactly one month, so “approved this month” means one thing rather than a share of a range.
  • Flagged a vendor whose recorded cost has passed the month's approved budget, on the row itself.
  • Folded the old payment notes away behind a link, since they never reached the P&L.
Version 1.17.0
10 September 2026
Administrators

Vendor budgets, and a partial payment that actually saves

An engagement can now carry the price it was agreed at, so cost recorded against it draws it down and an overrun is visible. Partial vendor payments also save, which they did not in the last release.

  • Added vendor budgets: agreed value per vendor and project over a period, showing agreed, recorded, paid and what is left.
  • Flagged an engagement whose recorded cost has passed what was agreed, rather than letting it drift unnoticed.
  • Fixed partial vendor payments, which failed to save with "Expense has no employee payer" — they were written to the reimbursement ledger, which only accepts expenses an employee paid out of pocket.
  • Gave vendor allocations their own record, with checks that fit them: cost must be approved, and nothing can be allocated beyond either the payment or the cost.
  • Left an open end date available for a retainer, so an ongoing arrangement does not need a new budget every month.
Version 1.16.0
10 September 2026
Administrators

A payment can settle part of what is owed

Vendor payments no longer have to cover a cost in full. Pay part of a month's work and the rest stays visible as due, instead of the whole amount reading as unpaid.

  • Added an amount box against each cost when matching a vendor payment, so one payment can settle part of a month's work.
  • Defaulted each amount to as much of the payment as that cost still has outstanding, with a one-click All button.
  • Showed what a cost still has outstanding rather than only whether anything has been paid against it, and refused an allocation larger than that.
  • Reported part-paid vendor cost in the ledger as paid-and-due rather than as entirely unpaid.
  • Drove the outstanding figures from what is still due, so a partly settled month reports the remainder and not the whole.
Version 1.15.0
10 September 2026
Administrators

An approved expense can still be corrected

Approving an expense no longer locks the row against every future change, so a wrong date or a cost sitting in the wrong month can simply be fixed.

  • Approval now records an expense as approved rather than locked, and the database rule that refused all later edits is gone.
  • Kept who approved an expense and when — the audit trail is unchanged; only the refusal to edit is removed.
  • Removed the Locked filter from the TDS breakdown, since nothing carries that state any more.
  • Bank statement import now skips rows already imported instead of adding a second copy, so re-uploading an overlapping month is safe.
  • Said plainly in the import preview how many rows were skipped as already present.
Version 1.14.0
10 September 2026
Administrators

Vendors, by the month the work was done

The Vendors page now reads the same expenses that drive project burn, and separates the month work was done from the month the money left the bank — so what is still owed is visible instead of inferred.

  • Rebuilt the Vendors page on vendor expenses and matched bank lines, replacing a payment list that never reached the P&L.
  • Added four figures for the chosen month: work recorded, cash that left the bank, due to pay now, and outstanding across all months.
  • Listed every vendor cost with no payment matched to it, oldest work first, so nothing sits owed and unnoticed.
  • Showed work done in the month beside the payments that left in the same month, with the work month each payment settles.
  • Named the gap between recorded cost and bank amount as TDS withheld rather than leaving it as an unexplained difference.
  • Kept the old payment notes on the page, marked clearly as reference only.
Version 1.13.0
10 September 2026
Administrators

A vendor payment finds the cost it settles

Reconciling a vendor payment now asks which month the work was done and offers the cost already recorded for it, instead of quietly creating a second copy.

  • Added a matching step when a bank line is classified as a vendor payment: pick the work month, then tick the recorded cost it settles.
  • Defaulted that month to the one before the payment, since vendors bill for the month just gone.
  • Showed any difference between the payment and the cost, and said what it means — tax withheld, still owed to the vendor, or due back to whoever paid it.
  • Marked cost already matched to another bank line so the same expense cannot be settled twice.
  • Kept creating a fresh expense available for genuinely new cost, but no longer as the only route.
  • Removed months before April 2026 from the Finance month picker, since no data exists before then.
Version 1.12.1
9 September 2026
Administrators

Drawings sit beside the profit they come out of

The monthly current account — what an owner withdrew, what they spent for the company, and what is still owed either way — moves from Salary to the Project P&L, directly under the header cards.

  • Moved the Monthly current accounts panel to the Project P&L, immediately below the four summary cards.
  • Removed it from the Salary tab so the settlement figures live in exactly one place.
Version 1.12.0
9 September 2026
Administrators

The P&L stops flattering itself

Operational NET is now money actually collected minus cost, an unapproved month no longer reports its payroll as free, and invoices that should never have come across from Zoho can be excluded.

  • Split the Project P&L header into four cards: invoiced excluding GST, collected excluding GST, total burn, and Operational NET.
  • Rebuilt Operational NET as collected minus burn, so work invoiced but not yet paid is no longer counted as profit.
  • Counted salary in months whose salary sheet is not approved yet, at the configured amount, and badged those figures as provisional — an unapproved month previously reported its entire payroll as zero cost.
  • Booked salary for anyone with no logged hours and no project mapping as company overhead instead of dropping it from burn altogether.
  • Added Exclude to any invoice in Collections, so a duplicate or non-revenue record from Zoho counts towards nothing and stays excluded through future syncs.
  • Added a month filter to Special days on the Content Calendar.
Version 1.11.1
9 September 2026
Everyone

The homepage counts its own modules

The module count on the homepage is now read from the module list itself, so it cannot drift out of date as Pulse grows.

  • Replaced the hand-written module count in the homepage heading with the actual number of modules listed below it.
Version 1.11.0
9 September 2026
Everyone

A shorter homepage that shows the product

The public landing page drops from nine sections to six, leads with recreations of real Pulse screens, and answers the nine questions people actually ask before booking a walkthrough.

  • Cut the homepage to six sections: hero, Pulse in action, how information flows, modules, FAQ and one closing call to action.
  • Replaced the wall of twenty-six feature cards with a scannable four-column module list.
  • Gave each team tab a product screen of its own, including new recreations of the salary sheet review and the content calendar's special days view.
  • Added a nine-question FAQ covering pricing, rollout, access control, GST and TDS, and data separation.
  • Published FAQ and product structured data so the answers can surface directly in search results.
  • Sharpened the page title, description and social preview text around what Pulse actually does.
Version 1.10.1
9 September 2026
Administrators

Payroll pays what Finance approved

A corrected salary amount now reaches the bank file, the summary cards and every cost view, instead of being quietly recalculated away.

  • Made the bank NEFT download carry the amounts signed off on the salary sheet rather than the configured salary.
  • Showed the calculated figure beside the payable one in the export table and marked every row Finance corrected.
  • Labelled the export clearly while a month's salary sheet is still unapproved.
  • Corrected project burn and the project P&L, which had been spending the pre-override figure.
  • Kept months approved before per-employee amounts existed on their configured salary instead of reporting nobody as paid.
Version 1.10.0
9 September 2026
Signed-in teams

Special days belong to Marketing

The festive calendar moves to the Content Calendar, so upcoming special days sit beside the posts already planned for those dates.

  • Added a Special days view to the Content Calendar, alongside Table and Calendar.
  • Placed festivals on the month grid itself, highlighted where a graphic has not been raised yet.
  • Let the Content Calendar Admin role add and edit special days, which previously failed however the screen looked.
  • Kept company offs and employee celebrations with HR, where they drive payroll and working days.
  • Redirected the old HR Admin festive calendar link to its new home so existing bookmarks keep working.
Version 1.9.0
8 September 2026
Administrators

Salary sheets are reviewed before they are spent

Finance can correct any calculated salary before approving a month, and project costs follow the approved figure.

  • Added a review table showing each employee's calculated amount beside an editable approved amount.
  • Required a reason whenever an amount is changed, and recorded both figures for audit.
  • Made Project Burn and the project P&L read approved salaries instead of recalculating them.
  • Marked months without an approved salary sheet as provisional rather than presenting an estimate as final.
  • Restated project allocations against the approved amounts so the finance P&L matches the sheet.
Version 1.8.2
8 September 2026
Everyone

Cleaner client showcase

Client logos on the public Apply page now fill their badge, without the client name repeated underneath.

  • Removed the client name label from each logo badge.
  • Sized every logo to fill its badge edge to edge, dropping the white ring around the artwork.
  • Kept the client name for screen readers and as the fallback if an image fails to load.
Version 1.8.1
8 September 2026
Everyone

Self-hosted client showcase

Client logos on the public Apply page are now served directly by Pulse for consistent loading across browsers and networks.

  • Bundled all 49 client logo assets with Pulse instead of hotlinking the corporate website.
  • Optimised the complete logo set for fast loading while preserving circular white logo cards and client names.
  • Added a regression check that rejects external client-logo requests and verifies every bundled asset exists.
Version 1.8.0
8 September 2026
Everyone

Reliable careers presentation

The public careers experience restores the circular client showcase and protects the separate trainee application and release history from regression.

  • Restored the client carousel as circular white logo badges with visible client names.
  • Preloaded logos without sending a page referrer and retained a readable fallback if an external asset fails.
  • Verified the separate Trainee/Intern application with college, graduation year, preferred department and resume fields.
  • Added regression coverage for the client carousel, trainee flow and chronological release notes.
Version 1.7.0
8 September 2026
Signed-in teams

Protected leave limits and final payroll

Paid-leave entitlement is enforced consistently, while employee exits preserve the correct final payroll and company history.

  • Fixed paid leave at 5 Sick and 5 Casual days per April-March financial year.
  • Kept the combined 2-day monthly paid-leave limit and made pending requests reserve the remaining allowance.
  • Blocked excess Sick or Casual requests across employee, manager, HR and assistant entry paths with a clear option to use Unpaid leave.
  • Made the explicit last working day authoritative when payroll is generated after an employee is deactivated.
  • Preserved the final work-month payroll for payment in the following month while excluding later payroll months.
  • Protected employees with payroll, attendance or leave history from permanent deletion and directed HR to the dated deactivation flow.
Version 1.6.0
8 September 2026
Signed-in teams

Candidate applications, task sharing and accurate holidays

A people-operations update separating job and trainee applications, making tasks easier to share, and keeping special days out of company-off calculations.

  • Renamed Trainee Applications to Candidates and added Job and Trainee/Intern filters to one hiring pipeline.
  • Added a focused trainee application for name, email, phone, college, graduation year, preferred department and resume.
  • Separated the Trainee/Intern Programme into its own public page and application form, independent of job applications.
  • Preloaded the complete animated client-logo strip and added a named fallback when an external logo asset is unavailable.
  • Preserved the detailed job application and the existing candidate stages, hiring history and training workflow.
  • Added Copy task link for every employee wherever Task Detail is available, with existing access permissions enforced.
  • Separated HR-approved company holidays from personal events, festivals and special days in attendance, payroll and timesheet calculations.
  • Preserved the Festive Calendar and its marketing-task creation utility.
Version 1.5.0
7 September 2026
Everyone

HR operations, clearer navigation and reliable analytics

A consolidated people-operations release with simpler role-aware navigation, configurable onboarding and restored product analytics.

  • Grouped navigation into My Work, Delivery, People and Administration while preserving role-based access.
  • Restored GA4 page and product-event tracking with a deployment-safe Pulse measurement ID.
  • Added HR-managed Glassdoor, Instagram and other company links used across onboarding and public pages.
  • Added editable onboarding templates, custom fields and permanent-address information for employees, trainees and contractors.
  • Added secure background-verification document requests and multi-file uploads visible only to the employee, HR Admin and Super Admin.
  • Added optional task creation when moving a trainee between hiring stages, plus stage history with dates.
  • Added monthly employee timesheet reporting, recurring-work grouping and compliance flags for missing, insufficient or unapproved hours.
  • Restricted automatic trainee assignment to Colladome Organization & Culture Academy and added cleanup for unstarted unwanted training.
Version 1.4.0
3 September 2026
Administrators

Company Tally import and reimbursement settlement

Finance can safely import Shubham-paid company expenses, preserve every source entry and settle reimbursements against company withdrawals.

  • Added paste-and-preview import for the complete Company Tally sheet without requesting Google Sheets access.
  • Added immutable Pulse Entry ID duplicate protection and conflict detection for previously imported rows.
  • Excluded receipts, company withdrawals and fully refunded groups from duplicate expense creation while retaining their audit treatment.
  • Added settlement correction so company withdrawals balance reimbursable expenses through bank reconciliation.
  • Preserved Meta, BNI and refund-specific GST/TDS treatment from the reviewed source entries.
Version 1.3.0
3 September 2026
Administrators

Monthly timesheet visibility

HR administrators can review where employee time is spent across one or more months.

  • Added employee and date-range filters for monthly timesheets inside HR Admin.
  • Added logged, approved and pending-hour totals with CSV export.
  • Grouped recurring work by task and project to make repeated effort easier to assess.
  • Kept department selection manual while respecting the viewer's existing visibility scope.
Version 1.2.0
29 August 2026
Signed-in teams

Recurring summaries and notification controls

Pulse can now deliver role-aware operational summaries by email and inside the app, with personal and organisation controls.

  • Added personal daily, manager team and leadership company wraps.
  • Added weekly summaries, HR morning briefs and finance weekly briefs.
  • Enabled email and in-app delivery by default while allowing each user to opt out by category.
  • Added super-admin controls for category availability, delivery days and IST delivery times.
  • Added protected scheduling, delivery history and duplicate-send prevention.
Version 1.1.0
28 August 2026
Everyone

A clearer, more connected Pulse

A product-wide release covering the public experience, demo parity, people operations, branding and reliable notifications.

  • Redesigned Pulse home, sign-in, interactive demo and careers experiences with improved social previews.
  • Refreshed Pulse branding, logo treatment and favicon across public and signed-in screens.
  • Made the demo reuse the production interface while keeping all demo data fictional and browser-local.
  • Added HR holiday management, employee birthdays, joining anniversaries and daily celebration moments.
  • Clarified Team calendar and HR Admin responsibilities for leave, holidays and special dates.
  • Added premium SMTP templates for leads, candidate applications and daily operational reports.
  • Added protected email testing with delivery feedback for super administrators.
  • Improved defensive handling for incomplete demo notification and learning records.
Version 1.0.0
19 August 2026
Signed-in teams

Pulse production foundation

The first consolidated release of the Colladome team operating system.

  • Unified work, people, projects, finance, learning and administration in one authenticated workspace.
  • Introduced role-based navigation and super-admin controls.
  • Added the isolated interactive product demo.