Skip to content
MohammadSaeid Karbaschian
saeid.jpg
$ whoami

MohammadSaeid Karbaschian

Odoo / Python Developer

Python developer with 4+ years of hands-on Odoo experience: end-to-end implementations, custom module development, version migrations (v8 to v14) and long-term support for small and mid-sized companies. Background in technical support and QA for web platforms. Currently supporting a live Odoo deployment remotely.

open to Odoo / Python rolesVaughan, ONopen work permitremote / GTA
ask-about-me — an LLM grounded in my verified résumé
$ ask "Has Saeid migrated Odoo between major versions?"
pipelineresumeembeddingspgvectorretrieve top-kClaudeanswer
answers only from retrieved résumé chunks — nothing invented. built by me: FastAPI · Postgres+pgvector · Next.js · Docker on Oracle Cloud

experience

Odoo Developer

2024-12 → now
Ati Parvaz Air Travel and Tourism · Remote · Contract
  • Implemented Odoo from scratch for a travel agency and modelled the company's existing business flows inside the system.
  • Provide ongoing remote support, fixes and enhancements as the business's needs evolve.
OdooPythonXMLQWebPostgreSQLOdoo implementationERP support

Freelance Odoo Consultant

2023-06 → 2024-11
Self-employed · Remote · Freelance
  • Delivered short-term, full-time contracts covering Odoo setup, deployment, customization and post-go-live support.
  • Built front-end features with React and TypeScript for freelance client projects.
  • Clients included MPA, Alvan Parand Shimi, Azin Did Faraz Novin and Akam.
OdooPythonReactTypeScriptOdoo configurationOdoo implementationUser trainingERP support

Odoo Developer

2022-02 → 2022-10
Aria Baniz · Full-time
  • Led the company's migration of data and custom modules from Odoo v8 to v14, rebuilding the project from the ground up.
  • Developed new custom modules for business requirements not covered by standard Odoo.
  • Retained after the engagement to provide system support on a project basis.
OdooPythonXMLQWebData migrationCustom module developmentPostgreSQL

Technical Support & QA Specialist

2018-05 → 2021-11
Fanavaran Ettelaat Pishkhan · Full-time
  • Supported several production websites; tested features, reproduced and documented bugs, and verified APIs.
  • Handled user issues through a ticketing system, email, phone and social media; triaged daily queues by priority and escalated platform-wide bugs.
  • Built a searchable FAQ / knowledge base that reduced repeat tickets.
  • Wrote Python scripts to automate recurring support and reporting tasks.
PythonWeb application testingAPI testingBug reportingTicketing systemsTask automation scriptsQuality assuranceTechnical support

Freelance Developer & Student

2010-10 → 2018-05
Self-employed · Freelance
  • Full-time studies alongside freelance work, including building survey / data-collection forms for a client company and student project services.
Python

projects

python
class TravelBooking(models.Model):
    _name = "travel.booking"
    _inherit = ["mail.thread"]

    partner_id = fields.Many2one("res.partner", required=True)
    departure = fields.Date(required=True)
    state = fields.Selection(
        [("draft", "Draft"), ("confirmed", "Confirmed"), ("invoiced", "Invoiced")],
        default="draft", tracking=True)

    def action_confirm(self):
        self.write({"state": "confirmed"})
        return self._create_invoice()

Travel agency on Odoo

2024 –

Full implementation from zero for Ati Parvaz: modelled the agency's real booking and invoicing flow inside Odoo, then stayed on for support and enhancements.

OdooPythonQWebPostgreSQL
python
# map legacy v8 records to the rebuilt v14 models
for old in legacy.env["sale.order"].search([]):
    vals = {
        "partner_id": partner_map[old.partner_id.id],
        "date_order": old.date_order,
        "order_line": [(0, 0, line_vals(l)) for l in old.order_line],
    }
    new = env["sale.order"].create(vals)
    id_map["sale.order"][old.id] = new.id

Odoo v8 → v14 migration

2022

Led the migration of company data and custom modules across six major versions at Aria Baniz, rebuilding the project from the ground up.

Data migrationPostgreSQLCustom modulesXML
python
async def answer(q: str, company_key: str | None):
    qvec = (await embed([q]))[0]
    rows = s.execute(
        select(Chunk)
        .order_by(Chunk.embedding.cosine_distance(qvec))
        .limit(6)
    ).scalars()
    return await claude(context=rows, question=q)

This site: RAG over my résumé

2026

Résumé → embeddings → pgvector → Claude. Re-ranks sections against a pasted job ad; answers only from retrieved résumé chunks. Self-hosted with Docker on Oracle Cloud, CI deploys from GitHub.

FastAPIpgvectorNext.jsDockerAnthropic API

stack

languages & frameworks
PythonDjangoJavaScriptTypeScriptReactXMLQWeb
erp
OdooOdoo implementationCustom module developmentData migrationOdoo configurationUser trainingERP support
tools
PostgreSQLREST APIsGitLinux
testing & support
Web application testingBug reportingAPI testingTicketing systemsTask automation scriptsQuality assuranceTechnical support

education & languages

Bachelor of Computer Software Engineering Technology

Shahid Shamsipour Technical and Vocational University
2017
Assessed by WES as equivalent to a Canadian four-year bachelor's degree.

Associate Degree in Computer Networks

University of Applied Science and Technology
2015
Assessed by WES as equivalent to a Canadian two-year college diploma.
languages
  • English (professional working proficiency)
  • Persian / Farsi (native)
training
  • Mobile Device Repair Technician Course (2009)
> ask about me_