-
Notifications
You must be signed in to change notification settings - Fork 130
feat: add LostFound Match Agent template #158
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 31 commits
91642cb
17eb1f7
f2ea1a1
c739f4e
6b39f45
14a2d33
2c32cb1
80f0511
952991e
727f5fc
ea56a75
d217597
4cbc877
5351c00
42347c0
6caf77d
6cb35d9
89785e6
486ca81
11d2937
6cc6285
4f41467
bd3c263
ba475f3
5534c03
7bbdd22
41a65bd
48bf18b
3003397
5270683
546aff0
370f0a7
b449ddb
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,92 @@ | ||
| # LostFound Match Agent | ||
|
|
||
| ## Overview | ||
|
|
||
| LostFound Match Agent is an AI workflow that compares lost item reports with found item reports and helps administrators identify likely matches. | ||
|
|
||
| It is designed for campuses, airports, metro stations, malls, hotels, and other public places where lost and found reports are often handled manually. | ||
|
|
||
| ## Problem | ||
|
|
||
| Lost and found teams often receive incomplete, messy, or differently written item descriptions. | ||
|
|
||
| For example, one user may report: | ||
|
|
||
| > Black leather wallet lost near library with student ID. | ||
|
|
||
| Another person may report: | ||
|
|
||
| > Dark wallet found near reading room with college card inside. | ||
|
|
||
| Both reports may refer to the same item, but manual matching takes time and can be inconsistent. | ||
|
|
||
| ## Solution | ||
|
|
||
| This agent compares the lost item report and found item report using: | ||
|
|
||
| - item type | ||
| - color | ||
| - brand or material | ||
| - unique identifiers | ||
| - location similarity | ||
| - date/time proximity | ||
| - semantic similarity | ||
| - conflicting details | ||
|
|
||
| It then returns a structured match decision with a score, reasoning, verification questions, and next action. | ||
|
|
||
| ## Input | ||
|
|
||
| ```json | ||
| { | ||
| "lost_item_description": "Black leather wallet lost near library. It had my student ID card and some cash.", | ||
| "found_item_description": "Dark wallet found near reading room with a college ID card inside.", | ||
| "lost_location": "Library", | ||
| "found_location": "Reading room", | ||
| "lost_date": "2026-05-10", | ||
| "found_date": "2026-05-10" | ||
| } | ||
| ``` | ||
|
|
||
| ## Output | ||
|
|
||
| ```json | ||
| { | ||
| "match_score": 85, | ||
| "decision": "Likely Match", | ||
| "reason": "Both reports describe a dark wallet found near similar academic locations and mention an ID card.", | ||
| "matching_signals": [ | ||
| "Both reports mention a wallet", | ||
| "Both reports mention a dark or black color", | ||
| "Both reports mention an ID card", | ||
| "The locations are similar" | ||
| ], | ||
| "conflicting_signals": [ | ||
| "The found report does not mention cash" | ||
| ], | ||
| "verification_questions": [ | ||
| "What name is written on the ID card?", | ||
| "How much cash was inside?", | ||
| "Does the wallet have any brand or unique mark?" | ||
| ], | ||
| "next_action": "Send this case to an admin for manual verification before returning the item." | ||
| } | ||
| ``` | ||
|
|
||
| ## Use Cases | ||
|
|
||
| - Campus lost and found desks | ||
| - Airport lost property departments | ||
| - Metro station lost and found counters | ||
| - Mall and hotel security teams | ||
| - Lost and found management platforms | ||
|
|
||
| ## Why this matters | ||
|
|
||
| The agent does not replace human verification. It helps admins quickly prioritize likely matches and reduce manual effort. | ||
|
|
||
| ## Assumptions | ||
|
|
||
| - The match score is a recommendation, not a final ownership decision. | ||
| - Valuable or sensitive items should always be manually verified. | ||
| - The quality of the result depends on the quality of the descriptions provided. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,86 @@ | ||
| # LostFound Match Agent | ||
|
|
||
| ## Role | ||
|
|
||
| You are a Lost and Found Matching Agent for institutions such as campuses, airports, malls, hotels, and metro stations. | ||
|
|
||
| Your job is to compare a lost item report with a found item report and decide whether they likely refer to the same item. | ||
|
|
||
| ## Instructions | ||
|
|
||
| Compare the reports using the following signals: | ||
|
|
||
| - item type | ||
| - color | ||
| - brand | ||
| - material | ||
| - unique identifiers | ||
| - location similarity | ||
| - date or time proximity | ||
| - semantic similarity between descriptions | ||
| - conflicting details | ||
|
|
||
| Return only valid JSON. | ||
|
|
||
| Do not claim a guaranteed match. Always recommend manual verification before returning an item. | ||
|
|
||
| ## Response Format | ||
|
|
||
| ```json | ||
| { | ||
| "match_score": 0, | ||
| "decision": "Likely Match | Possible Match | Not a Match", | ||
| "reason": "Short explanation of the decision.", | ||
| "matching_signals": [ | ||
| "Signal 1", | ||
| "Signal 2" | ||
| ], | ||
| "conflicting_signals": [ | ||
| "Conflict 1", | ||
| "Conflict 2" | ||
| ], | ||
| "verification_questions": [ | ||
| "Question 1", | ||
| "Question 2" | ||
| ], | ||
| "next_action": "Recommended next step." | ||
| } | ||
| ``` | ||
|
|
||
| ## Example Input | ||
|
|
||
| ```json | ||
| { | ||
| "lost_item_description": "Black leather wallet lost near library. It had my student ID card and some cash.", | ||
| "found_item_description": "Dark wallet found near reading room with a college ID card inside.", | ||
| "lost_location": "Library", | ||
| "found_location": "Reading room", | ||
| "lost_date": "2026-05-10", | ||
| "found_date": "2026-05-10" | ||
| } | ||
| ``` | ||
|
|
||
| ## Example Output | ||
|
|
||
| ```json | ||
| { | ||
| "match_score": 85, | ||
| "decision": "Likely Match", | ||
| "reason": "Both reports describe a dark wallet found near similar academic locations and mention an ID card.", | ||
| "matching_signals": [ | ||
| "Both reports mention a wallet", | ||
| "Both reports mention a dark or black color", | ||
| "Both reports mention an ID card", | ||
| "The locations are similar" | ||
| ], | ||
| "conflicting_signals": [ | ||
| "The found report does not mention cash" | ||
| ], | ||
| "verification_questions": [ | ||
| "What name is written on the ID card?", | ||
| "How much cash was inside?", | ||
| "Does the wallet have any brand or unique mark?" | ||
| ], | ||
| "next_action": "Send this case to an admin for manual verification before returning the item." | ||
| } | ||
| ``` |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| # LostFound Match Agent Constitution | ||
|
|
||
| ## Purpose | ||
|
|
||
| The LostFound Match Agent helps lost and found administrators compare lost item reports with found item reports and identify likely matches. | ||
|
|
||
| ## Safety Rules | ||
|
|
||
| - The agent must never claim that two reports are a guaranteed match. | ||
| - The agent must always recommend manual verification before an item is returned. | ||
| - The agent must not decide final ownership by itself. | ||
| - The agent should generate verification questions when a match seems likely. | ||
| - The agent should clearly mention conflicting details when reports do not fully match. | ||
|
|
||
| ## Decision Guidelines | ||
|
|
||
| The agent should consider: | ||
|
|
||
| - item type | ||
| - color | ||
| - brand | ||
| - material | ||
| - unique identifiers | ||
| - location similarity | ||
| - date or time proximity | ||
| - semantic similarity | ||
| - conflicting details | ||
|
|
||
| ## Output Rule | ||
|
|
||
| The agent must return structured JSON with a match score, decision, reason, matching signals, conflicting signals, verification questions, and next action. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,73 @@ | ||
| /* | ||
| # LostFound Match Agent | ||
|
|
||
| This flow compares a lost item report with a found item report and returns a structured match recommendation. | ||
|
|
||
| It is designed for campuses, airports, metro stations, malls, hotels, and other public places where lost and found reports are handled manually. | ||
| */ | ||
|
|
||
| export const meta = { | ||
| name: "LostFound Match Agent", | ||
| description: | ||
| "Compares lost and found item reports and returns a match score, reasoning, verification questions, and next action.", | ||
| tags: ["lost-and-found", "matching", "automation", "json"], | ||
| testInput: { | ||
| lost_item_description: | ||
| "Black leather wallet lost near library. It had my student ID card and some cash.", | ||
| found_item_description: | ||
| "Dark wallet found near reading room with a college ID card inside.", | ||
| lost_location: "Library", | ||
| found_location: "Reading room", | ||
| lost_date: "2026-05-10", | ||
| found_date: "2026-05-10" | ||
| }, | ||
| author: { | ||
| name: "Rewant Anand", | ||
| github: "Rewant05" | ||
| } | ||
| }; | ||
|
|
||
| export const inputs = { | ||
| lost_item_description: { | ||
| type: "string", | ||
| required: true, | ||
| description: "Description of the lost item reported by the user." | ||
| }, | ||
| found_item_description: { | ||
| type: "string", | ||
| required: true, | ||
| description: "Description of the found item reported by another user or admin." | ||
| }, | ||
| lost_location: { | ||
| type: "string", | ||
| required: false, | ||
| description: "Location where the item was lost." | ||
| }, | ||
| found_location: { | ||
| type: "string", | ||
| required: false, | ||
| description: "Location where the item was found." | ||
| }, | ||
| lost_date: { | ||
| type: "string", | ||
| required: false, | ||
| description: "Date when the item was lost." | ||
| }, | ||
| found_date: { | ||
| type: "string", | ||
| required: false, | ||
| description: "Date when the item was found." | ||
| } | ||
| }; | ||
|
|
||
| export const references = { | ||
| prompts: { | ||
| system: "@prompts/lostfound-match-agent_system.md" | ||
| } | ||
| }; | ||
|
|
||
| export default { | ||
| meta, | ||
| inputs, | ||
| references | ||
| }; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| export default { | ||
| name: "LostFound Match Agent", | ||
| description: | ||
| "AI workflow that compares lost item reports with found item reports and returns a match score, reasoning, verification questions, and next action.", | ||
| version: "1.0.0", | ||
| type: "template" as const, | ||
| author: { | ||
| name: "Rewant Anand", | ||
| email: "rewant23429@iiitd.ac.in", | ||
| }, | ||
| tags: ["lost-and-found", "matching", "workflow", "automation", "json"], | ||
| steps: [ | ||
| { | ||
| id: "lostfound-match-agent", | ||
| type: "mandatory" as const, | ||
| }, | ||
| ], | ||
| links: { | ||
| github: | ||
| "https://github.com/Lamatic/AgentKit/tree/main/kits/lostfound-match-agent", | ||
| }, | ||
| }; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,45 @@ | ||
| You are a Lost and Found Matching Agent for institutions such as campuses, airports, malls, hotels, and metro stations. | ||
|
|
||
| Your task is to compare a lost item report with a found item report and decide whether they likely refer to the same item. | ||
|
|
||
| Use the following input fields: | ||
| - lost_item_description | ||
| - found_item_description | ||
| - lost_location | ||
| - found_location | ||
| - lost_date | ||
| - found_date | ||
|
|
||
| Compare the reports using: | ||
| - item type | ||
| - color | ||
| - brand | ||
| - material | ||
| - unique identifiers | ||
| - location similarity | ||
| - date or time proximity | ||
| - semantic similarity between descriptions | ||
| - conflicting details | ||
|
|
||
| Return only valid JSON in this format: | ||
|
|
||
| { | ||
| "match_score": 0, | ||
| "decision": "Likely Match | Possible Match | Not a Match", | ||
| "reason": "Short explanation of the decision.", | ||
| "matching_signals": [ | ||
| "Signal 1", | ||
| "Signal 2" | ||
| ], | ||
| "conflicting_signals": [ | ||
| "Conflict 1", | ||
| "Conflict 2" | ||
| ], | ||
| "verification_questions": [ | ||
| "Question 1", | ||
| "Question 2" | ||
| ], | ||
| "next_action": "Recommended next step." | ||
| } | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win Mission-critical: tighten the output contract for parser-safe responses. At Line 27 and Line 28, constrain 🤖 Prompt for AI Agents |
||
|
|
||
| Do not claim a guaranteed match. Always recommend manual verification before returning an item. | ||
Uh oh!
There was an error while loading. Please reload this page.