Route every call's notes to the CRM
AI meeting notes routed into your CRM: each call is read, classed as sales, hiring, partner or investor, and logged on the right record with a recap note.
- Starts
- Daily schedule, every 12 hours
- Steps
- 5
- Checks and gates
- 1
- A person decides
- Never, runs alone
Trigger · Schedule
Daily schedule, every 12 hours
The run opens twice a day on the calls of the last 13 hours, an hour wider than the cadence so no call falls between two runs.
Claude runs the rest autonomously
- 1
AI sweeps new notes, drops synced calls.
GranolaGranola
Notes created or published in the window come back from the whole team, minus every call the CRM already holds a link to.
FolkFolk
- 2
AI classifies each call before writing.
GranolaGranola
Each call is read and classed as sales, hiring, partner, investor or internal before anything is written, and a close call is flagged.
- 3
AI routes it to the right record.
FolkFolk
Sales lands on the company in the pipeline, the other classes on the person, with the status moved forward only and closed deals left alone.
- 4
AI reads back what the CRM did.check
FolkFolk
Every create and field write is read back, and a twin company or a value nobody sent is repaired before the run goes on.
- 5
AI writes the recap with the call link.
FolkFolk
One note in the call's language lands on the person the call was with, closing with the link that marks the call as synced.
Result · Every external call your team has lands on the record it belongs to, the deal, the candidate, the partner or the investor, with a recap note in the call's language that ends with the link to the call, and internal calls stay out.
An AI notetaker solves the half of the problem that was never really the problem. Every call now has a clean summary within minutes. The CRM still moves only when someone remembers to update it, and nobody does it the same way twice: the deal gets a stage and one line, the candidate's card gets nothing, and the fund that asked for the deck is a name in a summary nobody will reopen. The notes exist. They are just not where the next person will look.
The join is mechanical, and it is the same after every call. Read the summary, decide what kind of call it was, find the record it belongs on, move what the call moved, and leave a note that says so. This process does exactly that, twice a day, for every external call the team had.
What you get
Every external call your team has lands on the record it belongs to, the deal, the candidate, the partner or the investor, with a recap note in the call's language that ends with the link to the call, and internal calls stay out.
If what you need is the follow-up email after a sales call, that is its own process. This one covers every kind of call, not only sales, and its output is the CRM itself.
What each call is checked against
Each run reads two systems and writes to one:
- The notes, from Granola: every note created or published in the window, whoever on the team owns it, with its summary, its attendees and its calendar event. The transcript is only fetched when the summary is missing.
- The CRM, in Folk: the people and companies already there, the groups that hold the sales pipeline, candidates, partners and investors, the fields each group defines, and the notes already on each attendee, which is where the run looks for its own sync marker.
The class of a call decides where it goes. A sales call lands on the company in the pipeline. A hiring call lands on the candidate, who is not always the person on the call: a recruiter's call produces a card for the profile they put forward. A partner or investor call lands on the person. An internal call, a solo prep note or a call that only names a company lands nowhere and is reported as such.
What makes syncing AI meeting notes to a CRM hold up
The window is swept twice. A note does not exist for the API at the moment of the call; it appears once it is generated and shared, sometimes hours later. One pass takes the notes created in the last 13 hours, the other the notes published in that window whatever their call date, up to seven days back. A single pass on creation time would lose every call whose note came out late, and the report lists those late notes so you can see the second pass earning its place.
The sync marker is the link to the call and nothing else. Every recap ends with the note's web link, and before touching a call the run looks for that link on the attendee's existing notes. A record whose fields already reflect the call but that has no note with the link was updated by hand: the run writes the recap and leaves those fields alone. When two colleagues both record the same call, the calendar event id shows it is one call, and the second summary is folded into the first note with both links rather than becoming a second recap.
A call is classified before anything is written, and the summary wins over the metadata. An external attendee on the invitation does not make a sales call if the summary is two colleagues discussing that company, since nobody talks about a counterpart in the third person with them in the room. A vendor pitching you is never a deal. When the class is unclear, the next step decides it, and a close call is flagged for a person rather than guessed.
Every write is read back. The CRM can attach a company it matched on the email domain even when the run named the right one, creating an empty twin already in the pipeline; the read-back catches it, detaches it and deletes it. A custom field can also come back filled with a value nobody sent, from the CRM's own AI fields, so each field write is compared with the read taken before it.
The pipeline only moves forward. A status is set when empty and advanced one rung when the call plainly supports it; a closed deal is never touched, and a field a person set from the same call is not corrected. Deal value is the list price of the offer actually on the table, never a discounted figure and never a tier merely mentioned. Whatever the run declined to change goes into the recap note, where the next person opening the record will read it.
An AI meeting notes taker, and what happens after it
An AI meeting notes taker writes the summary. This process starts where the notetaker stops, so it does not replace one: it reads its notes. Here is what changes between updating the CRM by hand after each call and letting the process do it.
| After each call | By hand | This process |
|---|---|---|
| Which calls are covered | the ones someone remembers | every note the team's notetaker published in the window |
| Sales, hiring, partner, investor | usually only sales reach the CRM | each class goes to its own group and record |
| Finding the record | a search by name, duplicates included | email first, domain checked before any create |
| Pipeline status | moved by memory, sometimes backwards | forward only, closed deals never touched |
| Deal value | whatever figure was heard | list price of the offer in negotiation, or empty |
| A call recorded by two colleagues | two notes, or none | one note carrying both links |
| What was not changed, and why | not recorded | written in the recap note |
| Knowing a call is already done | not tracked | the call's link at the end of the note |
The prompt
The real prompt behind the steps above, detailed enough that an agent with the same tools can run it as written. The Run buttons copy the full version, which also carries the steps for connecting those tools.
# Route every call's notes to the right CRM record
You have access to your team's call-notes tool and your CRM. Run this
every **[12 hours]** on the calls of the last **[13 hours]**.
## 1. Sweep the window, keep the unsynced calls
A note does not exist for the API at the moment of the call. It appears
once the note is generated and shared, sometimes hours later. Sweep
**twice** and union the results by note id:
- Notes **created** in the last [13 hours]: the calls that happened in
the window. The window is an hour wider than the cadence, so a call
on the boundary is caught by one run or the other.
- Notes **updated** in the last [13 hours] and created in the last
[7 days]: the calls that became readable in the window, whenever they
happened. If a note comes back right at the seven-day floor, say so
in the report: the floor is now doing work.
- Page through both (up to 30 per page) and take every note, **whoever
owns it**. Keeping only your own notes means your colleagues' calls
never reach the CRM.
- "Updated" is not "published". A folder move or a re-index can stamp
unrelated notes with the same update time. A wide gap between created
and updated is a reason to check the sync marker, never a reason on
its own to rewrite a record.
- **The sync marker is the link to the note, and only that.** Every
recap this process writes ends with the note's web link. Before
processing a call, search the notes on each attendee the CRM already
holds for that link; if it is there, drop the call. A record whose
fields already reflect this call but which carries no note with the
link is **unsynced**: a person filled the fields by hand, so write
the recap and leave their fields alone.
- **Two notes can be one call.** When two colleagues attend, each gets
a note: two ids, two links, two summaries of the same half hour.
Compare the calendar event id with the notes already handled. Same
event, attendees and slot means the same call: append the second link
to the existing recap, add what only the second summary says, and
touch no field. When the two copies disagree on a fact, record the
disagreement in the note and let a person settle it.
Take the remaining calls **oldest first**, so a newer call's reading of
the pipeline wins over an older one, and carry each one to its recap
before the next begins.
## 2. Read the call and classify it
- The note's summary is the source. Fetch the transcript (paginated)
only when the summary is missing or useless; asking for a long
meeting's transcript inline can fail as too large.
- Pull the external attendees with their emails, minus your own domain,
your team's personal addresses and notetaker bots. Then what the call
produced, what was promised, what blocks the next step, any price
named, and the language spoken.
- **Take names from the email domain, not the transcript.** Summaries
mangle company and product names; never copy one into the CRM
without recognizing it first.
- **Date the call from the note's creation time**, and take follow-up
dates from the summary's own next steps. The calendar event attached
to a note can point at a different occurrence of a recurring meeting.
- **Not everything in a summary belongs in a CRM.** Someone's health,
family or personal money is not pipeline context: drop it entirely,
and keep only what the business thread needs ("back at work,
follow-up late in the month"). Your own internal numbers stay out
too, except a figure that *is* the negotiation, written as the
constraint it is.
Decide the class **before any write**, and report it for every call:
| Class | What it looks like | Where it lands |
|---|---|---|
| Sales | a prospect or customer, a conversation about buying or onboarding | the **company**, in the sales pipeline group |
| Talent | hiring: a candidate met, a role scoped, a recruiter putting profiles forward | the **candidate**, in the talent group |
| Partner | a channel, reseller, referral or intro relationship | the **person**, in the partner group |
| Investor | a fund, angel or scout, and a conversation about raising from them | the **person**, in the investor group |
| Internal | a team sync, a one-on-one, a solo note | nothing: reported and dropped |
- When it is ambiguous, prefer the class the next step belongs to: an
intro being made is talent or partner, a payment link being sent is
sales, a deck going to a fund is investor.
- **The other side selling to you is not a sales call.** It is a
partner or vendor thread, and inventing a deal for it corrupts the
pipeline. An investor is not a partner either.
- **A title, an attendee list or a folder is not a classification.** An
external can sit on the invitation while the summary is two
colleagues talking *about* that company. Nobody discusses a
counterpart in the third person with them in the room. Read the
summary before the metadata, and flag a close call for a person.
- **A prep note is not a call.** A solo note rehearsing an upcoming
meeting creates no record, and neither does a company merely named
as an option.
- A call can carry two classes at once, a customer call where the
customer also offers an introduction. It then routes to both, one
record and one note each.
## 3. Route it to the right record
**Sales goes to the company in the pipeline.**
- Search the person by email first. A text search that comes back empty
on a multi-word company name is not proof of absence: confirm on the
domain before creating anything, or you create the duplicate you were
looking for.
- **A matching company exists:** create the person with the company's
id set explicitly. Attendee email domains and company websites drift
apart, and letting the CRM resolve the domain itself can create a
second company.
- **No company exists:** create it first, add it to the pipeline group,
then create the person attached to it.
- **The call never names a company** (a personal or school address, no
stated employer): create no company. A company created from a
personal-mail domain is a permanent duplicate the CRM will offer for
every other contact on that domain. Put the person in the pipeline
group and the missing context in their description.
- A record must be **in the group before that group's fields are
written**, or the write is refused. Read the group's own fields
before writing; never assume their names.
**The pipeline fields, on the company:**
- **Status moves forward only, and closed stays closed.** Use your own
ladder, for example [Meeting booked → Follow-up pre-demo → Follow-up
post-demo → Qualified/Negotiating → Closed Won | Closed Lost], read
from the CRM rather than assumed. Set an empty status and advance one
the call plainly supports. Never move one backwards and never set or
touch a closed state: a person closed it knowing something the
summary does not.
- **One rung is the habit, not the ceiling.** Advance two only when the
call closed two stages at once (the booked meeting *was* the demo),
and flag it as a judgment call. The last open rung is the run's
ceiling.
- **A field a person set from this same call is not the run's to
correct.** Write the recap and report the change you declined.
- **Next steps are rewritten every sync**: what happens next and who
owes it, from the call's own next steps. Stale next steps are worse
than none.
- **Deal value is the undiscounted list price of the offer actually in
negotiation.** A discount goes in next steps and the note, never in
the figure. A bigger tier merely mentioned does not raise it. No
price named, or a price band with nothing chosen, leaves it empty.
- Company size and industry are set only when the call makes them
certain. A wrong one is worse than a blank one.
**Talent goes to the candidate**, who is not always the person on the
call: a recruiter's call produces a card for the profile they put
forward, and the recruiter goes to partners. The candidate status moves
forward only and the run never sets the closing state. A customer's
contact changing jobs is not a candidate.
**Partner goes to the person**, in the partner group, writing only the
fields that group carries. An existing customer who brokers an intro
**gains** the partner group and keeps their pipeline group. A prospect
who *could* resell you is not a partner until someone raises it.
**Investor goes to the person**, in the investor group, with the fund's
stage, ticket, focus and what they asked for in the description. The
investor status is **left blank on a first meeting**: a warm "send me
the deck" and a polite brush-off produce the same next step.
## 4. Read back what the CRM did
- Re-read the person after **every** create and check which companies
it is attached to. Some CRMs resolve the email domain on their own
even when you passed a company id, and can create an empty twin
company in the same call, already in the pipeline. Detach it, keeping
only the company you meant, then delete the twin.
- A company the CRM resolved correctly but under a mangled name is
renamed in place, never deleted: deleting a right answer only creates
another duplicate.
- **Re-read after every custom-field write** and compare it with the
read taken before writing. A CRM's own AI fields can fill a value you
never sent; clear what appeared, and leave alone what was already
there.
## 5. Write the recap note
- One note on the person the call was actually with, structured by what
the call produced: context, what happened, decisions, objections,
next steps with owners. Name the seller or interviewer when it was
not you.
- **Write it in the language of the call**, and close it with the
note's web link. That link is the sync marker step 1 depends on, so
it is never optional.
- A call routed to two records gets a note on each, both ending with
the same link. A call recorded twice gets **one** note carrying
**both** links.
- **Put declined changes in the note, not only in the report**: a
status left alone, a blank investor rung, a deal value left empty
although a price was heard, a prospect with no company. The report
scrolls away; the note is what the next person opening the record
reads.
## Output
Report: the window and the count from each sweep, with any note
published more than [13 hours] after its call; then every call with its
class and outcome (routed, already synced, second copy folded in, or
internal); for each routed call, the records created or updated, the
status change made or declined and why, the deal value written or left
empty, any duplicate the read-back caught and repaired, and every
judgment call made on your behalf. A window with nothing to do reports
"nothing new".
Why run it with Tulina
A prompt helps one person. A process moves a team.
Pasted into a chat, the prompt above works once, for whoever pasted it. In Tulina, "Route every call's notes to the CRM" becomes a process the team shares, that keeps its history, runs on its own, and stays inside the same security perimeter as the tools it calls.
The whole team works on the same one
PersonalTeamOrganisation
A process lives where it belongs: yours, your team's or the whole organisation's. Whoever runs it can improve it, and everyone starts from the best version instead of explaining the job again.
Every edit is a version
v1v2v3
Each change is a new version with the previous one kept, so a bad edit is undone by restoring an earlier one. Every run records the version it followed, and what a run teaches goes back into the process.
It runs without you
schedulewebhookon demand
A hosted agent runs the process on Tulina's own infrastructure, on a schedule or when an event arrives, and keeps going when you close the chat. Nothing to host. Every run is tracked to its outcome.
Inside the same security perimeter
vaultrolesrun log
Credentials stay in the vault, never in the prompt. Roles decide who may run what, every call is logged, and a step a person has to approve waits for that person.
Questions about syncing AI meeting notes to a CRM
Also on Folk
Other processes that run mainly on Folk. The tools they share with this one are lit.
Pull insights from call recordings
Conversation intelligence from a name, company or email: the right sales call found in your CRM or recordings, returned with a summary, the link saved back.
- Shares
- Folk, Granola
Question asked in chat5 steps →
Find contacts for signal accounts
Companies that already showed interest but have nobody linked get the right people found by role, deduped, and added to outreach automatically.
- Shares
- Folk
Interest signal received6 steps →
Re-engage quiet accounts
Quiet paying accounts get one relevant note each, grounded in what they said last, with the outreach date stamped back so nobody's emailed twice.
- Shares
- Folk
Weekly schedule7 steps →