155 lines
10 KiB
Markdown
155 lines
10 KiB
Markdown
eh, I think you misunderstood me about the filters. I see this:
|
|
|
|
` batch-update Apply one payload to a filtered contact batch.`
|
|
|
|
Unless I'm misunderstanding how to use that. it sounds like it's not what I wanted/
|
|
|
|
I was hoping to be able to do this:
|
|
|
|
1. In batches of perhaps 10-20, pull a list of contacts that have not been updated for a while, and who either:
|
|
- also have specific tags
|
|
- also lack specific tags
|
|
|
|
2. For each of those contacts, do the following:
|
|
- check if there's anything about the contact itself that informs me I shouldn't need to look at anything else about it, and I can quickly tag them as something like "spam". I expect most of the time, I _won't_ be able to do that.
|
|
|
|
- Fetch the 3-5 most recent tickets from the contact, and look at them, using some framework to score any tags that should apply
|
|
- Examples:
|
|
- **customer**:
|
|
- somebody on our side emailed back +1
|
|
- seems like they're talking about packages or items in our warehouse +1
|
|
|
|
- **promo** + **spam**: contact seems like a business sending us advertisements
|
|
- from address is something like "no-reply", "noreply", "deals", or "promotions" +1
|
|
- it mentions a deal, discount, or coupon +1
|
|
|
|
- If the scores for any particular set set of tags >= a threshhold, use add_tag to add those tags to the contact
|
|
- otherwise, add a tag like "ai-checked"
|
|
- The last step caused the updated date of the contact to increase
|
|
|
|
3. Due to the very last step above (which bumps the updated date), if I wait and loop back through Step 1 again a few minutes or hours later, I won't retrieve the same contacts I already tagged.
|
|
- In this way, a looping/repeating task will eventually cycle through all contacts.
|
|
- Eventually, the ones it has already tagged will have been updated long enough ago, that they will get pulled again
|
|
|
|
## To be clear:
|
|
|
|
I am describing a broad pattern of workflow here, not specifics. I am just explaining this because:
|
|
|
|
a) The way you implemented the changes seems counterintuitive for how I want to use this, but I could of course be misunderstanding.
|
|
|
|
b) I think the basic concept of this loop should be added to the project documentation, maybe even with a diagram
|
|
|
|
## Further down the road:
|
|
|
|
- [ ] I will want to develop tags that indicates a specific kind of evaluation needs performed with a contact, just as summarizing their most recent communications with us.
|
|
- [ ] When looping through contacts, I can add that tag to contacts whose comms need to be summarized
|
|
- [ ] Then, another agent or script can fetch only contacts tagged to indicate they need summarized
|
|
- [ ] That script/agent fetches their recent communications, does it's job, and removes the tag, indicating that job is finished
|
|
- [ ] Other likely tags I will eventually implement:
|
|
- [ ] basic info needs corrected:
|
|
- Typical auto-import problems exist in the contact data, such as:
|
|
- company field contains their email address
|
|
- username portion of email address is in first_name, but their actual name is in the footer of the email or in the "from" part
|
|
- basic contact info is actually in the ticket, but not in the correct contact fields:
|
|
- first name, last name
|
|
- additional email addresses
|
|
- phone number(s)
|
|
- job title
|
|
- name of their business
|
|
- We know the name of the company they work for, but no contact.is_company=true exists with that name
|
|
- Create it
|
|
- Tag it as needing enrichment
|
|
- Update the contact(s) who work for that company, setting company = that company
|
|
- [ ] **NMI mapping**:
|
|
- [ ] Contact seems to be a customer, but their "Account Number" field is blank, so we're not sure which NMI account is their's
|
|
- [ ] Try to figure it out by comparing stuff like:
|
|
- [ ] email address
|
|
- [ ] name of company
|
|
- [ ] tracking numbers or order ids mentioned
|
|
- [ ] ^^ above, but for other contacts who work at the same company
|
|
- [ ] Update linkages all around:
|
|
- [ ] Update that company (and it's employees) contacts in redmine so "Account Number" matches `user_account.user_account_id` in NMI
|
|
- [ ] Set the redmine.contact_id's into a mapping table in NMI that link which contacts are for which account
|
|
- [ ] Update obsidian profile about the contact/person to include both pieces of info
|
|
- [ ] **entity extraction and enrichment**:
|
|
- members of our team responded to somebody, but we don't have (much) info about them in either redmine contacts or in obsidian
|
|
- This tells us the person is probably an active employee, so we:
|
|
- search for 5-10 other tickets they worked on lately, and use that to infer a profile of what their job is or fill in context about what they've worked on lately
|
|
- **phone number linkage to accounts**:
|
|
- [ ] transcribe/ingest tickets that are call transcripts, adding summary to contact file automatically
|
|
- [ ] add "note/call" to contact automatically
|
|
- [ ] identify if follow-up action is needed; if it is, create ticket, assigned to relevant person
|
|
|
|
- [ ] **bobcat caller id**: recognized contact calls us...
|
|
- [ ] **route call based on context, not just the number**:
|
|
- [ ] we're super busy, short staffed, and person likes to talk alot: "sorry, we're not available"
|
|
- [ ] Bob usually talks to this person, but Bob is marked "do not disturb": "voice mail / not available"
|
|
- [ ] **show on-screen bobcat overlay caller-id**
|
|
- [ ] **Needing enrichment** (likely more than one tag to represent the kind of enrichment):
|
|
- [ ] **social media**:
|
|
- [ ] try to identify their social media profiles (linkedin, facebook, twitter, etc) using name, email, etc.
|
|
- [ ] possible search known social media groups for people with same/similar name
|
|
- [ ] identify product website(s)=
|
|
- [ ] **potential suppliers**:
|
|
- [ ] search places like alibaba for products we've seen them sell, and try to narrow down who their suppliers are
|
|
- [ ] pull checkin pictures of shipping labels from them, and cross-reference with other info to locate possible suppliers
|
|
- [ ] **special handling**:
|
|
- [ ] **SLA/VIP**: this contact needs very fast or special responses for some reason
|
|
- [ ] possibly tied to dedicated agent who does something special with their emails, like:
|
|
- [ ] **trace package**: pull data we'd need to trace the workflows about it:
|
|
- [ ] if it looks like it has a tracking number, kick off the workflow to pull that up in NMI, get pictures, check who worked on it, tracking status, etc.
|
|
- [ ] Possibly fetch surveillance from synology autmatically:
|
|
- [ ] For each major timestamp involved ( box.checkin_date, box.presort_date, individual_product.checkin_date ) pull 2-3 minutes of footage before/after from cameras known to overlook the 2-3 nearest locations in the warehouse
|
|
- [ ] split the video feed into a series of still images 30-seconds apart
|
|
- [ ] have a VLM explain what it sees in the images, even checking for specific things:
|
|
- [ ] presence of truck at loading dock
|
|
- [ ] person seen walking away from area carrying similar locking box/item
|
|
- [ ] **import order**: email is an invoice, PO, or similar listing what a person is sending to us, perhaps the reason, and when it should arrive.
|
|
- [ ] _they're a vendor_: log that supplies were being delivered and what we spent on them
|
|
- [ ] _prep customer_: make a prep inbound order if it doesn't exist already
|
|
- [ ] **vendor receipt or invoice**:
|
|
- [ ] automatically log/input that into the expense tracker if it's not there already
|
|
- [ ] check if there is a purchase order for it.
|
|
- [ ] if there is, do something like mark it en-route, received, etc.
|
|
- [ ] create ticket, assigning somebody to put it away
|
|
- [ ] assign an AI-INFO-BLOCK to the manager, asking them to find out who ordered it, what for, and why they didn't make a PO
|
|
- [ ] **employee and it's about scheduling**
|
|
- [ ] check the attendance-schedule project to see if they already reported it in there
|
|
- [ ] if not, add it
|
|
- [ ] assign an AI-INFO-BLOCK asking them to explain why they could not do that themselves
|
|
- [ ] **check for time-off blockers**:
|
|
- [ ] somebody else already has time off within 1-2 days
|
|
- [ ] customer has complained about delays in the past week
|
|
- [ ] same person asked off on the same weekday/pattern in the past 3-4 weeks, and no good reason
|
|
- [ ] overall billings/productivity have been low for over a week
|
|
- [ ] **if blocked**: warn them they can't have the day off unless they can prove it's manditory/unavoidable
|
|
- [ ] if they say it is, AI-INFO-BLOCK until they provide proof or admit they don't have it
|
|
- [ ] **very simple question**
|
|
- [ ] **sales 20-questions**: they sent an email that amounts to playing 20-questions about capacity (wanting to start project)
|
|
- [ ] **AI-agent uses obsidian and other data**:
|
|
- [ ] generate really slick looking brochure quickly, using obsidian-backed data
|
|
- [ ] loop human in to approve it
|
|
- [ ] update/expand based on human input, then send it over to client
|
|
- [ ] save it for later, so next time, it can just be sent right away
|
|
- [ ] **spammer-be-gone**:
|
|
- [ ] Identify habitual or serious spammers, time wasters, and promoters emailing us
|
|
- [ ] use gmail MCP to add filters to contact@ldrprep.com so that person's mail doesn't get imported into redmine anymore
|
|
- [ ] **high-risk contact**:
|
|
- [ ] there is some special risk or liability related to talking to that contact. For examples:
|
|
- [ ] litigious person or debt collector
|
|
- [ ] disgruntled former employee
|
|
- [ ] stalker spouse of current employee
|
|
- [ ] handle ticket(s) in a manner people who shouldn't talk to them can't see it or can't respond to it
|
|
- [ ] phone calls from them do not ring to the general line anyone can answer
|
|
- [ ] **lead follow-up**:
|
|
- [ ] contacts marked as wanting to potentially buy something from us or start services, but we've heard crickets for 7+ days
|
|
- [ ] encourage somebody to call/email them, maybe even suggest what to say/send
|
|
|
|
## Please ensure this info is saved with the project and easy to locate
|
|
|
|
For right now, much of this will not be immediately practical to implement, but I think storing it here is both important context and saves time.
|
|
|
|
|
|
|
|
|